Настройка службы DNS

В AD служба DNS выполняет следующие функции:

  • разрешение имен;

  • обнаружение служб (Kerberos, LDAP и т. п.);

  • обнаружение локальных контроллеров домена при использовании сайтов.

Для управления службой DNS Samba поддерживает работу с двумя DNS-серверами:

  • встроенный DNS-сервер (--dns-backend=INTERNAL_DNS — значение по умолчанию);

  • BIND 9 (--dns-backend=BIND9_DLZ).

Внутренний DNS-сервер

Внутренний DNS-сервер поддерживает базовую функциональность, необходимую для работы AD, и используется по умолчанию при инициализации нового домена, а также при присоединении к существующему домену. Он рекомендован для простых вариантов развертывания.

Внутренний DNS-сервер Samba имеет следующие ограничения:

  • не может выступать в роли кеширующего DNS-сервера (caching resolver);

  • не поддерживает обработку рекурсивных запросов;

  • не поддерживает аутентификацию DNS-транзакций с использованием общих ключей по протоколу TSIG;

  • не поддерживает работу с зонами-заглушками;

  • не поддерживает передачу зоны DNS;

  • не поддерживает циклическую балансировку нагрузки между контроллерами домена;

  • не поддерживает условное перенаправление DNS-запросов (conditional DNS forwarding).

Конфигурирование встроенного DNS-сервера выполняется с помощью параметров в файле smb.conf. Для администрирования используется утилита samba-tool (см. подробное описание доступных подкоманд в разделе «Администрирование DNS»).

BIND 9

В состав Samba входит модуль BIND9_DLZ, позволяющий использовать в качестве DNS-сервера решение с открытым исходным кодом BIND 9.

BIND 9 представляет собой полнофункциональную реализацию протокола DNS, включающую поддержку DNSSEC, DNS over HTTPS (DoH) и DNS over TLS (DoT).

Сервис named в составе BIND 9 может выступать в роли:

  • полномочного сервера имен (основной DNS-сервер, дополнительный DNS-сервер), отвечающего за какую-либо зону DNS;

  • кеширующего DNS-сервера, обслуживающего запросы клиентов с помощью нерекурсивных запросов к полномочным DNS-серверам и рекурсивных запросов к вышестоящим DNS-серверам;

  • перенаправляющего DNS-сервера, передающего полученные рекурсивные запросы вышестоящему кеширующему DNS-серверу.

Решение поддерживает возможность работы в разных режимах для разных сегментов сети, разделение DNS, позволяющее возвращать различные наборы записей зон DNS в зависимости от адреса источника DNS-запроса, автоматическое подписание зон и управление ключами с помощью DNSSEC, зоны-каталоги для упрощения процесса распространения данных зоны по цепочке серверов имен, зоны с политикой ответа (RPZ) для защиты клиентов от вредоносных данных, ограничение скорости ответа (RRL) и ограничение выполнения рекурсивных запросов для предотвращения DDoS-атак и т. п. (см. таблицу соответствия версий BIND и поддерживаемых возможностей в официальной документации).

В состав BIND 9 входит набор административных инструментов, включая утилиты dig и delv для проверки DNS-записей, nsupdate для динамического обновления зон DNS, rndc для удаленного администрирования серверов имен и другие.

Варианты развертывания службы DNS

Служба DNS может развертываться как на отдельном сервере, так и на контроллере домена совместно с Samba.

Выбор конкретного варианта развертывания DNS-сервера определяется следующими факторами:

  • если не требуется условное перенаправление DNS-запросов, может использоваться встроенный DNS-сервер Samba;

  • при развертывании в инфраструктуре, где уже есть настроенные DNS-серверы, на которые могут быть возложены функции перенаправления, может использоваться выделенный DNS-сервер на основе BIND 9;

  • если требуется перенаправление и использование выделенного DNS-сервера по каким-либо причинам нецелесообразно, вместо встроенного DNS-сервера может использоваться BIND 9;

  • различные комбинации приведенных выше вариантов.

Использование BIND 9 совместно с контроллером домена Samba

