После двух лет разработки консорциум ISC представил первый стабильный релиз новой значительной ветки DNS-сервера BIND 9.12. Разработчики рекомендуют повременить с внедрением BIND 9.12 в промышленную эксплуатацию до первого корректирующего выпуска. Поддержка веток 9.9, 9.10 и 9.11 сохраняется; например, обновления для ветки 9.11 будут выпускаться до декабря 2021 года, а для веток 9.10 и 9.9 - до июня 2018 года.
Ключевые новшества BIND 9.12.0:
- Внесена большая порция оптимизаций, направленных на ускорение выполнения запросов и увеличение производительности операций, связанных с делегированием зон. Прекращена поддержка дополнительного кэша ("acache"), который не обладал должной эффективностью. Вместо acache в named добавлена возможность использования glue-cache, ускоряющего получение записей о привязке хоста к IP при отправке ответов на запросы делегирования. С целью увеличения производительности проведён рефакторинг некоторых функций, связанных с сжатием имён, хэшированием и работой с буферами. По умолчанию прекращено заполнение определённым значением выделяемых или освобождаемых областей памяти, что положительно сказалось на производительности, но затрудняет отладку некоторых проблем с памятью, если named запущен не в отладочном режиме;
- Часть кода переработана для улучшения читаемости, упрощения тестирования и повышения удобства сопровождения. Функции resquery_response() и query_find() разбиты на серию более мелких и хорошо откомментированных функций;
- Код обработки запросов выделен из процесса named во внешнюю библиотеку libns, что упрощает написание unit-тестов и позволяет использовать данную функциональность в новых утилитах;
- В качестве алгоритмов формирования цифровых подписей для DNSSEC теперь используются эллиптические кривые Ed25519 и Ed448, если они предоставляются в OpenSSL (пока доступны только в экспериментальной ветке OpenSSL);
- Обеспечена выдача негативных ответов (NXDOMAIN, NODATA) на основе прокэшированных верифицированных записей DNSSEC, ранее возвращённых авторитетными серверами. Кэширование позволяет снизить нагрузку на авторитетные серверы и повысить производительность резолвера при запросе несуществующих имён для зон, верифицируемых по цифровой подписи (NSEC). Для отключения данного поведения в named.conf предусмотрена опция synth-from-dnssec;
- При работе в качестве рекурсивного резолвера, named теперь продолжает отдавать записи, даже после истечения их времени жизни (TTL), если авторитетный сервер не отвечает, например, из-за DDoS-атаки. Для изменения подобного поведения добавлены опции stale-answer-enable, stale-answer-ttl и max-stale-ttl;
- Добавлен API DNSRPS (DNS Response Policy Service), позволяющий подключать внешние обработчики правил формирования ответов. Например, предложен модуль "FastRPZ" с альтернативным методом вычисления "репутации" для DNS-имен (аналог DNSBL для борьбы с хостами спамеров и мошенников). Вынос RPZ в отдельный обработчик позволяет сократить нагрузку на процесс named при использовании больших и частообновляемых RPZ-зон, а также даёт возможность разработки универсальных провайдеров правил, которые можно использовать не только с BIND. По умолчанию продолжает использоваться встроенная реализация RPZ, которая была дополнительно оптимизирована и переработана. Для включения DNSRPS необходима сборка с опцией "--enable-dnsrps" и активация директивы dnsrps-enable в named.conf;
- Расширены возможности Dnstap, появившегося в BIND 9.11 быстрого и гибкого метода для захвата и журналирования трафика DNS. Добавлена поддержка автоматической ротации логов при достижении заданного размера. Имена файлов с логами могут включать суффикс, определяющий время или номер инкремента (logfile.0, .1, .2). В опцию print-time, определяющую вид отражения времени в логе, добавлена поддержка форматов времени local, iso8601 и iso8601-utc;
- Добавлена новая команда dnssec-cds для генерации нового набора DS (dsset) в родительской зоне, на основе содержимого верифицированных записей CDS или CDNSKEY из дочерней зоны;
- В nsupdate и rndc добавлены опции -4 и -6 для принудительного использования только IPv4 или IPv6;
- Добавлена опция new-zones-directory, позволяющая сохранять параметры конфигурации для зон, добавленных при помощи команды "rndc addzone" в область вне рабочей директории;
- Добавлена поддержка режима EDNS TCP Keepalive (RFC 7828), обеспечивающего согласование соединения для продолжительных TCP-сеансов, не требующих установки отдельного соединения для каждого запроса;
- Добавлена поддержка режима EDNS Padding option (RFC 7830), обеспечивающего добавочное заполнение пакетов для запросов через шифрованные каналы связи;
- Реализована команда "named-checkconf -l" для вывода списка зон, указанных в named.conf;
- По умолчанию вместо /dev/random для генерации случайных чисел теперь вызываются соответствующие функции криптографических библиотек (например, OpenSSL), что решает проблемы с недостатком энтропии при запуске в виртуальных окружениях. Для отмены данного поведения требуется пересборка с опцией "--disable-crypto-rand";
- Добавлена команда "rndc managed-keys destroy" для отключения всех доверительных привязок DNSSEC и очистки базы ключей (например, можно использовать для реинициализации в исходное состояние после первого запуска или экспериментов);
- Проведена чистка неактуальных компонентов: удалены lwresd и liblwres, отключен сервис DLV (DSC DNSSEC Lookaside Validation), прекращена поддержка платформ Windows XP и Windows 2003, запрещено использование dnssec-keygen для генерации HMAC-ключей для TSIG-аутентификации (нужно использовать tsig-keygen), ключи HMAC-MD5 отнесены к категории нерекомендованых (по умолчанию теперь генерируются HMAC-SHA256);
- Отключена возможность запуска named, если рабочая директория (путь, указанный через опцию directory) или директория с генерируемыми ключами (managed-keys-directory) недоступны на запись для пользователя, под которым выполняется named.
|