Active Directory это надежный, но в то же время критичный сервис, от работоспособности которого зависит функционирование всей вашей сети. Системный администратор должен постоянно мониторить корректность работы Active Directory. В этой статье мы рассмотрим, как быстро проверить и диагностировать состояние вашего домена Active Directory, контроллеров домена и статуса репликации с помощью встроенных утилит dcdiag, repadmin, команд PowerShell и других встроенных инструментов.
Проверка состояния контроллеров домена с помощью Dcdiag
Базовая встроенная утилита для проверки состояния контролеров домена – dcdiag (Domain Controller Diagnostic Tool). Чтобы быстро проверить состояние конкретного контроллера домена AD воспользуйтесь командой:
dcdiag /s:DC01
Данная команда выполняет различные тесты указанного контроллера домена и возвращает статус по каждому тесту (Passed| Failed).
Типовые тесты:
- Connectivity – проверяет регистрацию DC в DNS, выполняет тестовые LDAP и RPC подключения;
- Advertising – проверяет роли и сервисы, опубликованные на DC;
FRSEvent – проверяет наличие ошибок в службе репликации файлов (ошибки репликации SYSVOL); - FSMOCheck – проверяет, что DC может подключиться к KDC, PDC, серверу глобального каталога;
- MachineAccount — проверяет корректность регистрации учетной записи DC в AD, корректность доверительных отношения с доменом;
- NetLogons – проверка наличие прав на выполнение репликации;
- Replications – проверка статуса репликации между контроллерами домена и наличие ошибок;
- KnowsOfRoleHolders – проверяет доступность контроллеров домена с ролями FSMO;
- Services – проверяет, запущены ли на контроллере домена необходимые службы;
- Systemlog – проверяет наличие ошибок в журналах DC;
- И т.д.

Помимо стандартных тестов, которые выполняются по-умолчанию, можно выполнить дополнительные проверки контроллера домена:
- Topology – проверяет, что KCC сгенерировал полную топологию для всех DC;
- CheckSecurityError
- CutoffServers – находит DC, который не получает репликацию из-за того, что партнёр недоступен;
- DNS – доступны 6 проверок службы DNS (/DnsBasic, /DnsForwarders, /DnsDelegation, /DnsDymanicUpdate, /DnsRecordRegistration, /DnsResolveExtName)
- OutboundSecureChannels
- VerifyReplicas – проверяет корректность репликации разделов приложения
- VerifyEnterpriseReferences
Например, чтобы проверить корректность работы DNS на всех контроллерах домена, используйте команду:
dcdiag.exe /s:DC01 /test:dns /e /v

В результате должна появится сводная таблица по проверкам разрешения имен службой DNS на всех контроллерах (если все ОК, везде должно быть Pass). Если где-то будет указано Fail, нужно выполнить проверку этого теста на указанном DC:
dcdiag.exe /s:DC01 /test:dns /DnsForwarders /v
Получить расширенную информацию по результатам тестов контроллера домена и сохранить ее в текстовый файл:
dcdiag /s:DC01 /v >> c:psdc01_dcdiag_test.log

Dcdiag /s:DC01 | select-string -pattern '. (.*) b(passed|failed)b test (.*)'

Опросить состояние всех контроллеров в домене:
dcdiag.exe /s:winitpro.ru /a
Чтобы не загружать вывод dcdiag лишней информацией об успешных проверках, можно опросить состояние контроллеров домена и AD с выводом только ошибок (параметр /q), которые требуют внимания администратора:
dcdiag /q /e /v

Или ошибки для конкретного DC:
dcdiag.exe /s:dc01 /q

У команды dcdiag есть опция /fix, позволяющая исправить тривиальные ошибки в AD на конкретном DC:
dcdiag.exe /s:dc01 /fix
На всех контроллерах домена:
dcdiag /e /fix
Проверка репликации между контроллерами домена Active Directory
Для проверки состояния репликации между контроллерами в домене используется встроенная утилита repadmin. Базовая команда проверки входящей и исходящей репликации:
repadmin /replsum

