在远程分支机构路由器上ping内部计算机的地址,例如ping 10.83.124.2,结果却收到了奇怪的返回信息——Replay from 10.82.3.106:TTL expired in transit,这既不是网络不通也不是网络连接正常。那么TTL expired到底是什么问题造成的呢?(如图1)
在我们的实际工作过程中网络故障是无处不在的,很多网络问题都可以根据常识和经验去解决,像上面提到的TTL跳数超时的问题,在现实中不太常见,但是故障的根源却非常普遍,所以笔者将故障的现象和排查方法写出来和各位IT168的读者分享。 故障现象: 不过更新完毕后第二天笔者就接到了一个来自于下属分支机构网络管理员的电话,声称该机构网络无法连接,所有计算机和服务器都不能访问外网了。于是笔者通过网络远程登录该机构路由器管理界面,该分支路由器有两个接口,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是什么呢?所谓TTL就是“生存时间”,一般来说他是指数据包在网络中的存活时间,但是这个时间并不是我们日常所说的多少分钟多少小时,而是指跨越路由设备的数量。一般TTL指定数据报被路由器丢弃之前允许通过的网段数量。他是由发送主机设置的,以防止数据包不断在IP互联网络上xx终止地循环。当一台路由器或设置了路由功能的计算机转发IP数据包时,要求将数据包中对应的TTL值减小1。默认情况下网络中数据包的TTL值是16,也就是说如果一个数据包经过了16个路由器或设置了路由功能的计算机后仍然不能顺利到达目的地的话,此数据包将被丢弃,这就是TTL值过期。 既然知道了本次网络故障是因为TTL过期引起的,也就是说网络传输数据包时通过了16个路由设备还是无法到达目的地。可是笔者遇到的网络拓扑并不复杂,分支机构也仅仅有一台路由器和核心设备连接。因此正如添加TTL值在数据包中的目的一样,在网络中存在环路现象才会引起TTL过期。因此笔者将问题的根源放到了网络环路上。 修改静态路由
那么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欺骗病毒识别 总结: |