DNS в сети Windows - не просто служба имён. На нём держится Active Directory: компьютеры находят контроллеры домена через записи DNS, и почти любая проблема с доменом начинается с неправильной настройки DNS. Ниже - как установить роль, создать зоны и записи, настроить передачу зон, пересылку и найти причину неполадок.
Инструкция подходит для Windows Server 2016, 2019, 2022 и 2025.
Установка
Install-WindowsFeature DNS -IncludeManagementTools
Или через «Диспетчер серверов» → «Добавить роли и компоненты» → «DNS-сервер». При повышении сервера до контроллера домена мастер сам предлагает установить DNS, и обычно так и делают: каждый контроллер домена одновременно DNS-сервер.
Управление - в консоли dnsmgmt.msc или модулем PowerShell DnsServer. Через «Действие» → «Подключение к DNS-серверу» консоль работает и с удалёнными серверами.
Служба называется DNS:
Restart-Service DNS
В консоли запуск, остановка и перезапуск - в контекстном меню сервера → «Все задачи».
DNS и Active Directory
Контроллеры домена регистрируют в DNS записи SRV, по которым клиенты находят службы домена: _ldap._tcp.dc._msdcs.corp.example, _kerberos._tcp.corp.example и другие. За регистрацию отвечает служба Netlogon. Если записи пропали, их можно зарегистрировать заново на контроллере домена:
nltest /dsregdns
ipconfig /registerdns
Отсюда главное правило: компьютеры домена должны использовать в качестве DNS-серверов только внутренние DNS-серверы, знающие зону домена. Публичный DNS-сервер в настройках клиента или контроллера домена - частая причина медленного входа, неприменения групповых политик и ошибок присоединения к домену. Выход в интернет обеспечивается пересылкой на самих DNS-серверах (о ней ниже).
Интегрированные зоны
Зону на контроллере домена можно хранить в Active Directory. У такой зоны:
- нет одного главного сервера: изменения вносятся на любом контроллере домена и реплицируются вместе с Active Directory;
- доступны безопасные динамические обновления - менять запись может только тот, кто её создал;
- область репликации выбирается: все DNS-серверы домена, все DNS-серверы леса или все контроллеры домена.
Для зон домена используйте интегрированные зоны всегда, когда DNS работает на контроллерах домена.
Зоны

