我在网络中托管了一个 Web 服务器。它已注册域名。但是,我还为 LAN 托管了一个 DNS 服务器。因此,当有人想要访问 Web 服务器时,它会检查 DNS 服务器并使用内部地址 192.168.xx Web 服务器的公共地址是 203.xxx
当我的计算机正常工作时,我会 ping 或尝试 nslookup www.mydomain.com。两者都指向 192.168.xx,这是内部地址。有时,我或其他人无法访问 www.mydomain.com。当我检查时,nslookup 返回内部地址。但是当我 ping 时,它会尝试使用公共地址进行连接,就像这样。
Pinging www.mydomain.com [203.x.x.x] with 32 bytes of data:
如果发生这种情况,修复连接大多会有所帮助。有时,工作站(Win XP)必须重新启动。在工作站的 DNS 设置中,主 DNS 指向 DNS 服务器,辅助 DNS 指向 ISP DNS 服务器。
我想知道这个问题的原因和预防措施是什么?或者比我目前的解决方法更好的解决方法。谢谢
答案1
您是否已将客户端配置为查找内部 DNS 作为其主服务器,并将外部 DNS 服务器作为辅助服务器?您有一个竞争条件;如果内部 DNS 恰好响应速度太慢,则客户端会从公共 DNS 服务器获得不可用的响应。 ping
正在使用从外部 DNS 服务器查找中获得的缓存响应,同时nslookup
发送一个新请求,该请求会从内部 DNS 服务器获得有效响应。
主服务器和辅助服务器之间 DNS 视图不一致必然会导致此类问题。相反,要么建立第二个内部 DNS 服务器并将其用作辅助服务器,要么在客户端上配置根本不使用辅助 DNS 服务器。
答案2
此问题是由于您在内部网络内使用了 RFC1918 私有地址而导致的。因此,您必须在网络的一端使用一个地址访问服务器,而在另一端使用另一个地址访问服务器。
短期解决方案是实施水平分割 DNS。这为您提供了网络内外一致的 DNS 条目。
对此问题的长期解决方案是实施 IPv6,无论您是内部还是外部,您都将拥有相同的服务器地址。