我正在研究一种简单的水平分割 DNS 实现。使用 GoDaddy 作为我的 Internet DNS,在几个位置使用 Microtik 路由器作为 LAN DNS。
在我的办公室里,我有一台服务器,在互联网上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。
答案1
您如何在内部机器上设置 DNS 服务器,静态设置还是通过 DHCP?
您需要确保内部机器仅查看 microtik,以进行所有 DNS 查询。然后,microtik 必须转发它不知道的主机和/或域的查询。
我以前没用过 microtik,但 pfSense 的底层使用了 dnsmasq。Dnsmasq 允许您覆盖单个主机或整个域,同时将其他所有内容转发到其他名称服务器。
事实上,您随机获得这两个结果,这说明内部机器设置为同时查看 microtik 和外部 DNS 提供商,但这样做不起作用。确保它们只能看到 microtik。
如果这不起作用或者我误解了,请告诉我们有关内部客户端配置的更多信息。
答案2
我今天回头检查了一下,发现hq.company.com
只能从我的一个本地站点解析到本地地址......
我意识到我最初发布问题的行为是因为本地路由器的 DNS 缓存仍然缓存了来自互联网的值。
清除路由器的DNS缓存可以让水平分割DNS立即生效!