unpay

一个蛋疼的 IPsec 问题

  •  
  •   unpay · Jul 21, 2025 · 3645 views
    This topic created in 470 days ago, the information mentioned may be changed or developed.

    IPsec 组的 VPN 。。。ping 都是通的。。但是通过 IPSEC 开内网的网页很慢很慢。 通过抓包看了。。全是 TCP Spurious Retransmission ,

    我猜测是 MTU 问题? ICMP 或 TCP 将被迫分片,而部分运营商又对对分片或 ESP 分片极不友好,导致丢包或重传。

    运营商现在也找不到问题所在。。

    27 replies  •  2025-07-26 02:20:31 +08:00
    rrfeng
    rrfeng
    Jul 21, 2025 via Android
    1
    两端强制调小 mtu
    rrfeng
    rrfeng
    Jul 21, 2025 via Android
    2
    mss
    Tianao
    Tianao
    Jul 21, 2025
    3
    直接改小 overlay 接口的 MTU 或者 overlay 流量的 TCP MSS, 一个保守的 MTU 值供参考是 1280.
    unpay
    unpay
    OP
    Jul 21, 2025
    4
    @rrfeng 也就是 MTU 和 MSS 都要调对吧 大神
    rrfeng
    rrfeng
    Jul 21, 2025 via Android
    5
    @unpay
    一两句很难说清……
    能改接口 mtu 最好,但是前提是应用程序要感知到 mtu ,如果不是本地接口(比如 ipsec 在路由器上)就可能……

    改 mss 要么在终端设备,要不在链路中间强改 tcp 握手
    unpay
    unpay
    OP
    Jul 21, 2025
    6
    @Tianao 但现在主设备是支持调 MTU 和 MSS 。。下面的设备不支持。。蛋疼中。。
    maybeonly
    maybeonly
    Jul 21, 2025
    7
    @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
    Tianao
    Tianao
    Jul 21, 2025
    8
    @unpay #6
    #5 正解,MTU 只要改 overlay 接口的,不用端到端改,然后确保沿途所有防火墙允许 ICMP Type 3 Code 4, 就可以期望 PMTUD 发挥作用。TCP MSS 只需要在途径任意位置改握手包的,握手后会自动取最小值;但是 UDP 没有 MSS 协商的概念。某些厂商的设备(如 FortiGate )允许配置是先把 overlay 流量分片再根据 underlay 接口的 MTU 封装 ESP, 还是先封装成 ESP 再对 ESP 进行分片,改成前一种逻辑就可以避免 ESP 分片。
    szqh97
    szqh97
    Jul 21, 2025
    9
    我们之前在客户那边也遇到过类似问题,也是 overlay mtu 问题,客户那边还不让改 overlay 配置,我们自己写了个透明代理,操蛋的一批
    wy315700
    wy315700
    Jul 21, 2025
    10
    有一端的 MTU 改了就行
    a33291
    a33291
    Jul 21, 2025
    11
    搭一个新的 vpn 比如 softether 对比测一下,看是不是链路就不行?
    unpay
    unpay
    OP
    Jul 21, 2025
    12
    问题已解决。。。。。菊花工程师。。。。远程更新了一下固件。。好了
    mikaelson
    mikaelson
    Jul 21, 2025
    13
    @a33291 softether 可以透传 IP ,不做 nat 吗?
    mikaelson
    mikaelson
    Jul 21, 2025
    14
    @szqh97 有没有能透传 ip 保留原 IP 的方案,最近 ipsec 被限速异常严重。。。
    a33291
    a33291
    Jul 21, 2025
    15
    @mikaelson #13 可以的,直接服务端桥接到本地网卡,就直接把整个主机所在网络给暴露出去了

    为了安全的话,还是用他那个 secureNAT,所有进去的设备组成一个 lan
    mikaelson
    mikaelson
    Jul 21, 2025
    16
    @a33291 #15 教程好少,能不能指点一下,我是 2 台 ubuntu ,想打通 2 个内网,不想做 nat ,不然所有服务的安全组都要改过
    life90
    life90
    Jul 22, 2025 via iPhone
    17
    @mikaelson 现在可以问 AI 。教程这东西只会越来越少
    mikaelson
    mikaelson
    Jul 22, 2025
    18
    @life90 #17 肯定问过了,都在胡说八道。。。claude 和 gpt
    bobryjosin
    bobryjosin
    Jul 23, 2025 via Android
    19
    @mikaelson 两台机器跑一个隧道,在隧道里面跑 vxlan ,两端把 vxlan 接口桥接进一个 Bridge 就可以了,二层打通就不用 nat 了。
    barnettluo1994
    barnettluo1994
    Jul 23, 2025
    20
    @bobryjosin 真是不嫌麻烦弄 vxlan
    barnettluo1994
    barnettluo1994
    Jul 23, 2025
    21
    直接调节,mss 就行
    mikaelson
    mikaelson
    Jul 23, 2025
    22
    @barnettluo1994 #20 有更好方案?
    thereone
    thereone
    Jul 23, 2025
    23
    @mikaelson 不是很简单吗,softether 很简单的不会也可以看看我写的。
    mikaelson
    mikaelson
    Jul 23, 2025
    24
    @thereone 感谢,我看看
    barnettluo1994
    barnettluo1994
    Jul 23, 2025 via iPhone
    25
    @mikaelson 你两端是什么路由器防火墙?
    mikaelson
    mikaelson
    Jul 24, 2025
    26
    @barnettluo1994 #25 2 朵云。。云上的机器
    barnettluo1994
    barnettluo1994
    Jul 26, 2025 via iPhone
    27
    @mikaelson 那就在云上的机器上直接 tcp mss 做好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1315 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    ♥ Do have faith in what you're doing.