Настройка DNS
В качестве сервера 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";' >> /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>; };
};
Изменение 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-сервер.
|