Присоединение к домену

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

samba-tool domain join <dns-domain> [DC|RODC|MEMBER] [options]

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

Если сервер присоединяется в роли контроллера домена, то должно быть выполнено условие: функциональный уровень, с которым сервер будет присоединяться к домену в качестве контроллера домена, должен быть больше или равен функциональному уровню домена присоединения.

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

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

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

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

При присоединении автоматически определяется статус функциональности корзины в лесу (включена/выключена). Если функциональность включена на уровне леса, она также будет автоматически включена на присоединяемом сервере. Использовать для этого какие-либо дополнительные опции при выполнении операции join не требуется.

Для запуска подкоманды требуются права суперпользователя (root/sudo).

Параметры

Параметры вызова:

  • <dns-domain> — имя домена;

  • [DC|RODC|MEMBER] — роль, в которой требуется выполнить присоединение:

    • DC — контроллер домена;

    • RODC — контроллер домена с копией базы AD, доступной только для чтения;

    • MEMBER — участник домена;

  • --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 — сайт для присоединения;

  • --domain-critical-only — включать в репликацию только критически важные доменные объекты;

  • --dns-backend=NAMESERVER-BACKEND — DNS-сервер; возможные значения: SAMBA_INTERNAL | BIND9_DLZ | NONE;

  • --machinepass=PASSWORD — пароль учетной записи компьютера (если не указан, генерируется случайным образом);

  • --plaintext-secrets — хранение секретов в незашифрованном виде на диске; по умолчанию используется шифрование;

  • --backend-store=BACKENDSTORE — тип базы данных каталога; возможные значения: tdb | mdb; значение по умолчанию — tdb;

  • --backend-store-size=SIZE — максимальный размер файлов базы данных каталога; поддерживается только для баз данных LMDB (--backend-store=mdb); значение по умолчанию — 8 ГБ;

  • --targetdir=DIR — каталог для выполнения инициализации;

  • --no-dns-updates — выключение обновления данных DNS при присоединении; значение по умолчанию — False;

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

  • --no-links-post-check — отключение выполнения отдельной процедуры проверки ссылочных атрибутов в конце операции присоединения;

  • --force-cleanup-previous-join — принудительная очистка результатов предыдущих запусков операции join;

    При установке данной опции перед выполнением операции принудительно удаляются существующие контроллеры домена с таким же NetBIOS-именем, как у вводимого в домен сервера.

    Если опция не установлена, при обнаружении одноименных контроллеров домена выводится предупреждение с запросом на подтверждение операции:

    An existing DC with %s netbios name was found (%d times)!
    Confirm that you want to delete the existing DC with %s netbios name? (type 'yes')

    В случае получения утвердительного ответа (yes) существующие одноименные контроллеры домена удаляются.

  • --use-compression — запрашивать использование компрессии у партнера по операции domain join; значение по умолчанию — False;

    Алгоритм сжатия выбирается партнером из числа поддерживаемых участниками операции — вводимым в домен сервером и партнером. Поскольку при выполнении операции конфигурационный файл smb.conf отсутствует, по умолчанию партнер выбирает алгоритм MSZIP. Чтобы запросить использование Xpress, необходимо при вызове операции domain join явно указать опцию --option="drsuapi:enable_xpress_compress = yes".

  • -v|--verbose — вывод детальной информации;

  • -q|--quiet — тихий режим (отключает вывод диагностических сообщений во время работы подкоманды).

Для обеспечения совместимости с существующим программным обеспечением в Эллес по умолчанию разрешено использование устаревших алгоритмов шифрования и обмена ключами при подключении к серверу LDAP.

Чтобы повысить уровень безопасности, рекомендуется их отключить, добавив следующий параметр в раздел [global] конфигурационного файла smb.conf с помощью ключа --option:

[global]
    tls priority = NORMAL:-VERS-TLS1.0:-VERS-TLS1.1:-RSA

Параметр изменяет список приоритетов библиотеки 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".

См. подробнее в разделе «Покрытие сайтов контроллерами домена».

Примеры

Пример присоединения в роли контроллера домена с указанием функционального уровня и отключением устаревших алгоритмов шифрования:

