Jump to content
Калькуляторы

структура работы DNS

Добрый день,

у меня возник небольшой вопрос по логике работы DNS

а именно

 

При установке на сервере регистраторе доменного имени(например example.com) NS адресов, допустим их 4: ns1.server.com ns2.reserv.com ns3.reserv2.com ns4.reserv3.com

 

на сервере ns1.server.com

я создаю зону своего домена example.com

где указываю NS севрера для своей зоны, ns1.server.com ns2.server.com ns3.server.com ns4.server.com

 

 

Вопрос!

Когда я делаю nslookup и смотрю какие NS сервера у зоны, что происходит?

Мой запрос идёт на один из корнеых DNS, далее какимто образом корневые домены DNS узнают что этот домен есть у моего регистратора, с этого регистратора берётся информация о том, где расположен мой NameServer (в моём случае ns1.server.com) и оттуда полностью берётся зона.

Т.е на вопрос какие у моего домена NS сервер он ответит ns1.server.com ns2.server.com ns3.server.com ns4.server.com ? или ответит ns1.server.com ns2.reserv.com ns3.reserv2.com ns4.reserv3.com?

 

Документацию по логике работы к сожалению не нашёл.

Share this post


Link to post
Share on other sites

Когда регистратор берет с вас деньги, он отправляет запрос на регистрацию домена в реестр. В запросе кроме данных whois указываются в том числе и NS для вашего домена. В результате в вышестоящую зону данные вносятся так, как вы их указали.

 

А цепочка резолвинга выглядит просто:

(.) -> .com -> example.com NSset

 

Т.е. в зоне .com содержатся записи NS для вашего домена. Более того, если эти один или несколько из NS для example.com находятся в домене example.com (ns1.example.com), то в зоне .com содержатся также и A/AAAA-записи для ns1.example.com, т.н. glue records.

Share this post


Link to post
Share on other sites

Т.е в реестр регистратор отправит данные о серверах, а именно:

ns1.server.com ns2.reserv.com ns3.reserv2.com ns4.reserv3.com (те которые я указад на регистраторе)

 

в то время как в зоне на сервере ns1.server.com прописано

ns1.server.com ns2.server.com ns3.server.com ns4.server.com

 

и мне по запросу возвратиться то что прописано в зоне: ns1.server.com ns2.server.com ns3.server.com ns4.server.com

 

Если мой сервер ns1.server.com будет не доступен, то будет взята зона с сервера ns2.reserv.com на котором параметры NS: ns2.reserv.com

и по запросу о NS будет возвращён только ns2.reserv.com.

 

А весь список NS серверов, которые регистратор отдаёт в реестр в принципе узнать командой nslookup не получиться, только то, что лежит в файле зоны.

 

 

 

Share this post


Link to post
Share on other sites

Резолвер будет посылать запросы, пока не получит ответа с выставленным битом AA (authoritative server). Т.е. если в зоне указаны NS-ы: A,B,C,D - запрос об авторитетной записи NS будет послан на любой из этих серверов.

 

Но вообще несинхронизация зоны - это копание ямы для самого себя.

 

А весь список NS серверов, которые регистратор отдаёт в реестр в принципе узнать командой nslookup не получиться, только то, что лежит в файле зоны.

То, что регистратор отдает в реестр - то и лежит в зоне. Посмотрите, например, трассировку запроса на mail.ru:

 

$ dig +trace NS mail.ru

 

; <<>> DiG 9.6-ESV-R1 <<>> +trace NS mail.ru

;; global options: +cmd

. 51218 IN NS f.root-servers.net.

. 51218 IN NS l.root-servers.net.

. 51218 IN NS h.root-servers.net.

. 51218 IN NS a.root-servers.net.

. 51218 IN NS g.root-servers.net.

. 51218 IN NS j.root-servers.net.

. 51218 IN NS e.root-servers.net.

. 51218 IN NS d.root-servers.net.

. 51218 IN NS m.root-servers.net.

. 51218 IN NS b.root-servers.net.

. 51218 IN NS i.root-servers.net.

. 51218 IN NS c.root-servers.net.

. 51218 IN NS k.root-servers.net.

;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 9 ms

 

ru. 172800 IN NS e.dns.ripn.net.

ru. 172800 IN NS f.dns.ripn.net.

ru. 172800 IN NS ns.ripn.net.

ru. 172800 IN NS ns2.nic.fr.

ru. 172800 IN NS ns2.ripn.net.

ru. 172800 IN NS ns5.msk-ix.net.