В каждом домене может быть развернут отдельный экземпляр BIND 9 (Рис. 1). В этом случае BIND 9 отвечает за разрешение имен внутри своего домена, а при необходимости разрешить имя в другом домене срабатывает условная пересылка и запрос перенаправляется на экземпляр BIND 9 в целевом домене.

bind deploy 1
Рис. 1. Развертывание экземпляра DNS-сервера BIND 9 совместно с экземпляром контроллера домена Samba

У этого способа развертывания есть ограничения по нагрузке, обусловленные архитектурой интеграции BIND 9 и Samba.

Причина в том, что при обращении потока BIND к API плагина BIND9_DLZ в процессе получения доступа к данным исполнение может быть прервано, если в момент обращения в базе данных исчерпан пул блокировок. Во время такого перерыва BIND не может обслуживать никакие запросы, включая внешние запросы, исходящие не от Samba. При этом увеличение количества рабочих потоков в конфигурации BIND 9 ситуацию не исправляет.

Таким образом, при большом объеме трафика данная проблема может приводить к неработоспособности DNS-сервера.

Для ее решения рекомендуется использовать внешний DNS-сервер (см. описание варианта развертывания, предусматривающего использование BIND 9 в роли выделенного DNS-сервера).

Использование выделенного DNS-сервера для условного перенаправления DNS-запросов

При необходимости обеспечения условного перенаправления DNS-запросов для этой цели может использоваться экземпляр BIND 9, развернутый на отдельном сервере.

В этом варианте развертывания (Рис. 2):

  1. Когда клиенту в домене developers необходимо получить адрес компьютера в домене testers, он обращается к своему контроллеру домена.

  2. Контроллер домена отправляет запрос на отдельный DNS-сервер через механизм безусловной пересылки.

  3. Отдельный DNS-сервер на основе BIND 9 в соответствии со своими настройками выполняет условную пересылку — обращается к контроллеру домена, обслуживающему домен testers.

bind deploy 2
Рис. 2. Использование отдельного экземпляра BIND 9 для условной пересылки DNS-запросов

Использование выделенного DNS-сервера для обслуживания всех DNS-запросов

При большом количестве запросов от рабочих станций к внешним адресам (например, при активном использовании интернета) целесообразно использовать выделенный сервер с развернутым экземпляром BIND 9 для обслуживания всех DNS-запросов (Рис. 3).

В этом случае DNS-сервер пересылает Samba только запросы, относящиеся к контролируемому Samba домену.

bind deploy 3
Рис. 3. Использование отдельного экземпляра BIND 9 в качестве основного DNS-сервера

Гибридный вариант

Возможны различные гибридные варианты развертывания.

Например, в одном домене Samba использует BIND 9, а в других доменах Samba использует встроенный DNS-сервер (Рис. 4). В зависимости от источника и направления запроса пересылка выполняется либо как в первом из описанных выше вариантов развертывания, либо как во втором.

bind deploy 4
Рис. 4. Гибридный вариант развертывания

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

Процесс настройки DNS-сервера зависит от варианта развертывания и роли, которую должен выполнять BIND 9.

При установке в соответствующем каталоге (например, /etc/bind на Ubuntu; чтобы уточнить путь, после установки выполните named -V | grep sysconfdir) создается основной конфигурационный файл named.conf, содержащий ссылки на файлы с настройками DNS-сервера:

  • named.conf.options – файл для задания глобальных настроек DNS;

  • named.conf.local — файл для задания настроек зон DNS;

  • named.conf.default-zones — файл с настройками зон по умолчанию (localhost, обратная зона и список корневых серверов).

См. подробное описание доступных настроек в документации BIND 9.

В общем случае процесс настройки состоит из следующих этапов:

  1. Установка пакетов BIND 9 из стандартных репозиториев используемого дистрибутива Linux либо их сборка из исходного кода.

  2. Задание глобальных настроек, определяющих режим работы DNS-сервера, в разделе options в файле named.conf.options.

  3. Создание файлов с ресурсными записями, описывающими зоны DNS, на основе поставляемых шаблонов.

  4. Задание путей к созданным файлам зон, настройка режима работы сервера с ними (type master/slave/forward и т. д.), настройка перенаправления запросов (forwarders, forward first/only) и прочих относящихся к работе сервера настроек в файле named.conf.local.

  5. Задание корневых серверов для рекурсивных запросов, настроек зоны localhost и зоны 127.0.0. в файле named.conf.default-zones.

  6. Проверка корректности заданной конфигурации с помощью утилиты named-checkconf.

  7. Проверка корректности заданных настроек зон DNS с помощью утилиты named-checkzone.

  8. Перезапуск службы bind9.

  9. Тестирование работы DNS-сервера с помощью доступных инструментов.