samba-tool domain join samdom.example.com DC -UAdministrator \
    --dns-backend=BIND9_DLZ \
    --backend-store=mdb \
    --backend-store-size=16Gb \
    --option="tls priority = NORMAL:-VERS-TLS1.0:-VERS-TLS1.1:-RSA"

Пример присоединения в роли контроллера домена в многодоменном лесу с отключением функциональности глобального каталога:

samba-tool domain join multidomain.com DC -UAdministrator \
   --server=ad-dc-server \
   --dns-backend=BIND9_DLZ \
   --backend-store=mdb \
   --domain-critical-only \
   --no-gc

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

samba-tool domain join samdom.example.com DC -UAdministrator \
   --dns-backend=BIND9_DLZ \
   --backend-store=mdb \
   --option="dns:auto site coverage = off"

Пример присоединения в роли RODC:

samba-tool domain join samdom.example.com RODC -UAdministrator \
    --dns-backend=BIND9_DLZ \
    --site=Site2 \
    --server=dc2.samdom.example.com

Пример присоединения в роли участника:

samba-tool domain join samdom.example.com MEMBER -UAdministrator

Сообщения в логе

В таблице Табл. 1 приводится классификация сообщений, формируемых при выполнении samba-tool domain join на различных уровнях журналирования, с точки зрения влияния вызывавших их событий на успешность операции присоединения к домену (ошибка, отладочное сообщение). Указываются возможные источники сообщений с кратким описанием причин их появления в логе.

Табл. 1. Классификация и анализ сообщений в логе операции samba-tool domain join
Уровень Пример сообщения Ошибка Комментарий

4

Analyze and apply schema objects
debug: Failed to convert schema object CN=Security-Principal,CN=Schema,CN=Configuration,DC=domain,DC=name into ldb msg, will try during next loop
debug: Failed to convert schema object CN=ms-DS-Device,CN=Schema,CN=Configuration,DC=domain,DC=name into ldb msg, will try during next loop
debug: Failed to convert schema object CN=ms-DS-AuthN-Policy,CN=Schema,CN=Configuration,DC=domain,DC=name into ldb msg, will try during next loop
debug: Failed to convert schema object CN=ms-DS-Key-Credential,CN=Schema,CN=Configuration,DC=domain,DC=name into ldb msg, will try during next loop
debug: Failed to convert schema object CN=ms-DS-Shadow-Principal,CN=Schema,CN=Configuration,DC=domain,DC=name into ldb msg, will try during next loop
debug: Failed to convert schema object CN=ms-Exch-Mailbox-Recipient-Template,CN=Schema,CN=Configuration,DC=domain,DC=name into ldb msg, will try during next loop

Данные отладочные сообщения формируются функцией dsdb_repl_resolve_working_schema, которая используется для преобразования объектов из одной схемы в другую. Она является частью модуля синхронизации данных и предназначена для преобразования объектов между различными схемами, которые могут использоваться в Эллес и Active Directory Domain Services (AD DS).
Функция в цикле, по списку выбирает текущую рабочую схему, для которой выполняет преобразование объекта. Если текущая рабочая схема не совпадает для объекта, формируется сообщение: "Failed to convert schema object".
Такой объект будет преобразован в следующих итерациях при совпадении рабочей схемы.

4

../../source4/dsdb/common/util.c:4621: WARNING: domainFunctionality not setup

В случае операции join сообщение не указывает на ошибку. Оно является отладочным.

1

Failed to find our own NTDS Settings options in the ldb!

В случае операции join сообщение не указывает на ошибку, так как формирование базы данных не закончено.
Чтобы убедиться в отсутствии ошибки, после выполнения операции и начала работы Эллес может быть выполнена дополнительная проверка значения DN, к которому относится сообщение.

5

dsdb_find_nc_root: Finding a valid 'namingContexts' element in the RootDSE failed. Using a temporary list.

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

4

Replicated 475 objects (775 linked attributes) for CN=Configuration,DC=domain,DC=name
Partition[CN=Configuration,DC=domain,DC=name] objects[4096/10600] linked_values[2054/1959]
Remote server advised us of a new partition CN=Schema,CN=Configuration,DC=domain,DC=name while processing CN=Configuration,DC=domain,DC=name, ignoring
dsdb_replicated_objects_convert: Ignoring object outside partition 5ffd33d5-91d0-494f-9e09-0a1d7c2ce4f1 CN=Schema,CN=Configuration,DC=domain,DC=name: WERR_DS_ADD_REPLICA_INHIBITED
dsdb_replicated_objects_convert: Processed 620 DRS objects, saw 621 objects and expected 621 objects

