Настройка плагина BIND9_DLZ и BIND 9
В качестве сервера DNS в продукте «Служба каталогов "Эллес"» используется решение с открытым исходным кодом BIND9, которое соответствует RFC 1034 и RFC 1035.
| См. описание процесса настройки службы DNS с использованием BIND 9 в руководстве по администрированию BIND 9, а также в документации на используемый дистрибутив Linux (например, в документации Astra Linux, РЕД ОС, Ubuntu Server, Debian и т. д.). |
Описания доменных зон и информация об их наполнении хранятся в службе каталогов. Для работы с ними доступны те же возможности, что и для других элементов службы каталогов, включая репликацию между контроллерами домена, а также резервное копирование и восстановление.
Работа ядра службы каталогов (Эллес) с BIND 9 обеспечивается плагином BIND9_DLZ («DNS-бэкенд» в терминологии Samba).
|
Встроенный DNS-сервер Samba (
В силу этих ограничений использовать его при работе с Эллес не рекомендуется. |
Схема развертывания DNS-сервера BIND 9
В базовом сценарии развертывания экземпляр DNS-сервера BIND 9 устанавливается и работает на сервере, выполняющем функции контроллера домена под управлением Эллес (Рис. 1).
Настройка плагина BIND9_DLZ
Для использования BIND 9 совместно с контроллером домена Эллес:
-
Установите и настройте BIND 9 и дополнительные утилиты на сервере, который будет выполнять функции контроллера домена:
sudo apt install bind9 bind9utils
-
При развертывании домена Эллес или присоединении к существующему домену укажите опцию
--dns-backend=BIND9_DLZ. При этом будет создан файл /app/inno-samba/bind-dns/named.conf.Пример содержимого файла:
dlz "AD DNS Zone" { # For BIND 9.8.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9.so"; # For BIND 9.9.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_9.so"; # For BIND 9.10.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_10.so"; # For BIND 9.11.x database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_11.so"; # For BIND 9.12.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_12.so"; # For BIND 9.14.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_14.so"; # For BIND 9.16.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_16.so"; # For BIND 9.18.x # database "dlopen /app/inno-samba/lib/bind9/dlz_bind9_18.so"; }; -
Добавьте ссылку на созданный файл в конец файла /etc/bind/named.conf или /etc/bind/named.conf.local:
include "/app/inno-samba/bind-dns/named.conf";
Например:
echo 'include "/app/inno-samba/bind-dns/named.conf";' | sudo tee -a /etc/bind/named.conf
-
Чтобы обеспечить динамическое обновление DNS с использованием Kerberos:
-
добавьте в блок
optionsв файле /etc/bind/named.conf.options BIND 9 следующую настройку:options { [...] tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab"; }; -
убедитесь, что на контроллере домена доступна утилита
nsupdate:which nsupdate /usr/bin/nsupdate
Команда
nsupdateиспользуется для обновления DNS. Если утилита отсутствует, обратитесь к документации на используемый дистрибутив Linux и установите ее.
-
-
Проверьте корректность конфигурации:
sudo named-checkconf
-
Перезапустите сервис
bind9:sudo systemctl restart bind9.service
-
Перезапустите сервис
inno-samba:sudo systemctl restart inno-samba.service
-
Убедитесь, что сервис
bind9работает корректно:sudo systemctl status bind9.service
Для проверки корректности обновления данных DNS выполните на контроллере домена с настроенным DNS-сервером принудительное обновление всех DNS-записей:
sudo /app/inno-samba/sbin/samba_dnsupdate \ --verbose \ --all-names
В выводе команды должны содержаться строки с информацией о поиске и проверке записей DNS. В случае необходимости внесения изменений в выводе также будут присутствовать записи с информацией о результатах операций по изменению записей.
Дальнейшая работа по созданию, изменению и удалению записей и зон DNS выполняется с помощью группы подкоманд dns утилиты samba-tool (см. подробное описание подкоманд и доступных параметров в
разделе «Администрирование DNS»).
Общие настройки BIND 9
Процесс настройки BIND 9 после установки и обеспечения интеграции с Inno Samba через BIND9_DLZ зависит от особенностей сетевой инфраструктуры. В данном разделе приводятся примеры некоторых настроек.
| См. подробное описание особенностей конфигурирования DNS-сервера BIND 9 в разделе "Configurations and Zone Files" и доступных настроек в разделе "Configuration Reference" в официальной документации BIND 9. |
При использовании только IPv4, добавьте опцию -4 в файл /etc/default/bind9, приведя значение в строке OPTIONS к следующему виду:
OPTIONS="-u bind -4"
Задайте глобальные опции BIND 9 в файле /etc/bind/named.conf.options. Пример настройки:
// Подсети, для которых разрешены запросы к серверу
acl internals {
<subnet1>;
<subnet2>;
};
// Пример задания глобальных настроек DNS-сервера
options {
// IPv4-адреса, на которых сервер принимает DNS-запросы
listen-on port 53 {
127.0.0.1;
localhost;
<server-ip-address>;
};
// Использование только IPv4
listen-on-v6 { none; };
// Рабочий каталог сервера
directory "/var/cache/bind";
// Путь к файлу, формируемому командой rndc dumpdb
dump-file "/var/cache/bind/data/cache_dump.db";
// Путь к файлу, формируемому командой rndc stats
statistics-file "/var/cache/bind/data/named_stats.txt";
// Путь к файлу со статистикой использования памяти
memstatistics-file "/var/cache/bind/data/named_mem_stats.txt";
// Запрет отправки уведомлений об изменениях в зонах
// дополнительным серверам
notify no;
// Серверы, на которые необходимо перенаправлять
// запросы, которые не могут быть разрешены
// текущим DNS-сервером
forwarders {
<IP-address>;
<IP-address;
};
// Запрет получения данных зон с текущего сервера
allow-transfer { none; };
// Отключение DNSSEC (до версии 9.16)
dnssec-enable no;
// Отключение валидации DNSSEC
dnssec-validation no;
// Подсети или хосты, которые могут использовать
// текущий DNS-сервер
allow-query { "internals"; };
// Подсети или хосты, которые могут использовать
// кэш текущего DNS-сервера
allow-query-cache { "internals"; };
// Разрешена обработка рекурсивных запросов
recursion yes;
// Рекурсивные запросы разрешены только для IP-адресов
// из блока acl
allow-recursion { "internals"; };
// Настройка полноты ответов для оптимизации производительности
minimal-responses yes;
tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab";
};
// Настройки логирования
logging {
channel default_debug {
file "debug.log";
print-time yes;
print-category yes;
severity dynamic;
};
};
Настройка BIND 9 на контроллере в дочернем домене
Для корректного разрешения доменных имен на контроллере Эллес, введенном в дочерний домен в многодоменном лесу Active Directory, требуется выполнить настройку переадресации зон родительского домена в конфигурации DNS-сервера BIND 9.
Для этого создайте в каталоге /etc/bind/ отдельный файл для определений зон или используйте существующий файл /etc/bind/named.conf.local.
Добавьте в файл блок следующего вида:
zone "root-domain.name" {
type forward;
forwarders {
<dns-server-ip-address>;
};
};
Параметры в блоке:
-
root-domain.name— имя зоны родительского домена; -
type forward— задание для зоны типаforward, указывающего на необходимость переадресации всех запросов с локального сервера на DNS-серверы, которые перечислены в параметреforwarders; -
forwarders— IP-адреса серверов, на которые должны перенаправляться запросы.
Например:
zone "root.lan" {
type forward;
forwarders {
10.1.188.21;
};
};
Добавьте директиву include с путем к файлу в конфигурационный файл /etc/bind/named.conf строго перед директивой, добавляющей конфигурацию плагина BIND9_DLZ. Файл named.conf.local добавляется по умолчанию.
Убедитесь, что порядок следования директив include в /etc/bind/named.conf корректный.
Например:
cat /etc/bind/named.conf // This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; include "/app/inno-samba/bind-dns/named.conf";
По усмотрению администратора DNS-серверы для разрешения имен при взаимодействии с родительским доменом также могут быть заданы с помощью глобального параметра forwarders в конфигурационном файле named.conf.options.
В текущей версии пакета inno-samba данная настройка необходима для обеспечения разрешения имен серверов в родительском домене. Ее отсутствие может приводить к некоторым ошибкам. Например — к ошибке WERR_FILE_NOT_FOUND в процессе репликации между контроллерами в дочернем и родительском доменах.
Настройка BIND 9 для делегирования зон DNS
Делегирование DNS используется для назначения ответственности за разрешение имен в другом домене или зоне сторонним серверам. Таким образом достигается разделение ответственности по сегментам DNS, дающее следующие преимущества:
-
масштабируемость и распределение нагрузки на DNS-серверы;
-
раздельное администрирование доменов и зон;
-
дополнительная безопасность;
-
делегирование ответственности за определенные виды сервисов, такие как веб-хостинг или почта, сторонним провайдерам;
-
упрощение процесса внесения изменений в структуре, уменьшая вероятность глобальных сбоев.
Как правило, делегирование используется по отношению к дочерним доменам и зонам, когда ответственность за управление записями DNS в них передается серверам в самих этих доменах и зонах.
В текущей версии Эллес делегирование зон DNS конфигурируется вручную на уровне BIND 9.
Безусловное перенаправление
Безусловное перенаправление (forwarding) определяется в файле /etc/bind/named.conf.options с помощью параметра forwarders:
options {
[...]
forwarders {
<ip-address>;
<ip-address>;
};
};
В списке могут быть указаны серверы, на которые BIND 9 будет перенаправлять запросы на разрешение имен, если сам он их разрешить не может и в его кэше их еще нет. Эти сервера могут быть как связаны с контроллерами домена, так и не связаны с ними. Также здесь могут указываться внешние серверы DNS.
Условное перенаправление
Условное перенаправление (conditional forwarding) настраивается для определенных зон. Запросы к таким зонам перенаправляются для разрешения на другие серверы.
Для условного перенаправления в зоны, не являющиеся дочерними по отношению к зонам, хранящимися в Эллес, может использоваться конфигурация в файлах BIND 9, например — в /etc/bind/named.conf.local:
zone "domain.name" {
type forward;
forwarders {
<ip-address>;
};
forward only;
};
include "/app/inno-samba/bind-dns/named.conf";
Чтобы условное перенаправление работало в зонах, определяемых BIND9_DLZ и хранящихся в Эллес, может использоваться отдельный DNS-сервер, в том числе на базе BIND 9, но не связанный с Эллес, с конфигурацией как основного, так и дочерних доменов в файлах, например — в /etc/bind/named.conf.local:
zone "subdomain1.domain.name" {
type forward;
forwarders {
<ip-address>;
};
forward only;
};
zone "subdomain2.domain.name" {
type forward;
forwarders {
<ip-address>;
};
forward only;
};
zone "domain.name" {
type forward;
forwarders {
<ip-address>;
};
forward only;
};
zone "some.other.zone" {
type primary;
....
};
Такой сервер выполняет функции прокси к серверам DNS домена Эллес и поддоменов и может также обеспечивать условное перенаправление.
Делегирование поддомена
Делегирование поддомена означает передачу управления для определенной зоны (поддомена) другому серверу DNS. Оно используется, когда есть множество поддоменов и требуется разделить ответственность за управление различными зонами между серверами DNS.
При делегировании поддомена один сервер DNS (родительский) передает управление определенной зоной (поддоменом) другому серверу DNS (дочернему). При этом на родительском сервере DNS настраивается запись NS (Name Server), указывающая на дочерний сервер DNS, который будет отвечать за поддомен.
В следующем примере в домене domain.name необходимо делегировать управление поддоменом subdomain.domain.name другому серверу DNS. Для этого в файл зоны domain.name добавляется следующая запись:
subdomain.domain.name. IN NS ns1.subdomain.domain.name. ns1.subdomain.domain.name. IN A <ns1-ip-address> ;; IP-адрес сервера DNS, которому делегируется управление (делегат)
На сервере-делегате в файл конфигурации зоны subdomain.domain.name добавляются следующие записи:
@ IN SOA ns1.subdomain.domain.name. hostmaster.subdomain.domain.name. {
2016060700 ;serial
3600 ;refresh
360 ;retry
86400 ;expire
3600 ;minimum
}
IN NS ns1.subdomain.domain.name.
ns1.sub.example.com. IN A <ns1-ip-address>
www IN A <ns1-ip-address>
;; и т. д.
Зоны-заглушки
Зона-заглушка (stub-зона) предназначена для перенаправления запросов DNS для определенной зоны на определенный сервер DNS. Она является аналогом slave-зоны, но в отличие от нее хранит только NS-записи и просто перенаправляет запросы на объявленные серверы DNS.
Пример настройки зоны-заглушки в конфигурации BIND 9:
zone "sub.example.com" IN {
type stub;
masters { <ns-ip-address>; };
};
Настройка BIND 9 на контроллере домена RODC
Один из возможных вариантов развертывания Эллес — использование контроллера домена Эллес в режиме RODC вместе с BIND 9 в качестве сервера DNS в отдельном сайте для обслуживания клиентов на удаленной региональной площадке.
С учетом ограничений, связанных с особенностями функционирования Эллес в режиме RODC, в этом случае для корректной обработки запросов к службе DNS, поступающих от клиентов в сайте, требуются следующие дополнительные шаги по настройке:
-
BIND 9 развертывается без интеграции с Эллес в роли RODC через плагин
BIND9_DLZ. -
В конфигурации BIND 9 настраивается безусловная пересылка на центральный сервер DNS.
-
В конфигурации BIND 9 настраивается кэширование запросов.
-
В конфигурации BIND 9 выполняется регистрация доменных зон DNS и зон условной пересылки в качестве вторичных.
В данном случае процесс разрешения имени ресурса в адрес при получении клиентского запроса выглядит следующим образом:
-
Клиент запрашивает адрес ресурса у DNS-сервера BIND 9, развернутого на контроллере домена Эллес в режиме RODC.
-
Если адрес ресурса имеется в кэше BIND 9, он возвращается клиенту.
-
Если адрес ресурса в кэше отсутствует, запрос перенаправляется на сервер безусловной пересылки в центральный сайт, где обрабатывается службой DNS соответствующего контроллера домена.
Настройка безусловного перенаправления
Для использования BIND 9 в качестве сервера безусловной пересылки (unconditional forwarder):
-
Убедитесь, что в конфигурации BIND 9 в файле /etc/bind/named.conf отсутствует строка
include "/app/inno-samba/bind-dns/named.conf";. Если строка присутствует, закомментируйте ее. -
Добавьте IP-адреса серверов безусловной пересылки в центральном сайте в настройки BIND 9 в файле /etc/bind/named.conf.options:
options { ... forwarders { <forward-to-server-ip-address1>; <forward-to-server-ip-address2>; }; forward only; ... };
Настройка кэширующего сервера
При установке по умолчанию сервер DNS BIND 9 настроен на работу в качестве кэширующего.
При необходимости дополнительно в настройках BIND 9 в файле /etc/bind/named.conf.options:
-
Создайте список контроля доступа в блоке
acl, перечислив в нем IP-адреса или сети, которые должны иметь доступ к серверу DNS.Например:
acl goodclients { 10.9.0.0/24; localhost; localnets; }; options { ... }; -
Явно разрешите обработку рекурсивных запросов от клиентов из созданного списка контроля доступа:
options { ... recursion yes; allow-query { goodclients; }; ... }; -
При необходимости настройте валидацию DNSSEC в соответствии с настройками серверов DNS, на которые должны перенаправляться запросы.
Например, чтобы включить валидацию DNSSEC, задайте:
options { ... dnssec-enable yes; dnssec-validation auto; ... };
Пример итогового файла с настройками BIND 9:
acl goodclients {
10.9.0.0/24;
localhost;
localnets;
};
options {
directory "/var/cache/bind";
recursion yes;
tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab";
auth-nxdomain no; # conform to RFC1035
dnssec-enable yes;
dnssec-validation auto;
allow-query { goodclients; };
allow-query-cache { any; };
forwarders {
10.9.25.30;
};
forward only;
};
При необходимости также выполните настройку переадресации портов:
-
Чтобы разрешить переадресацию портов, выполните:
sudo sysctl -w net.ipv4.ip_forward=1
-
Откройте файл /etc/sysctl.conf в режиме редактирования и раскомментируйте строку:
net.ipv4.ip_forward=1
Чтобы настроить поддержку только IPv4, откройте файл /lib/systemd/system/bind9.service в режиме редактирования и приведите значение ExecStart к следующему виду:
ExecStart=/usr/sbin/named -4 $OPTIONS
Настройка вторичных зон
Для снижения риска невозможности разрешения имен в случае недоступности сервера безусловной пересылки рекомендуется все зоны, для которых на центральном сервере DNS установлена условная пересылка, зарегистрировать в BIND 9 на контроллере домена Эллес RODC как вторичные.
Для регистрации BIND 9 на Эллес RODC в качестве держателя вторичной зоны необходимо на сервере DNS, являющемся владельцем зоны (в описании ниже в качестве владельца зоны выступает сервер DNS на контроллере домена Active Directory под управление ОС Windows Server), разрешить ее пересылку на адрес Эллес RODC и добавить описание зоны в конфигурацию BIND 9:
-
На сервере DNS, являющемся владельцем регистрируемой зоны, убедитесь, что разрешены вторичные зоны BIND. Для этого в оснастке DNS Manager в левой части окна щелкните правой кнопкой мыши на имени сервера, выберите Properties, перейдите на вкладку Advanced и проверьте, что установлен флажок Enable BIND secondaries:
-
Чтобы разрешить пересылку на Эллес RODC для зоны, в оснастке DNS Manager в левой части окна щелкните правой кнопкой мыши на имени зоны, выберите Properties, перейдите на вкладку Zone Transfers, установите флажок Allow zone transfers, выберите Only to the following servers, нажмите Edit и укажите адрес сервера Эллес RODC:
-
Для настройки отправки уведомлений об изменениях во вторичной зоне на вкладке Zone Transfers нажмите Notify, установите флажок Automatically notify, выберите The following servers и укажите адрес сервера Эллес RODC:
-
Для авторизации сервера BIND 9 на Эллес RODC в качестве держателя вторичной зоны на вкладке Name Servers нажмите Add… и укажите адрес сервера Эллес RODC.
-
На сервере Эллес RODC добавьте описание вторичной зоны в настройки BIND 9 в файле /etc/bind/named.conf.local в следующем формате:
zone "forwardable-zone.lan" { type slave; file "/etc/bind/db.forwardable-zone"; masters { 10.9.30.81; }; };В примере:
-
forwardable-zone.la— имя вторичной зоны DNS; -
/etc/bind/db.forwardable-zone— имя файла с информацией зоны DNS; -
10.9.30.81— адрес сервера — владельца зоны DNS.
-
Следует учитывать следующее ограничение: если у вторичной зоны DNS есть дочерняя зона и поступает запрос на разрешение адреса хоста из этой дочерней зоны, а в кэше сервера его еще нет, то такой запрос будет перенаправлен на сервер пересылки, а в случае отсутствия работающего канала связи до него — не будет разрешен.
Поэтому такую дочернюю зону также необходимо зарегистрировать как вторичную по инструкции выше.
Изменение DNS-бэкенда на контроллере домена
Эллес позволяет переключаться между встроенным DNS-сервером и плагином BIND9_DLZ на контроллере домена без потери данных.
|
При использовании в качестве базы данных каталога LMDB ( Например: dpkg -s lmdb-utils Если пакет отсутствует, установите его. Например: sudo apt install lmdb-utils |
Миграция с встроенного DNS-сервера на BIND9_DLZ
Для переключения с встроенного DNS-сервера на плагин BIND9_DLZ выполните следующие действия на контроллере домена:
-
Настройте плагин
BIND9_DLZ(см. раздел «Настройка плагина BIND9_DLZ»). -
Остановите сервис
inno-samba:sudo systemctl stop inno-samba.service
-
Выполните команду миграции:
sudo /app/inno-samba/sbin/samba_upgradedns --dns-backend=BIND9_DLZ
-
Отключите встроенный DNS-сервер в файле /app/inno-samba/etc/smb.conf одним из следующих способов:
-
если в разделе
globalв файле smb.conf задан параметрserver services, удалите из списка служб значениеdns; после этого список значений параметра может выглядеть, например, так:server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
-
если параметр
server servicesне используется, добавьте в разделglobalв файле smb.conf следующую строку:server services = -dns
-
-
Настройте автоматический запуск сервиса
bind9при загрузке:sudo systemctl enable bind9.service
-
Запустите службу
bind9:sudo systemctl start bind9.service
-
Запустите службу
inno-samba:sudo systemctl start inno-samba.service
Миграция с BIND9_DLZ на встроенный DNS-сервер
Для переключения с плагина BIND9_DLZ на встроенный DNS-сервер выполните следующие действия на контроллере домена:
-
Остановите сервис
bind9. Например:sudo systemctl stop bind9.service
-
Отключите автоматический запуск сервиса
bind9при загрузке (см. инструкции в документации на используемый дистрибутив Linux). Например:sudo systemctl disable bind9.service
-
Остановите сервис
inno-samba. Например:sudo systemctl stop inno-samba.service
-
Выполните команду миграции:
sudo /app/inno-samba/sbin/samba_upgradedns --dns-backend=SAMBA_INTERNAL
-
Отключите плагин
BIND9_DLZв файле smb.conf одним из следующих способов:-
если в разделе
globalв smb.conf задан параметрserver services, добавьте в список служб значениеdns; например:server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, dns
-
если в разделе
globalв параметреserver servicesуказана только опция-dns, удалите его полностью.
-
-
Запустите сервис
inno-samba:sudo systemctl start inno-samba.service
Использование встроенного DNS-сервера предусмотрено настройкой параметра server services по умолчанию. Удаление параметра server services означает включение всех служб по умолчанию, включая DNS-сервер.
|