Product SiteDocumentation Site

2.2.4. Домен с BIND9_DLZ

В состав Samba входит модуль BIND9_DLZ, позволяющий использовать в качестве DNS-сервера решение с открытым исходным кодом BIND 9.
BIND 9 представляет собой полнофункциональную реализацию протокола DNS, включающую поддержку DNSSEC, DNS over HTTPS (DoH) и DNS over TLS (DoT).
Служба DNS может разворачиваться как на отдельном сервере, так и на контроллере домена совместно с Samba.
Работа с внешним сервером DNS осуществляется с помощью бэкенда BIND9_DLZ и используется в следующих случаях:
  • сложная схема зон DNS;
  • поддержка более одного сервера форвардинга (параметр dns forwarder на бэкенде SAMBA_INTERNAL работает только с одним адресом).
Если планируется настроить контроллер домена Samba AD с использованием серверной части BIND9_DLZ, необходимо сначала установить и настроить DNS-сервер BIND.

2.2.4.1. Настройка DNS-сервера BIND

На сервере должны быть установлены пакеты bind и bind-utils:
# apt-get install bind bind-utils

Примечание

Во избежании появлении ошибки при запуске bind:
мая 03 14:25:13 dc1 named[3825]: samba_dlz: Failed to configure zone 'test.alt'
мая 03 14:25:13 dc1 named[3825]: loading configuration: already exists
мая 03 14:25:13 dc1 named[3825]: exiting (due to fatal error)
мая 03 14:39:44 dc1 named[4309]: Loading 'AD DNS Zone' using driver dlopen
не следует, при установке системы, задавать полное имя для DC (dc1.test.alt).

Примечание

Пакет bind содержит различные утилиты, связанные с DNS, например:
  • named-checkconf — проверка синтаксиса файлов конфигурации;
  • named-checkzone — проверка файлов зон DNS;
  • rndc — инструмент управления службой DNS.
Пакет bind-utils содержит следующие утилиты:
  • dig — многофункциональный инструмент для опроса DNS-серверов;
  • host — позволяет получить информацию о DNS-связях между доменными именами и IP-адресами;
  • nslookup — позволяет получить информацию DNS об удаленном сервере;
  • nsupdate — инструмент для динамического обновления записей DNS.

Примечание

Основные файлы настройки DNS и некоторые параметры конфигурационного файла bind описаны в разделе Bind. Для получения более подробной информации следует обратиться к man странице named.conf(5).
Настройка BIND9 для работы с Samba AD:
  1. Отключить chroot:
    # control bind-chroot disabled
    
  2. Отключить KRB5RCACHETYPE:
    # grep -q KRB5RCACHETYPE /etc/sysconfig/bind || echo 'KRB5RCACHETYPE="none"' >> /etc/sysconfig/bind
    
  3. Подключить плагин BIND_DLZ:
    # grep -q 'bind-dns' /etc/bind/named.conf || echo 'include "/var/lib/samba/bind-dns/named.conf";' >> /etc/bind/named.conf
    
  4. Отредактировать файл /etc/bind/options.conf:
    • в раздел options добавить строки:
      tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
      minimal-responses yes;
      
    • в параметре forwarders указать сервера, куда будут перенаправляться запросы, на которые нет информации в локальной зоне (если этой информации нет в файле /etc/bind/resolvconf-options.conf):
      forward first;
      forwarders { 8.8.8.8; };
      
    • в параметр listen-on добавить IP-адрес DNS-сервера, на котором он будет принимать запросы;
    • раскомментировать параметр allow-query и указать в нём подсети, из которых разрешено подавать запросы;
    • раскомментировать параметр allow-recursion и указать в нём подсети, из которых будут обрабатываться рекурсивные запросы;
    • в раздел logging добавить строку:
      category lame-servers {null;};
      
    Пример файла /etc/bind/options.conf:
    options {
            version "unknown";
            directory "/etc/bind/zone";
            dump-file "/var/run/named_dump.db";
            statistics-file "/var/run/named.stats";
            recursing-file "/var/run/recursing";
    
    
            // disables the use of a PID file
            pid-file none;
            tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
            minimal-responses yes;
    
            listen-on { 127.0.0.1; 192.168.0.122; };
            listen-on-v6 { ::1; };
    
            include "/etc/bind/resolvconf-options.conf";
    
            allow-query { localnets; 192.168.0.0/24; };
            allow-recursion { localnets; 192.168.0.0/24; };
    
            //max-cache-ttl 86400;
    
    };
    
    logging {
            category lame-servers {null;};
    };
    
  5. В файле /etc/bind/resolvconf-options.conf в параметре forwarders должен быть указан DNS-сервер, на который будут перенаправляться запросы клиентов;
  6. Выполнить остановку bind:
    # systemctl stop bind
    
