DNS-зона _m

Сравнительно недавно случайно заметил, что на рабочих серверах DNS отсутствует зона _msdcs.ForestName. Каких-либо жалоб со стороны пользователей не было, как и не было проблем с доступностью сервисов домена. Поскольку эта зона выполняет достаточно важные функции для работы всего леса AD, я стал разбираться что же с ней не так.

Если вам интересна тематика Windows Server, рекомендую обратиться к рубрике  Windows Server  на моем блоге.

Назначение зоны _msdcs.ForestName

Главным образом эта зона предназначена для определения расположения ключевых сервисов AD DS, таких как Глобальный каталог,PDC,Kerberos, LDAP, а также для определения GUID контроллеров домена AD (по записи GUID клиенты найдут контроллеры домена в случае переименования домена). В этой области каждый контроллер домена регистрирует SRV-записи собственных служб и отвечает за этот процесс служба Netlogon. Сама область является частью компонента Domain controller locator (Locator), внедренного в Windows Server 2003:
The Microsoft-specific subdomain enables location of domain controllers that have specific roles in the Active Directory domain or forest. Resource records for the DNS root domain of a new Active Directory forest are stored in a _msdcs zone instead of a subdomain, and that zone is stored in the forest-wide application directory partition.
Дело в том, что в норме для версий Windows Server 2003 и старше эта зона должна располагаться на том же уровне, что и зона корневого домена. Выглядит это примерно так (пример с моей тестовой инфраструктуры):

Но на серверах DNS в продакшене она являлась поддоменом корневого домена и отсутствовала на уровне раздела леса:
На самом деле в этом нет ничего плохого, поскольку во всем лесу у меня существует лишь один домен, но если доменов будет больше, это может вызвать проблемы. В BPA (Best Practices Analyzer) при этом вылезали ошибки отсутствия зоны (скриншоты для Windows Server 2012 R2 и 2008 R2 соответственно):

Почему так произошло? Дело в том, что в версиях Windows Server старше 2003 все устроено несколько иным образом и зона _msdcs действительно должна находиться на уровне поддомена корневого домена AD и при миграции с 2000 на 2003 должна быть перенастроена. По крайней мере это единственная известная мне причина.
Пришло время все привести к тому виду, в котором оно и должно быть.

Перенастройка зоны _msdcs.ForestName

Начать необходимо с создания зоны прямого просмотра с нужным нам именем (нужны права администратора предприятия). Подробно весь процесс расписан на скриншотах ниже:

Новая зона должна быть основной (1), храниться в AD (2), реплицироваться на все КД в лесу (3) и иметь имя _msdcs.ForestName (4), где ForestName — имя корневого домена леса AD. Обновления записей зоны должны быть только безопасными (5).
После того как зона создана, необходимо зайти в её свойства и добавить серверы DNS, которые будут обслуживать эту зоны:

Дальше нужно перезапустить службу Netlogon на каждом контроллере домена и дождаться пока только что созданная зона автоматически заполнится необходимыми для работы записями. При этом может пройти достаточно продолжительный период времени — у меня процесс заполнения занял примерно 10 минут. Командную строку нужно запустить с правами администратора.


Также вместо существовавшей зоны _msdcs на уровне поддомена должна появиться запись делегирования. У меня это произошло без моего участия, но если вдруг у вас эта зона автоматически не создалась (у меня так было на тестовой инфраструктуре. Возможно из-за нехватки терпения), можно её создать вручную. Для этого:
Правой кнопкой на домене — Создать делегирование:

После создания зоны на уровне поддомена в ней должны быть лишь одиночные записи серверов имен. Дальнейшая настройка не требуется. Не забудьте проверить, чтобы в основной зоне _msdcs.ForestName были созданы записи всех контроллеров домена.