This is an old revision of the document!
AD. DNS-сервер не запускается (2008 R2)
Представим, что мы создали и включили в качестве контроллера домена новый сервер под управлением Windows Server 2008 R2. Active Directory работает нормально и репликация с новым контроллером домена происходит успешно. Однако, DNS-сервер на новом КД отказывается запускаться со следующей ошибкой:
Имя сбойного приложения: 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