См. актуальное описание процесса настройки службы DNS с использованием BIND 9 в руководстве по администрированию BIND 9, а также в документации на используемый дистрибутив Linux (например, в документации Astra Linux, РЕД ОС, Ubuntu Server, Debian и т. д.).

Установка

Рекомендуется устанавливать BIND 9 с помощью пакетов, поставляемых для используемого дистрибутива Linux.

Например, для установки BIND 9 из стандартных репозиториев Debian может использоваться следующая команда:

sudo apt install bind9 bind9utils -y

В данном случае также устанавливается пакет утилит bind9utils, в состав которого входят, например, следующие инструменты:

  • rndc — утилита для управления сервером имен;

  • named-checkconf — утилита для проверки корректности заполнения конфигурационных файлов;

  • named-checkzone — утилита для проверки файлов зон DNS.

После установки следует убедиться, что сборка пакетов выполнялась с опцией --with-gssapi=yes или --with-gssapi=/usr (или аналогичной), обеспечивающей возможность динамического обновления данных DNS с аутентификацией по протоколу Kerberos. Для получения полной информации о сборке может использоваться следующая команда:

named -V

Если существующие пакеты не удовлетворяют тем или иным требованиям, выполните сборку в соответствии с инструкциями в документации BIND 9.

Файл named.conf

Следующий пример иллюстрирует общую структуру конфигурационного файла named.conf с базовыми настройками логирования, которые могут быть расширены в соответствии с потребностями конкретного варианта развертывания:

// Глобальные настройки DNS-сервера
options {
  // Базовый каталог для задания относительных путей к файлам в настройках
  directory "/var";
  // Условная информация о версии
  version "not currently available";
};

// Настройки логирования
// Все события от уровня info (кроме debug) логируются в файл /var/log/named/example.log
// Используются 3 файла с ротацией по достижении 250 Кб
// Сообщения, сформированные до начала логирования, попадают
// в syslog (/var/log/messages)
//
logging {
  channel example_log {
    // Заданный путь достраивается до /var/log/named/example.log
    file "log/named/example.log" versions 3 size 250k;
    // Логируются только сообщения выше уровня info
    severity info;
  };
  category default {
    example_log;
  };
};

Файлы зон DNS

Файл зоны DNS сдержит ресурсные записи, описывающие характеристики данной зоны.

Далее приводится пример базового файла прямой зоны DNS для домена example.com (файл example.com):

; Базовый файл зоны для example.com
$TTL 2d    ; Время хранения ресурсных записей в кеше по умолчанию для зоны
$ORIGIN example.com. ; Доменное имя
; Ресурсная запись Start of Authority, задающая ключевые характеристики зоны (домена)
@         IN      SOA   ns1.example.com. hostmaster.example.com. (
                                2023051702 ; номер версии записи
                                12h        ; интервал для запроса изменений
                                15m        ; интервал для повторных попыток
                                3w         ; время для применения изменений
                                2h         ; время хранения в кеше
                                )
; Ресурсная запись сервера имен для домена
           IN      NS      ns1.example.com.
; Второй сервер имен для данной зоны (домена)
           IN      NS      ns2.example.net.
; Ресурсная запись почтового сервера для зоны (домена)
        3w IN      MX  10  mail.example.com.
; Второй почтовый сервер вне зоны (домена)
           IN      MX  20  mail.example.net.
; Узлы домена включают заданный выше записи NS и MX
; плюс любые другие требуемые записи
; Например, пользовательский запрос ресурсной записи A для host.example.com
; вернет IPv4-адрес 192.168.254.6 из этого файла зоны
ns1        IN      A       192.168.254.2
mail       IN      A       192.168.254.4
host       IN      A       192.168.254.6
www        IN      A       192.168.254.7
; Алиас ftp (ftp-сервера), указывающий на внешний домен
ftp        IN      CNAME   ftp.example.net.

