AD. DNS-сервер не запускается (2008 R2)
Представим, что мы создали и включили в качестве контроллера домена новый сервер под управлением Windows Server 2008 R2. Active Directory работает нормально и репликация с новым контроллером домена происходит успешно. Однако, DNS-сервер на новом КД отказывается запускаться со следующей ошибкой, которую можно найти в разделе логов приложения в event log:
Имя сбойного приложения: dns.exe, версия: 6.1.7601.24437, отметка времени: 0x5caf51ed Имя сбойного модуля: dns.exe, версия: 6.1.7601.24437, отметка времени 0x5caf51ed Код исключения: 0xc0000005 Смещение ошибки: 0x000000000006145f Идентификатор сбойного процесса: 0xed0 Время запуска сбойного приложения: 0x01db68cfe5d84d53 Путь сбойного приложения: C:\Windows\system32\dns.exe Путь сбойного модуля: C:\Windows\system32\dns.exe Код отчета: 24819156-d4c3-11ef-8704-00155d461b01
При этом, в логе может отображаться о том, что DNS ожидает завершения синхронизации AD DS.
DNS-сервер ожидает от доменных служб Active Directory (AD DS) сигнала о том, что первичная синхронизация каталога завершена. Службу DNS-сервера невозможно запустить до завершения первичной синхронизации, так как критические данные DNS могут быть еще не реплицированными на этот контроллер домена. Если журнал событий AD DS показывает, что имеются проблемы с разрешением DNS-имен в адреса, рассмотрите возможность добавления IP-адреса другого DNS-сервера для этого домена в список DNS-серверов в свойствах протокола IP этого компьютера. Такое событие будет записываться в журнал каждые две минуты, пока служба AD DS не сообщит об успешном завершении первичной синхронизации.
Это событие может сбить нас с толку. Оно не имеет отношения к ошибке запуска DNS. Если оно пишется в лог один раз после рестарта - это нормальное событие, т.к. DNS ожидает синхронизации AD.
Причиной проблем с запуском DNS-сервера, работающего под управлением Windows Server 2008 R2 - скорее всего является наличие проблемных записей CNAME в рутовых зонах. Данная проблема хорошо описана в документации Microsoft, которую можно найти по ссылке:
Там же приведен PS-скрипт поиска проблемных записей, который можно запустить, чтобы их обнаружить.
$count = 0 $var = get-wmiobject -query "select * from win32_service where name = 'dns'" if ($var -ne $null) { if ($var.state.tolower() -eq "running") { [array] $global:badcnamedomains = $null $var = get-wmiobject -namespace "root\microsoftdns" -query "select * from microsoftdns_zone" if ($var -ne $null) { foreach ($var2 in $var) { $query = "select * from microsoftdns_cnametype where containername = '" + $var2.name + "'" $var3 = get-wmiobject -namespace "root\microsoftdns" -query $query | where {$_.ownername -eq $var2.name} if ($var3 -ne $null) { $count += 1 $global:badcnamedomains += $var3.domainname } } } else { write-host "No zones returned" } } else { Write-Host "DNS Service is not running" break; } } if ($count -gt 0) { write-host "Total number of zones found: $count" write-host "The zones are:" write-host $global:badcnamedomains } elseif ($count -eq 0) { write-host "No zones found with the issue" } $count = $null $global:badcnamedomains = $null
Если скрипт обнаружит такие записи - их придётся удалить, чтобы решить проблему. Через какое-то время после удаления проблемных записей - DNS-сервер должен запуститься.