如何检查在 MTU 路径协商期间谁阻止了 ICMP?

如何检查在 MTU 路径协商期间谁阻止了 ICMP?

我在与网络主机提供商的连接中遇到了 MTU 问题。问题是我使用的是 ppoe,MTU 大小设置为 1492,这使我无法使用“scp”。将 MTU 从 1492 更改为 1500 后,scp 可以正常工作,但大多数其他连接却不行。网络主机提供商和互联网提供商均未确认阻止 ICMP 流量。有没有办法检查谁(哪个 IP)阻止了 ICMP?谢谢

答案1

MTU 是“有效”还是“无效”的链路本地问题。如果两端的机器都配置为使用适合其特定链路的 MTU,则中间的路由器应根据需要对数据包进行分段以让数据通过。性能会受到影响,但您应该能够获得流量,即使 ICMP 在中间被阻止。

当然,如果路由器之间的一个或多个链接的 MTU 配置错误,就不会发生这种情况,但有人可能之前就已经注意到了。

至于检查 ICMP 是否被阻止,我建议使用 traceroute。如果您使用的是 Linux,Ubuntu 中最新版本附带了 ICMP 阻止相关问题的相当详细的描述,它应该会为您提供有关阻止来自何处的良好线索。由于您可以访问两端,因此您应该能够在每个方向上进行验证。

答案2

您可以使用网络上的主机,确认 MTU >=1500(到公共互联网,而不仅仅是本地链路),并发送大型 ping 请求或设置了 DF 标志的其他数据包。在该主机上使用 Wireshark 之类的嗅探器,您应该会看到您发送的每个数据包都有一个“需要传入 ICMP 碎片”数据包。

我的 DSL 提供商和一些网络服务器出现了一些问题,但事实证明,当我的提供商发送 ICMP 数据包时,它们显然被网络服务器或其防火墙过滤了。显然与亚马逊网络服务和一些大型 CDN 很相似

答案3

唯一真正确定这一点的方法是查看两端的网络流量,或者至少查看您这边的流量。您是否首先通过查看您这边的网络来确认您不是忽略它们的人?

答案4

您需要的工具是穆图罗特在 Windows 上或跟踪路径在 *nix 上。这两种工具都可以让您找到两台主机之间的路径 MTU,并查看瓶颈所在。但是,如果问题是给定的跃点有 ICMP 阻塞,则中断路径 MTU 发现你需要深入挖掘一下才能找出问题所在。

然后,当然,你必须说服责任方修复他们的网络设备配置。

相关内容