客户端在内部和外部IP地址之间翻转?

我有什么看起来像一个不是特别复杂的家庭networking,所有的事情都考虑到了:一条DSL线路进入一个调制解调器/路由器,然后到一个支持一堆机器的交换机。 我的机器居住在192.168.0.x的地址空间。 但是,我在networking上运行一些公共服务器,所以我有一个由路由器映射到服务器的8(5,真的)静态IP地址块。 非服务器通过NAT获得192.168.0.x地址; 有些机器有静态地址,有些机器从DHCP获取地址。 在本地,我正在运行一个DNS服务器(named)来映射域名和192.168地址空间。 有点杂乱,但一切基本上工作。

除了:我的一个本地非服务器客户偶尔会从内部地址切换到外部地址。 也就是说,如果我检查我在内部运行的网站的日志,来自这个客户端的命中有时会显示内部192.168地址,有时与外部(216.103 …)地址。 它会翻来覆去,没有什么明显的原因,没有我做任何事情。 这可能是一个问题,就客户如何与我configuration了一些客户端的SSH系统(例如,允许从内部networking访问而不是外部networking)进行交互而言,这也是一个问题,但这似乎也是错误的。 我会承认,我在这里的networking能力的边缘滑冰,但我不能为我的生活弄清楚发生了什么事情。

如果有帮助的话,客户端运行的是Mac OS X / 10.6; 它的地址是静态分配的,不是五个外部可访问的地址之一,并且从(第一)内部DNS服务器和(第二)我的ISP的DNS服务器获取其DNS。 我不能发誓其他NAT客户端也没有显示这个问题; 我正在处理的是我的日常机器,所以这是我遇到它的地方。 有没有人有任何build议? 这真让我抓狂…

我认为DNS服务器没有优先权,如果你有你的内部DNS服务器,并configurationISP的DNS服务器,它会随机查询其中之一。

尝试只使用您的内部DNS服务器,并转发任何疑问,它不知道答案,直到您的ISP的DNS服务器。

问题必须是您的名称服务器configuration。 设置你所有的内部机器, 对运行named的服务器执行dns查找,然后设置一个私人的dns区域, 详见本文 。 对于静态configuration系统的具体情况,这意味着/etc/resolv.conf应该有一个search行(用于您的私有DNS区域)和一个nameserver行(指向您的命名服务器的地址)。

然后, 在本文的第一部分之后 ,还要将您的名称服务器configuration为caching服务器。 你应该把它指向你的ISP提供的dns服务器或者外部服务器,比如指向你的dns提供者,或者指向dns服务器的其他DNS服务器。

您可以通过编辑路由器上的dhcp服务器设置来更改dynamic分配的主机的configuration。