是否有内置实用程序或 Linux 可以快速获取远程系统的 PMTU/MTU(最好少于 1 秒)?如果有,它是什么?它需要什么语法?
今天,Google 搜索对我没什么帮助,我找到的唯一解决方案是全面的跟踪路由,这可能需要 30 秒以上。
答案1
经过大量搜索,我找到了解决方案。在此向关心的人提供链接:
https://github.com/ValdikSS/p0f-mtu
它有一个 API,您可以调用它并支持完整的套接字。因此,虽然从技术上讲它是一个守护进程,但它确实可以解决问题。
答案2
我会尝试的事情:
尝试这个 nmap 脚本,用于
nmap
执行 PMTUD。我还没有尝试过,不知道它有多快。编写一个小程序,打开启用 PMTUD 的 TCP 连接,并从内核读取值。这可能非常快。我对如何做到这一点了解不多,无法告诉您更多信息,但我在评论中链接的问题有一些细节,应该可以帮助您朝着正确的方向前进。
如果您仅限于现有的 shell 命令,请尝试并行发送不同大小的 ping。
ping -M do -s 1472 remote-host
将发送一个 1500 字节的数据包(1472 个数据字节 + ICMP 和 IP 标头)。-M do
告诉它明确执行 PMTUD。 http://muzso.hu/2009/05/17/how-to-determine-the-proper-mtu-size-with-icmp-pings你提到
traceroute
——如果你想弄清楚在哪里 MTU 有限,但想要比 traceroute 更快的方法,可以尝试地铁;它并行发送一堆具有不同超时的数据包,而不是像 traceroute 那样按顺序发送。
不幸的是,我无法立即访问任何具有不同 MTU 的系统,因此我的实验能力受到限制。