一点背景 :
我在我的局域网上有一台服务器,它静态NAT到我的Cisco 871中的公共IP地址。同一本地子网的其余部分静态NAT到不同的公网IP,以便分离stream量。 我的域的权威公共名称服务器具有所有相关和正确的服务器logging。 而且,这些信息在几个星期前完全传播到了世界其他地方。
问题 :
当在与服务器相同的物理局域网上的任何机器上执行nslookup我的域名时,无论子网(我有两个子网),我都取回服务器的本地IP而不是公有IP。 nslookup从外部networking执行时返回正确的(公共)IP。
到目前为止我所知道的是 :
我知道,一旦我删除了服务器的静态NAT,问题就会消失(请参阅下面的configuration中的粗体行)。 我不使用CBAC的DNSstream量或任何性质的东西。 我和我的同事都非常困惑。
以下是我的configuration中的相关片段(地址有意更改):
有人可以帮助我理解为什么这是发生?
这就是所谓的“DNS医生” – 它试图通过给本地客户端本地地址而不是NAT地址来帮助你:
链接与NAT常见问题
这样做是因为IOS防火墙代码(很像PIX或ASA)默认情况下检查DNS,所以禁用它发出“不检查DNS”。 当您开始使用静态NAT时,推测IOS防火墙的行为会起作用。
与DNS Doctoring上的PIX / ASA详细信息链接
要禁用DNS Doctoring,请尝试以下命令:
no ip nat service alg udp dns
您可能需要在您的DNSparsing结构上发布一些信息。 例如,客户端 – >服务器A – > ISP A.这听起来像是当服务器的NAT正在创build一个'循环'的地方,最后一个内部DNS系统去parsing到外部服务器正在寻找您的服务器公网IP而不是你的ISP?
澄清一点。 当NAT不在时,您的路由器正在提供解决scheme或将其转发给ISP。 但是在NAT中,stream量被发送回服务器本身。