我有一台 Windows 7 Pro 机器,在 DNS 服务器使用方面存在一个奇怪的问题。
盒子从我本地网络上基于 Linux 的 DHCP 服务器分配了一个 IP 地址和 2 个 DNS 服务器。这 2 个 DNS 服务器是我的本地 DNS 服务器(用于私人主机)和我的 ISP 的 DNS 服务器,用于在我的内部 DNS 发生故障时提供冗余。
尽管 Win7 上的 IPCONFIG 显示 DNS 地址已正确发布,但解析并不像我预期的那样工作。当尝试通过主机名从内部 Web 服务器启动页面时,Win7 浏览器(Chrome、IE)说它们无法解析该地址。netmon 跟踪显示 Windows 实际上正在将 DNS 请求直接转发到ISPDNS,以及绝不到我的网络的本地 DNS 服务器。它应该总是首先尝试本地 DNS 服务器。奇怪的是,使用 nslookup 时,解析工作如预期一样(首先是本地)。
我假设(可能不正确)DHCP 发布的 DNS 服务器将按顺序使用,这意味着本地 DNS 将始终是首选服务器。这难道不正确吗?
在研究这个问题时,我读到一些与此非常相似的问题通常与解决以下问题的解决方案有关:手动的配置 DNS 服务器的使用顺序,在我看来,这破坏了 DHCP 的便利性。
Windows 7 中是否存在 IP/注册表设置,可以强制它按照 DHCP 指定的顺序使用 DNS 服务器?
提前谢谢了。
答案1
基本设置
如果我没记错的话,DNS 条目被视为平等。如果 Windows 无法连接到其中一个,则将使用另一个。因此,来自一个 DNS 的“主机未找到”回复不会让 Windows 询问另一个。该回复是成功连接。DNS 查找到此停止。
在您的环境中,dns 和 dhcp 应该按如下方式设置:
- DHCP 仅分配内部 DNS
- 内部 DNS 将解析内部和互联网地址。
BIND9 默认首先根据本地区域文件进行解析,然后查询顶级域(如果该框能够访问互联网)。您可以通过执行以下操作从 Windows 框中进行测试
nslookup
> server <IP of your internal dns box>
> <internal hostname>
> google.com
Bind 应该能够解析内部主机名和 google.com。
如果您想使用 ISP dns,请将其放在转发部分。它应该在 中/etc/bind/named.option
。
双/备份 DNS
当提供多个 dns 服务器时(手动或通过 dhcp),客户端计算机会平等对待它们。没有“主”或“次”。这对于 Windows 和 Linux 都是一样的。
为了提供冗余,最简单的方法是设置 2 个内部 DNS,其中一个可以为主 DNS,另一个为从 DNS。这样,只需更新一个 DNS。DHCP 将提供这两个 DNS 服务器的 IP 供内部使用。
关于外部 DNS 冗余,将多个外部 DNS 放在内部 DNS 服务器的转发部分。
PS:综上所述,我假设您确实需要对内部机器/服务器进行 DNS 查找。如果不需要,那就简单多了。