Hysteria2 已经在代理协议圈里讨论很久了。它基于 QUIC,原生支持多路复用、0-RTT、自定义拥塞控制——简单说就是为高丢包链路而生。我们在 2.7 里把它从插件级支持升级到了一等公民:与其它协议享有同样的订阅解析、规则匹配、节点测速能力。这篇文章讲清楚我们为什么这么做,以及在你切换协议前应该知道什么。
01 为什么是 Hysteria2
过去两年,我们收到的工单里有 34% 都和「跨境链路慢」有关——尤其是傍晚高峰期、移动网络下、酒店 WiFi 上。这些场景的共同点是:丢包率高。
TCP 系的协议(VMess over TCP、Shadowsocks over TCP)在丢包面前会触发拥塞退避,导致吞吐量断崖式下跌。Hysteria2 用了一套自定义的 BBR 变体,在 5% 丢包下还能跑出近乎线速的速度——这就是它存在的理由。
在 5% 丢包率下,TCP 平均吞吐量会衰减到峰值的 18%。Hysteria2 的衰减只有 9%。
— 内部测试,3 条不同跨境链路,n=240
02 实测对比
我们在三条不同链路(家宽、移动 4G、酒店 WiFi)上各跑了 80 次单线程下载——10MB 文件,记录平均吞吐量。结果如下:
单线程下载吞吐量(晚高峰 21:00–23:00)
n=240 · 单位 mbps需要说明的是,低丢包链路下差距会缩小。如果你的链路在白天都很稳定(< 1% 丢包),切到 Hysteria2 的收益没那么明显——但晚高峰的体验改善会很显著。
03 如何配置
如果你的订阅源已经包含 Hysteria2 节点,更新到 2.7 后会自动识别——不需要任何额外操作。在节点列表里它们会带一个 hy2 标签。
手动添加一个节点:
# 在 ~/.config/terraka/proxies.yaml 中添加
- name: "HK-Hy2-01"
type: hysteria2
server: hk-edge.example.net
port: 443
password: "<your-password>"
sni: cdn.example.com
obfs: salamander
obfs-password: "<obfs-pass>"
up: "50 mbps"
down: "200 mbps"
关于 up / down 字段
这是给拥塞控制器的提示,不是上限。填得偏小一点(实际带宽的 80%)反而能让拥塞算法工作得更好——这是 Hysteria 团队官方建议的。
04 测速逻辑重构
顺着这次升级,我们把节点测速也重写了。旧版本基于单次 HTTP HEAD 请求——这套逻辑对 TCP 协议还行,但对 Hysteria2(UDP 上的 QUIC)会给出严重失真的结果。
新测速做了三件事:
- 双重检测: 同时跑 ICMP ping 和 TLS 握手,取较慢的一个作为延迟值——这更接近真实使用感受。
- 抖动统计: 连续 5 次握手,记录标准差。两个延迟相同的节点,抖动小的那个才是「稳」的。
- UDP 路径探测: 对 Hysteria2 / WireGuard 这类 UDP 节点,额外做一次 UDP 可达性测试——避免「显示低延迟,实际连不上」的尴尬。
结果:节点列表里出现了一列新的「抖动」指标。绿色是 < 10ms 抖动(推荐用),灰色是 10–50ms(可用),红色是 > 50ms(避开)。
05 已知问题
2.7 还有几个我们已知但未修复的问题,列在这里以免你踩坑:
- Windows 11 24H2 上偶现 UDP 端口被防火墙拦截——需要手动放行 Terraka 的 UDP 出站规则。修复在路上。
- iOS 端暂不支持 Hysteria2 的 Salamander 混淆(NEPacketTunnelProvider 限制)。我们在调研用扩展实现绕过,但目前还没结论。
- 订阅转换器对 Hysteria2 的旧版 URI 格式(
hysteria2://)支持还在 beta,建议优先使用 YAML/JSON 订阅。
06 下一步
2.7 是「补齐协议」这条主线的最后一块。接下来我们会回到产品体验本身:分应用代理、规则编辑器的可视化、订阅源的健康度面板。这些会分散在 2.8 / 2.9 里逐步推进。
如果你在 2.7 里遇到问题,欢迎到 Telegram 群 反馈,或在 GitHub 提 issue。我们读每一条。