从各方面来看,我的家庭网络似乎并不特别复杂:DSL 线路接入调制解调器/路由器,然后连接到交换机,交换机支持一组机器。我的机器位于 192.168.0.x 地址空间中;但是,我在网络上运行一些公共服务器,因此我有一组 8 个(实际上是 5 个)静态 IP 地址,这些地址由路由器映射到服务器。非服务器通过 NAT 获取 192.168.0.x 地址;一些机器有静态地址,一些从 DHCP 获取地址。在本地,我正在运行 DNS 服务器(命名)来映射域名和 192.168 地址空间。有点混乱,但一切基本正常。
例外:我的一个本地非服务器客户端偶尔会从其内部地址切换到其外部地址。也就是说,如果我检查内部运行的网站的日志,来自此客户端的点击有时会显示内部 192.168 地址,有时会显示外部 (216.103...) 地址。它会毫无理由地来回切换,而我什么也没做。就客户端如何与我配置的某些客户端的 SSH 系统交互而言,这可能是一个问题(例如,允许从内部网络访问但不允许从外部网络访问),但它也似乎不对。我承认我在这里有点处于网络能力的边缘,但我无论如何也搞不清楚发生了什么。
如果有帮助的话,有问题的客户端正在运行 Mac OS X / 10.6;它的地址是静态分配的,不是五个外部可访问地址之一,并且从(第一个)内部 DNS 服务器和(第二个)我的 ISP 的 DNS 服务器获取其 DNS。我不能保证其他 NAT 客户端都没有出现此问题;我正在处理的是我每天使用的机器,所以这就是我遇到它的地方。有人有什么建议吗?这让我抓狂了……
答案1
我认为 DNS 服务器没有优先级,如果您同时配置了内部 DNS 服务器和 ISP 的 DNS 服务器,它将随机查询其中一个。
尝试仅使用您的内部 DNS 服务器,并让它将任何它不知道答案的查询转发到您的 ISP 的 DNS 服务器。
答案2
问题肯定出在你的名称服务器配置上。设置所有内部机器进行 DNS 查找仅有的针对运行 named 的服务器,并设置一个私有 DNS 区域这篇文章中有详细介绍对于静态配置系统的具体情况,这意味着/etc/resolv.conf
应该有一行search
(用于您的私有 DNS 区域)和一行nameserver
(指向您的命名服务器的地址)。
然后,在本篇文章的第一部分之后,同时将您的名称服务器配置为缓存服务器。您应该将其指向您的 ISP 提供的 DNS 服务器或外部服务器,例如,指向您的 DNS 提供商或替代 DNS 服务器,例如谷歌的。
您可以通过编辑路由器上的 dhcp 服务器设置来更改动态分配主机的配置。