环境:Nano Pi R2S / OpenWrt 21.02.1
现象:经过路由器的 IPv6 TCP 连接,不管流量大小,随机时间后会被掐断,具体表现是触发重传,然后 Client 会向 Server 发送一个 RST 包导致连接断开。
这个 TCP 连接可以不经过公网,例如我的 LAN 网络和 Wireguard 虚拟网络中的设备通讯,也会出现上述问题,故排除了宽带运营商的锅(我的 Wireguard 接入点是 IPv4 的)。
这种情况应该怎么排查?附图是我 Wireguard 网络中的设备连接 LAN 中的设备,SSH 协议,client 和 server 的抓包情况。
其他说明:
如果能帮忙解决,发 50RMB 以上支付宝红包。
1
delete26 2022-12-29 17:13:01 +08:00
openclash 告诉我推荐关闭 ipv6,因为大部分 bug 都是因为 v6 导致的,所以我关闭了 openwrt 上 v6 的所有功能
|
2
villivateur OP @delete26 但我 IPv6 是刚需,没法关
|
3
Atomo 2022-12-29 21:02:10 +08:00
逃避不是解决问题的最佳选项,期待楼下的答案
|
4
lostberryzz 2022-12-29 21:18:08 +08:00
建议不要用 OpenWrt 作为主路由,开源可玩性和基础功能稳定性是硬币的两面
|
5
systemcall 2022-12-29 21:40:22 +08:00
老问题了,mtu 的问题
开启 mss 钳制、把 mtu 调小,1400 多一点基本上就好了 |
6
villivateur OP @systemcall 请问是修改 br-lan 的 MAC 层 MTU 么?现在是默认值 1500 ,调到 1400 多一点吗?
|
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 ,不知道会不会是类似问题。 |
8
systemcall 2022-12-30 07:01:39 +08:00 via Android
|
9
villivateur OP @jim9606
@systemcall 如果只开启 mss 钳制的话,现象没有改善。我改了 MTU 的值,结果路由器死机了。死机的问题我还在排查,但我的理解是,如果是 MTU 的问题,那么应该会有很多 IPv6 数据包出现异常,而不是现在这种情况,大部分流量可以通过,偶尔出现重传 |
10
zbinlin 2023-01-02 13:52:22 +08:00
你的 ssh 是 over IPv6 的?路由器的 dev 的 MTU 值不需要改,看下 ssh 的 tcp 的 MSS 值是多少?
|
11
strp 2023-01-08 16:19:56 +08:00
@villivateur LAN 不要开 IP 动态伪装跟 MSS 钳制,没有意义,WAN 也是因为中国用的 PPPoE 才需要修改 MTU ,不然根本不需要修改。
|
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
|
13
villivateur OP @journalist 我试过开关这个选项,但是没有解决
|