有没有办法在 IP 数据包进入 tun0 之前强制对其进行分段,然后在 tun 设备的另一端强制对其进行重组?
我有一些无法控制的 IPSec 流量,它需要 1500 MTU 并且在 tun 设备上被丢弃。
我猜想可以将流量封装到 TCP 流中,然后将流重新组装为数据包 - 但由于各种原因,这肯定不是它应该的工作方式。所以我想知道是否有一种方法可以在 Linux 中的操作系统级别强制对至少一些匹配的数据包进行碎片化和重组?
答案1
你有没有尝试过
ip link set mtu xxx dev tun0
其中 xxx 是您认为合适的任何值?
编辑:
你可能想看看这:这个人有和你类似的问题,
一段时间后我又遇到了同样的问题。我的上行链路无法传递长度超过 1496 字节的 tcp 数据包。我通过清除所有传出的 tcp 数据包中的 DF 位来解决这个问题。Linux 默认不允许清除 Df 位,我为 iptables 编写了 small=20 内核模块和补丁来清除 DF 位。
使用:清除传出数据包上的 DF:
iptables -t mangle -A POSTROUTING -j DF --clear
对于传入数据包的干净 DF:
iptables -t mangle -A PREROUTING -j DF --clear
并且其他 iptables 选项也是允许的。
他的代码的引用已经死了,但你可以试着写他, [电子邮件保护]。