В мире Active Directory существует старая, но правдивая поговорка: «Если что-то не работает, это DNS». И действительно, служба доменных имен (DNS) — это фундамент, на котором держится весь лес AD. Если внутри одного домена все обычно работает «из коробки», то сложности начинаются, когда вашим пользователям нужно получить доступ к ресурсам в другом домене, лесу или просто в интернете.
Как настроить сервер так, чтобы он знал, где искать server1.partner.com или google.com, но при этом не тратил лишнее время? В Windows Server для этого существуют три механизма: Forwarders (Пересыльщики), Conditional Forwarders (Условные пересыльщики) и Stub Zones (Зоны-заглушки).
В этой статье мы разберем, в чем их принципиальная разница, какой метод выбрать для конкретной задачи и как настроить их для максимальной производительности и отказоустойчивости.
1. Forwarders (Глобальные пересыльщики)
Начнем с самого простого. Когда ваш локальный DNS-сервер получает запрос, на который он не может ответить (например, пользователь открыл yandex.ru), у него есть два пути: начать опрашивать корневые серверы интернета (Root Hints) или спросить у кого-то, кто «знает лучше».
Forwarders — это список внешних DNS-серверов (обычно это DNS вашего провайдера или публичные серверы вроде 1.1.1.1 или 8.8.8.8), на которые ваш контроллер домена перенаправляет все запросы, которые он не может разрешить локально.

Зачем это нужно?
Использование Forwarders вместо корневых подсказок (Root Hints) обычно эффективнее, так как DNS-серверы провайдера или Google обладают огромным кэшем. Ответ придет быстрее, чем если ваш сервер будет сам проходить всю цепочку рекурсии от корневой зоны «.» до «.ru».
Настройка
1. Откройте DNS Manager (dnsmgmt.msc).

2. Нажмите правой кнопкой мыши на имя вашего сервера и выберите Properties (Свойства).

3. Перейдите на вкладку Forwarders.
4. Нажмите «Edit» и добавьте IP-адреса внешних DNS.


# Настройка через PowerShell
Add-DnsServerForwarder -IPAddress "8.8.8.8","1.1.1.1" -PassThru
Важно: Если вы не настроите Forwarders, сервер автоматически переключится на использование Root Hints. Это рабочий, но более медленный вариант.

2. Conditional Forwarders (Условные пересыльщики)
Представьте ситуацию: ваша компания купила другую фирму (acquired.local), или у вас есть партнер (partner.com), к ресурсам которого нужен доступ по внутренней сети (через VPN или выделенный канал).
Вы не можете отправить запрос server.partner.com на 8.8.8.8 — Google ничего не знает о вашей частной сети. Вам нужно сказать своему DNS-серверу: «Если спрашивают про partner.com, иди вон на те конкретные IP-адреса их контроллеров домена. А для всего остального используй глобальные пересыльщики».
Именно это и делают Conditional Forwarders.
Как это работает?
Вы создаете правило пересылки для конкретного доменного имени. Вы жестко прописываете IP-адреса DNS-серверов целевого домена.
Плюсы и минусы
+ Простота: Легко настроить, не требует изменений в целевом домене.
+ Безопасность: Вы не храните у себя никаких записей чужой зоны, только «указатель» куда идти.
— Статичность: Это главный минус. Если администратор партнерской компании изменит IP-адреса своих DNS-серверов, ваш условный пересыльщик «сломается», пока вы вручную не обновите IP в настройках.

Настройка
В оснастке DNS разверните дерево сервера, нажмите правой кнопкой на папку Conditional Forwarders -> New Conditional Forwarder. Введите имя домена и IP-адреса мастер-серверов.

# Создание условного пересыльщика через PowerShell
Add-DnsServerConditionalForwarderZone -Name "partner.com" -MasterServers 192.168.10.5,192.168.10.6 -ReplicationScope Forest
Обратите внимание на параметр -ReplicationScope. Лучшая практика — хранить эту настройку в Active Directory и реплицировать на все DNS-серверы в лесу, чтобы не настраивать каждый сервер отдельно.

