Обновлено 24.07.2019
Всем привет сегодня расскажу, как решается ошибка «Condition forwarding: An unknown error occurred while validating the server» в DNS Windows Server 2008 R2. В Windows 2008r2 при добавлении условной пересылки (condition forwarding) в DNS некоторые сервера не проходят проверку с ошибкой «An unknown error occurred while validating the server». Условную пересылку при этом добавить нельзя.
Вот как выглядит данное предупреждение.

При этом DNS-сервера могут быть вполне работоспособными. Чтобы обойти эту проверку, необходимо добавить условную пересылку утилитой dnscmd:
dnscmd /zoneadd <zone name> /forwarder <1st dns> <2nd dns> <etc>
Или, при желании держать условную пересылку в AD:
dnscmd /zoneadd <zone name> /dsforwarder <1st dns> <2nd dns> <etc>
Забавный момент: если в созданную пересылку с сервером, который не проходил проверку, зайти в свойства и открыть диалог изменения списка серверов, то каждый указанный сервер пройдёт проверку опять, но на этот раз успешно.

Ошибка Condition forwarding An unknown error occurred while validating the server в DNS Windows Server 2008 R2-02
Вот так вот просто решается ошибка Condition forwarding An unknown error occurred while validating the server в DNS Windows Server 2008 R2.
Материал сайта pyatilistnik.org
Июл 24, 2019 18:02
- Remove From My Forums
Серверы условной пересылки — работает только в одну сторону
-
General discussion
-
Есть два контроллера AD, обслуживающие разные домены:
main.domain.ru
cmd.domain.ru
Создаю в оснастке DNS на сервере AD cmd.domain.ru сервер условной пересылки на main.domain.ru: FDQN сервера сразу резолвится, зона создаётся и имена успешно разрешаются.
Аналогично, пытаюсь создать сервер условной пересылки на main.domain.ru: FDQN сервера «невозможно разрешить», «Сервер с таким IP-адресом не является полномочным для требуемой зоны». Затем
— «Ошибка при добавлении сервера условной пересылки. Произошла ошибка настройки зоны».В чём может быть дело?
-
Changed type
Tuesday, June 26, 2018 7:22 AM
-
Changed type
- Remove From My Forums
-
Question
-
Hi Everyone,
It’s me again, I need to ask how to properly configure the Windows AD Integrated DNS server to forward any PTR query going to the Linux DNS server. Below are the list of what I did:
1. Delete all the PTR records located in Reverse Lookup zone
2. Went to the properties of the «Domain» went to the forwarders tab and added 10.x.x.x SUBNET in «DNS Domain»
3. Under Selected Domain forwarders type the IP address of the Linux DNS server
4. Perform NSlookup using the IP address of the AD-DNS server that I have configured, cannot resolve any PTR record (made sure that the PTR record does exist in the record of the Linux DNS server)
5. Perform same NSlookup PTR test pointing to the Linux DNS server and it works.
I hope you can help me with problem.
Answers
-
In your Conditional Forwarding configuration, instead of using 10.x.x.x subnet, which is not a domain but a subnet, enter the domain as
10.in-addr.arpa .
Ace Fekay
MVP, MCT, MCITP Enterprise Administrator, MCTS Windows 2008 & Exchange 2007 & Exchange 2010, Exchange 2010 Enterprise Administrator, MCSE & MCSA 2003/2000, MCSA Messaging 2003
Microsoft Certified Trainer
Microsoft MVP — Directory Services
Complete List of Technical Blogs: http://www.delawarecountycomputerconsulting.com/technicalblogs.phpThis posting is provided AS-IS with no warranties or guarantees and confers no rights.
-
Marked as answer by
Tuesday, December 27, 2011 3:33 AM
-
Marked as answer by
- Remove From My Forums
-
Question
-
Hi Everyone,
It’s me again, I need to ask how to properly configure the Windows AD Integrated DNS server to forward any PTR query going to the Linux DNS server. Below are the list of what I did:
1. Delete all the PTR records located in Reverse Lookup zone
2. Went to the properties of the «Domain» went to the forwarders tab and added 10.x.x.x SUBNET in «DNS Domain»
3. Under Selected Domain forwarders type the IP address of the Linux DNS server
4. Perform NSlookup using the IP address of the AD-DNS server that I have configured, cannot resolve any PTR record (made sure that the PTR record does exist in the record of the Linux DNS server)
5. Perform same NSlookup PTR test pointing to the Linux DNS server and it works.
I hope you can help me with problem.
Answers
-
In your Conditional Forwarding configuration, instead of using 10.x.x.x subnet, which is not a domain but a subnet, enter the domain as
10.in-addr.arpa .
Ace Fekay
MVP, MCT, MCITP Enterprise Administrator, MCTS Windows 2008 & Exchange 2007 & Exchange 2010, Exchange 2010 Enterprise Administrator, MCSE & MCSA 2003/2000, MCSA Messaging 2003
Microsoft Certified Trainer
Microsoft MVP — Directory Services
Complete List of Technical Blogs: http://www.delawarecountycomputerconsulting.com/technicalblogs.phpThis posting is provided AS-IS with no warranties or guarantees and confers no rights.
-
Marked as answer by
Tuesday, December 27, 2011 3:33 AM
-
Marked as answer by
(Отказ от ответственности: я не являюсь администратором DNS в Windows. У меня есть приличный опыт работы с DNS, но это не имеет никакого смысла. Я тесно сотрудничаю с администраторами, отвечающими за эти устройства, и могу проводить тесты как необходимо).
Мы столкнулись с проблемой, когда мы не можем добавить условные серверы пересылки, которые указывают на серверы имен BIND в Windows Server 2012. Добавление IP-адреса сервера приводит к ошибке проверки: An unknown error occurred while validating the server.

