Присоединение к домену в роли контроллера домена

Для обеспечения отказоустойчивости и балансировки нагрузки в доменный лес должны добавляться дополнительные контроллеры домена.

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

  1. В сети уже доступен полностью настроенный основной контроллер домена со следующими параметрами:

    • статический IP-адрес сервера — 10.0.9.100;

    • полное доменное имя (FQDN) — dc1.samdom.example.com.

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

    • статический IP-адрес сервера — 10.0.9.150;

    • полное доменное имя (FQDN) — dc2.samdom.example.com.

Для выполнения операции присоединения требуется пароль администратора домена.

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

Присоединение

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

  1. Назначьте серверу, на котором будет развертываться контроллер домена, статический IP-адрес.

    В примерах в данном разделе в качестве IP-адреса сервера используется значение 10.0.9.150.

  2. Задайте IP-адрес существующего контроллера домена (10.0.9.100) в качестве DNS-сервера.

    После внесенных изменений файл /etc/resolv.conf должен содержать следующие настройки:

    search samdom.example.com
    nameserver 10.0.9.100
    Некоторые утилиты (например, NetworkManager) могут перезаписывать изменения, вносимые в данный файл вручную. См. описание корректного способа настройки разрешения имен в документации на используемый дистрибутив Linux.
  3. Выберите для контроллера домена имя хоста длиной не более 15 символов (ограничение протокола NetBIOS) и назначьте его.

    Например:

    sudo hostnamectl set-hostname dc2
  4. Убедитесь, что в файле /etc/hosts полное доменное имя (FQDN) и короткое имя хоста корректно сопоставлены с IP-адресом контроллера домена.

    Например:

    127.0.0.1     localhost
    10.0.9.150    dc2.samdom.example.com     DC2

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

  5. Выполните стандартные проверки, чтобы убедиться в отсутствии на сервере следов прошлых установок Samba или Эллес.

  6. Установите основной пакет inno-samba и дополнительные пакеты, следуя инструкциям, приведенным в разделе «Установка пакета inno-samba».

  7. На первом контроллере домена:

    • создайте обратную DNS-зону для подключения нового контроллера:

      /app/inno-samba/bin/samba-tool dns zonecreate dc2.samdom.example.com 9.0.10.in-addr.arpa -U Administrator
      Password for [SAMDOM\Administrator]:
      Zone 9.0.10.in-addr.arpa created successfully
    • проверьте наличие DNS-записи типа A для присоединяемого контроллера домена и удалите ее, если она содержит неправильный IP-адрес.

      Например:

      • просмотр записи A:

        • с помощью утилиты dig, входящей в состав BIND 9:

          dig +noall +answer A dc2.samdom.example.com

          В примере:

          • A — тип записи DNS, информацию о которой требуется получить;

          • dc2.samdom.example.com — доменное имя хоста присоединяемого контроллера домена.

        • с помощью утилиты samba-tool:

          /app/inno-samba/bin/samba-tool dns query dc1.samdom.example.com samdom.example.com dc2 A -U Administrator

          В примере:

          • dc1.samdom.example.com — доменное имя DNS-сервера;

          • samdom.example.com — имя зоны DNS;

          • dc2 — имя записи DNS;

          • A — тип записи DNS, информацию о которой требуется получить.

      • удаление записи А, если она сопоставлена с некорректным IP-адресом:

        /app/inno-samba/bin/samba-tool dns delete dc1.samdom.example.com samdom.example.com dc2 A <wrong-ip-address> -U Administrator

        В примере:

        • dc1.samdom.example.com — доменное имя DNS-сервера;

        • samdom.example.com — имя зоны DNS;

        • dc2 — имя записи DNS;

        • A — тип записи DNS, которую требуется удалить;

        • wrong-ip-address — некорректный IP-адрес, сопоставленный с контроллером домена в DNS.

      См. описание формата вызова подкоманд samba-tool dns в разделе «Администрирование DNS».
  8. Настройте автоматический запуск доменной службы inno-samba:

    sudo systemctl unmask inno-samba.service
    sudo systemctl enable inno-samba.service
  9. Приведите файл /etc/krb5.conf к следующему виду:

    [libdefaults]
        default_realm = SAMDOM.EXAMPLE.COM
        dns_lookup_realm = false
        dns_lookup_kdc = true
  10. Для проверки корректности работы аутентификации Kerberos запросите билет администратора домена:

    kinit Administrator@SAMDOM.EXAMPLE.COM
  11. Перед запуском развертывания в интерактивном режиме убедитесь в отсутствии файла /app/inno-samba/etc/smb.conf. Если он существует, переименуйте или удалите его.

  12. Выполните присоединение к домену с помощью подкоманды samba-tool domain join с указанием режима ввода и дополнительных параметров.

    Режимы ввода:

    • DC — контроллер домена с полным набором функциональности и копией базы данных службы каталогов доступной как для чтения, так и для записи;

    • RODC — контроллер домена с копией базы данных службы каталогов, доступной только для чтения (см. описание особенностей в разделе «Администрирование контроллера RODC»).

      Перед вводом контроллера в домен Active Directory в режиме RODC убедитесь, что лес и домен Active Directory соответствуют следующим требованиям:

      • функциональный уровень леса и домена — Windows Server 2003 или выше;

      • в домене имеются (или имелись ранее) обычные контроллеры домена на ОС Windows Server 2008 или выше;

      • лес подготовлен для развертывания контроллеров домена в режиме RODC.

      Готовность леса к вводу контроллеров домена в режиме RODC может быть проверена, например, одним из следующих способов:

      • в домене уже существуют контроллеры домена, работающие в режиме RODC;

        Для проверки используйте следующую команду — она должна вернуть число больше 0:

        ([array](Get-ADDomainController -Filter 'IsReadOnly -eq $true')).Count
      • в домене существует контейнер ActivedirectoryRodcUpdate с атрибутом Revision = 2.

        Для проверки наличия контейнера и значения атрибута Revision используйте следующую команду:

        Get-ADObject "CN=ActivedirectoryRodcUpdate,CN=ForestUpdates,CN=Configuration,DC=domain,DC=name" -Properties Revision

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

    Некоторые параметры (см. полный список доступных параметров в разделе «Администрирование домена»):

    • --dns-backend=NAME_SERVER_BACKEND — используемый DNS-сервер;

      Возможные значения:

      • BIND9_DLZ (при развертывании DNS-сервера BIND 9 совместно с контроллером домена Эллес; рекомендуется использовать во всех сценариях развертывания);

      • SAMBA_INTERNAL (значение по умолчанию; не рекомендуется использовать);

      • NONE (при использовании выделенного DNS-сервера);

    • --server=SERVER — контроллер домена для присоединения;

      При вводе нового контроллера в дочерний домен в многодоменном лесу в качестве прокси используется один из существующих контроллеров домена (proxy DC). Он отвечает за внесение изменений в соответствующие записи, которые затем должны реплицироваться на контроллер домена с FSMO-ролью Domain Naming Master.

      Если опция --server не указана, такой прокси-контроллер выбирается автоматически по определенному алгоритму. В случае использования опции в качестве прокси выступает указанный в ней сервер.

      Для корректной работы механизма проксирования необходимо, чтобы существовал такой контроллер домена, с которого контроллер домена с FSMO-ролью Domain Naming Master мог бы получить раздел Configuration посредством репликации. Если такой контроллер отсутствует, то в логе операции присоединения будет содержаться следующее сообщение:

      Site to search connections is: Default-First-Site-Name
      Connecting to FSMO Domain Naming Master st01-win-r-dc1.ROOTST01.LAN
      Error during extra server search, might not be critical: (8419, 'No replication partners found: WERR_DS_CANT_FIND_DSA_OBJ, check if intrasite replication is enabled and use repadmin or samba-tool on Naming Master to check replication status')
      DC st01-win-r-dc1.ROOTST01.LAN will be used

      Оно указывает на то, что у контроллера домена с FSMO-ролью Domain Naming Master нет подходящих партнеров по репликации.

      Чтобы решить данную проблему, необходимо:

      1. На контроллере домена с FSMO-ролью Domain Naming Master создать контракт на репликацию с одним из контроллеров в том домене, в который требуется ввести новый контроллер.

      2. Перезапустить процедуру присоединения. При этом можно как явно указать целевой прокси-контроллер вручную с помощью опции --server, так и задействовать механизм автоматического определения.

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

      Site to search connections is: Default-First-Site-Name
      Connecting to FSMO Domain Naming Master st01-win-r-dc1.ROOTST01.LAN
      DCs suitable for join in a domain CHILDST01.ROOTST01.LAN
      * st01-win-c-dc1.CHILDST01.ROOTST01.LAN in a site Default-First-Site-Name
      * st01-win-c-dc2.CHILDST01.ROOTST01.LAN in a site Default-First-Site-Name
      Testing if server st01-win-c-dc1.CHILDST01.ROOTST01.LAN is alive
      The site of the proxy DC (st01-win-c-dc1.CHILDST01.ROOTST01.LAN) is equal to the specified one (Default-First-Site-Name)
      Determined proxy DC with Naming Master replication contract: st01-win-c-dc1.CHILDST01.ROOTST01.LAN

      Сообщение имеет следующую структуру:

      • список подходящих контроллеров в домене, которые указаны в контрактах на репликацию раздела Configuration, а также сайты, в которых они расположены;

      • описание процесса перебора контроллеров в порядке указания с информацией о результатах тестирования их доступности;

      • дополнительная (некритичная) проверка на совпадение контроллера по сайту.

      При выполнении всех прочих условий в ходе перебора предпочтение отдается контроллеру, находящемуся в том сайте, в который вводится новый контроллер.

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

    • --site=SITE — привязка контроллера домена к определенному сайту;

    • --option="interfaces= lo eth0" --option="bind interfaces only=yes" — привязка Эллес к указанным сетевым интерфейсам сервера (если их несколько);

      Указание данной опции позволяет samba-tool зарегистрировать корректный IP-адрес при присоединении.

    • --option="idmap_ldb:use rfc2307 = yes" — используйте данную опцию, если при развертывании остальных контроллеров домена Эллес передавался параметр --use-rfc2307;

    • --realm=REALM_NAME — задание области безопасности для домена;

      Переданное значение переопределяет значение параметра realm в файле /app/inno-samba/etc/smb.conf.

    • --no-gc — выключение роли Global Catalog (GC) для нового контроллера при присоединении к домену;

    • --option="tls priority = NORMAL:-VERS-TLS1.0:-VERS-TLS1.1:-RSA" — отключение устаревших алгоритмов шифрования и обмена ключами, разрешенных для использования по умолчанию при подключении к серверу LDAP;

      Параметр изменяет список приоритетов библиотеки GnuTLS по умолчанию (см. подробнее в документации на библиотеку). Рекомендуется использовать указанное значение для повышения уровня безопасности.

    • --option="dns:auto site coverage = off" — отключение функциональности автоматического покрытия контроллером домена Эллес сайтов без контроллеров домена (см. подробнее в разделе «Покрытие сайтов контроллерами домена»);

    • --option="dns:all:site coverage = SiteName1, SiteNameN", --option="dns:gc:site coverage = SiteName1, SiteNameN", --option="dns:krb:site coverage = SiteName1, SiteNameN", --option="dns:ldap:site coverage = SiteName1, SiteNameN" — параметры для настройки покрытия сайтов (см. подробнее в разделе «Покрытие сайтов контроллерами домена»).

    Пример команды ввода сервера в домен в режиме полнофункционального контроллера домена:

    sudo /app/inno-samba/bin/samba-tool domain join samdom.example.com DC \
       --dns-backend=BIND9_DLZ \
       --backend-store=mdb \
       --backend-store-size=16Gb \
       -U 'Administrator@SAMDOM.EXAMPLE.COM'

    Пример команды ввода сервера в домен в режиме контроллера домена с доступом к базе только для чтения:

    sudo /app/inno-samba/bin/samba-tool domain join samdom.example.com RODC \
        --dns-backend=BIND9_DLZ \
        --server=dc1.samdom.example.com \
        -U 'Administrator@SAMDOM.EXAMPLE.COM'

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

    • при вводе в режиме DC:

      Joined domain SAMDOM (SID S-1-5-21-469703510-2364959079-1506205053) as a DC
    • при вводе в режиме RODC:

      Joined domain SAMDOM (SID S-1-5-21-469703510-2364959079-1506205053) as an RODC
  13. Для настройки интеграции с DNS-сервером BIND 9 через плагин BIND9_DLZ:

    • добавьте в конец конфигурационного файла /etc/bind/named.conf директиву include для включения в него конфигурации плагина BIND9_DLZ:

      include "/app/inno-samba/bind-dns/named.conf";

      Например:

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

      options {
         tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab";
         ...
      };
    • если контроллер вводится в дочерний домен в многодоменном лесу Active Directory, добавьте в конфигурацию BIND 9 настройки перенаправления запросов для зон DNS в родительском домене:

      • создайте отдельный файл для определений зон в каталоге /etc/bind/ или используйте существующий файл /etc/bind/named.conf.local;

      • добавьте в файл определения зон родительского домена в следующем формате:

        zone "root-domain.name" {
            type forward;
            forwarders {
                <dns-server-ip-address>;
            };
        };
      • добавьте директиву include с путем к файлу в основной конфигурационный файл /etc/bind/named.conf перед строкой, добавляющей конфигурацию плагина `BIND9_DLZ`l; если используется файл named.conf.local, ссылка на него включена по умолчанию:

        cat /etc/bind/named.conf
        // This is the primary configuration file for the BIND DNS server named.
        //
        // Please read /usr/share/doc/bind9/README.Debian.gz for information on the
        // structure of BIND configuration files in Debian, *BEFORE* you customize
        // this configuration file.
        //
        // If you are just adding zones, please do that in /etc/bind/named.conf.local
        
        include "/etc/bind/named.conf.options";
        include "/etc/bind/named.conf.local";
        include "/etc/bind/named.conf.default-zones";
        include "/app/inno-samba/bind-dns/named.conf";
        См. более подробную информацию в разделе «Настройка DNS».
    • перезапустите сервис bind9:

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

    sudo systemctl restart inno-samba.service