3. Stub Zones (Зоны-заглушки)
Stub Zone — это более «умный» и динамичный способ связи с другим доменом Active Directory.
По сути, это копия зоны (как Secondary Zone), но «урезанная». Она содержит только три типа записей:
1. SOA (Start of Authority) — начальная запись зоны.
2. NS (Name Server) — список авторитетных серверов имен этой зоны.
3. A/AAAA (Glue records) — IP-адреса этих серверов имен.
Никаких записей пользователей или компьютеров в Stub Zone нет.
Главное отличие от Conditional Forwarders
Когда вы создаете Stub Zone для partner.com, ваш сервер связывается с сервером партнера и скачивает оттуда список NS-записей.
Если администратор партнера добавит новый контроллер домена (DNS-сервер) и удалит старый, эти изменения автоматически реплицируются в вашу Stub Zone. Вашему серверу не нужно вручную менять IP-адреса — он узнает их сам через механизм зонного трансфера.

Когда выбирать Stub Zone?
— Дочерние домены: Идеально подходит для связи между родительским и дочерним доменом, если делегирование сломано или работает нестабильно.
— Активно меняющаяся инфраструктура партнера: Если вы знаете, что на той стороне часто меняют контроллеры домена, Stub Zone спасет вас от постоянной правки конфигов.
Настройка
В оснастке DNS: правый клик по Forward Lookup Zones -> New Zone -> выберите тип Stub Zone. Укажите имя зоны и IP-адрес хотя бы одного мастер-сервера, с которого можно скачать NS-записи.


# Создание зоны-заглушки
Add-DnsServerStubZone -Name "partner.com" -MasterServers 192.168.10.5 -ReplicationScope Forest
Важный нюанс безопасности: Для работы Stub Zone DNS-сервер партнера должен разрешать Zone Transfer (передачу зон) на ваши IP-адреса. Если трансфер зон запрещен политикой безопасности, Stub Zone работать не будет (вы увидите ошибку «Zone not loaded by DNS Server»).

Сводная таблица: Conditional Forwarders vs. Stub Zones
Это самый частый вопрос на собеседованиях и при проектировании архитектуры. Давайте подытожим.
1. Управление:
— Conditional Forwarder: Ручное. IP-адреса прописываются статично.
— Stub Zone: Автоматическое. Список DNS-серверов обновляется сам.
2. Требования к сети:
— Conditional Forwarder: Нужен только порт 53 (UDP/TCP) для запросов.
— Stub Zone: Нужен порт 53, плюс разрешение на Zone Transfer со стороны удаленного домена.
3. Нагрузка на сеть:
— Conditional Forwarder: Генерирует трафик только при запросе клиента.
— Stub Zone: Генерирует постоянный фоновый трафик репликации зоны (хоть и небольшой).
4. Рекурсия:
— Conditional Forwarder: Ваш сервер делает рекурсивный запрос к указанным IP.
— Stub Zone: Ваш сервер использует список NS из зоны для выполнения итеративных запросов (работает как Root Hint для конкретного домена).

Лучшие практики и частые ошибки
1. Не создавайте циклов.
Если домен А настроен пересылать запросы в домен Б, а домен Б — обратно в домен А, вы получите петлю, которая «повесит» разрешение имен.
2. Время ожидания (Timeout).
При использовании Forwarders убедитесь, что время ожидания настроено корректно (по умолчанию 3 секунды). Если основной канал забит, DNS может не успеть получить ответ.

3. Active Directory Integration.
Всегда ставьте галочку «Store the zone in Active Directory» при создании Stub Zones или Conditional Forwarders. Это обеспечит репликацию настроек на все контроллеры домена. Если вы создадите зону только на одном DC, при его падении разрешение имен для внешнего домена прекратится.
4. Проверка работы.
Не верьте «зеленым галочкам» в GUI. Используйте командную строку для реальной проверки разрешения имен.
# Проверяем, как разрешается имя через конкретный механизм
Resolve-DnsName -Name "server.partner.com" -Server 127.0.0.1

Используйте nslookup с режимом debug (set debug), чтобы видеть, использует ли сервер пересылку или пытается пройтись по корням.
Выбор между Forwarders, Stub Zones и Conditional Forwarders зависит от ваших отношений с целевым доменом.
— Нужен доступ в интернет? Используйте Forwarders.
— Нужен доступ к партнеру, и вы хотите «настроить и забыть», но требуете, чтобы список IP обновлялся сам? Выбирайте Stub Zone (если разрешен трансфер).
— Нужен доступ к партнеру, но трансфер зон запрещен или вы хотите жестко контролировать, куда идут запросы? Выбирайте Conditional Forwarders.
Грамотная архитектура DNS — это залог того, что вход в систему будет быстрым, а доступ к файловым ресурсам — бесперебойным.