Пример файла обратной зоны DNS 254.168.192.in-addr.arpa (файл 192.168.254.rev):

; Файл обратной зоны для узла 192.168.254.4
$TTL 2d  ; Время хранения записи в кеше - 172800 секунд
$ORIGIN 254.168.192.IN-ADDR.ARPA.
@     IN      SOA   ns1.example.com. hostmaster.example.com. (
                                        2023051702
                                        3h
                                        15m
                                        3w
                                        3h
                                        )
; Для этого локального файла требуется только одна запись NS
      IN      NS      ns1.example.com.
; При необходимости могут быть добавлены другие IP-адреса
; Эта запись сопоставляет 192.168.254.4 с указанным FQDN
4     IN      PTR     mail.example.com. ; полное доменное имя узла (FQDN)

Пример файла для прямой зоны localhost (файл localhost-forward.db):

$TTL 3h
localhost.  SOA      localhost.  nobody.localhost. 42  1d  12h  1w  3h
            NS       localhost.
            A        127.0.0.1
            AAAA     ::1

Пример файла для обратной зоны localhost (файл localhost.rev):

$TTL 1D
@        IN        SOA  localhost. root.localhost. (
                        2023051702
                        30800
                        7200
                        604800
                        300 )
         IN        NS    localhost.
1        IN        PTR   localhost.

Основной DNS-сервер

Пример настройки BIND 9 для работы в качестве основного DNS-сервера с использованием файлы зоны DNS example.com:

// Файл named.conf с настройками для основного DNS-сервера
options {
  directory "/var";
  version "not currently available";
  // Разрешены пользовательские запросы с любых IP-адресов (по умолчанию)
  allow-query { any; };
  // В обычном режиме работы сервер может помещать данные в кеш
  // Данная настройка запрещает пользовательским запросам доступ к таким данным
  // В ответ на запросы возвращаются только данные зоны
  allow-query-cache { none; };
  // Отключение рекурсивного режима обслуживания пользовательских запросов
  recursion no;
};

logging {
  channel example_log {
    file "log/named/example.log" versions 3 size 250k;
    severity info;
  };
  category default {
    example_log;
  };
};

// Настройки для прямой зоны localhost
// (опционально)
zone "localhost" {
  type master;
  file "master/localhost-forward.db";
  notify no;
};

