Для настройки DNS-сервера BIND 9 на контроллере домена Avanpost DS необходимо выполнить шаги:
- Шаг 1. Установить пакеты.
- Шаг 2. Настроить Avanpost DS на режим управления сервисом "bind-dyndb".
- Шаг 3. Перезапустить сервис Avanpost DS.
- Шаг 4. Подготовить keytab-файл для сервиса "bind".
- Шаг 5. Настроить рабочую директорию BIND.
- Шаг 6. Заполнить конфигурационный файл "/etc/bind/named.conf".
- Шаг 7. Проверить конфигурацию BIND.
- Шаг 8. Запустить сервис "bind9" и добавить его в автозапуск.
- Шаг 9. Проверить DNS.
Шаг 1. Установить пакеты.
Для этого требуется выполнить команды:
sudo apt update sudo apt install bind9 bind9-dyndb-ldap dnsutils krb5-user libsasl2-modules-gssapi-mit ldap-utils acl
Примечание:
Для установки пакетов требуется подключить необходимые репозитории Astra Linux в файле "/etc/apt/sources.list".
Шаг 2. Настроить Avanpost DS на режим управления сервисом "bind-dyndb".
Для этого требуется:
2.1. Открыть для редактирования конфигурационный файл "/opt/avanpost/ads/config/config.yaml":
sudo nano /opt/avanpost/ads/config/config.yaml
2.2. Изменить значение параметров управления DNS:
service_control: dns_service: bind-dyndb dns_control: true
Внимание!
При редактировании файлов в формате YAML требуется выставлять корректные отступы. Для вложенных параметров используется два пробела. Табуляцию использовать не рекомендуется.
2.3. Выдать ACL-разрешения пользователю ads на конфигурационный файл BIND:
sudo setfacl -m u:ads:rwx /etc/bind/ sudo setfacl -m u:ads:rwx /etc/bind/named.conf
2.4. Проверить ACL:
sudo getfacl /etc/bind/named.conf
Шаг 3. Перезапустить сервис Avanpost DS.
Для этого требуется выполнить команду:
sudo systemctl restart ads && sudo systemctl status ads --no-pager -l
Шаг 4. Подготовить keytab-файл для сервиса "bind".
Для этого требуется:
4.1. Выдать ACL-разрешения пользователю bind на keytab-файл:
sudo setfacl -m g:bind:r /etc/krb5.keytab sudo getfacl /etc/krb5.keytab
4.2. Проверить возможность чтения файла keytab пользователем bind:
sudo -u bind test -r /etc/krb5.keytab && echo "OK: bind может читать /etc/krb5.keytab"
Шаг 5. Настроить рабочую директорию BIND.
Для этого требуется:
5.1. Создать директорию и настроить права:
sudo mkdir -p /etc/bind/dyndb-avanpost.local/ sudo chown -R bind:bind /etc/bind/dyndb-avanpost.local/ sudo chmod 750 /etc/bind/dyndb-avanpost.local/
5.2. Проверить права на директорию:
ls -ld /etc/bind/dyndb-avanpost.local/
Шаг 6. Заполнить конфигурационный файл "/etc/bind/named.conf".
Для этого требуется:
6.1. Создать резервную копию текущей конфигурации BIND:
sudo cp /etc/bind/named.conf /etc/bind/named.conf.bak.$(date +%F_%H-%M-%S)
6.2. Открыть для редактирования конфигурационный файл "/etc/bind/named.conf":
sudo nano /etc/bind/named.conf
6.3. Заполнить файл по шаблону:
options {
directory "/etc/bind/";
listen-on port 53 { 127.0.0.1; [IP]; };
listen-on-v6 { none; };
allow-query { any; };
recursion yes;
allow-recursion { any; };
forward only;
forwarders { 77.88.8.8; };
dnssec-validation no;
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
controls { };
dyndb "avanpost_local_ldap" "/usr/lib64/bind/ldap.so" {
uri "ldap://[IP]:389";
base "ou=dyndb,ou=dns,dc=system";
auth_method "sasl";
sasl_mech "GSSAPI";
krb5_keytab "FILE:/etc/krb5.keytab";
krb5_principal "host/[FQDN]@[ДОМЕН]";
ldap_hostname "[FQDN]";
dyn_update no;
sync_ptr no;
connections 2;
timeout 20;
reconnect_interval 5;
verbose_checks yes;
directory "dyndb-ldap/avanpost_local_ldap";
};
Заменить [IP] на IP-адрес сервера, на котором развернут BIND.
Заменить [FQDN] на полное доменное имя контроллера домена Avanpost DS.
Заменить [ДОМЕН] на имя домена Avanpost DS заглавными буквами.
options {
directory "/etc/bind/";
listen-on port 53 { 127.0.0.1; 10.10.10.3; };
listen-on-v6 { none; };
allow-query { any; };
recursion yes;
allow-recursion { any; };
forward only;
forwarders { 77.88.8.8; };
dnssec-validation no;
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
controls { };
dyndb "avanpost_local_ldap" "/usr/lib/bind/ldap.so" {
uri "ldap://10.10.10.3:389";
base "ou=dyndb,ou=dns,dc=system";
auth_method "sasl";
sasl_mech "GSSAPI";
krb5_keytab "FILE:/etc/krb5.keytab";
krb5_principal "host/ds01.avanpost.local@AVANPOST.LOCAL";
ldap_hostname "ds01.avanpost.local";
dyn_update no;
sync_ptr no;
connections 2;
timeout 20;
reconnect_interval 5;
verbose_checks yes;
directory "dyndb-ldap/avanpost_local_ldap";
};
Шаг 7. Проверить конфигурацию BIND.
Для этого требуется выполнить команду:
sudo named-checkconf -z /etc/bind/named.conf
Шаг 8. Запустить сервис "bind9" и добавить его в автозапуск.
Для этого требуется выполнить команды:
sudo systemctl enable bind9 sudo systemctl restart bind9 sudo systemctl status bind9 --no-pager -l
Шаг 9. Проверить DNS.
Для этого требуется:
9.1. Проверить, что DNS-порт открыт:
ss -tulpn | grep ':53'
9.2. Проверить DNS-записи:
dig @127.0.0.1 avanpost.local SOA dig @127.0.0.1 ds01.avanpost.local A dig @127.0.0.1 SRV _ldap._tcp.avanpost.local dig @127.0.0.1 SRV _kerberos._tcp.avanpost.local
Ожидаемый результат:
- Для внутренних записей ожидается ответ с кодом "NOERROR";
- Для SRV-записей ожидается ответ в виде записей LDAP/Kerberos;
- Для внешнего домена ожидается ответ через forwarder;
- Отсутствие SERVFAIL, connection timed out или ошибок загрузки зоны.