Создание подчиненного домена в лесу

Эллес может развертываться в роли первого контроллера домена в подчиненном домене в существующем лесу. Под подчиненным доменом понимается дочерний домен или домен — корень дополнительного дерева.

В процессе развертывания автоматически устанавливается доверительное отношение между доменами.

В результате развертывания:

  • пользователи одного домена леса могут авторизовываться и получать доступ к ресурсам другого домена леса;

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

В текущей версии Эллес поддерживается создание дочерних доменов второго уровня.

Пример простого леса с подчиненными доменами:

multi domain forest

Примеры в данном разделе основаны на следующих допущениях:

  1. Развернут лес доменов на базе Microsoft Active Directory Domain Services (AD DS) и/или Эллес:

    В текущей версии Эллес полноценная работа подчиненных доменов обеспечивается при развертывании в лесу, созданном на базе AD DS.
    • в корневом/родительском домене леса работают контроллеры домена на базе AD DS и Эллес;

    • доступен контроллер домена с FSMO-ролью Domain Naming Master;

    • все контроллеры домена располагаются в одном сайте;

    • IP-адрес DNS-сервера в корневом/родительском домене — 10.0.9.100.

  2. Требуется добавить в лес подчиненный домен на базе контроллера домена Эллес, который также будет выполнять роль DNS-сервера в рамках добавляемого домена, со следующими параметрами:

    • DNS-имя подчиненного домена леса:

      • в случае создания дочернего домена — subsamdom.samdom.example.com;

      • в случае создания домена — корня дополнительного дерева — newsamdom.net;

    • статический IP-адрес добавляемого сервера — 10.0.9.200;

    • полное доменное имя (FQDN) добавляемого сервера:

      • в случае создания дочернего домена — subdc1.subsamdom.samdom.example.com;

      • в случае создания домена — корня дополнительного дерева — subdc1.newsamdom.net.

При выполнении операции развертывания используются учетные данные пользователя, включенного в группу Enterprise Admins.

Для использования аутентификации Kerberos необходимо обеспечить синхронизацию времени между всеми участниками доменов.

Подготовка к развертыванию

