Как мне найти авторитетный сервер имен для доменного имени? - PullRequest
292 голосов
/ 01 сентября 2008

Как я могу найти источники конфликтующих записей DNS?

Ответы [ 11 ]

392 голосов
/ 01 сентября 2008

Вам понадобится 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.

Строка origin (или основной сервер имен в Windows) сообщает, что ns51.domaincontrol является основным сервером имен для stackoverflow.com .

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

162 голосов
/ 24 декабря 2008

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

Если вы не имеете в виду «основной сервер имен», а не «полномочный сервер имен». Вторичные серверы имен являются полномочными.

Чтобы узнать серверы имен домена в 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

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

38 голосов
/ 01 сентября 2008

Вкл * nix:

$ dig -t ns <domain name>
17 голосов
/ 01 сентября 2008

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

Источник выпущен под AGPLv3.

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

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

[davidp@supernova:~]$ host -t ns stackoverflow.com
stackoverflow.com name server ns51.domaincontrol.com.
stackoverflow.com name server ns52.domaincontrol.com.
7 голосов
/ 10 октября 2016

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

dig SOA +trace stackoverflow.com

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

6 голосов
/ 01 сентября 2008

Термин, который вы должны искать в Google, является «авторитетным», а не «окончательным».

В 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-сервер и, следовательно, может дать неправильные или устаревшие ответы, которые он имеет в своем кэше.

2 голосов
/ 31 декабря 2013

Мы создали средство поиска 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

1 голос
/ 01 сентября 2008

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

whois stackoverflow.com

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

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

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

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

0 голосов
/ 20 февраля 2018

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

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

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

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

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

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

0 голосов
/ 11 февраля 2009

К сожалению, большинство этих инструментов возвращают только запись NS, предоставленную самим сервером имен. Чтобы более точно определить, какие серверы имен на самом деле отвечают за домен, вам нужно либо использовать «whois» и проверить перечисленные там домены, либо использовать «dig [domain] NS @ [корневой сервер имен]» и запустить рекурсивно, пока вы не получите списки серверов имен ...

Хотелось бы, чтобы была простая командная строка, которую вы могли бы запустить, чтобы получить ТОЧНЫЙ результат надежно и в согласованном формате, а не только результат, полученный от самого сервера имен. Цель этого для меня - иметь возможность запросить около 330 имен доменов, которыми я управляю, чтобы я мог точно определить, на какой сервер имен указывает каждый домен (в соответствии с их настройками регистратора).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...