server_config: 启用 UDP 传输(Hysteria2/TUIC)+ UDP 系统调优,如实记录 KVM/LXC/NAT/NSG 差异

- README 新增 §6.4:Hysteria2/TUIC 配置片段、带宽声明与 Brutal 取舍、客户端链接格式、端到端验证方法
- 如实记录各节点差异(2026-09-20 实测):
  * hk2 NAT 段 4301-4320 UDP 1:1
  * ru(LXC NAT)外部只有宿主映射的 UDP 端口可达(23336+ 实测 connection refused),最终复用与 TCP 同号的 23333/23334
  * jp(Azure)NSG 仅放行 UDP 8445 → 单节点只能承载一个 UDP 协议,保留 TUIC
  * aq 为 IPv6-only,listen 用 ::
- §2.6 UDP 策略修订:由「不部署 UDP」改为「已启用 UDP 传输,同时保留 UoT」
- sysctl 模板补 udp_rmem_min/udp_wmem_min;rrpp-qdisc.sh 增加 rx-udp-gro-forwarding / rx-gro-list(aq 内核 5.10 不支持前者,LXC 无法设置)
- §10 验证清单补 UDP 项,并强调「只看监听不足以证明外部可达」
This commit is contained in:
2026-09-20 22:05:57 +08:00
parent 375153b810
commit 8809e40ec1
4 changed files with 109 additions and 45 deletions
+11 -6
View File
@@ -1,13 +1,18 @@
#!/bin/bash
# 把默认路由网卡的根 qdisc 设为 fq(BBR 的最佳搭档)。
# 背景:net.core.default_qdisc=fq 只对"新创建"的网卡生效,已存在的网卡
# 重启后仍可能是 pfifo_fast/fq_codel,故用本脚本显式设置。
# 仅在 KVM/裸机可用;LXC 容器内网卡为 noqueue,本脚本会自行跳过。
# ============================================================
# RRPP 网络接口调优脚本(开机执行)
# 1) 把默认路由网卡的根 qdisc 设为 fq —— BBR 的最佳搭档
# (net.core.default_qdisc=fq 只对"新创建"网卡生效,已存在网卡需显式 replace)
# 2) 开启 UDP GRO 转发 —— QUIC 系协议(Hysteria2 / TUIC)转发性能
# 容器(LXC/OpenVZ)内网卡为 noqueue、且无 netdev 权限,本脚本自动跳过。
# ============================================================
set -uo pipefail
IFACE=$(ip -4 route show default | awk '{print $5; exit}')
[ -n "${IFACE:-}" ] || { echo "未找到默认路由网卡,跳过"; exit 0; }
if tc qdisc show dev "$IFACE" 2>/dev/null | grep -q " noqueue"; then
echo "$IFACE 为 noqueue(容器环境),跳过 qdisc 设置"
echo "$IFACE 为 noqueue(容器环境),跳过 qdisc 与网卡 offload 设置"
exit 0
fi
tc qdisc replace dev "$IFACE" root fq 2>/dev/null && echo "已设置 $IFACE root qdisc = fq" || echo "设置 $IFACE qdisc 失败(可忽略)"
tc qdisc replace dev "$IFACE" root fq 2>/dev/null && echo "已设置 $IFACE root qdisc = fq" || echo "设置 qdisc 失败(可忽略)"
ethtool -K "$IFACE" rx-udp-gro-forwarding on 2>/dev/null && echo "已开启 $IFACE rx-udp-gro-forwarding" || echo "$IFACE 不支持 rx-udp-gro-forwarding"
ethtool -K "$IFACE" rx-gro-list on 2>/dev/null && echo "已开启 $IFACE rx-gro-list" || echo "$IFACE 不支持 rx-gro-list"