Короткий ответ

Клиент домена обязан спрашивать внутренний DNS, который хранит зону AD. Если у рабочей станции или у DC в NIC прописан только публичный резолвер, SRV _ldap._tcp.dc._msdcs не найдутся и вход развалится при живом контроллере. Сначала Resolve-DnsName SRV и ipconfig /all, потом регистрация Netlogon. Не чистите зону руками «от лишних A-записей» пакетом.

Симптомы и отличия

  • nslookup contoso.example с клиента даёт NXDOMAIN или адрес внешней веб-заглушки.
  • nltest /dsgetdc:contoso.example не находит DC, ping до известного IP DC при этом работает.
  • На DC DNS-события 4013 (зона ещё не загружена при старте AD) — это может быть порядок служб, не «сломан диск».

Отличия:

Возможные причины

  1. У клиента DHCP option 006 указывает на роутер/провайдера.
  2. У DC в NIC DNS = 127.0.0.1 + ничего, а служба DNS ещё не поднялась; либо наоборот только 8.8.8.8.
  3. Зона _msdcs.contoso.example не существует / не реплицируется.
  4. Scavenging снял записи DC из‑за слишком агрессивного NoRefresh+Refresh.
  5. Split-brain: внешняя зона contoso.example без SRV отдаётся внутренним клиентам.
  6. Условный форвардер или правило политики NRPT уводит корпоративные имена.

Диагностика

На проблемном клиенте:

ipconfig /all
Resolve-DnsName contoso.example
Resolve-DnsName _ldap._tcp.dc._msdcs.contoso.example -Type SRV
Resolve-DnsName DC01.contoso.example

Ожидание: SRV на имена DC, A-записи DC на текущие IP. Если SRV пустой — клиент спрашивает не тот сервер или зона пустая.

На DNS-сервере AD:

Get-DnsServerZone
Get-DnsServerResourceRecord -ZoneName 'contoso.example' -Name '@' -RRType NS
Get-DnsServerResourceRecord -ZoneName '_msdcs.contoso.example' -RRType SRV -ErrorAction SilentlyContinue
dcdiag /test:DNS /v /s:DC01

dcdiag /test:DNS длинный. Читайте тесты auth, basic, records — не только последнюю строку.

Проверка, кто авторитативен:

Resolve-DnsName contoso.example -Server DC01.contoso.example
Resolve-DnsName contoso.example -Server 8.8.8.8

Второй запрос не должен быть источником правды для логона.

Решение

Клиент смотрит не туда

Для DHCP: option 006 = IP внутренних DNS (обычно оба DC). Для статики — то же вручную. Не оставляйте «DNS роутера» как единственный.

После смены:

ipconfig /flushdns
nltest /dsgetdc:contoso.example /force

NIC контроллера

Типовая схема для двух DC:

  • DC01: предпочитаемый = IP DC02, альтернативный = 127.0.0.1
  • DC02: предпочитаемый = IP DC01, альтернативный = 127.0.0.1

Не ставьте единственным DNS самого себя на единственном DC без понимания порядка старта. После смены:

ipconfig /registerdns
Restart-Service Netlogon

Нет SRV

Если зона жива, но SRV нет:

nltest /dsregdns
Restart-Service Netlogon

Подождите и снова снимите SRV. Если не появляются — смотрите права динамического обновления зоны (Secure only vs None) и события Netlogon.

Scavenging съел DC

Если NoRefresh+Refresh короче, чем DC был выключен, A/SRV могли уйти. Восстановите регистрацией Netlogon, не импортом случайного backup зоны недельной давности поверх живой AD-интегрированной зоны.

Внешняя зона перекрывает внутреннюю

Если публичный DNS contoso.example резолвится внутри сети как единственный ответ, клиенты не увидят SRV. Нужен split-horizon: внутренний сервер отдаёт AD-зону, форвардеры — только для внешних имён.

Проверка

С двух клиентов разных подсетей:

Resolve-DnsName _kerberos._tcp.dc._msdcs.contoso.example -Type SRV
nltest /dsgetdc:contoso.example

Логон пользователя без кэшированных учётных данных. dcdiag /test:DNS без failed на тестах записей DC.

Создайте тестовую A-запись в отдельной непроизводственной зоне или используйте существующую процедуру change control — не оставляйте test-xyz в _msdcs.

Если не помогло

  • 4013 при каждой загрузке: NTDS стартует позже DNS; проверьте зависимости и диск. Повторяющийся 4015 — зона/AD.
  • Имя резолвится в IPv6, а IPv6 у вас не маршрутизируется: либо почините IPv6, либо не регистрируйте AAAA, если так принято политикой.
  • Только короткие имена: суффикс DNS клиента и WINS/NetBIOS — отдельная ветка, не путайте с SRV.

Практический порядок на 15 минут

  1. Снимите ipconfig /all с клиента и с DC. Сверьте option 006 и NIC DNS.
  2. Resolve-DnsName _ldap._tcp.dc._msdcs.contoso.example -Type SRV сначала с -Server IP внутреннего DNS, потом без. Если с сервером AD есть SRV, а без — нет, клиент ходит не туда.
  3. Сверьте A-записи DC с фактическим Get-NetIPAddress. Старый IP в зоне после смены адреса — частая причина «DC находится не туда».
  4. Посмотрите scavenging: Get-DnsServerScavenging и timestamps записей DC. Если timestamp старше окна scavenging, регистрация могла быть снята.
  5. Не меняйте сразу тип зоны (AD-integrated → secondary). Это отдельное окно работ.

Если после смены DNS на NIC клиент всё ещё видит старое, проверьте NRPT (Get-DnsClientNrptPolicy) и групповые политики Name Resolution. Они перебивают «просто прописали 10.0.0.10 в NIC».

Для split DNS запишите на бумаге: какое имя существует только внутри (dc01.contoso.example), какое должно совпадать с внешней зоной (www.contoso.example). Смешение этих классов в одной «почистите кеш» инструкции как раз и плодит повторные инциденты.

Профилактика

  • Документируйте option 006.
  • Мониторьте наличие SRV и ответ DNS 53 с DC.
  • Scavenging включайте после понимания timestamps, не «как в блоге 7 дней / 7 дней» на зоне леса без расчёта.
  • Перед работами с зонами — проверка AD.

FAQ

Почему ping имени DC работает, а домен не находится?

A-запись узла и SRV каталога — разные запросы. Ping не проверяет _ldap._tcp.

Можно ли прописать hosts с IP DC на каждой рабочей станции?

Нет как постоянное решение. Hosts не заменяет SRV и ломается при смене IP.

Нужно ли чистить кеш на всех DC после каждой правки?

Нет. Кеш клиента — после смены DNS NIC. На сервере смотрите авторитетный ответ -Server DC01.

Чем опасен forwarder на публичный DNS для зоны AD?

Форвардер используется, когда локально нет зоны. Если внутренняя зона загружена, форвардер не должен отвечать за contoso.example. Опасность в том, что зоны нет или имя не то.

Event 4013 после патча — всегда авария?

Нет. Одно событие при старте бывает, пока AD загружает зоны. Повторяющиеся ошибки после нескольких минут — уже проблема.