ru. 172800 IN NS ns9.ripn.net.

;; Received 453 bytes from 2001:7fd::1#53(k.root-servers.net) in 10 ms

 

mail.ru. 345600 IN NS ns.mail.ru.

mail.ru. 345600 IN NS ns1.mail.ru.

mail.ru. 345600 IN NS ns2.mail.ru.

mail.ru. 345600 IN NS ns3.mail.ru.

mail.ru. 345600 IN NS ns4.mail.ru.

mail.ru. 345600 IN NS ns5.mail.ru.

;; Received 235 bytes from 2001:660:3005:1::1:2#53(ns2.nic.fr) in 20 ms

 

mail.ru. 3600 IN NS ns5.mail.ru.

mail.ru. 3600 IN NS ns.mail.ru.

mail.ru. 3600 IN NS ns1.mail.ru.

mail.ru. 3600 IN NS ns2.mail.ru.

mail.ru. 3600 IN NS ns3.mail.ru.

mail.ru. 3600 IN NS ns4.mail.ru.

;; Received 228 bytes from 94.100.178.64#53(ns4.mail.ru) in 59 ms

8.8.8.8 - это мой сервер, прописанный в сетевых настройках. Дальше запрос отправлялся до тех пор, пока не был получен авторитетный ответ.

Edited by ipaddr.ru

Share this post


Link to post
Share on other sites

http://www.netlab.linkpc.net/download/software...l/DNSLookup.exe

Покажет вам все ответы по мере резолвинга имени в ип.

 

Когда я делаю nslookup и смотрю какие NS сервера у зоны, что происходит?

Мой запрос идёт на один из корнеых DNS, далее какимто образом корневые домены DNS узнают что этот домен есть у моего регистратора, с этого регистратора берётся информация о том, где расположен мой NameServer (в моём случае ns1.server.com) и оттуда полностью берётся зона.

Т.е на вопрос какие у моего домена NS сервер он ответит ns1.server.com ns2.server.com ns3.server.com ns4.server.com ? или ответит ns1.server.com ns2.reserv.com ns3.reserv2.com ns4.reserv3.com?

Вся документация - RFC начиная чуть ли не с 8хх или что то в начале тысячи, именно резолвинг с тех пор не менялся, только фичи добавляли.

 

Резолвер может:

- послать запрос на другой сервер, с флагом RD (запрос рекурсии), и если тот сервер допускает такие запросы, то он сам всех кого надо опросит и отдаст конечный результат

- самому резолвить

 

В начале опрашиваются сервера из списка, до первого ответа одного из них.

Если эти сервера не поддерживают рекурсию или клиент не запрашивал и не отвечают за зону к которой относится запрос, то они почти всегда отдают список корневых днс серверов (если опрашивали не сами корневые сервера).

Корневые сервер, отвественные за зону "." знают списки днс серверов отвественных за первый уровень, типа com, ru, org и пр.

Дальше резолвер обращается к ним а они перенаправляют его запросы к следующим серверам.

 

По пути бывает что в ответе со списком днс серверов нет их адресов, и тогда резолверу приходится резолвить их имена в адреса, а потом возвращаться к первоначальному запросу.

Бывает что из списка днс серверов один не отвечает, другой возвращает ошибку или вообще перекидывает обратно на корневые - образуя петлю, бывает что из 3-6 только 1-2 дают то что нужно...

Share this post


Link to post
Share on other sites
-полезная утилита!

Спасибо за подбробные ответы, с теорией вроде как прояснилось.

 

Но вопрос про соответствие списка NS на регистратороре домена и списке NS в зоне домена - остаётся открытым,

по тестам(разных чужих доменов) я вижу что перечень NS серверов на регистраторе домена и в зоне домена одинаков, т.е администраторы всегда их делают одинаковыми

Чем черевато то, что перечень будет разным, и можно ли прописать список NS на регистраторе домена и не прописывать список NS в зоне.

 

 

Share this post


Link to post
Share on other sites

Сам писал, сам пользуюсь :)

 

В общем то без разницы что у вас написано, до тех пор пока резолверы вас не спрашивают и получают то что им нужно.

Соответственно нужно чтобы те сервера что прописаны у регистратора отдавали всё что нужно.

Share this post


Link to post
Share on other sites

можно ли прописать список NS на регистраторе домена и не прописывать список NS в зоне.

Нельзя. В этом случае на запрос NS-ов для вашего домена никогда не будет получен авторитетный ответ. И все остальные запросы (A, AAAA, MX, TXT) посылать будет некуда.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this