Перед началом развертывания Эллес в качестве первого контроллера домена в подчиненном домене:

  1. Выберите DNS-имя для создаваемого подчиненного домена. При создании дочернего домена оно должно продолжать пространство имен родительского домена (в данном руководстве в качестве примера используется имя subsamdom.samdom.example.com). При создании домена — корня дополнительного дерева его DNS-имя не должно продолжать пространство имен корневого домена леса и не должно быть связано иерархически с существующими именами доменов в лесу (в данном руководстве в качестве примера используется имя newsamdom.net).

    Выбранное имя также будет использоваться в качестве имени области безопасности (realm) Kerberos.

    После установки и настройки контроллера домена будет невозможно изменить имя DNS-зоны и имя области безопасности Kerberos, так как Эллес не поддерживает такое изменение.

  2. Выберите для контроллера домена имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.

    Например:

    sudo hostnamectl set-hostname subdc1
    Для применения изменений требуется перезагрузка сервера.
  3. Назначьте серверу, на котором будет развертываться контроллер домена, статический IP-адрес и зарезервируйте его на маршрутизаторе.

    Контроллер домена Эллес будет обеспечивать разрешение DNS-имен для всех подключенных к нему рабочих станций. Поэтому при назначении ему IP-адреса может потребоваться использовать значение за пределами пула адресов DHCP.
  4. Убедитесь, что в файле /etc/hosts полное доменное имя (FQDN) и короткое имя хоста корректно сопоставлены с IP-адресом контроллера домена.

    Например:

    127.0.0.1     localhost
    10.0.9.200    subdc1.subsamdom.samdom.example.com     SUBDC1

    Имя хоста и FQDN не должны сопоставляться с IP-адресом 127.0.0.1 или любым другим IP-адресом, отличным от того, который назначен серверу контроллера домена в настройках LAN.

  5. Если контроллер домена Samba или Эллес ранее уже развертывался на сервере, перед установкой:

    1. Определите, какие пакеты требуется удалить.

      Например:

      apt list --installed | grep samba
    2. Удалите существующие пакеты с помощью пакетного менеджера.

      Например:

      sudo apt purge samba inno-samba samba-common-bin samba-common
    3. Удалите содержимое каталога /app/inno-samba/, если он существует:

      sudo rm -rf /app/inno-samba/*
  6. Если ранее на сервере выполнялась настройка аутентификации по протоколу Kerberos, при необходимости создайте резервную копию файла /etc/krb5.conf и удалите его содержимое файла или сам файл. После завершения развертывания этот файл можно будет заменить файлом, сформированным Эллес в процессе выполнения операции.

  7. Установите DNS-сервер BIND 9 и дополнительные утилиты для работы с ним:

    sudo apt install bind9 bind9utils
  8. Чтобы обеспечить корректное разрешение доменных имен, выполните настройку безусловного или условного перенаправления для зон родительского домена в конфигурации DNS-сервера BIND 9 на добавляемом сервере (см. подраздел «Настройка BIND 9 для делегирования зон DNS»).

    Например, для настройки безусловного перенаправления укажите IP-адрес DNS-сервера корневого/родительского домена в значении параметра forwarders в конфигурации DNS-сервера BIND 9.

    Пример минимального набора настроек в файле /etc/bind/named.conf.options:

    options {
           directory "/var/cache/bind"; (1)
           forwarders { 10.0.9.100; }; (2)
           listen-on-v6 { none; }; (3)
           dnssec-validation no; (4)
    };
    1 Рабочий каталог DNS-сервера.
    2 Серверы для перенаправления запросов, которые не могут быть разрешены текущим DNS-сервером. В примере в качестве такого сервера указан DNS-сервер корневого/родительского домена.
    3 Использование только IPv4.
    4 Для корректного разрешения доменных имен и выполнения репликации при взаимодействии с серверами в родительском домене необходимо явно отключить проверку подписания зон DNS в конфигурации BIND 9 в создаваемом подчиненном домене.
  9. Приведите файл с конфигурацией разрешения DNS-имен /etc/resolv.conf к следующему виду:

    search subsamdom.samdom.example.com (1)
    nameserver 127.0.0.1 (2)
    1 Список доменных суффиксов для добавления к неполным DNS-именам при попытке их разрешения. В данном случае указано DNS-имя создаваемого подчиненного домена.
    2 IP-адрес DNS-сервера для разрешения доменных имен. Поскольку DNS-сервер BIND 9 работает на том же сервере, что и Эллес, в качестве сервера имен может быть указан локальный IP-адрес. Также может быть указан внешний IP-адрес сервера.
    Некоторые утилиты (например, NetworkManager) могут перезаписывать изменения, вносимые в данный файл вручную. См. описание корректного способа настройки разрешения имен в документации на используемый дистрибутив Linux.
  10. Проверьте корректность конфигурации BIND 9 и перезапустите DNS-сервер для применения изменений:

    sudo named-checkconf
    sudo systemctl restart bind9.service
  11. Убедитесь, что разрешение DNS-имен и записей работает корректно, например, с помощью утилиты nslookup:

    nslookup -type=A DC1.SAMDOM.EXAMPLE.COM
    ...
    Name:	DC1.SAMDOM.EXAMPLE.COM
    Address: 10.0.9.100
  12. Установите основной пакет inno-samba, следуя инструкциям, приведенным в разделе «Установка пакета inno-samba».

Развертывание

Развертывание Эллес в качестве контроллера подчиненного домена предусматривает создание баз данных и первоначального набора записей, необходимых для работы домена, включая учетную запись администратора и записи DNS.

В состав пакета inno-samba входит встроенный инструмент командной строки samba-tool (/app/inno-samba/bin/samba-tool), позволяющий выполнить операцию развертывания с требуемыми параметрами, а также переопределить существующие или задать дополнительные настройки в конфигурационном файле smb.conf (в формате --option="<parameter name> = <parameter value>").

Развертывание выполняется только для первого контроллера в подчиненном домене. Остальные контроллеры должны присоединяться к существующему подчиненному домену.

Параметры развертывания

Развертывание домена выполняется с помощью подкоманды samba-tool domain add, которая принимает ряд параметров (см. полный список доступных параметров в разделе «Администрирование домена»).

Обязательные параметры:

  • DNS-имя добавляемого подчиненного домена;

    Имя должно быть уникальным в пределах леса.
  • DNS-имя родительского домена при создании дочернего домена или DNS-имя корневого домена леса при создании домена — корня дополнительного дерева;

  • если создается домен — корень дополнительного дерева, требуется передать параметр --role=tree-root; по умолчанию создается дочерний домен (--role=subdomain).

Рекомендованные параметры:

  • --dns-backend=BIND9_DLZ — использование плагина BIND9_DLZ для интеграции с DNS-сервером BIND 9;

  • --backend-store=mdb — использование LMDB в качестве базы данных;

    Если необходимо увеличить максимальный размер базы данных по умолчанию (8 ГБ), требуемое значение может быть передано в параметре --backend-store-size.

  • --function-level — функциональный уровень (режим работы) подчиненного домена; возможные значения: 2008_R2 | 2012 | 2012_R2 | 2016; значение по умолчанию — 2016;

    При добавлении подчиненного домена выполняется проверка: функциональный уровень леса =< функциональный уровень домена =< максимальный функциональный уровень, который может поддерживать контроллер домена.

    Также подкоманда проверяет текущее значение версии схемы каталога. Если версия схемы ниже, чем в дистрибутиве Эллес, то для успешного выполнения операции:

    • у пользователя, от имени которого вызывается подкоманда, должны быть права администратора схемы (членство в группе Schema Admins);

    • должен быть доступен сервер с FSMO-ролью Schema Master.

    Если хотя бы одно условие не выполняется, подкоманда прерывается с выводом сообщения об ошибке. Если все условия выполняются, выводится предупреждение об обновлении схемы и запрос подтверждения операции. При получении подтверждения обновляется схема, после чего добавляется подчиненный домен.

  • --option="rpc connection timeout = 120" — для успешного завершения работы подкоманды дополнительно рекомендуется изменить значение времени ожидания соединения с сервером RPC с помощью конфигурационного параметра rpc connection timeout.

    После успешного выполнения операции значение может быть изменено или может быть восстановлено значение по умолчанию. Для этого необходимо отредактировать значение параметра в конфигурационном файле smb.conf или удалить его из файла.

Если сервер, на котором выполняется развертывание, имеет несколько сетевых интерфейсов, дополнительно задайте следующие опции для привязки Эллес к определенным интерфейсам:

--option="interfaces=lo eth0" --option="bind interfaces only=yes"

Это необходимо для регистрации подкомандой samba-tool domain add корректного IP-адреса в процессе развертывания.

Развертывание дочернего домена

Пример подкоманды для развертывания дочернего домена:

sudo /app/inno-samba/bin/samba-tool domain add subsamdom samdom.example.com \
    --dns-backend=BIND9_DLZ \
    --backend-store=mdb \
    --function-level=2012_R2 \
    --option="rpc connection timeout = 120" \
    -U Administrator@SAMDOM.EXAMPLE.COM

В случае успешного завершения операции в конце вывода отображается сообщение:

INFO 2025-03-28 19:19:40,823 pid:1024 /app/inno-samba/lib/python3.7/site-packages/samba/add.py #1452: Added domain subsamdom.samdom.example.com (SID S-1-5-21-207620958-708556064-199204346) as a DC

Развертывание домена — корня дополнительного дерева

Пример подкоманды для развертывания домена — корня дополнительного дерева:

sudo /app/inno-samba/bin/samba-tool domain add newsamdom.net samdom.example.com \
    --role=tree-root \
    --dns-backend=BIND9_DLZ \
    --backend-store=mdb \
    --function-level=2012_R2 \
    --option="rpc connection timeout = 120" \
    -U Administrator@SAMDOM.EXAMPLE.COM

В случае успешного завершения операции в конце вывода отображается сообщение:

INFO 2025-03-28 19:19:40,823 pid:1621 /app/inno-samba/lib/python3.7/site-packages/samba/add.py #1452: Added domain newsamdom.net (SID S-1-5-21-1881019063-1858864412-2730101106) as a DC

Завершение настройки

После успешного развертывания выполните следующие шаги для завершения настройки контроллера домена:

  1. Настройте автоматический запуск доменной службы inno-samba:

    sudo systemctl unmask inno-samba.service
    sudo systemctl enable inno-samba.service
  2. Для интеграции с сервером DNS BIND 9 через плагин BIND9_DLZ:

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

      include "/app/inno-samba/bind-dns/named.conf";
    • добавьте в раздел options файла /etc/bind/named.conf.options настройку ключей авторизации:

      options {
         tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab";
         ...
      };
    • перезапустите сервис bind9:

      sudo systemctl restart bind9.service
  3. Перезапустите доменную службу inno-samba:

    sudo systemctl restart inno-samba.service
  4. Скопируйте конфигурацию Kerberos, созданную в процессе развертывания, в конфигурацию Kerberos, используемую операционной системой, например, с помощью следующей команды:

    sudo cp /app/inno-samba/private/krb5.conf /etc/krb5.conf

    Созданная при развертывании конфигурация Kerberos использует записи о ресурсах (SRV-записи) DNS-службы для поиска центра распространения ключей (KDC).

Проверка результатов развертывания

Для тестирования работы Эллес в качестве контроллера подчиненного домена могут быть выполнены, например, следующие проверки:

  • проверка доверительных отношений:

    • после развертывания дочернего домена:

      • на контроллере Эллес в дочернем домене доступна запись о двустороннем транзитивном доверительном отношении с родительским доменом:

        /app/inno-samba/bin/samba-tool domain trust list
        Type[Parent]    Transitive[Yes] Direction[BOTH]     Name[samdom.example.com]
      • на контроллере Эллес в родительском домене доступна запись о двустороннем транзитивном доверительном отношении с дочерним доменом:

        /app/inno-samba/bin/samba-tool domain trust list
        Type[Child]    Transitive[Yes] Direction[BOTH]     Name[subsamdom.samdom.example.com]
      • на контроллере на ОС Windows Server в родительском домене в оснастке Active Directory Domains and Trusts на вкладке Trusts окна свойств домена доступна запись о двустороннем транзитивном доверительном отношении типа Parent-Child с дочерним доменом.

    • после развертывания домена — корня дополнительного дерева:

      • на контроллере Эллес в домене — корне дерева доступна запись о двустороннем транзитивном доверительном отношении с корневым доменом леса:

        /app/inno-samba/bin/samba-tool domain trust list
        Type[TreeRoot]    Transitive[Yes] Direction[BOTH]     Name[samdom.example.com]
      • на контроллере Эллес в корневом домене леса доступна запись о двустороннем транзитивном доверительном отношении с доменом — корнем дерева:

        /app/inno-samba/bin/samba-tool domain trust list
        Type[TreeRoot]    Transitive[Yes] Direction[BOTH]     Name[newsamdom.net]
      • на контроллере на ОС Windows Server в корневом домене леса в оснастке Active Directory Domains and Trusts на вкладке Trusts окна свойств корневого домена доступна запись о двустороннем транзитивном доверительном отношении типа Tree Root с доменом — корнем дерева.

  • проверка репликации — в выводе подкоманды не должно быть ошибок:

    /app/inno-samba/bin/samba-tool drs showrepl
  • проверка конфигурации DNS (примеры для дочернего домена):

    • запрос значения SRV-записи _ldap в домене:

      host -t SRV _ldap._tcp.subsamdom.samdom.example.com.
      _ldap._tcp.subsamdom.samdom.example.com has SRV record 0 100 389 subdc1.subsamdom.samdom.example.com.
    • запрос значения SRV-записи _kerberos в домене:

      host -t SRV _kerberos._udp.subsamdom.samdom.example.com.
      _kerberos._udp.subsamdom.samdom.example.com has SRV record 0 100 88 subdc1.subsamdom.samdom.example.com.
    • запрос A-записи контроллера домена:

      host -t A subdc1
      subdc1.subsamdom.samdom.example.com has address 10.0.9.200
  • для проверки работы службы аутентификации по протоколу Kerberos (пример для дочернего домена):

    • выполните запрос билета Kerberos для учетной записи администратора подчиненного домена:

      kinit Administrator@SUBSAMDOM.SAMDOM.EXAMPLE.COM
    • выведите список находящихся в кэше билетов Kerberos:

      klist
      Credentials cache: FILE:/tmp/rkb5cc_1000
              Principal: Administrator@SUBSAMDOM.SAMDOM.EXAMPLE.COM
      
        Issued                Expires               Principal
      May 15 13:03:47 2025  May 15 23:03:47 2025   krbtgt/SUBSAMDOM.SAMDOM.EXAMPLE.COM@SUBSAMDOM.SAMDOM.EXAMPLE.COM