Посмотрев журнал запросов на сервере BIND, мы обнаружили нечто довольно интересное: запрашивал DNS-сервер Windows . IN SOA, то есть запись SOA для корневых серверов имен. Нет запроса example.com. IN SOAвообще. Он пытается запросить полномочия root и не продолжает работу, когда получает ответ REFUSED.
client 192.168.203.20#59067 (.): query: . IN SOA - (192.168.208.201)
client 192.168.203.20#50553 (.): query: . IN SOA - (192.168.208.201)
client 192.168.203.20#55468 (.): query: . IN SOA - (192.168.208.201)
Безумие. Чтобы пошутить, мы воспроизвели эту проблему в лаборатории. Я скачал копию корневой зоны и настроил .зону (комментируя мои корневые подсказки), и вот, эта ошибка больше не возникает.
Я действительно не понимаю этого. Я предоставляю авторитетный сервер имен, который не должен предоставлять ответы . SOA, и, в зависимости от обстоятельств, мне придется добавить эту зону на все наши производственные серверы, просто чтобы хорошо играть с Windows 2012. По моему опыту, Экспедитор должен интересоваться только тем, является ли целевой сервер имен полномочным для данной зоны.
Почему это происходит?
Если мы попытаемся игнорировать ошибку (в любом случае нажмите ОК), мы получим следующее сообщение об ошибке:

Журнал запросов по-прежнему показывает, что вышестоящий сервер только запрашивает . IN SOA. Никогда не делается попытка проверить, является ли сервер авторитетным для example.com..
| Введение | |
| Кэширующий DNS сервер | |
| Перенаправляющий сервер | |
| Условное перенаправление | |
| Похожие статьи |
Введение
Один и тот же сервер может быть настроен на работу в кэширующем и в перенаправляющем режимах.
Кэширующий DNS сервер
Кэширующий (caching) DNS-сервер работает, выполняя все DNS-запросы, выполняемые вашей системой, а затем сохраняя или кэшируя результаты в памяти.
Как только результаты будут кэшироваться в памяти каждый раз, когда вы делаете дублирующий запрос для домена, результат будет почти мгновенно обработан из памяти.
Это может показаться не слишком важным, но если DNS-серверы вашего провайдера не торопятся с ответом, это значительно замедлит ваш просмотр Интернета.
Например, для правильной загрузки домашней страницы новостного канала MSNBC в США необходимо связаться с более чем 100 уникальными доменными именами.
Если серверы имен вашего провайдера отвечают даже на 10 секунд дольше, чем обычно, это означает, что загрузка страницы займет на 10 секунд больше времени.
Локальный кэширующий DNS-сервер поможет не только в вашем доме или офисе, но и на вашем сервере. Если у вас есть приложение, которое выполняет множество поисков DNS, например, загруженный почтовый сервер, на котором работает программное обеспечение для защиты от нежелательной почты, оно получит повышение скорости от локального кэширующего DNS-сервера.
Наконец, systemd-resolved поддерживает самые последние, безопасные стандарты DNS DNSSEC и DNSoverTLS или DoT. Это помогает обеспечить вашу безопасность и сохранить вашу конфиденциальность в Интернете.
Перенаправление DNS повышает производительность, балансирует нагрузку и делает вашу сеть более устойчивой.
Это обеспечивает способ передачи пространств имен или записей ресурсов, которые не содержатся в зоне сервера локальной системы доменных имен (DNS), на удаленный DNS-сервер
для разрешения запросов имен как внутри, так и за пределами сети.
Есть два метода, которые мы обсудим: перенаправление (Forwarding) и условное перенаправление (Conditional Forwarding).
Чтобы понять преимущества условного перенаправления, мы должны сначала понять, как работает обычное перенаправление.
Перенаправляющий сервер
В простом примере перенаправляющий сервер DNS отправляет запросы имен внешних доменов на удаленные DNS-серверы за пределами своей локальной сети для разрешения.
Внутренние запросы имен обрабатываются внутренним DNS-сервером
Если на DNS-сервере нет отправителя, указанного для имени, указанного в запросе, он может попытаться разрешить запрос с помощью стандартной рекурсии с использованием
файла root hints
Существует два типа запросов DNS-имен: рекурсивные и итеративные.
Хотя как переадресация DNS, так и условная переадресация DNS выполняются в соответствии с описанными выше общими шагами, каждый из них немного отличается.
Рекурсивный запрос имени
Переадресованные запросы отправляются в рекурсивном виде.
В этом случае DNS-клиент требует, чтобы DNS-сервер ответил клиенту либо запрошенной записью ресурса, либо сообщением об ошибке, в котором указывается, что запись или доменное имя не существуют.
DNS-сервер не может просто перенаправить DNS-клиента на другой DNS-сервер.
Рекурсивные запросы имен выполняются быстрее, чем итеративные запросы имен
Итеративный запрос имени
DNS-клиент позволяет DNS-серверу возвращать наилучший ответ, который он может дать на основе данных своего кэша или зоны.
DNS-сервер, настроенный на использование пересылки, будет вести себя иначе, чем DNS-сервер, не настроенный на использование пересылки.
Вот как работает DNS-сервер при использовании переадресации
- Когда DNS-сервер получает запрос имени, он пытается разрешить этот запрос, используя свои первичные зоны, вторичные зоны и, наконец, свой кэш в таком порядке.
-
Если запрос имени не может быть разрешен с использованием данных локальной зоны или кэша, он перенаправит запрос на DNS-сервер, назначенный в качестве переадресатора.
В результате метод разрешения имен корневых подсказок использоваться не будет.
-
Исходный DNS — сервер, получивший первоначальный запрос, будет недолго ждать ответа от отправителя.
Если это не удастся, он попытается связаться с DNS-серверами, указанными в его корневых подсказках, в качестве последнего средства.
Условное перенаправление
Условное перенаправление (Conditional Forwarding) позволяет улучшить разрешение имен между внутренними (частными) пространствами имен DNS,
которые не являются частью пространства имен DNS Интернета. Например, полученные в результате слияния компаний
Похожие статьи:
| DNS | |
| Типы DNS серверов | |
| Forward first | only | |
| DNS сервер BIND на CentOS | |
| SSH | |
| PuTTY | |
| Telnet | |
| PSTools | |
| Firefox | |
| FreeSSHD | |
| Компьютерные сети | |
| Как создать туннель | |
| Как сделать проброс портов |
Если у вас несколько внутренних доменов, вам стоит подумать о настройке условной пересылки. Она позволяет направлять запросы конкретных доменов для разрешения на конкретные DNS-серверы. Условная пересылка полезна, если в вашей организации есть несколько внутренних доменов и вам требуется разрешать запросы между ними.
Чтобы настроить условную пересылку, выполните следующие действия:
1. В консоли Диспетчер DNS (DNS Manager) щелкните правой кнопкой папку Серверы условной пересылки (Conditional Forwarders) нужного вам сервера. В контекстном меню выберите команду Создать условную пересылку (Conditional Forwarder).
2. В диалоговом окне Создать сервер условной пересылки (New Conditional Forwarder) введите имя домена, в который следует пересылать запросы, например, logi.cc.
3. Щелкните список ІР-адрес (IP Address), введите ІР-адрес полномочного DNS-сервера в указанном домене и нажмите Enter. Повторите процесс, чтобы указать дополнительные ІР-адреса.
4. При использовании интеграции DNS с Active Directory установите флажок Сохранять условную пересылку в Active Directory (Store This Conditional Forwarder In Active Directory) и выберите одну из следующих стратегий репликации.
• Все DNS-серверы в этом лесу (All DNS Servers In This Forest) Это обширнейшая стратегия репликации. Помните, что лес Active Directory включает все деревья доменов, использующие данные каталога совместно с текущим доменом.
• Все DNS-серверы в этом домене (All DNS Servers In This Domain) Выберите эту стратегию, чтобы реплицировать информацию DNS внутри текущего домена и его дочерних доменов.
• Все контроллеры домена в этом домене (All Domain Controllers In This Domain) Выберите эту стратегию, если хотите реплицировать информацию DNS на все контроллеры домена внутри текущего домена и его дочерних доменов. Хотя эта стратегия обеспечивает более широкую репликацию информации DNS внутри домена, не каждый контролер домена является DNS-сервером (вам и не нужно настраивать каждый контроллер домена как DNS-сервер).
5. Задайте время ожидания пересылки, то есть, время, в течение которого сервер пытается запросить сервер пересылки в случае отсутствия ответа. По истечении времени ожидания сервер пытается запросить следующий полномочный сервер из списка. Стандартное время ожидания составляет пять секунд. Щелкните ОК.
6. Повторите процедуру, чтобы настроить условную пересылку для других доменов.
Сервер пересылки — это DNS-сервер в сети, который пересылает DNS-запросы внешних DNS-имен на DNS-серверы за пределами этой сети. Сервер также можно настроить на пересылку запросов в соответствии с определенными именами домена, используя условную пересылку.
DNS-сервер используется как сервер пересылки, когда другие DNS-серверы в сети настроены на переадресацию запросов, которые не могут быть разрешены локально, на этот DNS-сервер. С помощью сервера пересылки можно управлять разрешением имен для имен, находящихся за пределами организации, например в сети Интернет, что может способствовать увеличению эффективности разрешения имен для компьютеров в сети. Дополнительные сведения об использовании серверов пересылки и условной пересылки см. в разделе Общее представление о серверах пересылки.
Минимальным требованием для выполнения этой процедуры является членство в группе Администраторы или наличие эквивалентных прав. Подробные сведения об использовании соответствующих учетных записей и членства в группах см. на странице https://go.microsoft.com/fwlink/?Link >.
Содержание
- Настройка DNS-сервера для использования пересылки
-
- Дополнительные сведения
- Дополнительная информация
- Содержание:
- 1. Основные сведения
- Итеративный и рекурсивный запросы.
- 2. Немного о формате сообщения DNS
- Формат DNS-сообщения
- 3. TCP и UDP
- 4. DNS в Windows Server 2008 и 2012
- Фоновая загрузка зон
- Поддержка IPv6-адресов
- Изменения DNS-клиента
- 5. DNS и Active directory
- Как происходит процесс поиска DC
- Рекомендуем к прочтению
-
![]() |
Чтобы настроить DNS-сервер для использования пересылки с помощью интерфейса Windows |
Откройте диспетчер DNS.
В дереве консоли щелкните необходимый DNS-сервер.
В меню Действие выберите команду Свойства.
На вкладке Серверы пересылки в разделе Домен DNS щелкните имя домена.
В поле Список IP-адресов серверов пересылки для выбранного домена введите IP-адрес сервера пересылки, а затем нажмите кнопку Добавить.
Дополнительные сведения
- Чтобы открыть диспетчер DNS, нажмите кнопку Пуск, выберите Администрирование, затем щелкнете DNS.
Чтобы создать новое доменное имя, нажмите кнопку Создать, затем в разделе Домен DNS введите имя домена.
При указании сервера условной пересылки выберите DNS-имя домена, прежде чем ввести IP-адрес.
По умолчанию DNS-сервер пять секунд ожидает ответа от IP-адреса одного сервера пересылки, прежде чем пытаться связаться с IP-адресом другого сервера. В поле Время ожидания пересылки (сек) можно изменить количество секунд, в течение которых DNS-сервер будет ожидать ответа. Если ни один сервер пересылки не отозвался, начинается стандартная процедура рекурсии.
Если DNS-сервер должен использовать только серверы пересылки и не пытаться выполнять дальнейшую рекурсию, установите флажок Не использовать рекурсию для этого домена.
Можно отключить рекурсию для DNS-сервера, чтобы она не выполнялась для любого запроса. Если рекурсия на DNS-сервере отключена, на этом сервере невозможно будет использовать пересылку.
Не вводите IP-адрес сервера пересылки более одного раза в списке серверов пересылки для DNS-сервера, даже если это более надежный или географически близкий сервер пересылки. Если предпочтение отдается одному из серверов пересылки, поместите его первым в списке IP-адресов серверов пересылки.
Нельзя использовать имя домена в качестве сервера условной пересылки, если DNS-сервер содержит основную зону, дополнительную зону или зону-заглушку для этого имени домена. Например, если DNS-сервер является полномочным для имени домена corp.contoso.com (то есть он содержит основную зону для этого имени домена), нельзя настроить DNS-сервер на использование сервера условной пересылки для corp.contoso.com.
Можно предотвратить обычные проблемы, связанные с серверами пересылки, путем настройки DNS-серверов таким образом, чтобы они не использовали серверы пересылки избыточно.
![]() |
Чтобы настроить DNS-сервер для использования пересылки с помощью командной строки |
Откройте окно командной строки.
Введите указанную ниже команду и нажмите клавишу ВВОД.
| Параметр | Описание |
|---|---|
Имя средства командной строки, предназначенного для управления DNS-серверами.
Обязательный компонент. DNS-имя узла, на котором содержится DNS-сервер. Также можно ввести IP-адрес DNS-сервера. Чтобы указать DNS-сервер на локальном компьютере, можно ввести точку (.).
Обязательный компонент. Настройка сервера пересылки.
Обязательный компонент. Разделенный пробелами список, состоящий из одного или нескольких IP-адресов DNS-серверов, на которые пересылаются запросы. Можно указать список IP-адресов, разделенных запятыми.
Параметр времени ожидания. Параметр времени ожидания — это количество секунд перед истечением срока действия пересланных запросов.
Указывает значение для параметра /TimeOut. Значение указывается в секундах. По умолчанию это время составляет 5 секунд.
Определяет, использует ли DNS-сервер рекурсию при запросе имени домена, указанного в параметре имя_зоны.
Чтобы просмотреть полный синтаксис этой команды, введите следующий текст в командной строке, а затем нажмите клавишу ВВОД:
Дополнительная информация
- Чтобы открыть окно командной строки с более высоким уровнем прав, нажмите кнопку Пуск, выберите Все программы, Стандартные, щелкните правой кнопкой мыши пункт Командная строка, а затем выберите пункт Выполнить от имени администратора.
Чтобы указать сервер условной пересылки для зоны, используйте следующую команду:
Команда /ZoneAdd служит для добавления зоны, указанной в параметре имя_зоны. Параметр IP-адрес — это IP-адрес, на который DNS-сервер будет пересылать неразрешенные DNS-запросы. С помощью параметра /Slave DNS-сервер обозначается как подчиненный сервер. При указанном параметре /NoSlave (параметр по умолчанию) DNS-сервер не является подчиненным сервером, а это означает, что он может выполнять рекурсию. Параметры /Timeout и Время были рассмотрены в предыдущей таблице.
Чтобы просмотреть зону, добавленную только как сервер условной пересылки, используйте следующую команду:
Чтобы сбросить IP-адреса сервера пересылки для имени домена сервера условной пересылки, используйте следующую команду:
С помощью параметра /Local можно задать локальный список главных серверов для серверов пересылки, интегрированных в Active Directory. Параметр IP-адреса_серверов является списком, состоящим из одного или нескольких IP-адресов главных серверов для зоны. Главными серверами могут быть DNS-серверы, содержащие основные или дополнительные копии зоны, однако в главные серверы не могут быть записаны IP-адреса DNS-серверов таким образом, чтобы два DNS-сервера, содержащие копии зоны, использовали друг друга в качестве главных серверов. Такая настройка приведет к созданию циклической пересылки.
Нельзя использовать имя домена в качестве сервера условной пересылки, если DNS-сервер содержит основную зону, дополнительную зону или зону-заглушку для этого имени домена. Например, если DNS-сервер является полномочным для имени домена corp.contoso.com (то есть он содержит основную зону для этого имени домена), нельзя настроить DNS-сервер на использование сервера условной пересылки для corp.contoso.com.
Можно предотвратить обычные проблемы, связанные с серверами пересылки, путем настройки DNS-серверов таким образом, чтобы они не использовали серверы пересылки избыточно.
В своё время открыл для себя простую истину: хочешь запомнить что-то — веди конспект (даже при чтении книги), а хочешь закрепить и систематизировать — донеси до людей (напиши статью). Поэтому, после двух лет работы в системной интеграции (сфере, которую я в бытность свою системным администратором, считал просто рогом изобилия для жаждущих прокачки специалистов), когда я понял, что знания постепенно вытесняются навыками правки документации и конфигурированию по мануалам и инструкциям, для поддержания формы я начал писать статьи о базовых вещах. Например вот — о DNS. Делал тогда я это больше для себя, но подумал — вдруг кому пригодится.
Сервис в современных сетях если не ключевой, то один из таковых. Те, для кого служба DNS — не нова, первую часть могут спокойно пропустить.
Содержание:
1. Основные сведения
2. Немного о формате сообщения DNS
3. TCP и UDP
4. DNS в Windows Server 2008 и 2012
5. DNS и Active directory
6. Источники информации
(анкеров нет, поэтому содержание без ссылок)
1. Основные сведения
DNS — это база данных, содержащая, в основном, информацию о сопоставлении имён сетевых объектов их IP-адресам. «В основном» — потому что там и ещё кое-какая информация хранится. А точнее, ресурсные записи (Resource Records — RR) следующих типов:
А — то самое сопоставление символьного имени домена его IP адресу.
АААА — то же что А, но для адресов IPv6.
CNAME — Canonical NAME — псевдоним. Если надо чтобы сервер с неудобочитаемым именем, типа nsk-dc2-0704-ibm, на котором вертится корпоративный портал, откликался также на имя portal, можно создать для него ещё одну запись типа А, с именем portal и таким же IP-адресом. Но тогда, в случае смены IP адреса (всякое бывает), нужно будет пересоздавать все подобные записи заново. А если сделать CNAME с именем portal, указывающий на nsk-dc2-0704-ibm, то ничего менять не придётся.
MX — Mail eXchanger — указатель на почтовый обменник. Как и CNAME, представляет собой символьный указатель на уже имеющуюся запись типа A, но кроме имени содержит также приоритет. MX-записей может быть несколько для одного почтового домена, но в первую очередь почта будет отправляться на тот сервер, для которого указано меньшее значение в поле приоритета. В случае его недоступности — на следующий сервер и т.д.
NS — Name Server — содержит имя DNS-сервера, ответственного за данный домен. Естественно для каждой записи типа NS должна быть соответствующая запись типа А.
SOA — Start of Authority — указывает на каком из NS-серверов хранится эталонная информация о данном домене, контактную информацию лица, ответственного за зону, тайминги хранения информации в кэше.
SRV — указатель на сервер, держатель какого-либо сервиса (используется для сервисов AD и, например, для Jabber). Помимо имени сервера содержит такие поля как Priority (приоритет) — аналогичен такому же у MX, Weight (вес) — используется для балансировки нагрузки между серверами с одинаковым приоритетом — клиенты выбирают сервер случайным образом с вероятностью на основе веса и Port Number — номер порта, на котором сервис «слушает» запросы.
Все вышеперечисленные типы записей встречаются в зоне прямого просмотра (forward lookup zone) DNS. Есть ещё зона обратного просмотра (reverse lookup zone) — там хранятся записи типа PTR — PoinTeR — запись противоположная типу A. Хранит сопоставление IP-адреса его символьному имени. Нужна для обработки обратных запросов — определении имени хоста по его IP-адресу. Не требуется для функционирования DNS, но нужна для различных диагностических утилит, а также для некоторых видов антиспам-защиты в почтовых сервисах.
Кроме того, сами зоны, хранящие в себе информацию о домене, бывают двух типов (классически):
Основная (primary) — представляет собой текстовый файл, содержащий информацию о хостах и сервисах домена. Файл можно редактировать.
Дополнительная (secondary) — тоже текстовый файл, но, в отличие от основной, редактированию не подлежит. Стягивается автоматически с сервера, хранящего основную зону. Увеличивает доступность и надёжность.
Для регистрации домена в интернет, надо чтоб информацию о нём хранили, минимум, два DNS-сервера.
В Windows 2000 появился такой тип зоны как интегрированная в AD — зона хранится не в текстовом файле, а в базе данных AD, что позволяет ей реплицироваться на другие контроллеры доменов вместе с AD, используя её механизмы репликации. Основным плюсом данного варианта является возможность реализации безопасной динамической регистрации в DNS. То есть записи о себе могут создать только компьютеры — члены домена.
В Windows 2003 появилась также stub-зона — зона-заглушка. Она хранит информацию только о DNS-серверах, являющихся полномочными для данного домена. То есть, NS-записи. Что похоже по смыслу на условную пересылку (conditional forwarding), которая появилась в этой же версии Windows Server, но список серверов, на который пересылаются запросы, обновляется автоматически.
Итеративный и рекурсивный запросы.
Понятно, что отдельно взятый DNS-сервер не знает обо всех доменах в интернете. Поэтому, при получении запроса на неизвестный ему адрес, например metro.yandex.ru, инициируется следующая последовательность итераций:
DNS-сервер обращается к одному из корневых серверов интернета, которые хранят информацию о полномочных держателях доменов первого уровня или зон (ru, org, com и т.д.). Полученный адрес полномочного сервера он сообщает клиенту.
Клиент обращается к держателю зоны ru с тем же запросом.
DNS-сервер зоны RU ищет у себя в кэше соответствующую запись и, если не находит, возвращает клиенту адрес сервера, являющегося полномочным для домена второго уровня — в нашем случае yandex.ru
Клиент обращается к DNS yandex.ru с тем же запросом.
DNS яндекса возвращает нужный адрес.
Такая последовательность событий редко встречается в наше время. Потому что есть такое понятие, как рекурсивный запрос — это когда DNS-сервер, к которому клиент изначально обратился, выполняет все итерации от имени клиента и потом возвращает клиенту уже готовый ответ, а также сохраняет у себя в кэше полученную информацию. Поддержку рекурсивных запросов можно отключить на сервере, но большинство серверов её поддерживают.
Клиент, как правило, обращается с запросом, имеющим флаг «требуется рекурсия».
2. Немного о формате сообщения DNS
Сообщение состоит из 12-байтного заголовка, за которым идут 4 поля переменной длины.
Заголовок состоит из следующих полей: 
Формат DNS-сообщения
Идентификация — в это поле клиентом генерируется некий идентификатор, который потом копируется в соответствующее поле ответа сервера, чтобы можно было понять на какой запрос пришёл ответ.
Флаги — 16-битовое поле, поделенное на 8 частей:
- QR (тип сообщения), 1-битовое поле: 0 обозначает — запрос, 1 обозначает — отклик.
- opcode (код операции), 4-битовое поле. Обычное значение 0 (стандартный запрос). Другие значения — это 1 (инверсный запрос) и 2 (запрос статуса сервера).
- AA — 1-битовый флаг, который означает «авторитетный ответ» (authoritative answer). Сервер DNS имеет полномочия для этого домена в разделе вопросов.
- TC — 1-битовое поле, которое означает «обрезано» (truncated). В случае UDP это означает, что полный размер отклика превысил 512 байт, однако были возвращены только первые 512 байт отклика.
- RD — 1-битовое поле, которое означает «требуется рекурсия» (recursion desired). Бит может быть установлен в запросе и затем возвращен в отклике. Этот флаг требует от DNS сервера обработать этот запрос самому (т.е. сервер должен сам определить требуемый IP адрес, а не возвращать адрес другого DNS сервера), что называется рекурсивным запросом (recursive query). Если этот бит не установлен и запрашиваемый сервер DNS не имеет авторитетного ответа, запрашиваемый сервер возвратит список других серверов DNS, к которым необходимо обратиться, чтобы получить ответ. Это называется повторяющимся запросом (iterative query). Мы рассмотрим примеры обоих типов запросов в следующих примерах.
- RA — 1-битовое поле, которое означает «рекурсия возможна» (recursion available). Этот бит устанавливается в 1 в отклике, если сервер поддерживает рекурсию. Мы увидим в наших примерах, что большинство серверов DNS поддерживают рекурсию, за исключением нескольких корневых серверов (коневые сервера не в состоянии обрабатывать рекурсивные запросы из-за своей загруженности).
- — Это 3-битовое поле должно быть равно 0.
- rcode это 4-битовое поле кода возврата. Обычные значения: 0 (нет ошибок) и 3 (ошибка имени). Ошибка имени возвращается только от полномочного сервера DNS и означает, что имя домена, указанного в запросе, не существует.
Следующие четыре 16-битных поля указывают на количество пунктов в четырех полях переменной длины, которые завершают запись. В запросе количество вопросов (number of questions) обычно равно 1, а остальные три счетчика равны 0. В отклике количество ответов (number of answers) по меньшей мере равно 1, а оставшиеся два счетчика могут быть как нулевыми, так и ненулевыми.
Пример (получен с помощью WinDump при выполнении команды ping www.ru):
IP KKasachev-nb.itcorp.it.ru.51036 > ns1.it.ru.53: 36587+ A? www.ru. (24)
IP ns1.it.ru.53 > KKasachev-nb.itcorp.it.ru.51036: 36587 1/2/5 A 194.87.0.50 (196)
Первая строка — запрос: имя моего ПК, 51036 — случайно выбранный порт отправки, 53- заранее известный порт DNS-сервера, 36587 — идентификатор запроса, + — «требуется рекурсия», А — запрос записи типа А, знак вопроса означает, что это запрос, а не ответ. В скобках — длина сообщения в байтах.
Вторая строка — ответ сервера: на указанный исходный порт с указанным идентификатором запроса. Ответ содержит одну RR (ресурсную запись DNS), являющуюся ответом на запрос, 2 записи полномочий и 5 каких-то дополнительных записей. Общая длина ответа — 196 байт.
3. TCP и UDP
На слуху сведения о том, что DNS работает по протоколу UDP (порт 53). Это действительно по умолчанию так — запросы и ответы отправляются по UDP. Однако, выше упоминается наличие в заголовке сообщения флага TC (Truncated). Он выставляется в 1, если размер отклика превысил 512 байт — предел для UDP-отклика — а значит был обрезан и клиенту пришли только первые 512 байт. В этом случае клиент повторяет запрос, но уже по TCP, который ввиду своей специфики, может безопасно передать большие объёмы данных.
Также передача зон от основных серверов к дополнительным осуществляется по TCP, поскольку в этом случае передаётся куда больше 512 байт.
4. DNS в Windows Server 2008 и 2012
В Windows 2008 появились следующие возможности:
Фоновая загрузка зон
В очень крупных организациях с крайне большими зонами, использующих для хранения данных DNS доменные службы Active Directory, перезапуск DNS-сервера может длиться час или более, пока данные DNS извлекаются из службы каталогов. При этом DNS-сервер недоступен для обслуживания клиентских запросов все время, пока длится загрузка зон доменных служб Active Directory.
DNS-сервер с ОС Windows Server 2008 теперь во время перезагрузки загружает данные зоны из доменных служб Active Directory в фоновом режиме, благодаря чему может при этом обрабатывать запросы данных из других зон. При запуске DNS-сервера выполняются следующие действия:
- определяются все зоны, которые должны быть загружены;
- из файлов или хранилища доменных служб Active Directory загружаются корневые ссылки;
- загружаются все зоны с файловой поддержкой, то есть зоны, хранящиеся в файлах, а не в доменных службах Active Directory;
- начинается обработка запросов и удаленных вызовов процедур (RPC);
- создаются один или несколько потоков для загрузки зон, хранящихся в доменных службах Active Directory.
Поскольку задача загрузки зон выполняется отдельными потоками, DNS-сервер может обрабатывать запросы во время загрузки зоны. Если DNS-клиент запрашивает данные для узла в зоне, который уже загружен, DNS-сервер отправляет в ответ данные (или, если это уместно, отрицательный ответ). Если запрос выполняется для узла, который еще не загружен в память, DNS-сервер считывает данные узла из доменных служб Active Directory и обновляет соответствующим образом список записей узла.
Поддержка IPv6-адресов
Протокол Интернета версии 6 (IPv6) определяет адреса, длина которых составляет 128 бит, в отличие от адресов IP версии 4 (IPv4), длина которых составляет 32 бита.
DNS-серверы с ОС Windows Server 2008 теперь полностью поддерживают как IPv4-адреса, так и IPv6-адреса. Средство командной строки dnscmd также принимает адреса в обоих форматах. Cписок серверов пересылки может содержать и IPv4-адреса, и IPv6-адреса. DHCP-клиенты также могут регистрировать IPv6-адреса наряду с IPv4-адресами (или вместо них). Наконец, DNS-серверы теперь поддерживают пространство имен домена ip6.arpa для обратного сопоставления.
Изменения DNS-клиента
Разрешение имен LLMNR
Клиентские компьютеры DNS могут использовать разрешение имен LLMNR (Link-local Multicast Name Resolution), которое также называют многоадресной системой DNS или mDNS, для разрешения имен в сегменте локальной сети, где недоступен DNS-сервер. Например, при изоляции подсети от всех DNS-серверов в сети из-за сбоя в работе маршрутизатора клиенты в этой подсети, поддерживающие разрешение имен LLMNR, по-прежнему могут разрешать имена с помощью одноранговой схемы до восстановления соединения с сетью.
Кроме разрешения имен в случае сбоя в работе сети функция LLMNR может также оказаться полезной при развертывании одноранговых сетей, например, в залах ожидания аэропортов.
Изменения Windows 2012 в части DNS коснулись, преимущественно, технологии DNSSEC (обеспечение безопасности DNS за счет добавления цифровых подписей к записям DNS), в частности — обеспечение динамических обновлений, которые были недоступны, при включении DNSSEC в Windows Server 2008.
5. DNS и Active directory
Active Directory очень сильно опирается в своей деятельности на DNS. С его помощью контроллеры домена ищут друг друга для репликации. С его помощью (и службы Netlogon) клиенты определяют контроллеры домена для авторизации.
Для обеспечения поиска, в процессе поднятия на сервере роли контроллера домена, его служба Netlogon регистрирует в DNS соответствующие A и SRV записи.
SRV записи регистрируемые службой Net Logon:
_ldap._tcp.DnsDomainName
_ldap._tcp.SiteName._sites.DnsDomainName
_ldap._tcp.dc._msdcs.DnsDomainName
_ldap._tcp.SiteName._sites.dc._msdcs.DnsDomainName
_ldap._tcp.pdc._msdcs.DnsDomainName
_ldap._tcp.gc._msdcs.DnsForestName
_ldap._tcp.SiteName._sites.gc._msdcs. DnsForestName
_gc._tcp.DnsForestName
_gc._tcp.SiteName._sites.DnsForestName
_ldap._tcp.DomainGuid.domains._msdcs.DnsForestName
_kerberos._tcp.DnsDomainName.
_kerberos._udp.DnsDomainName
_kerberos._tcp.SiteName._sites.DnsDomainName
_kerberos._tcp.dc._msdcs.DnsDomainName
_kerberos.tcp.SiteName._sites.dc._msdcs.DnsDomainName
_kpasswd._tcp.DnsDomainName
_kpasswd._udp.DnsDomainName
Первая часть SRV-записи идентифицирует службу, на которую указывает запись SRV. Существуют следующие службы:
_ldap — Active Directory является службой каталога, совместимой с LDAP-протоколом, с контроллерами домена, функционирующими как LDAP-серверы. Записи _ldap SRV идентифицирует LDAP серверы, имеющиеся в сети. Эти серверы могут быть контроллерами домена Windows Server 2000+ или другими LDAP-серверами;
_kerberos — SRV-записи _kerberos идентифицируют все ключевые центры распределения (KDC — Key Distribution Centers) в сети. Они могут быть контроллерами домена с Windows Server 2003 или другими KDC-серверами;
_kpassword — идентифицирует серверы изменения паролей kerberos в сети;
_gc — запись, относящаяся к функции глобального каталога в Active Directory.
В поддомене _mcdcs регистрируются только контроллеры домена Microsoft Windows Server. Они делают и основные записи и записи в данном поддомене. Не-Microsoft-службы делают только основные записи.
Записи, содержащие идентификатор сайта SiteName, нужны для того чтобы клиент мог найти контроллер домена для авторизации в своём сайте, а не лез авторизовываться в другой город через медленные каналы.
DomainGuid — глобальный идентификатор домена. Запись, содержащщая его, нужна на случай переименования домена.
Как происходит процесс поиска DC
Во время входа пользователя, клиент инициирует DNS-локатор, при помощи удалённого вызова процедуры (Remote Procedure Call — RPC) службой NetLogon. В качестве исходных данных в процедуру передаются имя компьютера, название домена и сайта.
Служба посылает один или несколько запросов с помощью API функции DsGetDcName()
DNS сервер возвращает запрошенный список серверов, рассортированный согласно приоритету и весу. Затем клиент посылает LDAP запрос, используя UDP-порт 389 по каждому из адресов записи в том порядке, как они были возвращены.
Все доступные контроллеры доменов отвечают на этот запрос, сообщая о своей работоспособности.
После обнаружения контроллера домена, клиент устанавливает с ним соединение по LDAP для получения доступа к Active Directory. Как часть их диалога, контроллер домена определяет к в каком сайте размещается клиент, на основе его IP адреса. И если выясняется, что клиент обратился не к ближайшему DC, а, например, переехал недавно в другой сайт и по привычке запросил DC из старого (информация о сайте кэшируется на клиенте по результатам последнего успешного входа), контроллер высылает ему название его (клиента) нового сайта. Если клиент уже пытался найти контроллер в этом сайте, но безуспешно, он продолжает использовать найденный. Если нет, то инициируется новый DNS-запрос с указанием нового сайта.
Служба Netlogon кэширует информацию о местонахождении контроллера домена, чтобы не инициировать всю процедуру при каждой необходимости обращения к DC. Однако, если используется «неоптимальный» DC (расположенный в другом сайте), клиент очищает этот кэш через 15 минут и инициирует поиски заново (в попытке найти свой оптимальный контроллер).
Если у комьютера отсутствует в кэше информация о его сайте, он будет обращаться к любому контроллеру домена. Для того чтобы пресечь такое поведение, на DNS можно настроить NetMask Ordering. Тогда DNS выдаст список DC в таком порядке, чтобы контроллеры, расположенные в той же сети, что и клиент, были первыми.
Пример: Dnscmd /Config /LocalNetPriorityNetMask 0x0000003F укажет маску подсети 255.255.255.192 для приоритетных DC. По умолчанию используется маска 255.255.255.0 (0x000000FF)