Утилита вернет текущий статус репликации между всеми DC. В идеальном случае значение largest delta не должно превышать 1 час (зависит от топологии и настроек частоты межсайтовых репликаций), а количество ошибок replication fails = 0. В моем примере видно, что одна из последних репликаций заняла 14 дней, но сейчас все OK.
Чтобы выполнить проверку репликации для всех DC в домене:
repadmin /replsum *
Проверка межсайтовой репликации:
repadmin /showism
Для просмотра топологии репликации и найденных ошибках, выполните:
repadmin /showrepl
Данная команда проверит DC и вернет время последней успешной репликации для каждого раздела каталога (last attempt xxxx was successful).

repadmin /showrepl *
Для запуска репликации паролей с обычного контроллера домена на контроллер домена на чтение (RODC) используется ключ /rodcpwdrepl.
Опция /replicate позволяет запустить немедленную репликацию указанного раздела каталога на определенный DC.
Для запуска принудительной синхронизации указанного DC со всеми партнерами по репликации, используйте команду
repadmin /syncall
Если нужно принудительно заставить контроллер домена получить изменения с других DC, исопльзуется команда:
repadmin /syncall /Ade
Для просмотра очереди репликации:
replmon /syncall <nameDC>
Для просмотра очереди репликации:
repadmin /queue
В идеальном случае очередь должна быть пуста:

Проверьте время создания последней резервной копии текущего контроллера домена:
Repadmin /showbackup *
Также для проверки состояние репликации в AD доступен ряд PowerShell командлетов.
Получить список DC в домене:
Get-ADDomainController
Получить список ошибок репликации на указанных DC:
Get-ADReplicationFailure -Target DC1,DC2
Вывести ошибки репликации AD в сайте ( -Scope Site ) или домене ( -Scope Domain ):
Get-ADReplicationFailure -scope site -target HQ| FT Server, LastError, Partner-Auto
Get-ADReplicationFailure -Target winitpro.ru -Scope Domain
Получить список партнеров по репликации текущего DC:
Get-ADReplicationConnection -Filter *
Чтобы выполнить принудительную репликацию используется командлет Sync-ADObject .
Например, следующая команда выведет все обнаруженные ошибки репликации в таблицу Out-GridView:
Get-ADReplicationPartnerMetadata -Target * -Partition * | Select-Object Server,Partition,Partner,ConsecutiveReplicationFailures,LastReplicationSuccess,LastRepicationResult | Out-GridView

https://github.com/winadm/posh/blob/master/ActiveDirectory/CheckADHealth.ps1

Скрипт предназначен для английской версии Windows Server. Для регулярной проверки состояния DC можно добавить PowerShell скрипт в планировщик задач.
Проверка состояния других служб контроллера домена
Рассмотрим как проверить состояние других базовых служб и сервисов контроллера домена.
С помощью командлета Get-Service проверьте состояние служб на контроллере домена:
- Active Directory Domain Services (ntds)
- Active Directory Web Services (adws) – именно к этой службе подключаются все командлеты из модуля AD PowerShell
- DNS (dnscache и dns)
- Kerberos Key Distribution Center (kdc)
- Windows Time Service (w32time)
- NetLogon (netlogon)
Get-Service -name ntds,adws,dns,dnscache,kdc,w32time,netlogon

Также проверьте, что на DC опубликованы сетевые папки SYSVOL и Netlogon:
net share

Состояние инфраструктуры групповых политик на контроллерах домена можно получить из графической консоли Group Policy Management ( gpmc.msc ). Запустите GPMC, выберите корень домена и на вкладке Status нажмите кнопку Detect Now.

Будет выполнено сравнение информации о GPO в AD с информацией в каталоге SYSVOL на каждом контроллере домена.
Далее обязательно проверьте синхронизацию времени на контроллерах домена командой:
w32tm /monitor
Разница во времени PDC (основной источник времени в домене) и другими DC должна быть около 0 (NTP offset). Если нет, проверить синхронизацию времени в Active Directory.

Итак, в этой статье мы рассмотрели базовые команды и скрипты, которые можно использовать для диагностики состояния вашего домена Active Directory. Вы можете использовать их во всех поддерживаемых версия Windows Server, в том числе на контроллерах домена в режиме Server Core.

Добавить комментарий