Первый стабильный выпуск полностью переработанного DNS-сервера BIND 10
26 февраля 2013 года
Консорциум ISC после четырёх лет разработки и спустя 13 лет с момента выпуска BIND 9 представил первый стабильный релиз DNS-сервера BIND 10, отличающегося кардинальной переработкой внутренней архитектуры. В отличие от ранее практикуемой модели реализации всей доступной функциональности в одном серверном процессе, в BIND 10 осуществлён переход к разделению функций по отдельным взаимосвязанным процессам, каждый из которых реализует свой сервис. Разделение по разным процессам позволило рационально использовать ресурсы многоядерных систем, расширило возможности масштабирования, обеспечило изоляцию отдельных функций и повысило надёжность.
Ключевые особенности BIND 10:
- Интеграция функций DHCP-сервера. В процессе развития продукта ISC DHCP разработчики столкнулись с необходимостью существенной переработки реализации DHCP-сервера, при этом основные мотивы и цели примерно совпадали с мотивами и целями разработчиков, взявшихся переписать BIND. С учётом того, что во многих ситуациях требуется обеспечение тесного взаимодействия DHCP и DNS-серверов, например, типичной является задача синхронизации имен хостов и выделяемых через DHCP IP-адресов, разработчики решили объединить функции DNS и DHCP в рамках единого продукта;
- Вынос в независимые модули таких компонентов, как резолвер, подсистема для хранения данных, система обслуживания DNS-зон, авторитативный DNS-сервер, динамический DNS-сервер (DDNS), сервисы перенаправления запросов (forwarder), система накопления статистики, менеджер конфигурации, интерфейс для удалённого управления работой;
- Увеличение надёжности, повышение стойкости к DoS атакам и способность работать до последнего, игнорируя возникающие ошибки (например, некорректные записи в DNS зонах);
- Поддержка акселерации выполнения запросов через схему бэкенд-фронтенд;
- Не привязанность к конкретной модели хранения данных, подключение обработчиков хранилищ через модули. Включение в комплект модулей для хранения зоны в SQL базе, кеширования в памяти из файлов или использования встраиваемых БД;
- Возможность определять на основе каких частей будет сформирована бинарная сборка. Например, может быть собран только кеширующий или только авторитативный сервер, что позволит создавать компактные версии bind, подходящие для использования во встраиваемых устройствах с ограниченными ресурсами;
- Поддержка кластеризации: интеграция технологий, позволяющих организовать работу как единого целого нескольких копий BIND, размещённых на разных серверах;
- Средства для интеграции BIND в программную инфраструктуру пользователя. Если в BIND 9 базовая конфигурация оформлялась в текстовых файлах, то в BIND 10 добавлены специальные программные интерфейсы для управления конфигурацией и мониторинга BIND из сторонних приложений;
- Контроль в процессе выполнения. Реконфигурация BIND 9 производилась исключительно через чтение файлов и примитивные rndc команды. В BIND 10 реализована более изящная и интерактивная схема контроля и мониторинга. Например, обеспечена поддержка автоматического перезапуска компонентов в случае сбоя, без влияния на другие части системы. Представлены средства для изменения конфигурации и управления работой сервера на лету, без остановки и перезапуска;
- Специальный API и набор библиотек для интеграции функций для работы с DNS и средств для взаимодействия с DNS-сервером в сторонние приложения. Для разработки дополнений и новых модулей подготовлены C++ библиотека libdns++ и Python-биндинг.
Из поддерживаемых в BIND10 1.0.0 DNS-функций отмечается поддержка передачи и приёма зон (IXFR и AXFR), бэкенд для хранения (кэширования) параметров зон в памяти с целью ускорения их отдачи, бэкенд для хранения параметров зон в БД SQLite3, реализация протокола DNSSEC для отдачи подписанных зон, реализация DDNS (Dynamic Updates), поддержка списков контроля доступа, поддержка TSIG для верификации DNS-сообщений и передаваемых зон. В число связанных с DHCP возможностей входит поддержка выделения и высвобождения адресов, обслуживание клиентских подсетей (DHCPv4, DHCPv6), поддержка настройки возвращаемых клиентам опций (в том числе в привязке к подсетям), возможность определения новых опций, поддержка использования в качестве хранилища MySQL. Подробные руководства по настройке и использованию BIND 10 можно найти на данной странице.
Ключевым звеном BIND 10 является процесс msgq, используемый для организации обмена сообщениями между модулями. Функции авторитетного DNS-сервера выполняет модуль auth, а функциональность DHCP обеспечивается модулями dhcp4 и dhcp6. Модули auth, dhcp4 и dhcp6 для увеличения масштабируемости и балансировки нагрузки могут запускаться в нескольких экземплярах, например, для каждого CPU на сервере может быть запущена отдельная копия модуля, а запросы на сетевой порт могут равномерно распределяться между процессами. Для обслуживания входящих и исходящих AXFR-запросов (трансфер зон целиком) представлены отдельные сервисы xfrin и xfrout. Функции динамического DNS-сервера выполняет модуль ddns, а управление зонами делегировано модулю zonemgr.
Для организации удалённого управления DNS-сервером подготовлен модуль cmdctl, поверх которого подготовлено несколько надстроек для управления конфигурацией, таких как утилита bindctl, web-интерфейс WebTool, GUI-интерфейс GuiTool и утилита для обеспечения совместимости с конфигуратором BIND9. Для разбора и хранения конфигурации задействован модуль cfgmgr. Для управления сервером и изменения конфигурации может использоваться RESTful-интерфейс, работающий поверх HTTPS. Отдельный интерес представляет модуль накопления статистики, который в сочетании с дополнительными надстройками может отдавать статистику по протоколам HTTP (в XML-представлении) или SNMP.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.