Как найти авторитетный сервер имен для доменного имени?

и для дополнительного кредита-можно ли найти происхождение конфликтующих записей DNS?

11 ответов


вам понадобится запись SOA (Start of Authority) для данного доменного имени, и вот как вы это сделаете, используя универсально доступный команда nslookup инструмент командной строки:

command line> nslookup
> set querytype=soa
> stackoverflow.com
Server:         217.30.180.230
Address:        217.30.180.230#53

Non-authoritative answer:
stackoverflow.com
        origin = ns51.domaincontrol.com # ("primary name server" on Windows)
        mail addr = dns.jomax.net       # ("responsible mail addr" on Windows)
        serial = 2008041300
        refresh = 28800
        retry = 7200
        expire = 604800
        minimum = 86400
Authoritative answers can be found from:
stackoverflow.com       nameserver = ns52.domaincontrol.com.
stackoverflow.com       nameserver = ns51.domaincontrol.com.

на происхождения (или сервер имя сервера на Windows) строка говорит вам, что ns51.domaincontrol - основной сервер имен для stackoverflow.com.

в конце вывода все авторитетные серверы, включая резервное копирование перечислены серверы для данного домена.


вы использовали единственное число в своем вопросе, но обычно есть несколько авторитетных серверов имен, RFC 1034 рекомендует по крайней мере два.

если вы не имеете в виду" основной сервер имен", а не"авторитетный сервер имен". Вторичные серверы имен are авторитетный.

чтобы узнать серверы имен домена на Unix:

  % dig +short NS stackoverflow.com
 ns52.domaincontrol.com.
 ns51.domaincontrol.com.

чтобы узнать сервер, указанный как первичный (понятие "первичный" в наши дни довольно нечеткое и обычно не имеет хорошего ответа):

% dig +short  SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.

чтобы проверить несоответствия между серверами имен, я предпочитаю старый check_soa инструмент, описанный в книге Liu & Albitz "DNS & BIND" (редактор O'Reilly). Исходный код доступен вhttp://examples.oreilly.com/dns5/

% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300

здесь два авторитетных сервера имен имеют одинаковый серийный номер. Хороший.


On * nix:

$ dig -t ns <domain name>

У меня есть инструмент распространения DNS предназначен для ответа на такие вопросы.

источник освобождается под AGPLv3.

(да, интерфейс на данный момент довольно простой :))

вы также можете узнать серверы имен для домена с помощью команды "host":

[davidp@supernova:~]$ host -t ns stackoverflow.com
stackoverflow.com name server ns51.domaincontrol.com.
stackoverflow.com name server ns52.domaincontrol.com.

термин, который вы должны гуглить, является "авторитетным", а не"окончательным".

на Linux или Mac, вы можете использовать команды whois, dig, host, nslookup или несколько других. nslookup может также работать в Windows.

пример:

$ whois stackoverflow.com
[...]
   Domain servers in listed order:
      NS51.DOMAINCONTROL.COM
      NS52.DOMAINCONTROL.COM

Что касается дополнительного кредита: Да, это возможно.


aryeh определенно ошибается, так как его предложение обычно дает вам только IP-адрес для имени хоста. Если вы используете dig, у вас есть для поиска записей NS, например:

dig ns stackoverflow.com

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


Я обнаружил, что лучший способ добавить всегда параметр + trace:

dig SOA +trace stackoverflow.com

Он также работает с рекурсивным CNAME, размещенным в другом провайдере. + трассировка трассировка подразумевает + norecurse, поэтому результат только для указанного домена.


мы создали инструмент поиска dns это дает вам домен авторитетные DNS-серверы и его общие записи dns в одном запросе.

пример:https://www.misk.com/tools/#dns/stackoverflow.com

наш инструмент находит авторитетные серверы имен, выполняя поиск dns в реальном времени (без кэширования) в корневых серверах имен, а затем следуя ссылкам сервера имен, пока мы не достигнем авторитетных серверов имен. Это та же логика, что DNS-сопоставители используют для получения достоверных ответов. Случайный авторитетный сервер имен выбирается (и идентифицируется) в каждом запросе, что позволяет находить конфликтующие записи dns путем выполнения нескольких запросов.

вы также можете просмотреть путь делегирования сервера имен, нажав на "авторитетные серверы имен" в нижней части результатов поиска dns из примера выше.

пример: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net


вы можете воспользоваться сервисом Whois. В UNIX-подобной операционной системе вы должны выполнить следующую команду. В качестве альтернативы вы можете сделать это на сайте http://www.internic.net/whois.html.

whois stackoverflow.com

вы получите следующий ответ.

...текст удален здесь...

серверы домена, в указанном порядке: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

вы можете использовать nslookup или копать, чтобы выяснить дополнительные сведения о записях для данного домена. Это может помочь вам разрешить описанные конфликты.


к сожалению, большинство этих инструментов возвращают только запись NS, предоставленную самим сервером имен. Чтобы быть более точным в определении того, какие серверы имен фактически отвечают за домен, вам придется либо использовать "whois" и проверять перечисленные там Домены, либо использовать "dig [domain] NS @[root name server]" и запускать это рекурсивно, пока вы не получите списки серверов имен...

Я хотел бы, чтобы была простая командная строка, которую вы могли бы запустить, чтобы получить этот результат надежно и в согласованном формате, а не только результат, который дается от самого сервера имен. Цель этого для меня - иметь возможность запрашивать около 330 доменных имен, которыми я управляю, чтобы я мог точно определить, на какой сервер имен указывает каждый домен (согласно их настройкам регистратора).

кто-нибудь знает команду, использующую "dig" или "host" или что-то еще на *nix?


записи SOA присутствуют на всех серверах выше по иерархии, над которыми владелец домена не имеет никакого контроля, и все они фактически указывают на один авторитетный сервер имен под контролем владельца домена.

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

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

(информация о том, какой сервер является авторитетным, для которого TLD может быть запрошен с корневых серверов имен).

когда у вас есть достоверная информация о SOA с сервера TLD authoritative, вы можете запросить сам основной сервер имен authoritative (тот, который находится в записи SOA на сервере имен gTLD!) для любых других записей NS, а затем продолжить проверку всех серверов имен, которые вы получили от запроса записей NS, чтобы увидеть, если есть какие-либо несоответствия для любой другой конкретной записи, на любом из этих серверов.

все это работает намного лучше / надежно с linux и dig, чем с nslookup / windows.


простой способ-использовать онлайн-инструмент домена. Мой любимый Домен Инструменты (ранее whois.СК). Я не уверен, что они могут разрешить конфликтующие записи DNS. В качестве примера DNS-серверы для stackoverflow.com are

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM