我正在使用nslookup,并试图找出权威性和非权威性响应的差异。 这两个响应似乎是一致的(如果多次运行该命令,它们会给出相同的答案)。
正常nslookup调用
$ nslookup google.com Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: Name: google.com Address: 72.14.213.104 Name: google.com Address: 72.14.213.105 Name: google.com Address: 72.14.213.106 Name: google.com Address: 72.14.213.147 Name: google.com Address: 72.14.213.99 Name: google.com Address: 72.14.213.103
Nslookup使用谷歌的权威服务器
$ nslookup google.com ns1.google.com Server: ns1.google.com Address: 216.239.32.10#53 Name: google.com Address: 74.125.225.19 Name: google.com Address: 74.125.225.20 Name: google.com Address: 74.125.225.16 Name: google.com Address: 74.125.225.17 Name: google.com Address: 74.125.225.18
任何想法为什么这些不同? 这些应该给予不同的回应?
当我ping通google.com时,显示72.14.213.104,RTT是RTT的1/3,用于ping 74.125.225.19。
任何人都可以解释吗?
Google会尝试返回距离请求者最近的服务器的IP地址。 在第一种情况下,你的名字服务器正在发出请求。 在第二种情况下,您的电脑正在提出请求。
权威性与非权威性信息与此无关。
基本上,除非你有奇怪的networking连接(高延迟/低吞吐量/高数据包丢失)或DNS响应缓慢从你的ISP,我build议你不要微pipe理DNS; 这是不值得的努力。 在这种情况下,ISP的DNS服务器无论如何都为您提供了更好的(最好的)结果。
一个权威的答案应该直接来自域名服务器。 非权威的答案可以来自任何有答案的服务器。 除非最近的configuration已经改变,答案将是一样的。
请求可以指定他们需要一个权威的答案。 这些可能需要额外的查找,因为必须联系权威的服务器。 在进行更改时,可以从不同的权威服务器获得不同的答案。 具有最高序号的答案应该是最近的答案。 (在极less数情况下,序列号被重置,情况并非如此。)
非权威性的答案应该由联系的第一个服务器回答,并有答案。 这是最快的回应。 这些答案对于大多数用途已经足够。
像Google这样的服务是一个特例。 他们使用特殊的服务器,根据您的位置提供不同的答案。 他们也可能做负载平衡。 这两者都会随着时间的推移而产生不同的答案。 caching(非权威性)答案可能会比较老,并反映结果被caching时的首选服务器。
Google会尝试引导您访问与您所在位置最佳连接的服务器。 这些服务器的RTT应低于其他位置的其他Google服务器。
维基百科的 DNS 条目解释得非常好:
权威名称服务器是一个名称服务器,它提供的答案是由原始源(例如域pipe理员或dynamicDNS方法)configuration的,与通过对另一个名称服务器的常规DNS查询获得的答案形成对比。
关于这个差异,就好像你在说“当我从纽约去华盛顿特区的时候,到波特兰只需要十分之一的时间”。 地址不是相同的,所以它们可以彼此远离。
这适用于IP地址和地理地址。