当我们尝试 ping 到不同网段中的服务器时,我们会收到“TTL 在传输中过期”的消息。当我们运行 tracert 时,4 个 IP 地址会无限重复:
14 60 ms 59 ms 60 ms xxx.xxx.xxx.2
15 83 ms 81 ms 82 ms xxx.xxx.xxx.128
16 75 ms 80 ms 81 ms xxx.xxx.xxx.249
17 81 ms 78 ms 80 ms xxx.xxx.xxx.250
18 82 ms 80 ms 77 ms xxx.xxx.xxx.2
19 102 ms 101 ms 100 ms xxx.xxx.xxx.128
20 101 ms 100 ms 98 ms xxx.xxx.xxx.249
21 97 ms 98 ms 99 ms xxx.xxx.xxx.250
...
解决此错误的基本步骤是什么?
如上面所有答案所述,路由中存在循环导致 TTL 过期。
检查 IP 地址重复的设备上的路由。在 Linux 上,您可以使用
以 root 用户身份查看当前路由表。在 Windows 上,您可以转到 cmd 并使用命令
查看当前路由表。在 cisco 可管理交换机上,您可以使用命令
在所有重复的四个 IP 上使用上述命令,您应该会看到哪个路由表是错误的。理想情况下,所涉及的四个设备/主机之一应该将流量路由到您使用其他网关 ping 的目的地。
您的网络配置中有一条循环路由,请检查相关设备上的路由表。
“TTL expired in transit”与数据包的TTL值有关;它通过的每个路由器都会将其降低1,如果它达到0,则将数据包返回给发送者。它可以防止无限循环,即数据包永远在循环中传播。
IP 数据包有一个TTL标志。每次路由数据包时,此值减 1。当值变为 0 时,路由器丢弃数据包并发送 ICMP 消息Time-to-live exceeded in transit。
这样做是为了防止在网络出现路由问题时无限路由数据包。这是您的情况,您有一个路由循环,因此数据包永远不会到达目的地,并且最终被其中一个路由器丢弃,因为 TTL 达到 0。
在查看四台路由器的路由表时,重点关注路由的网络掩码以及路由器是否能够路由“
classless
”。在较旧的 Cisco 上,您需要明确启用此功能,否则它们将路由整个有类网络而不是您的子网。例如,配置
10.20.30.0/24
将导致类似10.0.0.0/8
.你没有提到协议,但我发现过度使用静态路由经常导致错误。使用动态路由协议应该可以在管理员很少的努力下解决这个问题。
我只想说从第 1 层开始。确保路由器已打开,并且将其连接到网络的端口已启动。然后将您的路由从 ICMP 源映射到目标路由器,检查路径上每一跳的路由表。
当 ping 导致 Expired In Transit... 简图 - ISP ==> 路由器 ==> 切换 ==> 到 PC
如果 ISP 可以看到他们的设备,那么您可能需要重新启动交换机。如果它有效,那么你就准备好了。如果没有,那么您可能需要重新启动路由器。
我得到了同样的错误信息。我重新启动了交换机,一切都恢复了。
祝你好运。
好的,所以我会和其他人一起插话。您有一个路由循环,ICMP Echo Request 在相同的 4 个路由器之间不断循环这一事实证明了这一点。检查路由器上的路由表,从 xxx250 的路由器开始。
我收到一条
TTL expired in transit
消息,问题是 DHCP 中的一个错误条目。有人在 DHCP 服务器中使用静态 IP 地址 (10.xx11) 添加了相同的主机名,而主机还租用了一个新的动态 IP 地址 (10.xx22)。