您的位置:首页 > 其它

华为:NE40出口对端路由器ARP不正确导致NAT

2010-11-16 22:44 316 查看

华为:NE40出口对端路由器ARP不正确导致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。原先用户使用某厂家设备,一直使用正常,但随着内部用户数量增加,原设备性能无法满足要求,所以更换为我司NE40路由器。
现在根据用户要求和原先设备配置,把NE40配置好后,替换了原路由器,发现内部用户访问internet都能正常访问,但外网用户无法访问WWW服务器。

过程分析:
针对此问题,首先想到内网或内网服务器是否正常。
因无法登陆服务器,于是在NE40上ping服务器,可以正常通,服务器没有down;在内网找了一台PC来访问服务器www服务,也可以正常访问,证明服务器的服务都正常起来了;无法检查服务器的网络设置,但想到服务器原先使用正常,配置没有更改过,网络结构也没有发生改变,所以服务器的网络设置应该是没有问题的。
会不会是外网网络问题呢?
从外网的一台PC ping NE40外网口地址,也可以正常ping通;NE40 ping此公网PC,也正常。证明外网通信没问题
或者是NE40问题?
于是检查NE40配置,初步觉得没有问题,为确保起见,再在实验室按照同样的配置来进行验证,在这个结构和配置下,也没有问题,内部用户可以正常做NAT访问外网,外网用户也可以访问WWW服务器。
现在我们证明内网通信没问题,外网通信没问题,NE40也没问题。
此时问题定位停滞不前。
没有办法,继续测试,再把NE40切换会原先使用的路由器,发现一切又都正常了;切换回NE40,访问服务器还是不行。从这一个角度来看,似乎又是NE40的问题。
再用公网PC来tracert x.x.x.11,这时发现到了某一个地址后就不通了,tracert x.x.x.1则没问题。针对这个情况,在公网PC访问服务器WWW服务,分别在NE40内网口和外网口处抓包,发现外网口可以抓到到地址x.x.x.11的WWW数据包,而内网口则没有到192.168.1.1的WWW数据包,从这里感觉是数据包发送到了NE40,但NE40没有转发。换回原路由器,还是没有问题,似乎真的是NE40的问题了。但实验室验证过完全一样的配置,也使用完全一样的版本,却是正常。
会不会是这个公网地址有问题,尝试使用一个新的公网地址x.x.x.12,发现就真的正常了,切换回原地址,还是不行。此时找到了规避方法,但还没有搞清楚问题原因,更没有彻底解决问题。
根据公网PC tracert x.x.x.11不通,而tracert x.x.x.1正常的情况,再仔细想一下数据包的转发流程:数据包到了一个三层网络设备后,需要知道三层路由,还需要知道二层MAC地址,数据包发到了NE40,说明这些信息对端设备都知道,那么NE40收到数据包后会怎么处理呢?配置没有问题,目标IP地址没有问题,会不会是二层MAC地址的问题,再去查看原先抓的数据包,发现目标MAC地址并不是NE40的,而是另外一个MAC!!!这时我们找到了数据包发送到了NE40,却没有被转发的原因,这是关键。
从上面知道,对端路由器封装x.x.x.11这个IP的MAC地址时有误,肯定是他的ARP表项不正确导致。好,现在的问题是如何让对端学到x.x.x.11地址的正确的MAC地址:由于对端设备是通过光纤收发器连接,也无法登陆到设备上shutdown接口或reset arp等,那么只能从我们这边主动去让它更新,比如免费ARP等。于是办法出来:把NE40外网口地址改为x.x.x.11/28,再ping对端x.x.x.2,开始不通,后通了,那么此时对端路由器对x.x.x.11地址的ARP就变为我NE40的接口MAC地址了,即为我们所希望的。再改回原先配置,测试,问题解决。

解决方法:
用户原先使用的是另一台路由器做出口,而服务器的公网地址也是x.x.x.11,那么原先正常使用的时候,出口对端路由器肯定有x.x.x.11的ARP,而且MAC地址是原路由器的MAC,在更换为NE40时,由于线路上存在光纤收发器,对端路由器的对应接口就不会down,ARP也不会主动消失。而NE40,用x.x.x.11地址做为NAT SERVER地址,也不会主动发免费ARP 报文的,所以这就导致对端ARP一直没有更新(一般ARP老化时间需要两个小时),这时候NE40放上去测试,就出现了对端ARP不正确的问题。我们再来确认一下,检查当时在公网无法访问服务器时,NE40外网口抓的包,目标MAC地址,发现确实就是原先路由器的MAC地址,这也证明了我们的判断。

这类问题出现最多的情况就是上面这个情况,符合这样几个特征:
NAT SERVER的公网地址原先被使用,使对端有这个地址对应的其他ARP;
出口路由器配置的是NAT SERVER,这时不会主动发免费ARP;
对端设备是通过光纤收发器连接,接口也不会down,ARP不会自动消失;

这个时候对这个问题的最简单的解决办法:即是主动更新对端设备的ARP:配置NAT SERVER地址为接口地址,ping对端通。再改回原先的配置即可。

当然,NAT不通也不一定就是ARP问题引起,确认这个问题的最简单的方法:就是抓包查看目标MAC地址是否正确,如果MAC地址不正确,用上面的方法即可恢复过来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: