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

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

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

  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@DOMAIN.NAME'

          В примере:

          • 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@DOMAIN.NAME'

        В примере:

        • 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 Naming Master.

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

      Для корректной работы механизма проксирования необходимо, чтобы существовал такой контроллер домена, с которого контроллер домена с ролью FSMO 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 Naming Master нет подходящих партнеров по репликации.

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

      1. На контроллере домена с ролью FSMO 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.

    • --option="ad dc functional level = <level>" — добавление в файл /app/inno-samba/etc/smb.conf параметра ad dc functional level;

      Возможные значения: 2008_R2 | 2012 | 2012_R2 | 2016. Значение по умолчанию — 2008_R2.

      Значение данного параметра задает «заявляемый» функциональный уровень контроллера домена. То есть при взаимодействии с другими участниками смешанной среды (контроллерами домена под управление ОС Windows Server) контроллер будет «заявлять», что работает на данном функциональном уровне.

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

      При присоединении к существующему домену рекомендуется указывать функциональный уровень не выше текущего уровня домена.
    • --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 \
       --option="ad dc functional level = 2012_R2" \
       -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; если используется файл 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

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

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

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

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

      sudo /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]