Проверка здоровья контроллеров домена Active Directory и репликации

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;
  • И т.д.

dcdiag проверка состояния контроллера домена active directory

Полное описание всех доступных тестов есть здесь.

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

  • 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

dcdiag проверка службы DNS в домене

В результате должна появится сводная таблица по проверкам разрешения имен службой DNS на всех контроллерах (если все ОК, везде должно быть Pass). Если где-то будет указано Fail, нужно выполнить проверку этого теста на указанном DC:

dcdiag.exe /s:DC01 /test:dns /DnsForwarders /v

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

dcdiag /s:DC01 /v >> c:\ps\dc01_dcdiag_test.log

расширенная диагностика состояния контроллера домена командой dcdiag

Следующая команда PowerShell позволяет вывести только информацию о результатах выполненных тестов (Passed или Failed):

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

powershell скрипт - вывести информацию о тестах контроллера домена

Опросить состояние всех контроллеров в домене:

dcdiag.exe /s:winitpro.ru /a

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

dcdiag /q /e /v

dcdiag q - вывести только ошибки на контроллере домена

Или ошибки для конкретного DC:

dcdiag.exe /s:dc01 /q

dcdiag вывести только ошибки

У команды dcdiag есть опция /fix, позволяющая исправить тривиальные ошибки в AD на конкретном DC:

dcdiag.exe /s:dc01 /fix

На всех контроллерах домена:

dcdiag /e /fix

Проверка репликации между контроллерами домена Active Directory

Для проверки состояния репликации между контроллерами в домене используется встроенная утилита repadmin. Базовая команда проверки входящей и исходящей репликации:

repadmin /replsum

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 проверка последней успешной репликации между контроллерами домена

Для вывода расширенной информации, используйте:

repadmin /showrepl *

Для запуска репликации паролей с обычного контроллера домена на контроллер домена на чтение (RODC) используется ключ /rodcpwdrepl.

Опция /replicate позволяет запустить немедленную репликацию указанного раздела каталога на определенный DC.

Для запуска принудительной синхронизации указанного DC со всеми партнерами по репликации, используйте команду

repadmin /syncall

Если нужно принудительно заставить контроллер домена получить изменения с других DC, исопльзуется команда:

repadmin /syncall /Ade

Для просмотра очереди репликации:

replmon /syncall <nameDC>

Для просмотра очереди репликации:

repadmin /queue

В идеальном случае очередь должна быть пуста:

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

проверка репликации с помощью Get-ADReplicationPartnerMetadata

В свой репозиторий на GitHub я добавил PowerShell скрипт, который часто использую для проверки состояния репликации в AD. Скрипт генерирует html файл и может отправить его на указанный email с помощью командлета Send-MailMessage.

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

html отчет со статусом репликации в домене

Скрипт предназначен для английской версии 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

проверка служб ADDS на контроллере домена

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

net share

net-share - проверить папки sysvol и netlogon на DC

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

GPMC - диагностика состояния gpo

Будет выполнено сравнение информации о GPO в AD с информацией в каталоге SYSVOL на каждом контроллере домена.

Далее обязательно проверьте синхронизацию времени на контроллерах домена командой:

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

w32tm-monitor - проверить синхронизацию времени между контроллерами домена

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


Предыдущая статья Следующая статья


Комментариев: 20 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)