网络通信 频道

网络不通TTL跳数超时是谁惹的祸?

    【IT168 专稿】在远程分支机构路由器上ping内部计算机的地址,例如ping 10.83.124.2,结果却收到了奇怪的返回信息——Replay from 10.82.3.106:TTL expired in transit,这既不是网络异常也不是网络连接正常。那么TTL expired到底是什么问题造成的呢?(如图1)

图1

    在我们的实际工作过程中网络故障是无处不在的,很多网络问题都可以根据常识和经验去解决,像上面提到的TTL跳数超时的问题,在现实中不太常见,但是故障的根源却非常普遍,所以笔者将故障的现象和排查方法写出来和各位IT168的读者分享。

    故障现象:
    笔者公司所用网络拓扑结构比较简单,核心以信息中心的设备为主,其他各个分支机构通过租用电信ATM网络连接到此核心设备上,在每个分支机构上安装路由器并设置默认路由信息,而在核心设备上添加一条条的静态路由分别指向各个分支机构的路由结点。不过最近笔者所在公司对网络设备进行了升级,将原来的核心路由设备从Cisco 6509更换为华为8000,在设备更新完毕后网络使用一切正常。

    不过更新完毕后第二天笔者就接到了一个来自于下属分支机构网络管理员的电话,声称该机构网络无法连接,所有计算机和服务器都不能访问外网了。于是笔者通过网络远程登录该机构路由器管理界面,该分支路由器有两个接口,LAN1连接信息中心的核心设备,而LAN0接自己网络中的交换机。LAN0接口连接的网络设备IP地址范围为10.83.124.1到10.83.125.254,接口IP是10.83.125.254,子网掩码是255.255.254.0;LAN1接口连接的网络设备是信息中心核心设备的一个接口10.82.3.106,LAN1接口自己的IP地址是10.82.3.105,子网掩码是255.255.255.252。

    故障排查:
    既然知道了网络故障是因为TTL expired造成的,那么他代表的意思是什么呢?所谓TTL expired就是说“TTL值过期”。

    那么TTL是什么呢?所谓TTL就是“生存时间”,一般来说他是指数据包在网络中的存活时间,但是这个时间并不是我们日常所说的多少分钟多少小时,而是指跨越路由设备的数量。一般TTL指定数据报被路由器丢弃之前允许通过的网段数量。他是由发送主机设置的,以防止数据包不断在IP互联网络上永不终止地循环。当一台路由器或设置了路由功能的计算机转发IP数据包时,要求将数据包中对应的TTL值减小1。默认情况下网络中数据包的TTL值是16,也就是说如果一个数据包经过了16个路由器或设置了路由功能的计算机后仍然不能顺利到达目的地的话,此数据包将被丢弃,这就是TTL值过期。

    既然知道了本次网络故障是因为TTL过期引起的,也就是说网络传输数据包时通过了16个路由设备还是无法到达目的地。可是笔者遇到的网络拓扑并不复杂,分支机构也仅仅有一台路由器和核心设备连接。因此正如添加TTL值在数据包中的目的一样,在网络中存在环路现象才会引起TTL过期。因此笔者将问题的根源放到了网络环路上。

    修改静态路由
    判断网络中是否存在环路的最简单方法就是使用tracert命令(在Windows 下用traceroute命令)来查看,他可以显示出数据包的走向路径,将通过的每一个路由设备进行记录,从而查看到底问题出在哪个环节。所以笔者在分支机构的路由器上使用tracert 10.82.124.1来查看数据传输路径。结果发现数据包被频繁的从10.0.0.113发送到10.0.0.114,又从10.0.0.114发回到10.0.0.113中,从而在网络中形成了环路直到TTL过期。(如图2)

图2

    那么10.0.0.113和10.0.0.114这两个IP地址又是何许人呢?笔者通过查询得知其中10.0.0.113是核心设备连接另外一个分支机构的端口IP地址,而10.0.0.114恰恰是该分支机构路由器LAN1接口IP地址。看来是核心设备上路由信息设置有问题,把原本应该发送到10.83.124.1到10.83.125.254的路由数据信息写到要发送到10.0.0.114这个地址上了,从而造成了网络的环路,笔者按照正确数据修改了静态路由信息解决了本次网络故障。

    ARP欺骗病毒识别
    那么为什么在分支机构路由器上ping连接LAN0接口的地址会遵循默认路由发送出去呢?笔者继续在网上进行了搜索,原来目前流行的ARP欺骗病毒会把本地的数据信息混淆,从而造成LAN0接口并不认为直接连接在其上的地址为10.83.124.1到10.83.125.254。这种混淆是因为ARP病毒的数据包造成的,所以问题解决后笔者还通知分支机构的网络管理员去查杀自己网络中的ARP欺骗病毒。删除中毒机器上的ARP欺骗病毒后问题彻底解决。

    总结:
    本次故障主要由两方面引起,一方面是因为笔者在核心设备升级后没有仔细查看静态路由信息,而填写了错误数据;另一方面分支机构的ARP病毒使LAN0接口出现故障。可见有的时候网络故障并不是由一处失误造成的,多个因素一起作用才造成了网络瘫痪的恶劣后果,所以我们在日后维护网络管理网络过程中也要注意这种由多因素造成的网络问题,不要在修改了一项设置后问题没有解决就相当然的认为该设置和故障无关。

0
相关文章