Если в роли DNS-сервера Samba используется Bind, то при создании домена нужно использовать параметр --dns-backend=BIND9_DLZ.

2.2.4.2. Восстановление к начальному состоянию Samba

Необходимо очистить базы и конфигурацию Samba (домен, если он создавался до этого, будет удалён):
# rm -f /etc/samba/smb.conf
# rm -rf /var/lib/samba
# rm -rf /var/cache/samba
# mkdir -p /var/lib/samba/sysvol

Предупреждение

Перед созданием домена необходимо обязательно удалить /etc/samba/smb.conf: rm -f /etc/samba/smb.conf

2.2.4.3. Интерактивное создание домена

Для запуска интерактивной установки необходимо выполнить команду:
# samba-tool domain provision
В ответе на первые два вопроса нужно указать доменное имя и имя рабочей группы:
Realm [TEST.ALT]:
Domain [TEST]:

Примечание

Чтобы принять значение по умолчанию, необходимо нажать Enter.
Далее нужно указать тип серверной роли и бэкенд DNS-сервера:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Задать пароль для администратора:
Administrator password:
Retype password:

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы как минимум трёх групп из четырёх возможных: латинских букв в верхнем и нижнем регистрах, чисел и других небуквенно-цифровых символов. Пароль не полностью соответствующий требованиям это одна из причин завершения развертывания домена ошибкой.
Начнётся процесс конфигурации:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=alt
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers and extended rights
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /var/lib/samba/bind-dns/named.conf for an example configuration include file for BIND
and /var/lib/samba/bind-dns/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
The Kerberos KDC configuration for Samba AD is located at /var/lib/samba/private/kdc.conf
A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
Once the above files are installed, your Samba AD server will be ready to use
Server Role:           active directory domain controller
Hostname:              dc1
NetBIOS Domain:        TEST
DNS Domain:            test.alt
DOMAIN SID:            S-1-5-21-3684382553-2825304832-3399765044

2.2.4.4. В пакетном режиме

Пример команды создания контроллера домена test.alt в пакетном режиме:
# samba-tool domain provision --realm=test.alt --domain test --adminpass='Pa$$word' --dns-backend=BIND9_DLZ --server-role=dc
Для пакетной установки необходимо указать следующие параметры:
  • --realm REALM_NAME — имя области Kerberos (LDAP) и DNS имя домена;
  • --domain=DOMAIN — имя домена (имя рабочей группы);
  • --adminpass=PASSWORD — пароль основного администратора домена;
  • --server-role=ROLE — тип серверной роли;
  • --dns-backend=NAMESERVER-BACKEND — бэкенд DNS-сервера;
  • --use-rfc2307 — позволяет поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.

Примечание

Пароль администратора должен быть не менее 7 символов и содержать символы как минимум трёх групп из четырёх возможных: латинских букв в верхнем и нижнем регистрах, чисел и других небуквенно-цифровых символов. Пароль не полностью соответствующий требованиям это одна из причин завершения развертывания домена ошибкой.
Если уровень не указан, то домен разворачивается на уровне 2008_R2. Для разворачивания домена на другом уровне, уровень необходимо явно указать, например:
# samba-tool domain provision --realm=test.alt --domain=test --adminpass='Pa$$word' --dns-backend=BIND9_DLZ --option="ad dc functional level = 2016" --server-role=dc --function-level=2016

Примечание

Если необходим уровень 2012_R2, то следует сначала развернуть домен на уровне 2008_R2, а затем повысить его до 2012_R2 (см. Повышение уровня схемы, функционального уровня домена).

Примечание

Некоторые параметры команды samba-tool domain provision приведены в в табл. Основные опции для samba-tool domain provision. Полный список параметров можно увидеть, запустив команду:
# samba-tool domain provision --help

2.2.4.5. Запуск служб samba и bind

Установить службы samba и bind по умолчанию и запустить их:
# systemctl enable --now samba
# systemctl enable --now bind

Примечание

Если служба samba после установки никаким способом не запускается, необходимо перезагрузить сервер.

Примечание

Пример файла /etc/samba/smb.conf после создания домена с BIND9_DLZ:
# Global parameters
[global]
        netbios name = DC1
        realm = TEST.ALT
        server role = active directory domain controller
        server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
        workgroup = TEST

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[netlogon]
        path = /var/lib/samba/sysvol/test.alt/scripts
        read only = No

2.2.4.6. Проверка зон

Следующие примеры запрашивают службу 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.