diff --git a/server_config/README.md b/server_config/README.md index f5c221d..d5c968b 100644 --- a/server_config/README.md +++ b/server_config/README.md @@ -226,10 +226,19 @@ sysctl --system 2>/dev/null | grep -n tcp_mtu_probing | tail -5 # 看谁在最 `rrpp-qdisc.service` 在开机后显式执行 `tc qdisc replace dev <默认路由网卡> root fq` 补齐; 脚本对容器(`noqueue`)会自动跳过。 -**UDP 策略(2026-09-20 修订)**:节点**已启用 UDP 传输**(sing-box 内建 **Hysteria2** 与 **TUIC v5** 入站,见 §6.4), -用于对抗跨境链路的丢包/高 RTT;**同时保留 UoT v2** 路径(见 §5.5)——客户端 TUN 模式的 UDP -仍可封装进 TCP CONNECT 隧道,两条路并存、互不影响。 -节点侧 UDP 相关系统调优(与 6.4 配套): +**UDP 策略(2026-09-20 定稿)**:UDP 传输(Hysteria2 / TUIC)曾于当日全节点部署并端到端验证, +但基于「**抗封优先**」的评估,**当晚已全部撤除**(详情与留档见 §6.4)。现行口径: + +- **节点不部署 UDP 传输服务**;UDP 需求统一走 **UoT v2**(§5.5)——数据报封装进 TCP CONNECT 隧道, + 经 nginx magic 地址转本机 `127.0.0.1:15201` relay 解封装; +- 抗封主路径 = **REALITY + Vision(TCP)**,不做 fallback 组(订阅仍为 `select`); +- 节点上的 **UDP 系统调优项保留**(无害,且对 UoT / SS-UDP 有轻微收益)。 + +撤除理由(实测 + 推演):非标准 UDP 端口被封对 GFW **几乎零代价**(不像封 TCP 443 会误伤大量正常 HTTPS); +UDP 在 CN 长期被 QoS/限速;且一旦 IP 因 UDP 特征被判为代理,会**连带打死同 IP 上的 TCP 服务**(REALITY/SS/nginx)。 +加密性本身没有问题(QUIC=TLS1.3,实测证书校验强制、错凭据被拒)——风险在**可封禁面**,不在密码学。 + +节点侧 UDP 相关系统调优(保留): | 项 | 值 / 说明 | |---|---| @@ -523,11 +532,18 @@ EOF --- -### 6.4 Hysteria2 / TUIC(UDP 传输,2026-09-20 起全节点启用) +### 6.4 Hysteria2 / TUIC(UDP 传输)— ⚠️ 已回滚,本节为留档 + +> **状态:已回滚(2026-09-20 当晚)。** 当日曾在五节点部署并逐组合端到端验证通过(见下表与「验证方法」), +> 随后因「**绝对不可以被 GFW 封禁**」这一优先级,**全部撤除**——五节点 sing-box 已恢复为 +> `vless + shadowsocks` 原状,新增的 UDP 入站不再监听。 +> +> 本节保留作**留档**:配置片段、各节点 NAT/NSG 差异、端到端验证方法(尤其"只看监听不足以证明外部可达" +> 这个坑)在日后重新启用或换机时仍然有效。若要重新启用,照本节执行即可,**但请先读 §2.6 的撤除理由**。 TCP 系协议在跨境丢包链路上受拥塞控制限制(BBR 已缓解但仍有天花板);QUIC 系 (**Hysteria2** 的 Brutal CC、**TUIC v5**)能显著改善高丢包下的吞吐与时延。 -两者都是 **sing-box 内建**,无需额外二进制;UDP 需求仍可走 UoT(§5.5),两条路并存。 +两者都是 **sing-box 内建**,无需额外二进制;UDP 需求也可走 UoT(§5.5)。 ```json // Hysteria2(sing-box inbound) @@ -578,8 +594,8 @@ tuic://:@<域名>:<端口>/?congestion_control=bbr&alpn=h3&sni=< | 层 | 状态 | |---|---| -| 服务端 | ✅ 五节点已部署并端到端验证(见上表) | -| **订阅下发** | ❌ **不下发 UDP**——`app.py` 无 hysteria2/tuic 生成逻辑,`nodes.json` 无对应字段;订阅里只有 http / vless / ss | +| 服务端 | ⛔ **已撤除**(原:五节点部署并端到端验证)——2026-09-20 当晚按抗封优先回滚 | +| **订阅下发** | ❌ 从未下发(`app.py` 无 hysteria2/tuic 生成逻辑,`nodes.json` 无对应字段;订阅里只有 http / vless / ss),且已决定不做 | | **代理组** | ❌ 订阅只生成一个 `RRPP`(`type: select`,手动选节点),**没有 fallback / url-test**,因此**不存在"UDP 挂了自动回落 TCP"** | | lite 客户端(Windows) | 仅 HTTP CONNECT + UoT v2(UDP 走 magic 地址),**不使用 UDP 入站**,且节点为手动切换、无自动故障转移 | | 结论 | UDP 通道目前**只能手工导入**上面的链接使用;抗封主路径仍是 **REALITY+Vision(TCP)**,UDP 属可选加速,未接入客户端链路 | @@ -715,7 +731,8 @@ print('resp:',s.recv(8).hex())" # 期望首字节 15 (TLS alert) # UoT relay(127.0.0.1:15201 监听 + CONNECT magic 地址) ss -tlnp | grep 15201 # => uot_relay.py 监听 127.0.0.1:15201 -# UDP 传输(Hysteria2/TUIC,见 6.4)——必须端到端验证,不能只看监听 +# UDP 传输(Hysteria2/TUIC)——已于 2026-09-20 撤除;以下仅当重新启用时才适用 +# 必须端到端验证,不能只看监听 ss -lunp | grep -E ':|:' # 仅确认服务在听 # 再用 sing-box 客户端 + curl 经由 socks 实测(见 6.4「验证方法」) ethtool -k <网卡> | grep -E 'rx-udp-gro-forwarding|rx-gro-list' # KVM 期望 on;LXC 容器不可设