Релиз DNS-сервера BIND 9.12

После двух лет разработки консорциум 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.

© OpenNet