我正在研究一个简单的水平分割 DNS 实现。在几个地方将 GoDaddy 用于我的 Internet DNS 和用于 LAN DNS 的 Microtik 路由器。
在我的办公室里,我有一台服务器,在 Internet 上是hq.company.com
,但在我的办公室网络上,我一直在使用不同名称的 Microtik 上的 DNS 条目hq.internal.company.com
。
我对“水平分割”实现最天真的猜测是在 Microtik 路由器中创建一个与GoDaddy 条目同名hq.company.com
的条目, .
但是,完成后我可以看到它并没有像我希望的那样工作。使用该命令时,两个地址都以随机顺序出现host
。我也尝试过清除笔记本电脑(OSX)的本地 DNS 缓存。
$ host hq.company.com
hq.company.com has address 192.168.88.177
hq.company.com has address 150.243.157.82
$ host hq.company.com
hq.company.com has address 150.243.157.82
hq.company.com has address 192.168.88.177
$ host hq.company.com
hq.company.com has address 192.168.88.177
hq.company.com has address 150.243.157.82
我想要的行为是,当我在办公室时,本地 DNS仅提供本地地址hq.company.com
,当我不在办公室时,GoDaddy DNS 提供公共 IP。
您如何在内部机器上设置 DNS 服务器,静态或通过 DHCP?
对于所有 DNS 查询,您需要确保内部机器只查看 microtik。然后,microtik 必须转发对它不知道的主机和/或域的查询。
我以前没有使用过 microtik,但在 pfSense 中,他们在后台使用 dnsmasq。Dnsmasq 允许您覆盖单个主机或整个域,同时将其他所有内容转发到其他名称服务器。
您随机获得两个结果的事实告诉我,内部机器设置为同时查看 microtik 和外部 DNS 提供程序,但这不起作用。确保他们只看到 microtik。
如果这不起作用或我误解了,请告诉我们更多有关内部客户端配置的信息。
我今天重新检查了一下,发现
hq.company.com
只能从我的一个本地站点解析到本地地址...意识到我最初发布问题的行为是因为本地路由器的 DNS 缓存仍然缓存了来自 Internet 的值。
清除路由器的DNS缓存,让水平分割DNS立即生效!