Вот у меня есть контролер домена AD, на нём поднят ДНС сервер, на локальных компьютерах в качестве ДНС сервера указан адрес контролера домена.
Как так может работать? У меня же на контролере домена нет никакой глобальной базы сопоставления имён сайтов с ip адресами, а только локальная база, верно? Тогда к какому ДНС обращается локальный компьютер когда выходит в интернет, если у него в настройках сети указан в качестве ДНС IP адрес контролера домена?
У меня сейчас проблема, что один интернет портал сменил хостинг, но меня при переходе всё еще кидает на старый хостинг, в поддержке справедливо говорят, что у вас ДНС не обновляется. А я вообще не пойму как ДНС у меня работает.
Внутренний днс, если встречает запрос ответа на который он не знает, может:
1 - ответить что не знает такого имени/адреса
2 - переслать запрос дальше согласно настройкам пересылки (forward)
Работает это исходя из зоны. Если он ответственный за зону mysubdomain.mycompany.ru, то запрос comp1.mysubdomain.mycompany.ru обработает только он. Если нет такого имени, ответит что нет.
Запрос же comp1.mycompany.ru или ya.com он перешлет указанному у него серверу пересылки, поскольку они не входят в его зону ответственности.
Можно так же создать зону othersubdomain.othercompany.ru и сказать что для нее ответственный сервер 192.168.10.3 и все запросы в эту зону и подзоны будут отправляться на указанный сервер, в то же время запросы ya.com пойдут на общий сервер пересылки.
В процессе работы ДНС сервер как и положено кеширует результаты запросов, согласно указанным TTL. Кеши при необходимости можно сбросить (через оснастку управления DNS сервером). Тогда при следующем запросе он обратиться за помощью к серверу пересылки. Но и там может лежать устаревшая запись и вот там вы руками уже не обновите кеши, придется ждать пока они сами протухнут. Для понимания какой сервер какой ответ вам дает можно использовать nslookup.
Например:
nslookup
comp1.mydomain.mycompany.ru
(ответ в котором дефолтный днс скажет все что думает)
server 77.88.8.8
comp1.mydomain.mycompany.ru
(теперь яндекс скажет все что он знает)
Запрос же comp1.mycompany.ru или ya.com он перешлет указанному у него серверу пересылки, поскольку они не входят в его зону ответственности.
Всё почти так, но... Сервер пересылки можно не указывать. В таком случае сервер DNS на КД выполнит разрешение имени с помощью итеративных запросов, начиная с корневых серверов DNS (которые отвечают (полномочны) за все пространство имен в DNS). Полномочный сервер, если сам не содержит записей для делегированнонр кому-то поддомену его домена, вернет в ответе адреса серверов, которые полномочны для этого поддомена, и запрашивающий сервер обратится уже к ним - и так, пока не получит ответ.
Начальный список корневых серверов копируется на сервер DNS из дистрибутива при установке, а потом он обновляется.
Локальные зоны, далее stub зоны и conditional forwarders, затем запросы через forwarders и если они пустые то к корневым серверам через root hints.
Вот так и работает и какого черта нельзя было это нагуглить или хотя бы увидеть в настройках dns сервера