微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当 IPSEC vpn 设置中未设置 DF 时,内核不会对数据包进行分段

如何解决当 IPSEC vpn 设置中未设置 DF 时,内核不会对数据包进行分段

我使用 strongswan 连接到谷歌云 VPN 网关。创建 VTI 接口以通过 ipsec 隧道路由流量。我发现即使数据包中没有设置 DF 位,它也没有碎片化。相反,内核正在返回所需的 ICMP 数据包碎片。我知道 PMTUD,但我确实希望它对数据包进行分段 (DF=0)。内核 ipsec 堆栈不支持吗?

操作系统: centos 8 (4.18.0-147)

MTU: vti: 1480 eth0:1500

ping 10.240.3.2 -s 1411 -M dont
PING 10.240.3.2 (10.240.3.2) from 192.168.4.77 : 1411(1439) bytes of data.
From 192.168.4.77 icmp_seq=1 Frag needed and DF set (mtu = 1438)
1419 bytes from 10.240.3.2: icmp_seq=2 ttl=61 time=14.1 ms
1419 bytes from 10.240.3.2: icmp_seq=3 ttl=61 time=10.2 ms

请注意,第一个数据包会触发所需的 ICMP 碎片。因为 -M 没有,所以没有为数据包设置 DF。以下 ping 工作正常,因为内核根据路径 MTU (1438) 对数据包进行分段

我希望内核在 DF=0 时对数据包进行分段。因为当这个节点作为 vpn 网关时,另一个节点可能会根据路径 MTU 向网关节点发送分片数据包。网关节点将其重新组装并发送到 VTI 接口。猜测是因为路由 MTU 不支持转发的流量(fixed 最近在内核中),数据包不会在 VTI 接口之前在 VPN 网关节点上分段。因此,鉴于 DF=0 的事实,我确实希望内核对其进行分段。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?