В случае операции join сообщение не указывает на ошибку, так как игнорируемый объект (в приведенном примере — Schema) будет создан в последующем.
Чтобы убедиться в отсутствии ошибки, после выполнения операции и начала работы Эллес может быть выполнена дополнительная проверка объекта с помощью samba-tool dbcheck.

2

Badly formatted SDDL ' (A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPLCLORC;;;AU)'
sddl_decode: could not decode 'O:BAG:BAD: (A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPLCLORC;;;AU)'
sddl_decode:                            ^
sddl_decode: error 'expected '[OGDS]:' section start (or the previous section ended prematurely)'
descriptor_prepare_commit: changes: num_processed=181
descriptor_prepare_commit: objects: num_processed=8322

Сообщение указывает на ошибку оформления дескриптора безопасности объекта.
Не влияет на успешность операции join.
Чтобы убедиться в корректности списка дескрипторов объекта, после выполнения операции может быть выполнена дополнительная проверка с помощью samba-tool ldapcmp.

1

replmd_process_backlink: Failed to find target DN for linked attribute with GUID b1e8eccc-2a72-4281-b390-fbb6b4b51ff6
replmd_process_backlink: Please run 'samba-tool dbcheck' to resolve any missing backlinks.

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

Чтобы убедиться в корректности обработки объекта, после выполнения операции join может быть выполнена проверка с помощью samba-tool dbcheck.

1

Unknown target CN=krbtgt_31943\0ADEL:a4f7a39d-dc7c-4c17-8e88-15e3ab725cca,CN=Deleted Objects,DC=child,DC=domain,DC=name linked from CN=LDCC11\0ADEL:6b1d9921-aa5d-4ecd-9edd-9c0ce0b10648,CN=Deleted Objects,DC=child,DC=domain,DC=name

В контексте первичной репликации в рамках операции join сообщение может указывать на то, что обработка целевого объекта еще не завершена или объект относится к другому домену.
Для уточнения причин появления сообщения необходимо проанализировать соседние строки в логе.
Например, следующее сообщение информирует о том, что ссылка указывает на удаленный объект в другом домене:

replmd_check_target_exists: Ignoring link from CN=..., because it points to deleted object in another domain

0

Failed to commit objects: WERR_DS_DRA_RECYCLED_TARGET
Partition[DC=child,DC=domain,DC=name] objects[1723/29950] linked_values[80/2039]

В случае операции join сообщение не указывает на ошибку.
Оно информирует о том, что будет выполнен повторный запрос данных с использованием DRS_GET_TGT.

3

Discarding older DRS linked attribute update to msDS-NeverRevealGroup on CN=LDCC15\0ADEL:8477ef44-8509-4ce9-9867-26f57c11c3e2,CN=Deleted Objects,DC=child,DC=domain,DC=name from 33261aea-400b-4dc8-b447-fb77cf6e446f

В случае операции join сообщение не указывает на ошибку.
Оно информирует о том, что полученное значение старше имеющегося.

0

dsdb_replicated_objects_convert: Ignoring object outside partition 5b71ee81-5294-4fc3-9130-bf5c6256cac0 DC=DomainDnsZones,DC=child,DC=domain,DC=name: WERR_DS_ADD_REPLICA_INHIBITED

В случае операции join сообщение не указывает на ошибку.
Оно информирует о том, что значение DN реплицируемого объекта отличается от значения DN текущего раздела. Эта ситуация игнорируется — обработка переходит к следующему объекту, а прием пропущенного объекта возлагается на последующий разбор crossRef.

3

resolve_lmhosts: Attempting lmhosts lookup for name _ldap._tcp.domain.name<0x0>
resolve_lmhosts: Attempting lmhosts lookup for name _ldap._tcp.domain.name<0x0>
startlmhosts: Can't open lmhosts file /app/inno-samba/etc/lmhosts. Error was No such file or directory

В случае операции join сообщение не указывает на ошибку, так как фактически файл lmhosts не используется.