模拟 MTU 问题 - 如何丢弃大数据包

模拟 MTU 问题 - 如何丢弃大数据包

当我带着笔记本电脑外出时,我会使用 OpenVPN 通过公共 WiFi 连接回我的服务器。偶尔我会遇到一些我不得不假设是 MTU 问题的情况 - 大数据包被丢弃,小数据包则通过。

鉴于在这种情况下我无法控制公共 WiFi 服务,而当地提供商几乎肯定只是安装了一个“黑匣子”,对技术问题一无所知,我无法解决根本问题,而是必须找到合适的解决方法。不可避免的是,离开正常环境永远不是尝试解决此类问题的方便时机,所以我最终不得不“凑合”。

我想要配置一个测试环境,让我能够模拟 MTU 问题,以便我能够找到适合在外出时使用的解决方案。

我使用 Windows 客户端,但对于 OpenVPN,我认为这并不重要。我可以直接控制基于 Linux 的服务器(它实际上是Sophos UTM)。在实验室环境中,我可以在客户端和服务器之间的链中插入一个或多个基于 Linux 的设备。

请问有什么关于故意丢弃大型 UDP 数据包(例如 1200 < size <= 1500)的建议吗?

答案1

您必须确保“不碎片”位已打开:

echo 0 >/proc/sys/net/ipv4/ip_no_pmtu_disc

然后,您可以更改接口 MTU:

ip link set dev eth0 mtu 1200

如果收到大于 1200 的 UDP 数据包,则会将其丢弃。

顺便一提,此链接可以帮助您解决与 VPN MTU 相关的问题。

相关内容