// Обратная зона для 127.0.0.1
zone "0.0.127.in-addr.arpa" {
  type master;
  file "localhost.rev";
  notify no;

// Настройки сервера для зоны example.com
zone "example.com" {
  // Сервер является основным сервером имен для зоны
  type master;
  // Путь к файлу с ресурсными записями зоны
  file "example.com";
  // Уведомлять дополнительные серверы об изменениях
  // в данных зоны (значение по умолчанию)
  notify yes;
  // IP-адреса дополнительных серверов, которые могут
  // получать данные зоны example.com с данного сервера
  allow-transfer {
    192.168.4.14;
    192.168.5.53;
  };
};

Дополнительный DNS-сервер

Пример настройки BIND 9 для работы в качестве дополнительного DNS-сервера:

// Файл named.conf с настройками для дополнительного DNS-сервера
options {
  directory "/var";
  version "not currently available";
  allow-query { any; };
  allow-query-cache { none; };
  recursion no;
};

logging {
  channel example_log {
    file "log/named/example.log" versions 3 size 250k;
    severity info;
   };
   category default {
     example_log;
  };
};

zone "localhost" {
  type master;
  file "master/localhost-forward.db";
  notify no;
};

zone "0.0.127.in-addr.arpa" {
  type master;
  file "localhost.rev";
  notify no;
};

// Настройки сервера для зоны example.com
zone "example.com" {
  // Сервер является дополнительным сервером имен для зоны
  type slave;
  // Дополнительный сервер может сохранять
  // изменения данных зоны, чтобы минимизировать время загрузки
  // в случае перезапуска и начать отвечать на запросы без
  // обращения за данными к основному серверу
  file "example.com.saved";
  // IP-адрес основного сервера для зоны example.com
  masters { 192.168.254.2; };
};

Кеширующий DNS-сервер

Пример настройки BIND 9 для работы в качестве сопоставителя DNS, обрабатывающего рекурсивные запросы от определенного набора IP-адресов:

// Файл named.conf с настройками для кеширующего DNS-сервера
// В блоке acl задаются две корпоративные подсети,
// для которых разрешены запросы
acl corpnets {
  192.168.4.0/24;
  192.168.7.0/24;
};

options {
  directory "/var";
  version "not currently available";
  // Разрешена обработка рекурсивных запросов (значение по умолчанию)
  recursion yes;
  // Рекурсивные запросы разрешены только для IP-адресов
  // из блока acl
  allow-query { corpnets; };
  // Данная настройка гарантирует, что результаты обратного сопоставления
  //  для частных IP-адресов, не заданных в файле зоны, НЕ будут передаваться
  // в общедоступную сеть (значение по умолчанию)
  empty-zones-enable yes;
};

logging {
  channel example_log {
    file "log/named/example.log" versions 3 size 250k;
    severity info;
   };
   category default {
     example_log;
  };
};

// Файл зоны для корневых серверов
zone "." {
  type hint;
  file "named.root";
};

zone "localhost" {
  type master;
  file "masters/localhost-forward.db";
  notify no;
};

zone "0.0.127.in-addr.arpa" {
  type master;
  file "localhost.rev";
  notify no;
};

// Настройки сервера для обратного сопоставления локальных IP-адресов
zone "254.168.192.in-addr.arpa" {
  type master;
  file "192.168.254.rev";
  notify no;
};

Перенаправляющий DNS-сервер

Пример настройки BIND 9 для перенаправления всех рекурсивных запросов, кроме тех, которые относятся к указанным в файле зонам, и тех, ответы для которых уже присутствует в кеше сервера, на DNS-сервер с IP-адресом 192.168.250.3 и альтернативный сервер с IP-адресом 192.168.230.27 с последующим кешированием полученных ответов:

// Файл named.conf с настройками для перенаправления запросов
acl corpnets {
  192.168.4.0/24;
  192.168.7.0/24;
};

options {
  directory "/var";
  version "not currently available";
  recursion yes;
  allow-query { corpnets; };
  empty-zones-enable yes;
  // Адреса DNS-серверов, на которые должны перенаправляться запросы
  forwarders {
    192.168.250.3;
    192.168.230.27;
  };
  // Перенаправлять все запросы, кроме запросов для заданных зон
  forward only;
};

logging {
  channel example_log {
    file "log/named/example.log" versions 3 size 250k;
    severity info;
  };
  category default {
    example_log;
  };
};

// Файл с корневыми серверами не требуется

zone "localhost" {
  type master;
  file "masters/localhost-forward.db";
  notify no;
};

zone "0.0.127.in-addr.arpa" {
  type master;
  file "localhost.rev";
  notify no;
};

zone "254.168.192.in-addr.arpa" {
  type master;
  file "192.168.254.rev";
  notify no;
};

Перенаправляющий DNS-сервер (выборочное перенаправление запросов)

Пример настройки BIND 9 для перенаправления рекурсивных запросов только для зоны example.com на DNS-серверы с IP-адресами 192.168.250.3 и 192.168.230.27; все остальные рекурсивные запросы, кроме тех, которые относятся к указанным в файле зонам, и тех, ответы для которых уже присутствует в кеше сервера, обрабатываются данным сервером; при этом сервер кеширует все ответы — как из общедоступной сети, так и от кеширующих DNS-серверов:

// Файл named.conf с настройками для выборочного перенаправления запросов
acl corpnets {
  192.168.4.0/24;
  192.168.7.0/24;
};

options {
  directory "/var";
  version "not currently available";
  recursion yes;
  allow-query { corpnets; };
  empty-zones-enable yes;

  // Перенаправление в данной конфигурации задается не глобально,
  // а на уровне отдельной зоны
};

logging {
  channel example_log {
    file "log/named/example.log" versions 3 size 250k;
    severity info;
   };
   category default {
     example_log;
  };
};

zone "." {
  type hint;
  file "named.root";
};

zone "localhost" {
  type master;
  file "masters/localhost-forward.db";
  notify no;
};

zone "0.0.127.in-addr.arpa" {
  type master;
  file "localhost.rev";
  notify no;
};

zone "254.168.192.in-addr.arpa" {
  type master;
  file "192.168.254.rev";
  notify no;
};

// Настройки перенаправления запросов для зоны example.com
zone "example.com" {
  type forward;
  // Адреса DNS-серверов, на которые должны перенаправляться запросы
  forwarders {
    192.168.250.3;
    192.168.230.27;
  };
  // Перенаправлять все запросы для данной зоны
  forward only;
};

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

При использовании модуля BIND9_DLZ вместе с контроллером домена Samba (см. описание данного варианта развертывания):

  1. Установите и настройте BIND 9 на сервере, который будет выполнять роль контроллера домена.

  2. При инициализации домена Samba или присоединении к домену Samba укажите --dns-backend=BIND9_DLZ. При этом будет создан файл samba/bind-dns/named.conf.

  3. Добавьте ссылку на созданный конфигурационный файл в конец файла named.conf:

    include "/app/inno-samba/bind-dns/named.conf";
  4. Чтобы обеспечить динамическое обновление DNS с использованием Kerberos и сделать так, чтобы записи NS не возвращались во всех ответах:

    • добавьте в блок options в файле named.conf.options BIND 9 следующие настройки:

      options {
           [...]
           tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab";
           minimal-responses yes;
      };
    • убедитесь, что конфигурационный файл клиента Kerberos /etc/krb5.conf доступен на чтение пользователю BIND 9; например:

      ls -l /etc/krb5.conf
      -rw-r--r-- 1 root bind 2871 Apr 27 17:58 /etc/krb.conf
    • при необходимости скорректируйте права:

      sudo chown root:bind /etc/krb5.conf
    • убедитесь, что на контроллере домена доступна утилита nsupdate:

      which nsupdate
      /usr/bin/nsupdate

      Команда nsupdate используется для обновления DNS. Если утилита отсутствует, обратитесь к документации на используемый дистрибутив Linux и установите ее.

  5. Проверьте корректность конфигурации:

    sudo named-checkconf
  6. Перезапустите сервис bind9:

    sudo systemctl restart bind9

Для проверки корректности обновления данных DNS выполните на контроллере домена с настроенным DNS-сервером принудительное обновление всех DNS-записей. Например:

samba_dnsupdate --verbose --all-names
IPs: ['10.0.9.100']
...
force update: A samdom.example.com 10.0.9.100
...
29 DNS updates and 0 DNS deletes needed
Successfully obtained Kerberos ticket to DNS/dc1.samdom.example.com as DC1$
update(nsupdate): A samdom.example.com 10.0.9.100
Calling nsupdate for A samdom.example.com 10.0.9.100 (add)
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; UPDATE SECTION:
samdom.example.com.	900	IN	A	10.0.9.100
...

Настройка службы DNS с учетом ограничений модуля BIND9_DLZ

Модуль BIND9_DLZ обращается напрямую к базе данных Samba AD при обслуживании запросов, относящихся к зарегистрированным в домене зонам DNS.

Отсюда вытекает ряд ограничений:

  • для организации полноценной работы BIND 9 в качестве основного DNS-сервера через BIND9_DLZ он должен устанавливаться на той же машине, что и контроллер домена Samba AD;

  • BIND 9 не должен запускаться в измененном окружении от имени root;

  • данные зон DNS хранятся и реплицируются в рамках каталога.

Учитывая перечисленные ограничения, при большом объеме DNS-трафика не рекомендуется использовать плагин BIND9_DLZ для организации работы службы DNS. Вместо этого следует использовать внешний DNS-сервер BIND 9, обслуживающий DNS-запросы от клиентов и контроллеров как в рамках отдельного домена Samba AD, так и между доменами (см. вариант развертывания, предусматривающий использование выделенного сервера с развернутым экземпляром BIND 9 для обслуживания всех DNS-запросов).

В этом случае вся настройка зон DNS и обслуживания DNS-запросов в рамках отдельного домена Samba AD и между доменами выполняется средствами BIND 9.

Настройка службы DNS с учетом ограничений встроенного DNS-сервера Samba

Встроенный в Samba DNS-сервер не поддерживает условное перенаправление DNS-запросов, но поддерживает безусловное перенаправление.

В этом случае для организации условного перенаправления может использоваться выделенный DNS-сервер BIND 9 (см. описание данного варианта развертывания).

Для настройки варианта работы службы DNS с условным перенаправлением:

  1. На отдельном сервере установите и настройте BIND 9.

  2. При инициализации домена Samba либо присоединении к существующему домену:

    • в качестве контроллера используйте настройку DNS-сервера по умолчанию (--dns-backend=INTERNAL_DNS);

    • для безусловной пересылки запросов в блоке [global] в конфигурации Samba (smb.conf) укажите IP-адрес сервера с развернутым экземпляром BIND 9 в качестве значения глобальной настройки dns forwarder; например, если BIND 9 развернут на узле с IP-адресом 10.0.9.140:

      [global]
          dns forwarder = 10.0.9.140
  3. В конфигурации BIND 9 (named.conf.local) для зон, обслуживаемых встроенными DNS-серверами на контроллерах домена Samba, настройте перенаправление. Например, если зоны ad1.example.com и ad2.example.com обслуживают встроенные DNS-сервера на контроллерах домена с IP-адресами 10.0.9.130 и 10.0.9.120:

    zone "ad1.example.com" {
        // Сервер выполняет перенаправление запросов для зоны
        type forward;
        // IP-адрес контроллера домена с обслуживающим зону
        // встроенным DNS-сервером, на который должны перенаправляться запросы
        forwarders {
            10.0.9.130;
        };
        // Перенаправлять все запросы для данной зоны
        forward only;
    };
    zone "ad2.example.com" {
        type forward;
        forwarders {
            10.0.9.120;
        };
        forward only;
    };

Изменение DNS-бэкенда на контроллере домена

Samba позволяет переключаться между встроенным DNS-сервером и модулем BIND9_DLZ на контроллере домена без потери данных.

При использовании в качестве базы данных каталога LMDB (--backend-store=mdb) перед переключением убедитесь, что на контроллере домена установлен пакет lmdb-utils.

Например:

dpkg -s lmdb-utils

Если пакет отсутствует, установите его.

Например:

sudo apt install lmdb-utils`

Миграция с встроенного DNS-сервера на BIND9_DLZ

Для переключения с встроенного DNS-сервера на модуль BIND9_DLZ выполните следующие действия на контроллере домена:

  1. Настройте модуль BIND9_DLZ (см. раздел «Настройка модуля BIND9_DLZ»).

  2. Остановите службу Samba. Например:

    systemctl stop inno-samba
  3. Выполните команду миграции:

    samba_upgradedns --dns-backend=BIND9_DLZ
  4. Отключите встроенный DNS-сервер в файле 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
  5. Настройте автоматический запуск службы bind9 при загрузке (см. инструкции в документации на используемый дистрибутив Linux). Например:

    systemctl enable bind9
  6. Запустите службу bind9. Например:

    systemctl start bind9
  7. Запустите службу Samba. Например:

    systemctl start inno-samba

Миграция с BIND9_DLZ на встроенный DNS-сервер

Для переключения с модуля BIND9_DLZ на встроенный DNS-сервер выполните следующие действия на контроллере домена:

  1. Остановите службу bind9. Например:

    systemctl stop bind9
  2. Отключите автоматический запуск службы bind9 при загрузке (см. инструкции в документации на используемый дистрибутив Linux). Например:

    systemctl disable bind9
  3. Остановите службу Samba. Например:

systemctl stop inno-samba
  1. Выполните команду миграции:

    samba_upgradedns --dns-backend=SAMBA_INTERNAL
  2. Отключите модуль 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, удалите его полностью.

  3. Запустите службу Samba. Например:

    systemctl start inno-samba
Использование встроенного DNS-сервера предусмотрено настройкой параметра server services по умолчанию. Удаление параметра server services означает включение всех служб по умолчанию, включая DNS-сервер.