IPsec 组的 VPN 。。。ping 都是通的。。但是通过 IPSEC 开内网的网页很慢很慢。 通过抓包看了。。全是 TCP Spurious Retransmission ,
我猜测是 MTU 问题? ICMP 或 TCP 将被迫分片,而部分运营商又对对分片或 ESP 分片极不友好,导致丢包或重传。
运营商现在也找不到问题所在。。
![]() | 1 rrfeng 87 天前 via Android 两端强制调小 mtu |
![]() | 2 rrfeng 87 天前 via Android mss |
![]() | 3 Tianao 87 天前 直接改小 overlay 接口的 MTU 或者 overlay 流量的 TCP MSS, 一个保守的 MTU 值供参考是 1280. |
![]() | 5 rrfeng 87 天前 via Android @unpay 一两句很难说清…… 能改接口 mtu 最好,但是前提是应用程序要感知到 mtu ,如果不是本地接口(比如 ipsec 在路由器上)就可能…… 改 mss 要么在终端设备,要不在链路中间强改 tcp 握手 |
7 maybeonly 87 天前 @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 87 天前 @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 87 天前 我们之前在客户那边也遇到过类似问题,也是 overlay mtu 问题,客户那边还不让改 overlay 配置,我们自己写了个透明代理,操蛋的一批 |
![]() | 10 wy315700 87 天前 有一端的 MTU 改了就行 |
![]() | 11 a33291 86 天前 搭一个新的 vpn 比如 softether 对比测一下,看是不是链路就不行? |
12 unpay OP 问题已解决。。。。。菊花工程师。。。。远程更新了一下固件。。好了 |
![]() | 15 a33291 86 天前 |
19 bobryjosin 85 天前 via Android @mikaelson 两台机器跑一个隧道,在隧道里面跑 vxlan ,两端把 vxlan 接口桥接进一个 Bridge 就可以了,二层打通就不用 nat 了。 |
20 barnettluo1994 85 天前 @bobryjosin 真是不嫌麻烦弄 vxlan |
21 barnettluo1994 85 天前 直接调节,mss 就行 |
![]() | 22 mikaelson 84 天前 @barnettluo1994 #20 有更好方案? |
25 barnettluo1994 84 天前 via iPhone @mikaelson 你两端是什么路由器防火墙? |
![]() | 26 mikaelson 84 天前 @barnettluo1994 #25 2 朵云。。云上的机器 |
27 barnettluo1994 82 天前 via iPhone @mikaelson 那就在云上的机器上直接 tcp mss 做好 |