Mas*_*ion 2 dns bind forwarding
我正在调查我们的 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
;; 味精大小接收:220
但是谁/什么让他去询问其他名称服务器?或者这是默认行为?
它可能与负责包含根名称服务器 IP 的“.”-(根-)区域的“root.hint”文件有关吗?
您必须查看您的 DNS 服务器配置,但假设您没有设置任何类似转发器的内容,那么您确实是正确的,它是根提示文件。
DNS 被组织成一棵树(有点:为了冗余,节点被复制;因此,例如,有多个根节点)。根提示文件告诉服务器在哪里可以找到根名称服务器之一(一旦找到,它实际上会从它找到的那个服务器中获得当前的根名称服务器列表)。
然后它会从其中一个根名称服务器中找出对 com 区域具有权威性的名称服务器列表。从其中一个中,它将找出 google.com 区域的权威名称服务器列表。从其中之一,最后,它将获得 www.google.com 的地址 (A) 记录。[实际上,www.google.com 是一个 CNAME,但是到了同一个区域,而且谷歌域名服务器肯定会同时返回两条记录]
这个过程显然很耗时,所以使用了大量的缓存。很有可能它已经知道 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]
?
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多关于 DNS 的知识,特别是关于如何使用 BIND,DNS 和 BIND,现在是第 5 版,是一本好书。您也可以直接从 O'Reilly 获取电子书。