Сравнение БД LDAP на контроллерах домена

Для проверки статуса репликации LDAP может проводиться сравнение БД LDAP на контроллерах одного домена или двух разных доменов с помощью подкоманды samba-tool ldapcmp.

Общие сведения

Подкоманда сравнивает состав и значения атрибутов объектов каталога в БД LDAP двух контроллеров в одном домене либо в двух различных доменах. Сравнение может проводиться как по всему каталогу, так и по отдельным его разделам.

При поиске в процессе сравнения не обрабатываются скрытые атрибуты, а также нереплицируемые атрибуты (с установленным флагом FLAG_ATTR_NOT_REPLICATED), значения которых всегда различаются у объектов на разных контроллерах домена.

Сравнение БД LDAP может использоваться, например, для проверки корректности репликации после присоединения контроллера к домену, диагностики различных проблем в работе контроллера домена, перед смещением сервера с роли контроллера домена и т. д.

Формат вызова

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

samba-tool ldapcmp <URL1> <URL2> (domain|configuration|schema|dnsdomain|dnsforest) [options]

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

  • URL БД LDAP первого контроллера домена в стандартном формате ldap://<имя или IP-адрес хоста>;

  • URL БД LDAP второго контроллера домена в стандартном формате ldap://<имя или IP-адрес хоста>;

  • список разделов каталога (через пробел) для сравнения:

    • domain;

    • configuration;

    • schema;

    • dnsdomain;

    • dnsforest.

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

Для каждого домена может быть передан свой набор реквизитов для доступа с помощью параметров -U|--username/--password и --username2/--password2.

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

  • --base и --base2 для задания адреса корневого объекта в каталоге, с которого должен начинаться поиск;

  • --cmp-before=DATE и --cmp-after=DATE для задания границ временного диапазона выборки объектов для сравнения;

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

    • корректная работа с временными границами сравниваемого диапазона возможна при функциональном уровне домена и леса Windows Server 2008 R2 и выше;

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

    • объекты для сравнения выбираются по DN-имени, а не по GUID; таким образом, в сравнение могут попасть два разных объекта с совпадающими DN.

  • --ignore-attributes=FILENAME и --force-cmp-attributes=FILENAME для загрузки файлов со списками атрибутов, которые должны быть исключены из выборки или включены в нее;

  • --scope — диапазон поиска.

Список атрибутов (через запятую), которые должны быть исключены из сравнения, может быть передан в параметре --filter.

Параметры

Общие параметры вызова:

  • -w|--two — признак того, что контроллеры находятся в разных доменах;

  • --sd — сравнение только атрибутов, содержащих дескрипторы безопасности объектов каталога (nTSecurityDescriptor);

  • --sort-aces — сортировка записей ACE в атрибутах nTSecurityDescriptor перед сравнением;

  • --view=VIEW — режим отображения результатов сравнения атрибутов nTSecurityDescriptor; возможные значения:

    • section — отображаются различия, связанные с отсутствием или несовпадением записей ACE; различия, связанные с несовпадением порядка следования записей, не отображаются, если совпадают значения записей и их количество (значение по умолчанию);

    • collision — отображаются различия, связанные с отсутствием или несовпадением записей ACE, а также с несовпадением порядка следования записей, даже если совпадают значения записей и их количество;

  • --base=BASE — адрес корневого объекта в каталоге, с которого должен начинаться поиск в БД LDAP на первом контроллере домена;

  • --base2=BASE2 — адрес корневого объекта в каталоге, с которого должен начинаться поиск в БД LDAP на втором контроллере домена;

  • --scope=SCOPE — диапазон поиска; возможные значения:

    • SUB — при указании данной опции процесс поиска опускается вниз по иерархии от указанного DN (либо, если DN не указан, базового DN домена) до самого нижнего уровня в информационном дереве каталога;

    • ONE — при указании данной опции процесс поиска опускается на один уровень от указанного DN (либо, если DN не указан, базового DN домена);

    • BASE — при указании данной опции поиск ведется только для указанного DN (либо, если DN не указан, базового DN домена);

  • --filter=FILTER — список игнорируемых атрибутов (через запятую);

  • --skip-missing-dn — пропуск отсутствующих DN-имен;

  • --cmp-before=DATE — верхняя граница временного диапазона выборки объектов для сравнения в одном из следующих форматов:

    • дата и время: "%Y-%m-%d %H:%M:%S";

      Например:

      --cmp-before="2024-08-21 12:17:45"
    • дата: "%Y-%m-%d";

      Например:

      --cmp-before="2024-08-21"
    • временной сдвиг влево относительно текущего момента времени: "%d [d|day|days|h|hrs|hour|hours|m|min|mins|minute|minutes]".

      Например:

      --cmp-before="12 hours"
      --cmp-before="1 d 6 h 10 m"
      --cmp-before="1 day 1 hour 10 minutes"

    При задании данного параметра при сравнении будут обрабатываться только объекты, которые были изменены на первом контроллере домена (URL1) до указанной временной границы.

  • --cmp-after=DATE — нижняя граница временного диапазона выборки объектов для сравнения в одном из следующих форматов:

    • дата и время: "%Y-%m-%d %H:%M:%S";

      Например:

      --cmp-after="2024-08-21 12:17:45"
    • дата: "%Y-%m-%d";

      Например:

      --cmp-after="2024-08-21"
    • временной сдвиг влево относительно текущего момента времени: "%d [d|day|days|h|hrs|hour|hours|m|min|mins|minute|minutes]".

      Например:

      --cmp-after="12 hours"
      --cmp-after="1 d 6 h 10 m"
      --cmp-after="1 day 1 hour 10 minutes"

    При задании данного параметра при сравнении будут обрабатываться только объекты, которые были изменены на первом контроллере домена (URL1) после указанной временной границы.

  • --ignore-attributes=FILENAME — имя текстового файла со списком атрибутов (по одному атрибуту на каждой строке), которые должны быть исключены из сравнения (включены в фильтруемый набор атрибутов);

  • --force-cmp-attributes=FILENAME — имя текстового файла со списком атрибутов (по одному атрибуту на каждой строке), которые должны быть включены в сравнение (исключены из фильтруемого набора атрибутов);

  • --search-deleted — включение в выборку объектов, которые были удалены на первом контроллере домена, при задании границ временного диапазона;

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

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

