Основы работы с сетью: проверьте, зарегистрированы ли записи узла вашего контроллера домена

Опубликовано: 16 Марта, 2023
Основы работы с сетью: проверьте, зарегистрированы ли записи узла вашего контроллера домена

При внедрении контроллера домена Active Directory процесс установки создает несколько записей DNS на сервере DNS. В процессе установки создаются служебные записи, иногда называемые SRV, объект NTDS в Active Directory и запись хоста на DNS-сервере. Немногие администраторы Active Directory знают, что отсутствие записей узла контроллера домена на DNS-сервере может привести к репликации и другим проблемам в среде Active Directory. Например, клиентские компьютеры Windows не смогут запросить и применить параметры групповой политики, если запись хоста контроллера домена отсутствует на DNS-сервере.

Возможная причина отсутствия записей узла контроллера домена

Как вы, возможно, знаете, клиентские компьютеры Windows, включая контроллеры домена, каждый день регистрируют свою запись хоста на локально сконфигурированном DNS-сервере. Для контроллеров домена важно постоянно обновлять свою запись узла на DNS-сервере. Записи узлов контроллера домена могут отсутствовать, если контроллеру домена не удается обновить запись узла на DNS-сервере и если на DNS-сервере включена очистка DNS. Очистка DNS проверяет записи DNS, которые не обновлялись в течение некоторого времени, а затем удаляет их. Процесс регистрации записи узла на DNS-сервере контролируется параметром «Зарегистрировать адреса этого подключения в настройках DNS» на странице свойств сетевого адаптера, как показано на снимке экрана ниже:

Если параметр Зарегистрировать адреса этого подключения в DNS не включен, клиенты Windows, включая контроллеры домена, не смогут зарегистрировать или обновить свою запись узла на DNS-сервере. Чтобы убедиться, что все контроллеры домена Active Directory имеют запись хоста, зарегистрированную на DNS-сервере, вы можете использовать приведенный ниже сценарий PowerShell. Сценарий PowerShell помогает определить отсутствующие записи узла контроллера домена для каждого контроллера домена и предоставляет отчет в формате CSV.

Требования

Обязательно запустите сценарий PowerShell с рядового сервера или контроллера домена Windows Server 2012 R2 и обязательно создайте папку Temp на диске C:, поскольку сценарий создает отчет с именем «OrpDCs.TXT» в папке C:Temp. папка. Выполнив эти требования, скопируйте сценарий в файл PS1 и выполните его из окна PowerShell с повышенными привилегиями.

$TestCSVFile = "C:TempDCHostRecordStatus.CSV"
Remove-Item $TestCSVFile -ErrorAction SilentlyContinue
$ThisString="Имя домена, контроллер домена, имя записи хоста, зарегистрированный с IP-адресом, окончательный статус"
Добавить содержимое “$TestCSVFile” $ThisString
$ TestStatus = «Пройдено»
$ТестТекст = ""
$сумвал=0
$ReachOrNot = «Да»
$AnyGap = «Нет»
$TotNo = 0
ForEach ($ThisDomain в Get-Content «$GDomList»)
{
$CNAMEFile = "C:Temp"+$CurProfNowForAll+"_CNAMETempCRC.DPC"
Удалить элемент $CNAMEFile -ErrorAction SilentlyContinue
$PDCServerToConnect = "$ThisDomain"
$ThisZoneNow = $ЭтотДомен
$Ошибка.Очистить()
$RSNow = Get-DnsServerResourceRecord -ComputerName $PDCServerToConnect -ZoneName $ThisZoneNow | ? {($_.recordtype -eq 'A')}
ЕСЛИ ($Error.Count -eq 0)
{
$AllDCS = Get-ADDomainController -Filter * -Server $ThisDomain
ForEach ($AllDCsNow в $AllDCS)
{
$ThisDCToCheck=$AllDCsNow.Hostname
$ThisDCIPAddress = $AllDCsNow.IPv4Address
$FoundOrNotNow = «Нет»
ForEach ($InFileNow в $RSNow)
{
$ThisNameNow = $InFileNow.HostName
$ThisIPInFile = $InFileNow.recordData.IPv4Address.IPAddressToString
$CUT1, $CUT2 = $ThisDCToCheck.Split(“.”)
ЕСЛИ ($ThisNameNow.ToLower() -eq $CUT1.ToLower() -и $ThisIPInFile -eq $ThisDCIPAddress)
{
$FoundOrNotNow = «Да»
ломать
}
}
ЕСЛИ ($FoundOrNotNow -eq «Нет»)
{
$FinalSTR = $ThisDomain+», «+$ThisDCToCheck+», «Не зарегистрирован», «+$ThisDCIPAddress+», «Предупреждение: запись хоста не найдена на DNS-сервере для этого контроллера домена».
Добавить контент «$TestCSVFile» $FinalSTR
$AnyGap = «Да»
$TotNo++
}
ЕСЛИ ($FoundOrNotNow -eq «Да»)
{
$FinalSTR = $ThisDomain+», «+$ThisDCToCheck+», «+$ThisNameNow+», «+$ThisIPInFile+», «ОК»
Добавить контент «$TestCSVFile» $FinalSTR
}
}
}
еще
{
$ThisSTR = $ThisDomain+», «Ошибка подключения к PDC в этом домене».
$ErrorOrNot = «Да»
Добавить содержимое “$TestCSVFile” $ThisStr
}
}
ЕСЛИ ($AnyGap -eq «Да»)
{
$TestStatus="Критический"
$TestText = «Есть несколько контроллеров домена, для которых запись хоста на DNS-сервере не зарегистрирована. Убедитесь, что записи узла A зарегистрированы для всех контроллеров домена на DNS-сервере».
$SumVal = $TotNo
}
ЕСЛИ ($AnyGap -eq «Нет»)
{
$ TestStatus = «Пройдено»
$TestText = «Записи узла для всех контроллеров домена зарегистрированы на DNS-сервере».
$СумВал = ""
}
$STR = $ADTestName +",""+$TestStartTime+"",+$TestStatus+"","+$SumVal +"",+$TestText
Удалить элемент $CNAMEFile -ErrorAction SilentlyContinue

После завершения выполнения скрипта в папке C:TempDCHostRecordStatus.CSV будет создан отчет, как показано на снимке экрана ниже.

Как видно из приведенного выше отчета, сценарий проверил записи узлов для всех контроллеров домена на DNS-сервере и сообщил о состоянии каждого контроллера домена. Как указано в отчете выше, скрипт не смог найти запись хоста, зарегистрированную на DNS-сервере для контроллера домена DC3.TechGenix.com. Получив отчет и обнаружив отсутствующие записи узлов контроллера домена, вы можете предпринять необходимые корректирующие действия.

Мы объяснили, как можно использовать простой сценарий PowerShell, чтобы проверить, зарегистрирована ли запись хоста для всех контроллеров домена. Сценарий создает отчет в файле CSV и предоставляет статус для каждого контроллера домена. Вы можете включить приведенный выше сценарий в свою процедуру проверки работоспособности Active Directory и запускать ее каждый месяц, чтобы обеспечить работоспособность записей узлов для всех контроллеров домена.