Введение


Статья основана на материалах из wiki.samba.org
В материалы внесены существенные изменения, отражающие работу с современной версией Bind9.

Для того, чтобы создать контроллер домена Samba Active Directory (AD), в первую очередь нужно создать и настроить DNS-сервер.
Для использования с ОС Astra Linux рекомендуется DNS-сервер BIND9, входящий в комплект дистрибутивов.

Далее описывается базовая инсталляция BIND9, которую, в дальнейшем, можно будет использовать для  Samba AD DC.
Для перехода с использования внутренней службы DNS Samba на использование сервера Bind9 также см. Изменение службы DNS контроллера домена AD Samba.

Установка Bind

Процедуру установки пакета bind cм. DNS-сервер BIND9

Настройка BIND

Добавлять зоны перенаправления и реверсивные зоны домена AD в файлы named.conf не нужно, так как эти зоны хранятся динамически в  AD.

Создание файла зоны localhost и файла реверсивной зоны  0.0.127.in-addr.arpa

Файлы зоны localhost и файла реверсивной зоны  0.0.127.in-addr.arpa при установке пакета создаются автоматически (файлы /etc/bind/db.local и /etc/bind/db.127 соответственно).

Запуск сервиса

Для запуска/перезапуска сервиса BIND используйте команды

sudo systemctl start bind9
sudo systemctl restart bind9

Проверка зон

Следующие примеры запрашивают у сервиса DNS информацию о локальной машине (127.0.0.1).

Проверка зоны перенаправления localhost

Команда:

host -t A localhost 127.0.0.1
Образец ответа:

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
localhost has address 127.0.0.1

Проверка реверсивной зоны 0.0.127.in-addr.arpa.

Команда:

host -t PTR 127.0.0.1 127.0.0.1
Образец ответа:

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
1.0.0.127.in-addr.arpa domain name pointer localhost.

Настройка модуля BIND9_DLZ

Эту настройку следует выполнять после выполнения назначения Samba на роль контроллера AD, так как нужный конфигурационный файл /var/lib/samba/bind-dns/named.conf появится только после этого назначения.

Во время назначения Samba на роль контроллера домена AD автоматически создается конфигурационный файл /var/lib/samba/bind-dns/named.conf службы BIND9:

# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include "/var/lib/samba/bind-dns/named.conf";

#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz "AD DNS Zone" {
   # For BIND 9.8.x
   # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so";

   # For BIND 9.9.x
   # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";

   # For BIND 9.10.x
   # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so";

   # For BIND 9.11.x
   database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_11.so";
};

Для включения модуля BIND9_DLZ:

Добавить в конфигурационный файл /etc/bind/named.conf команду включения конфигурации samba:

include "/var/lib/samba/bind-dns/named.conf";

Определить используемую версию bind командой:

sudo named -v
С помощью любого текстового редактора  убедиться, что в файле /var/lib/samba/bind-dns/named.conf раскомментировна строка, соответствующая используемой версии BIND. При написании этой статьи использовалась версия BIND 9.11.

Разрешить доступ к файлу /var/lib/samba/bind-dns/named.conf:

sudo chown -R root:bind /var/lib/samba/bind-dns/

Проверить правильность конфигурации:
sudo named-checkconf
Перезапустить сервис bind9:
sudo systemctl restart bind9

Ошибка /usr/sbin/samba_dnsupdate: ; TSIG error with server: tsig verify failure

Сообщения в системном журнале вида "/usr/sbin/samba_dnsupdate: update failed: REFUSED" и связанные с ними сообщения об ошибках обновления DNS можно игнорировать.

Ошибка "status: FORMERR" при обращении к DNS-серверу Windows AD

Пример:

dig SRV _ldap._tcp.windomain.ru

; <<>> DiG 9.11.3-1ubuntu1.5-Debian <<>> SRV _ldap._tcp.windomain.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 16281
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: ad69f89824966028 (echoed)
;; QUESTION SECTION:
;_ldap._tcp.windomain.ru. IN SRV

;; Query time: 0 msec
;; SERVER: 10.0.2.10#53(10.0.2.10)
;; WHEN: Fri Dec 06 08:52:19 MSK 2019
;; MSG SIZE rcvd: 64


Ошибка возникает из-за того, что DNS-сервер Windows AD, вопреки действующим стандартам, считает ошибкой низвестные ему опции запроса (стандарты требуют просто игнорировать такие опции).

Вариант обхода - использовать в команде dig опцию +nocookie (или +noends):

dig SRV _ldap._tcp.windomain.ru +nocookie

; <<>> DiG 9.11.3-1ubuntu1.5-Debian <<>> SRV _ldap._tcp.windomain.ru +nocookie
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46065
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;_ldap._tcp.windomain.ru. IN SRV

;; ANSWER SECTION:
_ldap._tcp.windomain.ru. 600 IN SRV 0 100 389 swin.windomain.ru.
_ldap._tcp.windomain.ru. 900 IN SRV 0 100 389 ad.windomain.ru.

;; ADDITIONAL SECTION:
swin.windomain.ru. 3600 IN A 10.0.2.10
ad.windomain.ru. 900 IN A 10.0.2.250

;; Query time: 0 msec
;; SERVER: 10.0.2.10#53(10.0.2.10)
;; WHEN: Fri Dec 06 08:58:06 MSK 2019
;; MSG SIZE rcvd: 156