对于某些域名,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.example.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
答案1
基本上,它就是名称所表示的那样。权威答案来自被认为对它返回记录的域具有权威性的名称服务器(您查找的域的列表中的名称服务器之一),而非权威答案来自其他地方(您查找的域的列表中没有的名称服务器)。
这基本上就是您所查询域名的官方名称服务器与非官方名称服务器之间的区别。非权威的名称服务器会从第二手(或第三手或第四手)获得答案 - 只是从其他地方转发信息。
因此,例如,如果我现在执行 nslookup maps.google.com
,我将从我配置的名称服务器之一获得响应。(来自我的 ISP 或我的域。)它将返回非权威的响应,因为我的 ISP 的名称服务器和我自己的名称服务器都不在 的名称服务器列表中google.com
。它们不是 Google 的名称服务器,因此它们不是创建 NS 记录的权威来源。
Google 的权威名称服务器列表如下(来自 whois.internic.net)。
域名:GOOGLE.COM
注册商:MARKMONITOR INC.
Whois 服务器: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 系统的工作原理。DNS 系统可分为三个层级。它们是:
- 根 DNS 服务器
- 顶级域名 DNS 服务器
- 权威 DNS 服务器
还有另一类 DNS 服务器通常称为本地 DNS 服务器,其 IP 地址在您的操作系统上指定。
当您的浏览器连接到某个网站(例如 example.com)时,浏览器首先查询您的本地 DNS 服务器以获取 example.com 的 IP 地址。
如果本地 DNS 服务器没有 example.com 的 A 记录,它将查询其中一个根 DNS 服务器。
根DNS服务器会说:我没有A记录,但是我知道负责.com域名的顶级域名DNS服务器。
然后你的本地 DNS 服务器会向负责 .com 域名的顶级域名 DNS 服务器查询,顶级域名 DNS 服务器会回应:我也不知道,但是我知道哪个 DNS 服务器是 example.com 的权威服务器。
- 因此,您的本地 DNS 服务器会查询权威 DNS 服务器。由于实际的 DNS 记录存储在该权威 DNS 服务器上,因此它会给您的本地 DNS 服务器一个答案。
然后,此查询结果会缓存在您的本地 DNS 服务器上,但可能会过时。当 TTL 时间到期时,您的本地 DNS 服务器将更新来自权威 DNS 服务器的查询结果。每当您在本地 DNS 服务器上查询 DNS 记录时,它都会返回非权威(非官方)答案。如果您想要权威答案,则必须在使用 nslookup 或其他实用程序时明确指定权威 DNS 服务器。我认为本地 DNS 服务器应该称为缓存 DNS 服务器。
当有人注册域名时,他/她可以指定哪个 DNS 服务器是权威 DNS 服务器。此信息称为 NS 记录。NS 记录将告诉顶级域 DNS 服务器哪个名称服务器拥有该域的 A 记录、MX 记录等。
答案3
您收到的答案实际上是本地 DNS 服务器的缓存或转发响应。基本上,非权威名称服务器不包含所查询区域的记录;例如,您的本地 DNS 可能不会有 Google 的名称记录。
host -t ns example.com
您可以通过运行检索 example.com 的 NS 记录来获取对给定域具有权威性的名称服务器。
以谷歌为例,我们看到:
$ 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
命令所执行的操作。
答案4
非权威名称服务器不包含域区域的原始源文件。它们有一个域的缓存文件,该文件由之前完成的所有 DNS 查找构建而成。如果 DNS 服务器对没有原始文件的 DNS 查询做出响应,则称为非权威答案。
如果您正在寻找有关服务器相互连接/联网的更清晰的解释,请参阅:https://www.cloudflare.com/en-in/learning/dns/what-is-dns/。
上面的链接分享了有关 DNS 系统如何工作的详细见解。