Дополнительные параметры доступа:

  • --simple-bind-dn2=DN2 — DN-имя для использования при простом удаленном подключении к БД LDAP на втором контроллере домена;

  • --username2=USERNAME2 — имя пользователя для доступа к БД LDAP на втором контроллере домена;

  • --password2=PASSWORD2 — пароль пользователя для доступа к БД LDAP на втором контроллере домена;

  • --workgroup2=WORKGROUP2 — значение WORKGROUP для доступа к БД LDAP на втором контроллере домена;

  • --no-pass2 — отсутствие необходимости запрашивать пароль для доступа к БД LDAP на втором контроллере домена;

  • --use-kerberos2=desired|required|off — необходимость аутентификации с использованием Kerberos при получении доступа к БД LDAP на втором контроллере домена.

Примеры

Пример сравнения БД LDAP на двух контроллерах в одном домене:

samba-tool ldapcmp ldap://DC1 ldap://DC2 -UAdministrator

Пример сравнения отдельного раздела в БД LDAP на двух контроллерах в одном домене:

samba-tool ldapcmp ldap://DC1 ldap://DC2 configuration -UAdministrator

Пример сравнения с указанием игнорируемого атрибута:

samba-tool ldapcmp ldap://DC1 ldap://DC2 --filter=instanceType -UAdministrator

Пример сравнения атрибутов с указанием корневого DN:

samba-tool ldapcmp ldap://DC1 ldap://DC2 -UAdministrator \
    --base='CN=FirstName SecondName,OU=OrgUnit,DC=samdom,DC=example,DC=com' \
    --base2='CN=FirstName SecondName,OU=OrgUnit,DC=samdom,DC=example,DC=com'

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

samba-tool ldapcmp ldap://DC1 ldap://DC2 -UAdministrator \
    --ignore-attributes=attributes-to-ignore.txt

Примеры сравнения с указанием границ временного диапазона для выборки объектов:

  • с указанием даты и времени:

    samba-tool ldapcmp ldap://DC1 ldap://DC2 -UAdministrator \
        --cmp-before="2024-08-21 12:17:45"
  • с указанием даты:

    samba-tool ldapcmp ldap://DC1 ldap://DC2 -UAdministrator \
        --cmp-before="2024-08-21"
  • с указанием временного сдвига влево относительно текущего момента:

    samba-tool ldapcmp ldap://DC1 ldap://DC2 -UAdministrator \
        --cmp-after="1 day 1 hour 10 minutes"

Пример сравнения БД LDAP на контроллерах в разных доменах:

samba-tool ldapcmp ldap://DC1.samdom1.example.com ldap://DC2.samdom2.example.com --two -UAdministrator --username2=Administrator --password2=Passw0rd