对于某些域,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


评论

www.xxx.com并不是域名示例haha;)... RFC建议您使用example.com。参见iana.org/domains/reserved

您始终可以运行带有权威名称服务器附加参数的nslookup命令。例如nslookup maps.google.com NS1.GOOGLE.COM // //它将始终从Google权威服务器返回答案

#1 楼

基本上,这就是名字所说的。权威答案来自一个名称服务器,该域名服务器认为该域名服务器为其返回记录(对于您在其中查找域名的列表中的名称服务器之一),而该域名服务器来自其他任何地方(一个名称服务器不在您要查找的域的列表中。)
基本上,这是名称服务器(不是要查询的域的正式名称服务器)和名称服务器(不是要查询的域)之间的区别。不具权威性的名称服务器正在第二次(或第三或第四次...)获得答案-只是从其他地方中继信息。
因此,例如,如果我现在对maps.google.com进行了nslookup,我将从配置的一个名称服务器中得到响应。 (或者来自我的ISP或我的域。)由于我的ISP的名称服务器或我自己的ISP都不在google.com的名称服务器列表中,因此它将以非权威的方式返回。它们不是Google的名称服务器,因此不是创建NS记录的权威来源。
下面是Google的权威名称服务器列表(来自whois.internic.net)。

域名:GOOGLE.COM
注册器:MARKMONITOR INC。
域名服务器:whois.markmonitor.com
名称服务器:NS1.GOOGLE.COM
名称服务器:NS2.GOOGLE .COM
名称服务器:NS3.GOOGLE.COM
名称服务器:NS4.GOOGLE.COM
更新日期:2011年7月20日
创建日期:1997年9月15日
到期日期:2020年9月14日

如果我将已配置的DNS服务器更改为该列表中的其中一个,然后对nslookup执行了maps.google.com,我将获得权威应答。这些服务器是Google域名中哪些是有效名称,哪些不是这些名称的授权(或来源)。所有其他名称服务器(非权威性名称服务器)均从权威服务器获取其NS记录。

#2 楼

您收到的答案本质上是来自本地DNS服务器的缓存或转发的响应。基本上,非权威名称服务器是不包含要查询的区域的记录的服务器。例如,您的本地DNS可能不会包含Google的名称记录。

通过运行host -t ns example.com来检索example.com的NS记录,可以获得对指定域具有权威性的名称服务器。

对于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命令所执行的操作。

评论


只是好奇...地址#127.0.0.1#53中的#是什么意思?

– cwhsu
18 Mar 2 '18 at 6:30

因为监听端口而猜对了吗?就像这里所说的nlp.stanford.edu/IR-book/html/htmledition/dns-resolution-1.html

– cwhsu
18 Mar 2 '18 at 7:27

#3 楼

非权威性答案仅表示未从权威DNS服务器获取所查询域名的答案。

首先,您必须了解DNS系统的工作方式。 DNS系统可以分为三层。它们是:


根DNS服务器
顶级域DNS服务器
权威DNS服务器

通常还有另一类DNS服务器称为本地DNS服务器,其IP地址在您的操作系统上指定。

当浏览器连接到网站example.com时,浏览器首先查询您的本地DNS服务器以获取example的IP地址。 com。


如果本地DNS服务器没有example.com的A记录,它会查询一台根DNS服务器。
根DNS服务器会说:我没有A记录,但我知道
顶级域名DNS服务器,它负责.com
域。
然后您的本地DNS服务器查询顶部级别的域DNS服务器,它负责.com域。
TLD DNS服务器将响应:我也不知道,但我知道example.com是哪个DNS
服务器。
因此,您的本地DNS服务器查询权威DNS服务器。因为
实际的DNS记录存储在该权威DNS服务器上,所以它会给您的本地DNS服务器一个答案。

然后此查询结果将缓存在您的本地DNS上服务器,但它可以过时了。 TTL时间到期后,您的本地DNS服务器将更新来自权威DNS服务器的查询结果。每当您在本地DNS服务器上查询DNS记录时,它都会返回非权威性(非官方)答案。如果需要权威性答案,则在使用nslookup或其他实用程序时必须明确指定权威DNS服务器。我认为本地DNS服务器应称为缓存DNS服务器。

当某人注册域名时,他/她可以指定哪个DNS服务器是权威DNS服务器。此信息称为NS记录。 NS记录将告诉顶级域DNS服务器,哪个域名服务器保存该域的A记录,MX记录等。

评论


这比所有其他答案的总和解释得更多。解释DNS如何工作的拓扑对于提供此问题的上下文非常有用。

–李维·罗伯茨(Levi Roberts)
17年1月1日在10:05

#4 楼

来自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