После более года разработки консорциум ISC представил (https://www.isc.org/blogs/bind-9-14-released/) первый стабильный релиз новой значительной ветки DNS-сервера BIND 9.14. Поддержка ветки 9.14 будет осуществляться до 2 квартала 2020 года в рамках штатного цикла сопровождение. В следующем году будет сформирован LTS релиз 9.16, который будет поддерживаться три года. Обновления для прошлой LTS-ветки 9.11 продолжат выпускаться до декабря 2021 года. Поддержка ветки 9.12 прекратиться в июне.
BIND 9.14.0 стал первым стабильный выпуском, сформированным в рамках новой схемы нумерации версий. Нечётные номера релизов теперь присваиваются экспериментальным веткам, в которых развивается функциональность для будущих стабильных веток, имеющих чётный номер выпуска. Формирование отдельных альфа- и бета-веток прекращено. Таким образом, ветка BIND 9.13 была экспериментальной и на её базе сформирован стабильный релиз BIND 9.14.
Ключевым изменением в BIND 9.14.0 стало отключение кода, позволявшего корректно взаимодействовать с DNS-серверами, на которых используется старое ПО с некорректно реализованной (https://www.opennet.dev/opennews/art.shtml?num=49999) обработкой запросов EDNS (расширенные флаги, которые кодируются в специальных RR-записях без нарушения обратной совместимости со старым протоколом). Изменение не повлияет работу серверов, не поддерживающих EDNS, но корректно отбрасывающих не поддерживаемые запросы EDNS.
Проблемы могут возникнуть только с сервеами, которые вопреки стандарту не отправляют DNS-ответ в старом формате, отбрасывая флаги EDNS, а молча игнорируют подобные запросы, никак не реагируя на них и не отправляя ответный пакет. При этом авторитативные DNS-серверы могут как и раньше не поддерживать EDNS и ограничиваться старым классическим протоколом, но теперь они обязаны корректно реагировать на подобные запросы. В настоящее время все актуальные DNS-серверы корректно отвечают на запросы с EDNS, а проблемные системы, как правило на основе старых выпусков PowerDNS, и блокирующие EDNS межсетевые экраны были уведомлены в рамках проведённой в феврале инициативы DNS flag day (https://www.opennet.dev/opennews/art.shtml?num=49999).
Ранее для обеспечения взаимодействия с серверами, не отвечавшими на запросы с флагами EDNS, в BIND применялся "грязный хак" - если после отправки запроса с флагами EDNS через определённый промежуток времени не поступал ответ, DNS-сервер считал, что расширенные флаги не поддерживаются и отправлял повторный запрос без флагов EDNS. Наличие подобного кода приводило к увеличению задержек из-за повторной отправки пакетов, повышению нагрузки на сеть и неоднозначности при отсутствии ответа из-за сетевых сбоев, а также мешало внедрению основанных на EDNS возможностей, таких как применение DNS Cookies для защиты от DDoS-атак.
Другие изменения (http://ftp.isc.org/isc/bind9/9.14.0/RELEASE-NOTES-bind-9.14....) в BIND 9.14.0:
- Прекращена возможность сборки без OpenSSL, даже если BIND собирается в режиме без DNSSEC. OpenSSL переведён в обязательные зависимости из-за использование предоставляемого данной библиотекой генератора псевдослучайных чисел (CSPRNG), работающего в неблокирующем режиме;
- Для работы в UNIX-подобных ОС теперь требуется поддержка многопоточности (POSIX threads), расширенных параметров сокетов для IPv6 (RFC 3542) и Си-компилятора с поддержкой атомарных операций;
- Прекращено тестирование работы на устаревших ОС, включая старые версии UnixWare, BSD/OS, AIX, Tru64, SunOS, TruCluster и IRIX. Также удалена поддержка некоторых устаревших систем;
- Существенно изменён код для управления задачами и работой с сокетами - задачи теперь распределяются с использованием очередей, закреплённых за ядрами CPU, а в сетевом стеке реализовано несколько циклов обработки событий, запускаемых в привязанных к CPU разных потоках. Указанные изменения позволили существенно повысить производительность на крупных многоядерных системах, особенно при использовании сетевых карт с поддержкой нескольких очередей обработки пакетов;
- Добавлен новый механизм подключения плагинов, позволяющий подключать дополнительные обработчики запросов, реализованные в форме внешних библиотек. Со временем, планируется выделить в плагины код для обработки необязательных расширений, таких как средства противостояния DDoS-атакам. Например, в плагин filter-aaaa.so заменил собой встроенную реализацию filter-aaaa;
- В named.conf помимо неполиткорректных названий "master" и "slave" теперь в качестве типов зон можно указывать "primary" и "secondary";
- Включены по умолчанию в режиме "relaxed" наработки проекта QNAME Minimization (https://www.isc.org/blogs/qname-minimization-and-privacy/), нацеленные на сокращение передачи дополнительной информации в запросах с целью предотвращения утечек конфиденциальных сведений и повышения приватности. В будущих выпусках планируется применить режим "strict";
- Добавлен режим зеркалирования зон, позволяющий named получать и работать с локальными копиями зон, но без функционирования в форме авторитетного сервера для данных зон. DNS-ответы для зеркалируемых зон не устанавливают бит AA ("authoritative answer"), но выставляют бит AD ("authenticated data"). Основным назначением указанной возможности является обработка локальных копий корневой зоны DNS;
- Существенно повышена производительность работы с большим числом зон, обработки большого числа запросов и работы с корневой зоной. Расширено применение glue-cache, ускорена работа сетевых обработчиков за счёт исключения миграции между ядрами CPU. В проведённых тестах по сравнению с BIND 9.12 производительность обработки тысячи зон возросла на 20%, миллиона зон на 15%, выполнение миллиона операций делегирования на 10%, обработки миллиона RR-запросов на 12%, рекурсивной обработки запросов на 18% и обработки корневой зоны на 10%;
- Добавлена поддержка сборки с библиотекой libidn2 для поддержки интернационализированных имён IDNA2008 (ранее поддерживалась только библиотека idnkit-1).
URL: https://www.isc.org/blogs/bind-9-14-released/
Новость: https://www.opennet.dev/opennews/art.shtml?num=50372