我有一个简单的站点到站点 IPSec VPN,其中“server-A”通过 IPSec 隧道连接到“fw-A”。在“服务器-A”前面有一个交换机,具有面向服务器的 1500 字节 MTU 接口。有时,“fw-A”后面的客户端会向“server-A”发送大数据包,服务器会回复 ICMP“无法访问;需要碎片”消息:
11:19:22.309296 IP 10.10.10.135 > 192.168.100.4: ICMP 10.10.10.135 unreachable - need to frag (mtu 1438), length 36
10.10.10.135
是“服务器-A”eth0 接口上的 IP 地址,也是
192.168.100.4
最终客户端的 IP 地址。
我是否正确,只有在(服务器充当)路由器想要将数据包路由到另一个接口的情况下才会发送 ICMP“无法访问;需要碎片”消息,但该接口的 MTU 小于数据包并且不允许路由器分段这个包是因为设置了 DF 标志吗?如果是,则“server-A”不执行任何路由。只需要遍历包路由决策两次 - 第一次当包有 ESP 标头时,第二次当包没有 ESP 标头时。在这两种情况下,目的地都是10.10.10.135
并且该路径的 MTU 应为 65536 字节:
# ip route get 10.10.10.135
local 10.10.10.135 dev lo src 10.10.10135
cache <local>
# ip link show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
#
有人可以解释这种行为吗?