更换路由器后原NAT SERVER不生效问题

  组网图:

  

图片12.png


  组网描述:

  内部局域网,用一个路由器百兆以太口做出口,由于对端过来是光纤,所以先连到光纤收发器,再以以太网线连到路由器,对端也是如此。用户网络内网使用私网地址段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月