IPsec 组的 VPN 。。。ping 都是通的。。但是通过 IPSEC 开内网的网页很慢很慢。 通过抓包看了。。全是 TCP Spurious Retransmission ,
我猜测是 MTU 问题? ICMP 或 TCP 将被迫分片,而部分运营商又对对分片或 ESP 分片极不友好,导致丢包或重传。
运营商现在也找不到问题所在。。
![]() |
1
rrfeng 11 天前 via Android
两端强制调小 mtu
|
![]() |
2
rrfeng 11 天前 via Android
mss
|
![]() |
3
Tianao 11 天前
直接改小 overlay 接口的 MTU 或者 overlay 流量的 TCP MSS, 一个保守的 MTU 值供参考是 1280.
|
![]() |
5
rrfeng 11 天前 via Android
@unpay
一两句很难说清…… 能改接口 mtu 最好,但是前提是应用程序要感知到 mtu ,如果不是本地接口(比如 ipsec 在路由器上)就可能…… 改 mss 要么在终端设备,要不在链路中间强改 tcp 握手 |
7
maybeonly 11 天前
@unpay mss 在一边搞就行了
iptables -A FORWARD -i $dev -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1401:1500 -j TCPMSS --set-mss 1400 iptables -A FORWARD -o $dev -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1401:1500 -j TCPMSS --set-mss 1400 双向设置 mss |
![]() |
8
Tianao 11 天前
@unpay #6
#5 正解,MTU 只要改 overlay 接口的,不用端到端改,然后确保沿途所有防火墙允许 ICMP Type 3 Code 4, 就可以期望 PMTUD 发挥作用。TCP MSS 只需要在途径任意位置改握手包的,握手后会自动取最小值;但是 UDP 没有 MSS 协商的概念。某些厂商的设备(如 FortiGate )允许配置是先把 overlay 流量分片再根据 underlay 接口的 MTU 封装 ESP, 还是先封装成 ESP 再对 ESP 进行分片,改成前一种逻辑就可以避免 ESP 分片。 |
![]() |
9
szqh97 11 天前
我们之前在客户那边也遇到过类似问题,也是 overlay mtu 问题,客户那边还不让改 overlay 配置,我们自己写了个透明代理,操蛋的一批
|
![]() |
10
wy315700 11 天前
有一端的 MTU 改了就行
|
![]() |
11
a33291 11 天前
搭一个新的 vpn 比如 softether 对比测一下,看是不是链路就不行?
|
12
unpay OP 问题已解决。。。。。菊花工程师。。。。远程更新了一下固件。。好了
|
![]() |
15
a33291 11 天前
|
19
bobryjosin 9 天前 via Android
@mikaelson 两台机器跑一个隧道,在隧道里面跑 vxlan ,两端把 vxlan 接口桥接进一个 Bridge 就可以了,二层打通就不用 nat 了。
|
20
barnettluo1994 9 天前
@bobryjosin 真是不嫌麻烦弄 vxlan
|
21
barnettluo1994 9 天前
直接调节,mss 就行
|
![]() |
22
mikaelson 9 天前
@barnettluo1994 #20 有更好方案?
|
25
barnettluo1994 9 天前 via iPhone
@mikaelson 你两端是什么路由器防火墙?
|
![]() |
26
mikaelson 8 天前
@barnettluo1994 #25 2 朵云。。云上的机器
|
27
barnettluo1994 6 天前 via iPhone
@mikaelson 那就在云上的机器上直接 tcp mss 做好
|