V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
unpay
V2EX  ›  宽带症候群

一个蛋疼的 IPsec 问题

  •  
  •   unpay · 11 天前 · 2073 次点击

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

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

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

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

    改 mss 要么在终端设备,要不在链路中间强改 tcp 握手
    unpay
        6
    unpay  
    OP
       11 天前
    @Tianao 但现在主设备是支持调 MTU 和 MSS 。。下面的设备不支持。。蛋疼中。。
    maybeonly
        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
    Tianao
        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 分片。
    szqh97
        9
    szqh97  
       11 天前
    我们之前在客户那边也遇到过类似问题,也是 overlay mtu 问题,客户那边还不让改 overlay 配置,我们自己写了个透明代理,操蛋的一批
    wy315700
        10
    wy315700  
       11 天前
    有一端的 MTU 改了就行
    a33291
        11
    a33291  
       11 天前
    搭一个新的 vpn 比如 softether 对比测一下,看是不是链路就不行?
    unpay
        12
    unpay  
    OP
       11 天前
    问题已解决。。。。。菊花工程师。。。。远程更新了一下固件。。好了
    mikaelson
        13
    mikaelson  
       11 天前
    @a33291 softether 可以透传 IP ,不做 nat 吗?
    mikaelson
        14
    mikaelson  
       11 天前
    @szqh97 有没有能透传 ip 保留原 IP 的方案,最近 ipsec 被限速异常严重。。。
    a33291
        15
    a33291  
       11 天前
    @mikaelson #13 可以的,直接服务端桥接到本地网卡,就直接把整个主机所在网络给暴露出去了

    为了安全的话,还是用他那个 secureNAT,所有进去的设备组成一个 lan
    mikaelson
        16
    mikaelson  
       11 天前
    @a33291 #15 教程好少,能不能指点一下,我是 2 台 ubuntu ,想打通 2 个内网,不想做 nat ,不然所有服务的安全组都要改过
    life90
        17
    life90  
       10 天前 via iPhone
    @mikaelson 现在可以问 AI 。教程这东西只会越来越少
    mikaelson
        18
    mikaelson  
       10 天前
    @life90 #17 肯定问过了,都在胡说八道。。。claude 和 gpt
    bobryjosin
        19
    bobryjosin  
       9 天前 via Android
    @mikaelson 两台机器跑一个隧道,在隧道里面跑 vxlan ,两端把 vxlan 接口桥接进一个 Bridge 就可以了,二层打通就不用 nat 了。
    barnettluo1994
        20
    barnettluo1994  
       9 天前
    @bobryjosin 真是不嫌麻烦弄 vxlan
    barnettluo1994
        21
    barnettluo1994  
       9 天前
    直接调节,mss 就行
    mikaelson
        22
    mikaelson  
       9 天前
    @barnettluo1994 #20 有更好方案?
    thereone
        23
    thereone  
       9 天前
    @mikaelson 不是很简单吗,softether 很简单的不会也可以看看我写的。
    mikaelson
        24
    mikaelson  
       9 天前
    @thereone 感谢,我看看
    barnettluo1994
        25
    barnettluo1994  
       9 天前 via iPhone
    @mikaelson 你两端是什么路由器防火墙?
    mikaelson
        26
    mikaelson  
       8 天前
    @barnettluo1994 #25 2 朵云。。云上的机器
    barnettluo1994
        27
    barnettluo1994  
       6 天前 via iPhone
    @mikaelson 那就在云上的机器上直接 tcp mss 做好
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2320 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 16:00 · PVG 00:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.