配置 BIND-DNS 转发器的可能位置

配置 BIND-DNS 转发器的可能位置

我正在调查我们的 BIND 的配置,但无法弄清楚它是如何知道它的下一个名称服务器要请求一些他不是权威服务器的域...

例如,主域是“workgroup.lan”
查找dig www.google.com

回答

;;问题部分:
;www.google.com。在一个

;;答案部分:

[...]

;;权威部分:
google.com。 87465 在 NS ns1.google.com。

[...]

;;查询时间:4毫秒
;;服务器:127.0.0.1#53(127.0.0.1)
;;时间:2012 年 8 月 28 日星期二 15:56:08
;;味精大小 rcvd:220

但是谁/什么告诉他去询问其他名称服务器?或者这是默认行为?

它可能与负责包含根名称服务器 IP 的“.”(根)区域的“root.hint”文件有关吗?

答案1

您必须查看您的 DNS 服务器配置,但假设您没有设置转发器之类的东西,那么您确实是正确的,它是根提示文件。

DNS 被组织成一棵树(有点:为了冗余,节点被复制;因此,例如,有多个根节点)。根提示文件告诉服务器在哪里可以找到根名称服务器之一(一旦找到,它实际上会从找到的根名称服务器中获取当前的根名称服务器列表)。

然后,它会从根名称服务器之一查找对 com 区域具有权威性的名称服务器列表。从其中之一,它将找到 google.com 区域的权威名称服务器列表。最后,它将从其中之一获得 www.google.com 的地址 (A) 记录。 [实际上,www.google.com 是一个 CNAME,但位于同一区域,并且 Google 名称服务器肯定会同时返回两条记录]

这个过程显然很耗时,因此使用了大量的缓存。它很有可能已经知道 www.google.com 的地址,并且只是从缓存中返回它。如果没有,它可能已经知道要询问 ns1.google.com,或者如果失败,几乎肯定知道在哪里询问 com 的子域。

您可以使用该dnstracer程序来查看:

anthony@Zia:~$ dnstracer -4 -o -s . www.google.com
Tracing to www.google.com[a] via A.ROOT-SERVERS.NET, maximum of 3 retries
A.ROOT-SERVERS.NET [.] (198.41.0.4) 
 |\___ e.gtld-servers.net [com] (192.12.94.30) 
 |     |\___ ns4.google.com [google.com] (216.239.38.10) Got authoritative answer [received type is cname] 
 |     |\___ ns3.google.com [google.com] (216.239.36.10) Got authoritative answer [received type is cname] 
 |     |\___ ns1.google.com [google.com] (216.239.32.10) Got authoritative answer [received type is cname] 
 |      \___ ns2.google.com [google.com] (216.239.34.10) Got authoritative answer [received type is cname] 

如果你想了解更多关于 DNS 的知识,尤其是如何使用 BIND,DNS 和绑定,现已出第五版,是一本好书。您还可以直接从 O'Reilly 获取电子书。

相关内容