DNS - NSLOOKUP, что означает неавторизованный ответ?

117

Для некоторых доменов nslookupдает мне Non-authoritative answerраздел. Что это значит?

Got answer:
    HEADER:
        opcode = QUERY, id = 3, rcode = NXDOMAIN
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 0,  authority records = 1,  additional =

    QUESTIONS:
        www.ssss.com.SME, type = AAAA, class = IN
    AUTHORITY RECORDS:
    ->  (root)
        ttl = 1787 (29 mins 47 secs)
        primary name server = a.root-servers.net
        responsible mail addr = nstld.verisign-grs.com

------------
Non-authoritative answer:
------------

------------
Name:    example.com
Address:  93.184.216.34
Aliases:  www.example.com
user1179459
источник
14
www.xxx.com на самом деле не является примером доменного имени, ха-ха;) ... RFC предлагает вам использовать example.com. см. iana.org/domains/reserved
Mzn

Ответы:

99

По сути, это то, что говорит название. Авторитетный ответ приходит от сервера имен, который считается авторитетным для домена, для которого он возвращает запись (один из серверов имен в списке для домена, на котором вы выполняли поиск), а неавторизованный ответ приходит из любого другого места ( nameserver нет в списке для домена, на котором вы сделали поиск).

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

Так, например, если бы я выполнил nslookup maps.google.comпрямо сейчас, я бы получил ответ от одного из моих сконфигурированных серверов имен. (Либо из моего интернет-провайдера, либо из моего домена.) Он вернется как неавторизованный, потому что ни сервер имен, ни мой провайдер не находятся в списке серверов имен для google.com. Они не являются серверами имен Google, поэтому они не являются официальным источником, создающим записи NS.

Список авторитетных серверов имен для Google приведен ниже (от whois.internic.net).

Доменное имя: GOOGLE.COM

Регистратор: МАРКМОНИТОР ИНК.

Сервер Whois: whois.markmonitor.com

Сервер имен: NS1.GOOGLE.COM

Сервер имен: NS2.GOOGLE.COM

Сервер имен: NS3.GOOGLE.COM

Сервер имен: NS4.GOOGLE.COM

Дата обновления: 20 июля 2011

Дата создания: 15 сентября 1997

Срок годности: 14 сентября 2020 г.

Если бы я изменил свой сконфигурированный DNS-сервер на один из тех, что в этом списке, а затем сделал nslookupпротив maps.google.com, я получил бы верный ответ. Эти серверы являются полномочиями (или источником) того, какие имена являются допустимыми в доменах Google, а какие нет. Все остальные серверы имен, не авторизованные серверы имен, получают свои записи NS с авторитетных серверов где-то в будущем.

HopelessN00b
источник
35

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

Вы можете получить серверы имен, которые являются полномочными для данного домена, запустив host -t ns example.comпоиск записи NS для example.com.

В случае с Google мы видим:

$ host -t ns google.com
google.com name server ns4.google.com.
google.com name server ns1.google.com.
google.com name server ns2.google.com.
google.com name server ns3.google.com.

Если вы впоследствии запустите свою nslookupкоманду на одном из этих серверов, вы получите достоверный ответ:

$ nslookup www.google.com ns1.google.com
Server:         ns1.google.com
Address:        216.239.32.10#53

www.google.com  canonical name = www.l.google.com.
Name:   www.l.google.com
Address: 173.194.43.49
Name:   www.l.google.com
Address: 173.194.43.50
Name:   www.l.google.com
Address: 173.194.43.48
Name:   www.l.google.com
Address: 173.194.43.52
Name:   www.l.google.com
Address: 173.194.43.51

Если вы используете nslookup, чтобы получить тип записи NS, вы можете запустить что-то вроде этого в интерактивном режиме:

$ nslookup
> set querytype=ns
> google.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
google.com      nameserver = ns3.google.com.
google.com      nameserver = ns4.google.com.
google.com      nameserver = ns1.google.com.
google.com      nameserver = ns2.google.com.

Authoritative answers can be found from:
ns1.google.com  internet address = 216.239.32.10

Итак, установка querytype=nsделает то же, что и вышеприведенная hostкоманда.

CJC
источник
просто любопытно ... что #значит в Address: 127.0.0.1#53?
cwhsu
Угадай это из-за порта прослушивания, верно? Как то, что сказано здесь nlp.stanford.edu/IR-book/html/htmledition/dns-resolution-1.html
cwhsu
24

Неавторизованный ответ просто означает, что ответ не был получен с официального DNS-сервера для запрашиваемого доменного имени.

Сначала вы должны понять, как работает система DNS. Систему DNS можно разделить на три уровня. Они есть:

  • корневые DNS-серверы
  • DNS-серверы домена верхнего уровня
  • авторитетные DNS-серверы

Существует другой класс DNS-серверов, обычно называемый локальным DNS-сервером, чей IP-адрес указан в вашей операционной системе.

Когда ваш браузер подключается к веб-сайту, например, example.com, браузер сначала запрашивает у вашего локального DNS-сервера IP-адрес example.com.

  • Если локальный DNS-сервер не имеет записи A example.com, он запросит один из корневых DNS-серверов.

  • Корневой DNS-сервер скажет: у меня нет записи A, но я знаю DNS-сервер домена верхнего уровня, который отвечает за домены .com.

  • Затем ваш локальный DNS-сервер запрашивает DNS-сервер домена верхнего уровня, который отвечает за домены .com. DNS-сервер TLD ответит: я тоже не знаю, но знаю, какой DNS-сервер является доверенным для example.com.

  • Таким образом, ваш локальный DNS-сервер запрашивает официальный DNS-сервер. Поскольку фактическая DNS-запись хранится на этом полномочном DNS-сервере, она даст ответ вашему локальному DNS-серверу.

Затем этот результат запроса кэшируется на вашем локальном DNS-сервере, но может быть устаревшим. Когда время TTL истекло, ваш локальный DNS-сервер обновит результат запроса с официального DNS-сервера. Всякий раз, когда вы запрашиваете запись DNS на локальном DNS-сервере, он возвращает неавторизованный (неофициальный) ответ. Если вы хотите получить достоверный ответ, вы должны явно указать полномочный DNS-сервер при использовании nslookup или других утилит. Я думаю, что локальный DNS-сервер должен называться кэширующим DNS-сервером.

Когда кто-то регистрирует доменное имя, он / она может указать, какой DNS-сервер является официальным DNS-сервером. Эта информация называется записью NS. Запись NS сообщит DNS-серверу домена верхнего уровня, какой сервер имен содержит запись A домена, запись MX и т. Д.

LinuxBabe
источник
4
Это объясняет гораздо больше, чем все остальные ответы вместе взятые. Объяснение топологии работы DNS чрезвычайно полезно для предоставления контекста для этой проблемы.
Леви Робертс
1

Из Wireshark Lab: DNS v6.01 :However, nslookup also indicates that the answer is “non-authoritative,” meaning that this answer came from the cache of some server rather than from an authoritative MIT DNS server

TheLogicGuy
источник