我继承了一个环境,该环境具有用于我们内部 LAN 的 BIND 服务器。我注意到它没有任何用于外部请求(即 google.com)的转发器。我的笔记本电脑怎么知道 google.com 在我们的 LAN 之外?我的 DHCP 范围将 BIND 服务器列为其主 DNS 服务器。
答案1
绑定在二进制文件中预装了所谓的“根提示”列表。它列出了根服务器的位置,或者至少是发布特定版本的 BIND 时的位置。幸运的是,它们很少移动,尽管可能会添加更多地址。通常这些是 IPv6 地址。
当 BIND 首次启动时,它将使用这些提示来查找当前地址集的真实情况。这称为“启动”,完全在后台完成。
因此,完成此操作后,您配置了一些本地区域以供自己使用,它就会知道足够多的信息来回答有关您的区域和其他任何域的问题。在这种情况下,google.com 不是您文件中的本地区域,因此它会向根服务器请求 google.com,然后将其发送到 .com 的服务器,然后这些服务器将 BIND 发送到 google.com 的名称服务器。它们会回答,然后您就会得到答案。
作为 BIND 的作者,我很高兴它看起来很神奇。:)
答案2
BIND 区分了转发(又称代理)和缓存(又称递归)。
转发会将查询转发到具体的目标服务器并缓存结果。
缓存将查询根名称服务器并缓存结果。
就您而言,BIND 可能配置了缓存/递归来执行外部查找。您可能会发现类似以下内容:
// recursion is on by default
recursion yes;
// the DOT indicates all domains
zone "." IN {
type hint;
file "root.servers";
答案3
Bind 将从互联网的根服务器进行正确的查找 - 您实际上不需要转发器,因为 Bind 是一个正确的 DNS 客户端。
如果您希望设置转发(例如,实际上不查找任何这些域,只需向其他服务器询问),那么以下内容可能合适:
forwarders {
a.a.a.a;
b.b.b.b;
};`
其中 aaaa 和 bbbb 是您的其他名称服务器条目。