Администрирование инфраструктуры Active Directory — это непростой процесс. От правильного взаимодействия серверов зависит работа всей корпоративной сети, даже если у вас всего парочка контроллеров домена и один локальный сайт.
Утилита dcdiag позволяет выполнять различные тесты над инфраструктурой Active Directory и запрашивать диагностическую информацию о контроллерах домена.
Синтаксис dcdiag
Общий синтаксис
dcdiag [/s:<DomainController>] [/n:<NamingContext>] [/u:<Domain>\<UserName> /p:{* | <Password> | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:<LogFile>] [/c [/skip:<Test>]] [/test:<Test>] [/fix] [{/h | /?}] [/ReplSource:<SourceDomainController>]
Параметры dcdiag:
- /s:<DomainController>
Указывает контроллер домена. Если не указано, то используется локальный контроллер домена. Не используется в тестах DcPromo и RegisterInDns, которые можно выполнить только локально. - /n:<NamingContext>
Контекст именования в форматах NetBIOS, DNS (FQDN), DN. - /u:<Domain>\<UserName> /p:{* | <Password> | ""}
Запускает dcdiag от имени другого пользователя. По умолчанию dcdiag выполняется от имени текущего пользователя. - /a
Тестировать все серверы указанного сайта. - /e
Тестировать все серверы леса, перекрывает /a. - /q
Тихий режим. Выводятся только ошибки. - /v
Подробный режим. Выводится дополнительная информация. - /i
Игнорировать некритичные ошибки. - /fix
Только для теста MachineAccount. Исправление некорректных Service Principal Names (SPNs) на контроллере домена. - /f:<LogFile>
Вывод результатов в лог. - /c
Выполняет все тесты, кроме DCPromo и RegisterInDNS. Включает тесты не по умолчанию: Topology, CutoffServers, OutboundSecureChannels. Можно использовать совместно со /skip для пропуска определённых тестов. - {/h | /?}
Помощь. - /test:<Test>
Выполнить указанный тест. Дополнительно выполняется тест Connectivity. - /ReplSource:<SourceDomainController>
Только для теста CheckSecurityError. Проверяет соединение между контроллером домена, на котором выполняется команда, и исходным контроллером домена. SourceDomainController — это NetBIOS, DNS (FQDN) или DN имя сервера, который будет исходным контроллером домена для репликации.
Синтаксис для теста DNS
dcdiag /test:DNS [/DnsBasic | /DnsForwarders | /DnsDelegation | /DnsDynamicUpdate | /DnsRecordRegistration | /DnsResolveExtName [/DnsInternetName:<InternetName>] | /DnsAll] [/f:<LogFile>] [/x:<XMLLog.xml>] [/xsl:<XSLFile.xsl> or <XSLTFile.xslt>] [/s:<DomainController>] [/e] [/v]
Параметры dcdiag для теста DNS:
- /test:DNS
Тест DNS. По умолчанию /DnsAll. - /DnsBasic
Основные тесты DNS, соединение, конфигурация DNS клиента, доступность службы, существование зоны. - /DnsForwarders
Тесты DnsBasic и DNS-форвардинг. - /DnsDelegation
Тесты DnsBasic и проверка делегирования. - /DnsDynamicUpdate
Тесты DnsBasic и пределяет, включено ли динамическое обновление в зоне Active Directory. - /DnsRecordRegistration
Тесты DnsBasic tests и также проверяет, зарегистрированы ли записи A, CNAME и службы SRV. Кроме того, создается отчет об инвентаризации на основе результатов тестирования. - /DnsResolveExtName **[/DnsInternetName:<**InternetName>]
Тесты DnsBasic и делает resolve InternetName. Если DnsInternetName не указано, делает resolve www.microsoft.com. Если DnsInternetName указано, делает resolve указанного InternetName. - /DnsAll
Все тесты кроме DnsResolveExtName и создает отчет. - **/f:<**LogFile>
Вывод результатов в лог. - **/s:<**DomainController>
Указывает контроллер домена. Если не указано, то используется локальный контроллер домена. - /e
Все тесты DNS для всех контроллеров домена леса. - /v
Подробный режим. Выводится дополнительная информация. - /x:<XMLLog.xml>
Вывод результатов в <XMLLog.xml>. Только вместе с опцией /test:dns. - /xsl:<XSLFile.xsl> или <XSLTFile.xslt>
Добавляем файл стилей. Только вместе с опцией /test:dns /x:<XMLLog.xml>.
Тесты dcdiag
Тесты, которые нельзя пропустить
- Connectivity
Проверяет регистрацию DNS, ping, LDAP RPC для каждого контроллера домена.
Тесты, которые можно пропустить
- Replications
Проверяет возможность репликации между контроллерами домена и сообщает об ошибках репликации. - NCSecDesc
Проверяет, что дескрипторы безопасности в головках контекста именования имеют соответствующие разрешения для репликации. - NetLogons
Проверяет наличие соответствующих привилегий входа в систему для репликации. - Advertising
Проверяет, правильно ли контроллер домена сообщает о себе и о своих ролях, которые он должен выполнять. Этот тест завершиться неудачно, если служба NetLogon не запущена. - KnowsOfRoleHolders
Проверяет доступность контроллеров домена с ролями FSMO. - Intersite
Проверяет наличие ошибок, которые могут помешать нормальной репликации между сайтами. Результаты могут быть неточными. - FSMOCheck
Проверяет, что контроллер домена может подключиться к KDC, NTP, предпочтительному NTP, PDC, серверу глобального каталога. - RidManager
Проверяет RID мастера. - MachineAccount
Проверяет службы и регистрацию учетной записи целевого компьютера. Если обнаружена ошибка, ее можно исправить, указав параметры /FixMachineAccount или /RecreateMachineAccount. - Services
Проверяет службы контроллера домена. - OutboundSecureChannels
Проверяет наличие безопасных каналов между всеми контроллерами домена. - ObjectsReplicated
Проверяет правильность репликации Machine Account и Directory System Agent (DSA). Можно использовать **/objectdn:**dn и **/n:**nc параметры. - frssysvol
Проверяет FRS и SYSVOL. - frsevent
Проверка ошибок системы репликации. - kccevent
Проверка KCC. - systemlog
Проверка лога на наличие ошибок. - CheckSDRefDom
Проверяет, что все разделы каталога приложений имеют соответствующие домены ссылок на дескрипторы безопасности. - VerifyReplicas
Проверяет разделы каталога приложения на всех серверах, принимающих участие в репликации. - CrossRefValidation
Проверяет правильность перекрестных ссылок для доменов. - VerifyReferences
Проверяет, что системные ссылки не повреждены для FRS и репликации. - VerifyEnterpriseReferences
Проверяет, что системные ссылки не повреждены для FRS и репликации во всех объектах на каждом контроллере домена. - /skip:<Test>
Пропускает указанный тест. Connectivity выполняется всегда.
Тесты, которые не выполняются по умолчанию
- Topology
Проверяет, что KCC генерирует правильную топологию для всех контроллеров домена. - CheckSecurityError
Отчет об общем состоянии репликации в отношении безопасности Active Directory на контроллерах домена под управлением Windows Server 2003 SP1. Вы можете выполнить этот тест для одного или всех контроллеров домена на предприятии. По завершении теста dcdiag представляет сводку результатов, а также подробную информацию по каждому протестированному контроллеру домена и диагностику ошибок безопасности, о которых сообщил тест.
Cледующий аргумент является необязательным:
**/ReplSource:**SourceDomainController
Этот аргумент проверяет возможность создания связи репликации между реальным или потенциальным контроллером домена-источника (SourceDomainController) и локальным контроллером домена. - CutoffServers
Проверяет есть ли серверы репликации без партнёра. - DNS
Включает шесть дополнительных тестов. Имеет отдельный синтаксис, См. выше.
Тесты не для контроллеров домена
- DcPromo
Проверяет инфраструктуру DNS для любого компьютера, который вы хотите сделать контроллером домена. Если инфраструктура достаточна, вы можете сделать компьютер контроллером домена, указанном в параметре **/DnsDomain:**Active_Directory_Domain_DNS_Name. Этот параметр сообщает, требуются ли какие-либо изменения в существующей инфраструктуре DNS. Обязательным аргументом является **/DnsDomain:**Active_Directory_Domain_DNS_Name. Требуется один из следующих аргументов: /NewForest, /NewTree, /ChildDomain, /ReplicaDC. Если указан аргумент /NewTree, необходимо также указать аргумент **/ForestRoot:**Forest_Root_Domain_DNS_Name. - RegisterInDNS
Проверяет, может ли этот контроллер домена зарегистрировать Domain Controller Locator DNS записи. Эти записи должны присутствовать в DNS для других компьютеров, чтобы найти этот контроллер домена для домена Active_Directory_Domain_DNS_Name. Этот параметр сообщает, требуются ли какие-либо изменения в существующей инфраструктуре DNS. Обязательным аргументом является **/DnsDomain:**Active_Directory_Domain_DNS_Name.
Пример
Давайте продиагностируем какой-нибудь контроллер домена.
Запускаю прямо на контроллере домена выполнение всех тестов по умолчанию:
-
dcdiag
dcdiag Directory Server Diagnosis Performing initial setup: Trying to find home server... Home Server = ilab-dc * Identified AD Forest. Done gathering initial info. Doing initial required tests Testing server: Default-First-Site-Name\ILAB-DC Starting test: Connectivity ......................... ILAB-DC passed test Connectivity Doing primary tests Testing server: Default-First-Site-Name\ILAB-DC Starting test: Advertising ......................... ILAB-DC passed test Advertising Starting test: FrsEvent ......................... ILAB-DC passed test FrsEvent Starting test: DFSREvent ......................... ILAB-DC passed test DFSREvent Starting test: SysVolCheck ......................... ILAB-DC passed test SysVolCheck Starting test: KccEvent ......................... ILAB-DC passed test KccEvent Starting test: KnowsOfRoleHolders ......................... ILAB-DC passed test KnowsOfRoleHolders Starting test: MachineAccount ......................... ILAB-DC passed test MachineAccount Starting test: NCSecDesc ......................... ILAB-DC passed test NCSecDesc Starting test: NetLogons ......................... ILAB-DC passed test NetLogons Starting test: ObjectsReplicated ......................... ILAB-DC passed test ObjectsReplicated Starting test: Replications ......................... ILAB-DC passed test Replications Starting test: RidManager ......................... ILAB-DC passed test RidManager Starting test: Services ......................... ILAB-DC passed test Services Starting test: SystemLog ......................... ILAB-DC passed test SystemLog Starting test: VerifyReferences ......................... ILAB-DC passed test VerifyReferences Running partition tests on : ForestDnsZones Starting test: CheckSDRefDom ......................... ForestDnsZones passed test CheckSDRefDom Starting test: CrossRefValidation ......................... ForestDnsZones passed test CrossRefValidation Running partition tests on : DomainDnsZones Starting test: CheckSDRefDom ......................... DomainDnsZones passed test CheckSDRefDom Starting test: CrossRefValidation ......................... DomainDnsZones passed test CrossRefValidation Running partition tests on : Schema Starting test: CheckSDRefDom ......................... Schema passed test CheckSDRefDom Starting test: CrossRefValidation ......................... Schema passed test CrossRefValidation Running partition tests on : Configuration Starting test: CheckSDRefDom ......................... Configuration passed test CheckSDRefDom Starting test: CrossRefValidation ......................... Configuration passed test CrossRefValidation Running partition tests on : ilab Starting test: CheckSDRefDom ......................... ilab passed test CheckSDRefDom Starting test: CrossRefValidation ......................... ilab passed test CrossRefValidation Running enterprise tests on : ilab.local Starting test: LocatorCheck ......................... ilab.local passed test LocatorCheck Starting test: Intersite ......................... ilab.local passed test Intersite
Проверим корректность работа DNS:
-
dcdiag /s:ilab-dc /test:dns /e
dcdiag /s:ilab-dc /test:dns /e Directory Server Diagnosis Performing initial setup: * Identified AD Forest. Done gathering initial info. Doing initial required tests Testing server: Default-First-Site-Name\ILAB-DC Starting test: Connectivity ......................... ILAB-DC passed test Connectivity Doing primary tests Testing server: Default-First-Site-Name\ILAB-DC Starting test: DNS DNS Tests are running and not hung. Please wait a few minutes... ......................... ILAB-DC passed test DNS Running partition tests on : ForestDnsZones Running partition tests on : DomainDnsZones Running partition tests on : Schema Running partition tests on : Configuration Running partition tests on : ilab Running enterprise tests on : ilab.local Starting test: DNS ......................... ilab.local passed test DNS
Все тесты пройдены успешно.