QUIC MTU 探测导致的 Hysteria2 连接失败排查
QUICHysteria2MTU
记录一次 Hysteria2 客户端在某些网络环境下无法建立 QUIC 连接的问题。现象:客户端报 timeout,但 TCP 服务正常。
根因
QUIC 协议在握手阶段会进行 Path MTU 探测。当中间网络设备对 UDP 分片处理不当时,大包会被丢弃,导致探测超时。
解决方案
在服务端配置中检查 mtu 设置。默认值 0 表示自动探测,但在某些路径上需要手动指定:
# 保守设置 MTU 为 1200
quic:
initStreamReceiveWindow: 8388608
maxStreamReceiveWindow: 8388608
initConnReceiveWindow: 20971520
maxConnReceiveWindow: 20971520
maxIdleTimeout: 60s
maxIncomingStreams: 1024
disablePathMTUDiscovery: false
如果客户端在特定 ISP 下仍有问题,可以尝试 disablePathMTUDiscovery: true,代价是效率略降但兼容性更好。