V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
villivateur
V2EX  ›  OpenWrt

OpenWRT 路由器疑似干扰了 IPv6 的 TCP 连接,应该如何排查?有偿。

  •  
  •   villivateur · 2022-12-29 17:11:04 +08:00 · 2634 次点击
    这是一个创建于 697 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境:Nano Pi R2S / OpenWrt 21.02.1

    现象:经过路由器的 IPv6 TCP 连接,不管流量大小,随机时间后会被掐断,具体表现是触发重传,然后 Client 会向 Server 发送一个 RST 包导致连接断开。

    这个 TCP 连接可以不经过公网,例如我的 LAN 网络和 Wireguard 虚拟网络中的设备通讯,也会出现上述问题,故排除了宽带运营商的锅(我的 Wireguard 接入点是 IPv4 的)。

    这种情况应该怎么排查?附图是我 Wireguard 网络中的设备连接 LAN 中的设备,SSH 协议,client 和 server 的抓包情况。

    其他说明:

    1. 这个问题是两个月前才出现的,此前 IPv6 使用良好,两个月间搬过家、更新过某些 opkg 包
    2. ICMPv6 确定不受影响,UDP 理论上也不受影响(未测试)

    如果能帮忙解决,发 50RMB 以上支付宝红包。

    第 1 条附言  ·  2023-01-03 09:04:34 +08:00
    @zbinlin
    @jim9606
    @systemcall

    修改 MTU 、MSS 相关的参数没有用,我干脆重刷了 22.03 的系统,现在似乎解决了,依然谢谢大家。

    虽然并不知道问题真正出在哪。
    13 条回复    2023-01-15 21:54:14 +08:00
    delete26
        1
    delete26  
       2022-12-29 17:13:01 +08:00
    openclash 告诉我推荐关闭 ipv6,因为大部分 bug 都是因为 v6 导致的,所以我关闭了 openwrt 上 v6 的所有功能
    villivateur
        2
    villivateur  
    OP
       2022-12-29 17:13:48 +08:00
    @delete26 但我 IPv6 是刚需,没法关
    Atomo
        3
    Atomo  
       2022-12-29 21:02:10 +08:00
    逃避不是解决问题的最佳选项,期待楼下的答案
    lostberryzz
        4
    lostberryzz  
       2022-12-29 21:18:08 +08:00
    建议不要用 OpenWrt 作为主路由,开源可玩性和基础功能稳定性是硬币的两面
    systemcall
        5
    systemcall  
       2022-12-29 21:40:22 +08:00
    老问题了,mtu 的问题
    开启 mss 钳制、把 mtu 调小,1400 多一点基本上就好了
    villivateur
        6
    villivateur  
    OP
       2022-12-29 22:50:14 +08:00
    @systemcall 请问是修改 br-lan 的 MAC 层 MTU 么?现在是默认值 1500 ,调到 1400 多一点吗?
    jim9606
        7
    jim9606  
       2022-12-30 01:48:19 +08:00
    先排查一下是不是 pmtu 问题 /t/800024

    我曾经用过所谓的 passthrough 配置,就是 WAN 侧只有 /64 SLAAC RA 然后 LAN 侧用 odhcpd RA relay 模式,会有长时间无 IPv6 流量会导致默认路由丢失和同 /64 子网不互通的问题,不知道怎么修。我看你的抓包记录 ICMPv6 只有 NS 没有 RS 和 RA ,不知道会不会是类似问题。
    systemcall
        8
    systemcall  
       2022-12-30 07:01:39 +08:00 via Android
    @villivateur #6
    都调成 1400 多一点的话反正也没什么副作用,试一下能解决就行了
    防火墙那里还要配置 mss 钳制,把 mss 钳制打开
    villivateur
        9
    villivateur  
    OP
       2022-12-30 11:09:39 +08:00
    @jim9606
    @systemcall

    如果只开启 mss 钳制的话,现象没有改善。我改了 MTU 的值,结果路由器死机了。死机的问题我还在排查,但我的理解是,如果是 MTU 的问题,那么应该会有很多 IPv6 数据包出现异常,而不是现在这种情况,大部分流量可以通过,偶尔出现重传
    zbinlin
        10
    zbinlin  
       2023-01-02 13:52:22 +08:00
    你的 ssh 是 over IPv6 的?路由器的 dev 的 MTU 值不需要改,看下 ssh 的 tcp 的 MSS 值是多少?
    strp
        11
    strp  
       2023-01-08 16:19:56 +08:00
    @villivateur LAN 不要开 IP 动态伪装跟 MSS 钳制,没有意义,WAN 也是因为中国用的 PPPoE 才需要修改 MTU ,不然根本不需要修改。
    journalist
        12
    journalist  
       2023-01-15 08:02:07 +08:00 via iPhone
    你是否开启了 flow offload ,如果你开了,那这就是原因,这个 bug 在 21.02.4 版本被修复。https://github.com/openwrt/openwrt/issues/8239
    villivateur
        13
    villivateur  
    OP
       2023-01-15 21:54:14 +08:00
    @journalist 我试过开关这个选项,但是没有解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.