Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как устранить проблему, в которой зарегистрировано несколько записей с одинаковым IP-адресом. Проблема вызвана конфигурациями очистки системы доменных имен (DNS) и длительностью аренды протокола конфигурации динамического узла (DHCP).
Сценарий
Рассмотрим следующий сценарий.
На DHCP-сервере у вас есть следующие конфигурации:
- Область DHCP имеет срок аренды по умолчанию восемь дней.
- Область DHCP низка на доступных IP-адресах.
- Клиент A не продлевает аренду IP-адресов в течение восьми дней и истекает.
- Клиент B запрашивает новый IP-адрес.
- DHCP-сервер назначает клиенту B адрес, арендованный клиенту A.
Этот сценарий является типичным, и все работает правильно.
На DNS-сервере у вас есть следующие конфигурации:
- Интегрированная зона DNS Active Directory (AD) имеет значение scavenge устаревших записей ресурсов.
- При очистке записей DNS используются параметры по умолчанию: интервал без обновления = 7 дней, интервал обновления = 7 дней и период очистки = 7 дней.
- Клиент A обновил свою запись DNS восемь дней назад, когда последняя обновление аренды DHCP клиента.
- По умолчанию клиент A является владельцем своей записи DNS, поэтому запись не может быть удалена DHCP-сервером.
- Клиент B регистрирует запись DNS с новым IP-адресом, полученным от DHCP-сервера, который совпадает с записью, зарегистрированной для клиента A.
В этом сценарии DNS-сервер не может выполнять запись DNS клиента A в течение еще шести дней. Теперь клиент A и клиент B имеют тот же IP-адрес, зарегистрированный в DNS.
Анализ проблем
Некоторые проблемы возникают из-за одной записи DNS для разных имен. Например, проблема с установкой клиентов Microsoft System Center Configuration Manager (SCCM).
Ниже приведен еще один пример. При доступе к общей папке на клиенте A вы получаете следующее сообщение об ошибке, даже если клиент A не включен.
Эта ошибка вызвана тем, что билет Kerberos, предназначенный для одного компьютера, отправляется на другой компьютер. В следующем разделе описывается весь процесс.
Сетевые потоки во время сбоя входа
Компьютер (Infra-App1) выполняет DNS-запрос.client-a.corp.contoso.com
Ответы DNS обратно с IP-адресом 10.0.0.100.
Что касается DNS, результат правильный. Клиент A имеет 10.0.0.100, указанный в качестве IP-адреса, поэтому клиент B.
Затем компьютер Infra-App1 запрашивает билет Kerberos. Dns-запрос предназначен для клиента A, поэтому запрос службы предоставления билетов (TGS) также предназначен для клиента A.
Запрос TGS:
Ответ контроллера домена:
После того как компьютер Infra-App1 получит билет, компьютер пытается подключиться к клиенту A. Билет Kerberos включен в этот кадр.
Наконец, удаленный клиент возвращает ошибку, так как компьютер Infra-App1 подключается к клиенту B.
Ожидается ошибка, так как необходимо представить правильный билет в нужную учетную запись, чтобы сделать Kerberos работой.
Примечание.
Дополнительные сведения о Kerberos см. в статье Kerberos для администратора занятости.
Эта проблема не возникает, если вы используете IP-адрес вместо полного доменного имени (FQDN), так как проверка подлинности New Technology LAN Manager (NTLM) используется вместо проверки подлинности Kerberos. При использовании IP-адреса для подключения к клиенту нет предположений о том, к какому клиенту подключен. Поэтому компьютер должен сначала согласовывать NTLM. В примере в разделе сценария Kerberos возвращает допустимый ответ, поэтому компьютер не выполняет отработку отказа для использования NTLM.
Разрешения
Так как эта проблема связана с устаревшими записями DNS, можно использовать различные разрешения, чтобы предотвратить возникновение проблемы.
Примечание.
Для каждого разрешения рекомендуется уменьшить интервал очистки до одного до трех дней. По умолчанию семь дней продлевает период, когда недопустимые записи остаются в DNS.
Решение 1
Увеличьте длительность аренды DHCP, чтобы соответствовать интервалам без обновления и обновления . Например, в разделе сценария можно увеличить аренду DHCP до 14 дней.
Преимущество:
Аренда DHCP остается до тех пор, пока запись DNS не будет отложена. Ни один другой клиент не получает и регистрирует адрес в DNS.
Недостаток:
Если область DHCP уже низка на адресах, IP-адреса могут выбежать.
Небольшой процент записей может не быть расчищен до истечения срока аренды из-за небольших различий во времени. Установка интервала очистки в один день гарантирует удаление устаревших записей на следующий день.
Решение 2
Уменьшите интервалы без обновления и обновления , чтобы соответствовать аренде DHCP. Пример в разделе сценария можно уменьшить как без обновления, так и обновить до четырех дней.
Преимущество:
Существующая запись DNS выполняется быстрее, чтобы добиться того же результата, что и в первом решении.
Недостаток:
Если это интегрированные зоны DNS AD, частота репликации AD увеличивается. Это связано с тем, что записи DNS будут обновляться клиентами чаще. Например, каждые четыре дня вместо семи дней.
Небольшой процент записей может не быть расчищен до истечения срока аренды из-за небольших различий во времени. Установка интервала очистки в один день гарантирует удаление устаревших записей на следующий день.
Разрешение 3
Разрешите DHCP-серверу регистрировать адреса от имени клиентов.
Преимущество:
DHCP-сервер может удалить запись DNS сразу после истечения срока аренды. Если настройка правильна, повторяющиеся записи не должны существовать.
Недостаток:
Программа установки более вовлечена.
Учетная запись службы должна быть настроена для запуска службы DHCP или все DHCP-серверы должны быть присоединены к группе DNSUpdateProxy (менее безопасная). Конфигурация добавляет сложность.
Для этого см. инструкции по настройке динамических обновлений DNS в Windows.
Экспериментируйте с длительностью аренды DHCP, интервалом без обновления и интервалом обновления . Возможно, вам потребуется полностью уйти от значений по умолчанию. Низкая продолжительность аренды DHCP (в часах) иногда используется для беспроводных подсетей. Помните о производительности серверов, особенно если у вас есть DNS-сервер, устанавливающий scavenge каждые несколько часов в больших зонах DNS.
Определение записей с повторяющимися IP-адресами
В этом разделе описывается, как использовать PowerShell для идентификации повторяющихся записей. Сценарий направлен на поиск записей в DNS, содержащих повторяющиеся IP-адреса.
#Import the Active Directory Module
import-module activedirectory
#Define an empty array to store computers with duplicate IP address registrations in DNS
$duplicate_comp = @()
#Get all computers in the current Active Directory domain along with the IPv4 address
#The IPv4 address is not a property on the computer account so a DNS lookup is performed
#The list of computers is sorted based on IPv4 address and assigned to the variable $comp
$comp = get-adcomputer -filter * -properties ipv4address | sort-object -property ipv4address
#For each computer object returned, assign just a sorted list of all
#of the IPv4 addresses for each computer to $sorted_ipv4
$sorted_ipv4 = $comp | foreach {$_.ipv4address} | sort-object
#For each computer object returned, assign just a sorted, unique list
#of all of the IPv4 addresses for each computer to $unique_ipv4
$unique_ipv4 = $comp | foreach {$_.ipv4address} | sort-object | get-unique
#compare $unique_ipv4 to $sorted_ipv4 and assign just the additional
#IPv4 addresses in $sorted_ipv4 to $duplicate_ipv4
$duplicate_ipv4 = Compare-object -referenceobject $unique_ipv4 -differenceobject $sorted_ipv4 | foreach {$_.inputobject}
#For each instance in $duplicate_ipv4 and for each instance
#in $comp, compare $duplicate_ipv4 to $comp If they are equal, assign
#the computer object to array $duplicate_comp
foreach ($duplicate_inst in $duplicate_ipv4)
{
foreach ($comp_inst in $comp)
{
if (!($duplicate_inst.compareto($comp_inst.ipv4address)))
{
$duplicate_comp = $duplicate_comp + $comp_inst
}
}
}
#Pipe all of the duplicate computers to a formatted table
$duplicate_comp | ft name,ipv4address -a
Ниже приведен пример выходных данных:
Этот скрипт PowerShell прост. Рассмотрим сценарий как пример. Этот скрипт возвращает только повторяющиеся IP-адреса, зарегистрированные в фактических учетных записях компьютеров в AD. Помните, что скрипт запрашивает каждый компьютер в домене AD. Затем он выполняет DNS-запрос, чтобы получить IP-адрес. Если у вас много компьютеров, используйте -searchbase
параметр, get-adcomputer
чтобы ограничить количество возвращаемых компьютеров каждый раз. Если компьютер не присоединен к AD, компьютер не возвращается из get-adcomputer
команды.