更换路由器后原NAT SERVER不生效问题
组网图:

组网描述:
内部局域网,用一个路由器百兆以太口做出口,由于对端过来是光纤,所以先连到光纤收发器,再以以太网线连到路由器,对端也是如此。用户网络内网使用私网地址段192.168.0.0/16,分配的公网地址为段x.x.x.0/28,其中路由器外网口地址为x.x.x.1/28地址,出口对端路由器地址为x.x.x.2/28。内部用户通过出口路由器做NAT转换为地址x.x.x.3-10后访问internet,同时内网有服务器需要对外提供www服务,对这台服务器做NAT SERVER,公网地址为x.x.x.11,私网地址为192.168.1.1。原先用户使用某厂家设备,一直使用正常,但随着内部用户数量增加,原设备性能无法满足要求,所以更换为我司NE20路由器。
现在根据用户要求和原先设备配置,把NE20配置好后,替换了原路由器,发现内部用户访问internet都能正常访问,但外网用户无法访问WWW服务器。
过程分析:
针对此问题,首先想到内网或内网服务器是否正常。
因无法登陆服务器,于是在NE20上ping服务器,可以正常通,服务器没有down;在内网找了一台PC来访问服务器www服务,也可以正常访问,证明服务器的服务都正常起来了;无法检查服务器的网络设置,但想到服务器原先使用正常,配置没有更改过,网络结构也没有发生改变,所以服务器的网络设置应该是没有问题的。
会不会是外网网络问题呢?
从外网的一台PC ping NE20外网口地址,也可以正常ping通;NE20 ping此公网PC,也正常。证明外网通信没问题
再用公网PC来tracert x.x.x.11,这时发现到了某一个地址后就不通了,tracert x.x.x.1则没问题。针对这个情况,在公网PC访问服务器WWW服务,分别在NE20内网口和外网口处抓包,发现外网口可以抓到到地址x.x.x.11的WWW数据包,而内网口则没有到192.168.1.1的WWW数据包,从这里感觉是数据包发送到了NE20,但NE20没有转发。换回原路由器,还是没有问题,似乎是NE20有问题了。
会不会是这个公网地址有问题,尝试使用一个新的公网地址x.x.x.12,发现就真的正常了,切换回原地址,还是不行。此时找到了规避方法,但还没有搞清楚问题原因,更没有彻底解决问题。
根据公网PC tracert x.x.x.11不通,而tracert x.x.x.1正常的情况,再仔细想一下数据包的转发流程:数据包到了一个三层网络设备后,需要知道三层路由,还需要知道二层MAC地址,数据包发到了NE20,说明这些信息对端设备都知道,那么NE20收到数据包后会怎么处理呢?配置没有问题,目标IP地址没有问题,会不会是二层MAC地址的问题,再去查看原先抓的数据包,发现目标MAC地址并不是NE20的,而是另外一个MAC!!!这时我们找到了数据包发送到了NE20,却没有被转发的原因,这是关键。
从上面知道,对端路由器封装x.x.x.11这个IP的MAC地址时有误,肯定是他的ARP表项不正确导致。好,现在的问题是如何让对端学到x.x.x.11地址的正确的MAC地址:由于对端设备是通过光纤收发器连接,也无法登陆到设备上shutdown接口或reset arp等,那么只能从我们这边主动去让它更新,比如免费ARP等。于是办法出来:把NE20外网口地址改为x.x.x.11/28,再ping对端x.x.x.2,开始不通,后通了,那么此时对端路由器对x.x.x.11地址的ARP就变为我NE20的接口MAC地址了,即为我们所希望的。再改回原先配置,测试,问题解决。
解决方法:
用户原先使用的是另一台路由器做出口,而服务器的公网地址也是x.x.x.11,那么原先正常使用的时候,出口对端路由器肯定有x.x.x.11的ARP,而且MAC地址是原路由器的MAC,在更换为NE20时,由于线路上存在光纤收发器,对端路由器的对应接口就不会down,ARP也不会主动消失。而NE20,用x.x.x.11地址做为NAT SERVER地址,也不会主动发免费ARP 报文的,所以这就导致对端ARP一直没有更新(一般ARP老化时间需要两个小时),这时候NE20放上去测试,就出现了对端ARP不正确的问题。我们再来确认一下,检查当时在公网无法访问服务器时,NE20外网口抓的包,目标MAC地址,发现确实就是原先路由器的MAC地址,这也证明了我们的判断。
2016年01月
本期文章
-
首刊语
-
公司动态
-
行业聚焦
-
产品推荐
-
案例介绍
-
经验共享
-
明星风采
-
培训天地