Зона прямого просмотра сопоставляет имена с адресами. Зона обратного просмотра - адреса с именами (записи PTR).
Типы зон:
- основная - доступна для изменения;
- дополнительная - копия основной, только для чтения, получает данные передачей зоны;
- зона-заглушка - хранит только записи NS и SOA другой зоны, чтобы знать её серверы.
Создание интегрированной основной зоны прямого просмотра:
Add-DnsServerPrimaryZone -Name "corp.example" -ReplicationScope Domain -DynamicUpdate Secure
Обратная зона для подсети:
Add-DnsServerPrimaryZone -NetworkId "192.168.10.0/24" -ReplicationScope Domain
Будет создана зона 10.168.192.in-addr.arpa. Без обратной зоны всё работает, но nslookup при запуске пишет, что не может найти имя сервера, а в журналах и инструментах диагностики вместо имён будут адреса.
Зона вне Active Directory хранится в файле в папке %SystemRoot%\System32\dns:
Add-DnsServerPrimaryZone -Name "lab.example" -ZoneFile "lab.example.dns"
Дополнительный DNS-сервер
Дополнительная зона нужна, когда второй сервер не является контроллером домена или зона не интегрирована в AD. На втором сервере:
Add-DnsServerSecondaryZone -Name "lab.example" -ZoneFile "lab.example.dns" -MasterServers 192.168.10.5
На основном сервере нужно разрешить передачу зоны. В консоли: свойства зоны → вкладка «Передачи зон» → «Разрешить передачи зон» → «Только на серверы из этого списка» (или «Только на серверы, перечисленные на вкладке «Серверы имён»»). В PowerShell:
Set-DnsServerPrimaryZone -Name "lab.example" -SecureSecondaries TransferToSecureServers -SecondaryServers 192.168.10.6
Не разрешайте передачу зоны на любой сервер: это раздаёт всем желающим полный список ваших имён и адресов. Кнопка «Уведомить» на той же вкладке настраивает, каким серверам сообщать об изменениях, чтобы они забирали обновления сразу, а не по расписанию.
Добавьте второй сервер и на вкладку «Серверы имён»: так он появится в записях NS зоны.
Поддомены и делегирование
Поддомен можно сделать двумя способами:
- внутри той же зоны - контекстное меню зоны → «Создать домен». Записи поддомена хранятся в родительской зоне и обслуживаются теми же серверами;
- отдельной зоной с делегированием - создаёте зону
branch.corp.example, а в родительской зоне - делегирование (контекстное меню → «Создать делегирование»), указывающее на её серверы. Так управление поддоменом можно передать другим администраторам или другим серверам.
Add-DnsServerZoneDelegation -Name "corp.example" -ChildZoneName "branch" `
-NameServer "dns01.branch.corp.example" -IPAddress 192.168.30.5
Удаляется домен или зона командой «Удалить» в контекстном меню. Удаление интегрированной зоны удаляет её со всех DNS-серверов, куда она реплицировалась.
Записи

Основные типы:
- A (и AAAA для IPv6) - имя → адрес;
- PTR - адрес → имя, в обратной зоне;
- CNAME - псевдоним, указывающий на другое имя;
- MX - почтовый сервер домена с приоритетом (меньшее число - выше приоритет);
- SRV - расположение службы, их создают в основном сами службы;
- TXT - произвольный текст, например записи проверки домена и почтовые политики.
В консоли записи создаются в контекстном меню зоны: «Создать узел (A или AAAA)», «Создать псевдоним (CNAME)», «Создать почтовый обменник (MX)». При создании записи A отметьте «Создать соответствующую PTR-запись», если есть обратная зона.
PowerShell:
Add-DnsServerResourceRecordA -ZoneName "corp.example" -Name "web01" -IPv4Address 192.168.10.30 -CreatePtr
Add-DnsServerResourceRecordCName -ZoneName "corp.example" -Name "intranet" -HostNameAlias "web01.corp.example"
Add-DnsServerResourceRecordMX -ZoneName "corp.example" -Name "." -MailExchange "mail.corp.example" -Preference 10
Просмотр и удаление:
Get-DnsServerResourceRecord -ZoneName "corp.example" -Name "web01"
Get-DnsServerResourceRecord -ZoneName "corp.example" -RRType MX
Remove-DnsServerResourceRecord -ZoneName "corp.example" -Name "web01" -RRType A -Force
Запись в консоли может обновиться не сразу. Нажмите «Обновить» (F5), а если запись не меняется на другом сервере - дождитесь репликации или передачи зоны.
Запись SOA
Начальная запись зоны (SOA) хранит её служебные параметры: основной сервер, ответственное лицо, серийный номер и интервалы для дополнительных серверов (как часто проверять обновления, через сколько повторить попытку, когда считать копию устаревшей) и TTL для отрицательных ответов. Редактируется на вкладке «Начальная запись зоны (SOA)» в свойствах зоны.
Серийный номер увеличивается сам при каждом изменении. Вручную его повышают (кнопка «Увеличить»), когда нужно заставить дополнительные серверы забрать зону заново.
Динамические обновления
Тип обновлений задаётся на вкладке «Общие» свойств зоны:
- Только безопасные - для интегрированных зон, рекомендуемый вариант;
- Небезопасные и безопасные - обновить запись может кто угодно. Допустимо только в изолированных сетях;
- Нет - все записи вносятся вручную.
Set-DnsServerPrimaryZone -Name "corp.example" -DynamicUpdate Secure
Очистка устаревших записей
При динамических обновлениях записи ушедших компьютеров остаются в зоне. Механизм старения и очистки удаляет их автоматически. Включать его нужно в двух местах: в свойствах зоны («Общие» → «Старение» → «Удалять устаревшие записи ресурсов») и на сервере (контекстное меню сервера → «Установить старение и очистку для всех зон», затем в свойствах сервера на вкладке «Дополнительно» - «Включить автоматическую очистку устаревших записей»). Очистку достаточно включить на одном сервере.
Set-DnsServerZoneAging -Name "corp.example" -Aging $true
Set-DnsServerScavenging -ScavengingState $true -ScavengingInterval 7.00:00:00
Статические записи, созданные вручную, очистке не подлежат.
Настройки сервера
Интерфейсы
Если у сервера несколько адресов, на вкладке «Интерфейсы» свойств сервера можно выбрать, на каких из них отвечать на запросы. Например, не отвечать на адресе в сети резервного копирования.
Set-DnsServerSetting -ListeningIPAddress 192.168.10.5
Пересылка
Запросы к внешним именам сервер по умолчанию разрешает сам, начиная с корневых серверов интернета (корневые ссылки). Обычно удобнее пересылать их на DNS-серверы провайдера или вышестоящие серверы организации:
Set-DnsServerForwarder -IPAddress 192.0.2.53,192.0.2.54
В консоли - вкладка «Пересылка» в свойствах сервера. Флажок «Использовать корневые ссылки, если нет доступных серверов пересылки» оставляет запасной путь.
Сервер только с пересылкой - если снять этот флажок, сервер будет пересылать запросы и никогда не обращаться к корневым серверам. Так делают, когда прямой выход к интернет-DNS закрыт файрволом.
Сервер без рекурсии отвечает только за свои зоны и не разрешает чужие имена. Это правильная настройка для DNS-сервера, доступного из интернета: открытый рекурсивный сервер используют в атаках с усилением трафика.
Set-DnsServerRecursion -Enable $false
В консоли - «Дополнительно» → «Отключить рекурсию (также отключает серверы пересылки)».
Условная пересылка
Условная пересылка отправляет запросы к определённому домену на указанные серверы. Типичный случай - доверие с доменом партнёра или дочерней компании, у которой свой DNS:
Add-DnsServerConditionalForwarderZone -Name "partner.example" -MasterServers 10.20.0.5,10.20.0.6 -ReplicationScope Forest
С -ReplicationScope условная пересылка хранится в Active Directory и появляется на всех DNS-серверах леса. В консоли - узел «Условные пересылки» → «Создать условную пересылку».
Альтернатива - зона-заглушка: она сама узнаёт серверы чужой зоны по записям NS и обновляет список при их изменении, но требует, чтобы ваш сервер мог получать данные от тех серверов.
Диагностика

Проверка разрешения имён
Resolve-DnsName web01.corp.example -Server 192.168.10.5
Resolve-DnsName corp.example -Type SOA
nslookup -type=SRV _ldap._tcp.dc._msdcs.corp.example
Подробнее о nslookup - в отдельной статье. Сбросить кэш сервера, если он хранит устаревший ответ:
Clear-DnsServerCache
На клиенте кэш очищается командой ipconfig /flushdns.
Проверка DNS для Active Directory
dcdiag /test:dns /v
Команда проверяет на контроллере домена настройки клиента DNS, регистрацию записей, делегирование, пересылку и динамические обновления.
Мониторинг и журналы
На вкладке «Наблюдение» свойств сервера есть простые тесты: простой запрос к самому себе и рекурсивный запрос к другим серверам. Их можно запускать по расписанию.
Ошибки службы - в журнале событий «Журналы приложений и служб» → «DNS Server». Подробная история запросов:
- Отладочное протоколирование - вкладка «Ведение журнала отладки» в свойствах сервера. Выберите направление пакетов, протокол, типы и фильтр по IP-адресам, укажите файл и максимальный размер. Протоколирование заметно нагружает сервер и быстро растёт, включайте его на время поиска проблемы.
- Аналитический журнал - «Microsoft» → «Windows» → «DNS-Server» → «Analytical» (включается через «Вид» → «Показать аналитический и отладочный журналы»). Меньше влияет на производительность и удобнее для фильтрации.
Set-DnsServerDiagnostics -All $true # включить всё отладочное протоколирование
Set-DnsServerDiagnostics -All $false # выключить
Статистику сервера (сколько запросов, рекурсий, ошибок, передач зон) показывает Get-DnsServerStatistics.





Комментарии
Комментариев пока нет - будьте первым.