Анализ и диагностика состояния топологии репликации
Для анализа топологии репликации в инфраструктуре «Эллес» используется утилита samba-tool с подкомандами группы drs topology. Они позволяют получить детальную информацию о текущей конфигурации репликации, а также автоматически диагностировать ее состояние.
Подкоманды drs topology работают непосредственно с данными, извлеченными из LDAP-хранилища домена, и не требуют прямого взаимодействия с DRSUAPI. Это делает их совместимыми со смешанными доменами, включающими контроллеры домена «Эллес» и Microsoft Active Directory Domain Services (AD DS). Результаты отражают реальное состояние репликации, как его определяет сервис Knowledge Consistency Checker (KCC), отвечающий за автоматическое построение и поддержание оптимальной топологии репликации.
Компоненты топологии репликации: сайты, мостовые серверы, связи сайтов и соединения
Топология репликации определяет структуру обмена изменениями между контроллерами домена. Она состоит из следующих основных компонентов:
-
сайты (Sites) — логические контейнеры, используемые для группировки контроллеров домена, находящихся в одной физической сети; каждый сайт ассоциирован с одной или несколькими подсетями, что позволяет сервису KCC определять физическую близость контроллеров и ограничивать прямую репликацию в пределах сайта;
-
bridgehead-серверы (Bridgeheads) — мостовые серверы; контроллеры домена, назначенные для обработки межсайтовой репликации;
-
связи между сайтами (Site Links) — объекты
siteLink, определяющие правила репликации между сайтами: интервал трансляции (replication interval), стоимость (cost) и расписание (schedule); связи не устанавливают прямые соединения, а служат шаблонами для генерации межсайтовых соединений KCC; -
соединения между серверами (Connections) — объекты
nTDSConnection, создаваемые автоматически KCC или вручную администратором; каждый объектnTDSConnectionпредставляет направленное репликационное соединение от одного контроллера домена (источника) к другому (приемнику) и содержит информацию об источнике репликации, флагах поведения репликации и расписании передачи данных.
| Подробнее о компонентах топологии репликации и инструментах для их администрирования см. в разделе «Администрирование сайтов». |
В инфраструктуре «Эллес» топология репликации управляется сервисом KCC. KCC генерирует объекты nTDSConnection на основе конфигурации сайтов, связей между сайтами и назначенных мостовых серверов (bridgehead servers), определяемых ISTG (Intersite Topology Generator).
Внесенные администратором изменения, такие как назначение bridgehead-серверов или создание явных соединений nTDSConnection, влияют на структуру, сгенерированную KCC, и могут изменить путь репликации.
Подкоманда samba-tool drs topology show выводит полную структуру топологии, включая метаданные, расписания репликации и статусы соединений.
Подкоманда samba-tool drs topology verify анализирует структуру репликации на основе данных LDAP для выявления критических нарушений связности и конфигурации топологии.
Просмотр топологии репликации
Формат вызова:
samba-tool drs topology show [options]
Подкоманда выводит информацию о текущей структуре топологии репликации.
Она отображает:
-
сайты (Sites) — список объектов
site, с указанием назначенного ISTG (если присутствует в атрибутеinterSiteTopologyGeneratorобъектаnTDSSiteSettings) и итоговое количество:Sites (<количество сайтов>): - <имя сайта> (ISTG: <имя КД>) - ... ISTG assigned: <количество назначенных ISTG>/<общее количество сайтов> sites
При использовании
--siteвыводится только указанный сайт и сводка по нему. -
bridgehead-серверы — список серверов, являющихся мостовыми, с указанием сайта и признака ручного назначения:
Bridgeheads (<количество bridgehead-серверов>): - <имя КД> — Site: <имя сайта> (Preferred) - <имя КД> — Site: <имя сайта>
Метка
(Preferred)выводится, если в атрибутеbridgeheadTransportListобъектаserverприсутствует значение (то есть мостовой сервер назначен явно). Автоматически назначенные KCC мостовые серверы (на основе межсайтовых соединений) выводятся без метки. При использовании--siteвыводятся только bridgehead-серверы указанного сайта. -
связи между сайтами (Site Links) — объекты
siteLink, с атрибутамиsiteList,cost,replicationFrequencyиschedule:Site Links (<количество Site Link'ов>): - <имя siteLink>: <DN_сайта_1>, <DN_сайта_2>, ..., <DN_сайта_N> Cost: <значение cost>, Frequency: <значение replInterval> min Schedule: Mon:<24-символьная строка> Tue:<24-символьная строка> Wed:<24-символьная строка> Thu:<24-символьная строка> Fri:<24-символьная строка> Sat:<24-символьная строка> Sun:<24-символьная строка> - <имя siteLink>: . . .Значение
scheduleдекодируется из BER-кода и представлено как 24-символьные строки для каждого дня недели (Mon–Sun), где:-
0— репликация запрещена, -
1— репликация разрешена.
Если расписание одинаково для всех дней в неделю, то используется одна строка:
Weekly: <24-символьная строка>.При использовании
--siteвыводятся только site links, которые вsiteListсодержат указанный сайт. -
-
соединения репликации (Connections) — объекты
nTDSConnectionмежду серверами, с указанием расписания:Inter-site сonnections (<количество Inter-site connections>): - <имя источника> (<имя сайта источника>) <-> <имя приемника> (<имя сайта приемника>) Schedule: Mon:<24-символьная строка> Tue:<24-символьная строка> Wed:<24-символьная строка> Thu:<24-символьная строка> Fri:<24-символьная строка> Sat:<24-символьная строка> Sun:<24-символьная строка> - <имя источника> (<имя сайта источника>) -> <имя приемника> (<имя сайта приемника>) Schedule: Mon:<24-символьная строка> Tue:<24-символьная строка> Wed:<24-символьная строка> Thu:<24-символьная строка> Fri:<24-символьная строка> Sat:<24-символьная строка> Sun:<24-символьная строка> - . . .Значение
scheduleдекодируется из BER-кода и представлено как 24-символьные строки для каждого дня недели (Mon–Sun), где:-
0— нет репликации, -
1— 1 раз в час, -
2— 2 раза в час, -
4— 4 раза в час (каждые 15 минут).
Если расписание одинаково для всех дней, то используется одна строка:
Weekly: <24-символьная строка>.Выводятся только межсайтовые соединения между bridgehead-серверами. При использовании
--siteвыводятся только соединения, в которых участвует указанный сайт. -
При использовании опции --json вывод предоставляется в формате JSON, содержащем те же структуры данных с полными DN и атрибутами.
Опция --site фильтрует вывод, ограничивая отображение только объектами, связанными с указанным сайтом (включая его сайты, bridgehead-серверы, межсайтовые связи и соединения).
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--site=SITENAME— вывод информация для указанного сайта; -
--json— вывод данных в формате JSON.
Примеры
Пример вывода информации о топологии репликации в текстовом формате (по умолчанию):
samba-tool drs topology show
Active Directory Replication Topology
Sites (3):
- MainOffice (ISTG: DC01)
- BranchA (ISTG: DC03)
- BranchB (ISTG: DC05)
ISTG assigned: 3/3 sites
Bridgeheads (2):
- DC03 — Site: BranchA (Preferred)
- DC05 — Site: BranchB
Site Links (2):
- IP-Link-MainToBranch: CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech, CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech, CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech
Cost: 100, Frequency: 180 min
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- IP-Link-BranchAtoB: CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech, CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech
Cost: 200, Frequency: 360 min
Schedule:
Weekly:111111111111111111111111
Inter-site сonnections (6):
- DC03 (BranchA) <-> DC05 (BranchB)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- DC03 (BranchA) -> DC01 (MainOffice)
Schedule: Notification-driven
- DC05 (BranchB) -> DC01 (MainOffice)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- DC01 (MainOffice) -> DC03 (BranchA)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- DC01 (MainOffice) -> DC05 (BranchB)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- DC05 (BranchB) <-> DC03 (BranchA)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
Пример вывода информации о топологии репликации в рамках конкретного сайта в текстовом формате:
samba-tool drs topology show --site=BranchA
Active Directory Replication Topology
Sites (1):
- BranchA (ISTG: DC03)
ISTG assigned: 1/1 sites
Bridgeheads (1):
- DC03 — Site: BranchA (Preferred)
Site Links (2):
- IP-Link-MainToBranch: CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech, CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech, CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech
Cost: 100, Frequency: 180 min
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- IP-Link-BranchAtoB: CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech, CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech
Cost: 200, Frequency: 360 min
Schedule:
Weekly:111111111111111111111111
Inter-site сonnections (3):
- DC03 (BranchA) <-> DC05 (BranchB)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
- DC03 (BranchA) -> DC01 (MainOffice)
Schedule: Notification-driven
- DC01 (MainOffice) -> DC03 (BranchA)
Schedule:
Mon:111111111111111111111111
Tue:111111111111111111111111
Wed:111111111111111111111111
Thu:111111111111111111111111
Fri:111111111111111111111111
Sat:111111111111111111110000
Sun:111111111111111111110000
Пример вывода информации о топологии репликации в формате JSON:
samba-tool drs topology show --json
{
"sites": {
"CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech": "MainOffice",
"CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech": "BranchA",
"CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech": "BranchB"
},
"servers": {
"cn=ntds settings,cn=dc01,cn=servers,cn=mainoffice,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech": {
"name": "DC01",
"fqdn": "dc01.elles.inno.tech",
"site_dn": "CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"site_name": "MainOffice",
"ntds_dn": "CN=NTDS Settings,CN=DC01,CN=Servers,CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"is_preferred_bridgehead": true,
"is_bridgehead": true,
"is_gc": false,
"is_rodc": false,
"writeable_ncs": [
"dc=elles,dc=inno,dc=tech",
"cn=configuration,dc=elles,dc=inno,dc=tech",
"cn=schema,cn=configuration,dc=elles,dc=inno,dc=tech"
],
"readonly_ncs": [],
"all_hosted_ncs": [
"dc=elles,dc=inno,dc=tech",
"cn=configuration,dc=elles,dc=inno,dc=tech",
"cn=schema,cn=configuration,dc=elles,dc=inno,dc=tech"
]
},
"cn=ntds settings,cn=dc03,cn=servers,cn=brancha,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech": {
"name": "DC03",
"fqdn": "dc03.elles.inno.tech",
"site_dn": "CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"site_name": "BranchA",
"ntds_dn": "CN=NTDS Settings,CN=DC03,CN=Servers,CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"is_preferred_bridgehead": true,
"is_bridgehead": true,
"is_gc": false,
"is_rodc": false,
"writeable_ncs": [
"dc=elles,dc=inno,dc=tech",
"cn=configuration,dc=elles,dc=inno,dc=tech",
"cn=schema,cn=configuration,dc=elles,dc=inno,dc=tech"
],
"readonly_ncs": [],
"all_hosted_ncs": [
"dc=elles,dc=inno,dc=tech",
"cn=configuration,dc=elles,dc=inno,dc=tech",
"cn=schema,cn=configuration,dc=elles,dc=inno,dc=tech"
]
}
},
"site_links": [
{
"name": "IP-Link-MainToBranch",
"dn": "CN=IP-Link-MainToBranch,CN=IP,CN=Inter-Site Transports,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"sites": [
"CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech"
],
"cost": 100,
"replication_frequency": 180,
"schedule": {
"type": "site_link",
"matrix": {
"Mon": "111111111111111111111111",
"Tue": "111111111111111111111111",
"Wed": "111111111111111111111111",
"Thu": "111111111111111111111111",
"Fri": "111111111111111111111111",
"Sat": "111111111111111111110000",
"Sun": "111111111111111111110000"
}
}
}
],
"connections": [
{
"from_server_dn": "CN=NTDS Settings,CN=DC01,CN=Servers,CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"to_server_dn": "CN=NTDS Settings,CN=DC02,CN=Servers,CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"is_inter_site": false,
"is_intra_site": true,
"from_site_dn": "CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"to_site_dn": "CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"from_site_name": "MainOffice",
"to_site_name": "MainOffice",
"from_server_name": "DC01",
"to_server_name": "DC02",
"connection_dn": "CN=12345678-1234-1234-1234-123456789012,CN=NTDS Settings,CN=DC01,CN=Servers,CN=MainOffice,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"options": 0,
"replication_schedule": {
"type": "connection",
"matrix": {
"Mon": "444444444444444444444444",
"Tue": "444444444444444444444444",
"Wed": "444444444444444444444444",
"Thu": "444444444444444444444444",
"Fri": "444444444444444444444444",
"Sat": "444444444444444444444444",
"Sun": "444444444444444444444444"
}
},
"error_code": 0
},
{
"from_server_dn": "CN=NTDS Settings,CN=DC03,CN=Servers,CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"to_server_dn": "CN=NTDS Settings,CN=DC05,CN=Servers,CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"is_inter_site": true,
"is_intra_site": false,
"from_site_dn": "CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"to_site_dn": "CN=BranchB,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"from_site_name": "BranchA",
"to_site_name": "BranchB",
"from_server_name": "DC03",
"to_server_name": "DC05",
"connection_dn": "CN=87654321-8765-8765-8765-876543210987,CN=NTDS Settings,CN=DC03,CN=Servers,CN=BranchA,CN=Sites,CN=Configuration,DC=elles,DC=inno,DC=tech",
"options": 0,
"replication_schedule": {
"type": "connection",
"matrix": {
"Mon": "111111111111111111111111",
"Tue": "111111111111111111111111",
"Wed": "111111111111111111111111",
"Thu": "111111111111111111111111",
"Fri": "111111111111111111111111",
"Sat": "111111111111111111110000",
"Sun": "111111111111111111110000"
}
},
"error_code": 0
}
],
"istg": {
"cn=mainoffice,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech": "cn=ntds settings,cn=dc01,cn=servers,cn=mainoffice,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech",
"cn=brancha,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech": "cn=ntds settings,cn=dc03,cn=servers,cn=brancha,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech",
"cn=branchb,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech": "cn=ntds settings,cn=dc05,cn=servers,cn=branchb,cn=sites,cn=configuration,dc=elles,dc=inno,dc=tech"
},
"metadata": {
"generated_at": "2026-05-07T16:30:00Z",
"ldap_server": "dc01.elles.inno.tech",
"total_sites": 3,
"total_servers": 6,
"total_connections": 8,
"inter_site_connections": 6,
"intra_site_connections": 2,
"preferred_bridgeheads": 2,
"istg_count": 3,
"site_links_count": 2
}
}
Проверка топологии репликации
Формат вызова:
samba-tool drs topology verify [options]
Подкоманда выполняет диагностику текущей топологии репликации на основе данных LDAP, без обращения к DRSUAPI. Она проверяет целостность графа репликации в разрезе каждого раздела каталога (NC), а также наличие критических нарушений связности и конфигурации.
Подкоманда проверяет:
-
наличие назначенного ISTG (Intra-Site Topology Generator) для каждого сайта;
-
наличие хотя бы одного успешного входящего соединения (
error_code == 0) для каждого контроллера домена; -
связность графа репликации между всеми контроллерами домена, размещающими один и тот же раздел каталога (NC), построенных исключительно на активных соединениях (
error_code == 0); -
длину путей репликации между мостовыми серверами (bridgehead servers), построенных на активных соединениях, при превышении заданного лимита (
--max-hops); -
суммарное время репликации между мостовыми серверами, при превышении заданного лимита (
--max-latency).
Анализ графа репликации строится только на соединениях, для которых не зафиксировано ошибок передачи данных. Соединения с ошибками игнорируются при построении путей и определении связности.
При обнаружении нарушений выводит сообщения уровня CRITICAL, ERROR или WARNING. При использовании опции --detail к каждому сообщению добавляется детализация: полный путь репликации (список серверов через " → ") и/или коды ошибок.
Интерпретация сообщений:
-
CRITICAL— отсутствует носитель роли ISTG для сайта, либо контроллер домена не имеет ни одного входящего соединения (объектnTDSConnectionотсутствует в LDAP);Требует вмешательства, так как нарушает базовую связность топологии и невозможна генерация межсайтовых соединений KCC.
-
ERROR— у контроллера домена есть входящие соединения, но все они завершаются с ошибкой;Необходимо проверить сетевую доступность, DNS и настройки NTDS (объект
nTDSDSA) целевого сервера. -
WARNING— путь репликации между двумя мостовыми серверами содержит больше прыжков, чем задано в--max-hops(по умолчанию —3).Необходимо оптимизировать межсайтовые связи, назначить дополнительные bridgehead-серверы или уменьшить частоту репликации для сокращения числа прыжков.
-
WARNING— суммарное время репликации между двумя мостовыми серверами превышает заданное значение--max-latency(по умолчанию —600секунд).Необходимо оптимизировать маршрут репликации, уменьшить количество прыжков или увеличить частоту репликации для снижения задержек.
Результаты диагностики отражают состояние топологии, основанное исключительно на данных LDAP, и не включают информацию о состоянии DRSUAPI-сессий, времени последней репликации или статусе конкретных NC-репликаций.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--detail— вывод подробного описания каждой проблемы, включая полный путь репликации и коды ошибок; -
--max-hops=MAX_HOPS— максимальное допустимое количество прыжков (hops) между мостовыми серверами при репликации (по умолчанию —3); при превышении выводится предупреждение; -
--max-latency=MAX_LATENCY— максимальное суммарное время репликации в секундах между мостовыми серверами (по умолчанию —600); при превышении выводится предупреждение.
Примеры
Пример проверки топологии без вывода подробной информации:
samba-tool drs topology verify [CRITICAL] Site 'BranchA' has no ISTG assigned. [WARNING] Suboptimal replication path length: dc01 -> dc04 (4 hops) Verification Summary: --------------------- Status: FAILED (Critical: 1, Error: 0, Warning: 1)
Пример проверки топологии репликации с выводом подробной информации:
samba-tool drs topology verify --detail
[ERROR] Server 'DC03' has no functional inbound connections.
-> All 2 connections have errors. Error codes: 1908, 1722
[CRITICAL] Site 'BranchA' has no ISTG assigned.
-> Inter-site topology calculation is broken for this location.
[WARNING] Suboptimal replication path length: dc01 -> dc04 (4 hops)
-> Path taken: dc01 -> dc03 -> dc05 -> dc04
Verification Summary:
---------------------
Status: FAILED (Critical: 1, Error: 2, Warning: 1)
Пример проверки топологии с измененными порогами (для географически удаленной инфраструктуры):
samba-tool drs topology verify --max-hops=4 --detail
[CRITICAL] Site 'BranchA' has no ISTG assigned.
-> Inter-site topology calculation is broken for this location.
[WARNING] Suboptimal replication path length: dc01 -> dc04 (5 hops)
-> Path taken: dc01 -> dc03 -> dc05 -> dc04
Verification Summary:
---------------------
Status: FAILED (Critical: 1, Error: 0, Warning: 1)
Пример проверки топологии с ограничением по задержке репликации:
samba-tool drs topology verify --max-latency=300 --detail
[CRITICAL] Site 'BranchA' has no ISTG assigned.
-> Inter-site topology calculation is broken for this location.
[WARNING] Replication path latency exceeds limit: dc01 -> dc04 (420 sec)
-> Path taken: dc01 -> dc03 -> dc05 -> dc04
-> Configured max_latency limit: 300 sec
Verification Summary:
---------------------
Status: FAILED (Critical: 1, Error: 0, Warning: 1)
Обновлено: