我观察到我的网络中一些路由的行为相当奇怪(至少对我来说)。我在 ipsec 隧道上使用 gre 接口。这些 gre 接口在我的整个网络上都有 mtu 1400。通常我会看到这种 tracepath 输出:
1?: [LOCALHOST] pmtu 1500
1: 10.xxx.101.1 13.625ms
1: 10.xxx.101.1 13.178ms
2: 10.xxx.101.1 13.973ms pmtu 1400
2: 192.168.yyy.251 56.555ms
3: 192.168.yyy.92 643.252ms
4: 192.168.yyy.28 417.291ms
5: 192.168.zzz.129 517.893ms reached
但由于某种原因,我遇到了一个情况,tracepath 给出了不同的结果:
1?: [LOCALHOST] pmtu 1500
1: 10.xxx.101.1 13.625ms
1: 10.xxx.101.1 20.857ms
2: 10.xxx.101.1 11.954ms pmtu 1400
2: 192.168.yyy.251 46.456ms
3: 192.168.yyy.251 45.563ms pmtu 1376
3: 10.zzz.251.1 56.648ms
4: 10.zzz.255.111 55.212ms reached
192.168.yyy.251 上的所有 gre 接口都有 mtu 1400,所有接口都配置相同。10.zzz.251.1 路由器不发送任何 ICMP fragm 需要的数据包,gre 接口当然有 mtu 1400。192.168.yyy.251 生成 ICMP fragm 需要,但我不知道为什么。ip route get 10.zzz.255.111
在 192.168.yyy.251 路由器上显示:
10.zzz.255.111 from 10.xxx.101.253 tos lowdelay via 10.zzz.251.1 dev GRE_OUTPUT_INTERFACE src 192.168.yyy.251 mark 0x2071
cache expires 264sec ipid 0x607b mtu 1376 iif GRE_INPUT_INTERFACE
此外,有时(我怀疑这取决于流量)路由的 mtu 会发生变化并大幅降低,并且在 10 分钟内(mtu 缓存过期)我无法建立任何需要更大数据包的新连接 - 但旧建立的连接工作正常。嗯?
答案1
我认为这是由于 GRE 隧道通过另一个 GRE 隧道路由而引起的。您的临时问题可能是 IPSEC 隧道关闭几秒钟造成的。