Проверка результатов присоединения

Для проверки корректности присоединения:

  1. Проверьте работу DNS-службы:

    host -t A samdom.example.com
    samdom.example.com has address 10.0.9.100
    samdom.example.com has address 10.0.9.150

    В списке адресов должен отображаться IP-адрес добавленного контроллера домена.

  2. Проверьте статус репликации между контроллерами домена в лесу AD с точки зрения добавленного контроллера с помощью следующей команды:

    sudo /app/inno-samba/bin/samba-tool drs showrepl

    Вывод команды содержит информацию о состоянии входящей и исходящей репликации в рамках соглашений между контроллерами домена.

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

    Default-First-Site-Name\DC1 via RPC
            DSA object GUID: a470d3e8-6309-4e27-bd81-1ebdd064bcf4
            Last attempt @ Thu Apr 27 14:15:36 2023 UTC was successful
            0 consecutive failure(s).
            Last success @ Thu Apr 27 14:15:36 2023 UTC
    После присоединения к домену службе синхронизации данных может понадобиться до 15 минут для автоматического формирования подключений для репликации.
  3. Если сервер вводился в домен в режиме DC, создайте на нем нового пользователя с любым именем:

    sudo /app/inno-samba/bin/samba-tool user add newuser

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

    /app/inno-samba/bin/samba-tool user list
  4. Если сервер вводился в домен в режиме RODC:

    • создайте на контроллере домена DC1 пользователя newuser и добавьте его в группу Allowed RODC Password Replication Group, чтобы разрешить репликацию его пароля на RODC;

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

      /app/inno-samba/bin/samba-tool rodc preload newuser --server=dc1.samdom.example.com
      Replicating DN CN=newuser,CN=Users,DC=samdom,DC=example,DC=com
      Exop on[CN=newuser,CN=Users,DC=samdom,DC=example,DC=com]
      objects[1] linked_values[0]