Hysteria2 协议是什么?基于 QUIC,UDP 被限速怎么办
拾沙 · 首发于 · 更新于
30 秒结论:Hysteria2 是一种基于 QUIC 的代理协议,走 UDP 而不是 TCP。对没有正确凭据的访问者,Hysteria2 服务器表现得就像一个标准的 HTTP/3 网站。它的一大特点是允许客户端告诉服务器自己的带宽,从而在丢包较多的网络里保持高速。缺点是部分地区和运营商会对 UDP 限速或干扰,这时 Hysteria2 可能反而不如基于 TCP 的 Trojan、VLESS 稳定,需要换节点或换协议对比。
如果你在机场的节点列表里看到 hysteria2 或 hy2,说的就是这个协议。它和 Trojan、VLESS 最大的不同在于走 UDP,而不是 TCP。这带来了在丢包网络里更快的优势,也带来了 UDP 被限速时更慢的风险。这篇文章讲清 Hysteria2 的原理和适用场景。
Hysteria2 的工作原理
基于 QUIC
根据官方协议规范,Hysteria2 构建在标准的 QUIC 传输协议之上。QUIC 是一种基于 UDP 的传输协议,也是 HTTP/3 的底层。和 TCP 相比,QUIC 建立连接更快,并且在丢包时不容易出现一个包丢了、后面全部等待的情况。
伪装成 HTTP/3 网站
规范里写明,Hysteria2 的一个关键特性是:对于没有正确认证凭据的第三方,无论是网络中间的观察者还是主动探测者,Hysteria2 服务器表现得就像一个标准的 HTTP/3 网站,客户端与服务器之间的加密流量也和普通 HTTP/3 流量难以区分。
真正的客户端连接后,会发送一个特定格式的 HTTP/3 请求完成认证。认证失败的请求,会被当作普通网页请求来处理。官方还建议服务端放上真实内容,或者反向代理到其他网站,以免探测者发现异常。
客户端可以声明带宽
这是 Hysteria2 速度快的主要原因。规范规定,客户端在认证时可以把自己的下载带宽告诉服务器,服务器据此决定向客户端发送数据的速率,反过来也一样。
普通的拥塞控制算法遇到丢包时会主动降速,这在丢包率高的跨境网络里会导致速度很低。Hysteria2 在知道你的真实带宽后,可以按这个速率发送,不会因为偶发丢包就大幅降速。如果客户端不声明带宽,服务器会使用 BBR、Cubic 等常规算法自动调整。
可选的混淆
规范中还定义了一个代号为 Salamander 的可选混淆层,会用预共享密钥对每一个 QUIC 数据包做混淆,让流量看起来不像 QUIC。启用后就不再伪装成 HTTP/3,而是变成没有明显特征的 UDP 数据。是否启用由机场决定,订阅里会自动带上相关参数。
Hysteria2 的优缺点
优点:丢包较多的网络里速度明显更好;连接建立快,移动网络切换时恢复也快;伪装成 HTTP/3,主动探测时表现为普通网站。
缺点:依赖 UDP。部分地区和运营商会对 UDP 限速、在高峰期丢弃 UDP 包,甚至直接阻断某些端口,这时 Hysteria2 会明显变慢或连不上。另外,带宽参数填得过高,会让发送速度超出线路承受能力,造成更多丢包。
UDP 被限速时怎么办
如果你发现 Hysteria2 节点白天很快、晚上很慢,或者某段时间完全连不上,可以按下面的顺序处理:
- 换到同地区的 Trojan 或 VLESS 节点对比。如果它们明显更稳,说明你的网络对 UDP 不友好,晚高峰优先用 TCP 协议的节点。
- 检查客户端里填的带宽。把上传、下载带宽调到你本地网络的真实值或略低一点,或者干脆留空,让程序自动调整。
- 看机场是否提供端口跳跃。端口跳跃可以让客户端在一段端口范围内轮换,降低单个端口被限速的影响。
- 换一个网络环境试试,比如从家里的宽带换到手机流量。不同运营商对 UDP 的策略差别很大。
订阅里的 Hysteria2 节点参数
Hysteria2 节点的分享链接通常写成 hysteria2://认证密码@服务器地址:端口?参数#节点名称,有时也简写为 hy2://。常见参数有这几个:
sni:TLS 握手时声明的域名,需要和服务端证书对应,不要随意修改。
insecure:是否跳过证书校验。正常节点应当关闭;如果必须开启才能连上,说明证书有问题。
obfs 与 obfs-password:是否启用 Salamander 混淆以及混淆密钥。服务端启用了混淆,客户端就必须填写一致的参数,否则连不上。
mport 或端口范围:端口跳跃使用的端口范围,例如 20000-50000。只有服务端配置了端口跳跃时才会出现。
上传、下载带宽:有的订阅会预填带宽值,有的留空交给客户端。前面说过,这个值填得过高反而会变慢。
和其他协议一样,最稳妥的做法是直接导入机场的订阅,不要手动修改这些参数。
Hysteria2 适合什么场景
移动网络和不稳定的网络。 手机在地铁、高铁上频繁切换基站,或者在丢包率高的网络里,Hysteria2 建立连接快、受丢包影响小,体验往往比 TCP 协议好。
跨洋长距离线路。 到美国、欧洲这类距离远、丢包相对多的地区,Hysteria2 的带宽声明机制能更好地保持速度。
大文件下载。 在网络对 UDP 友好的前提下,Hysteria2 的吞吐量通常更高,适合下载大文件。
不太适合的场景是:所在网络对 UDP 限速严重,或者公司、学校的网络只放行 TCP。遇到这类网络,直接选用 TCP 协议的节点更省心。
机场用户需要知道什么
Hysteria2 节点需要较新的客户端,原版 Clash 不支持,具体可选的软件见 代理软件 栏目。另外,部分机场会给 Hysteria2 节点设置倍率,或者把它当作高速节点单独计费,用之前看看 机场倍率 的说明,别让流量在不知不觉中被翻倍扣掉。
常见问题
Hysteria2 和 Hysteria(第一代)有什么区别?
Hysteria2 是重新设计的版本,与第一代不兼容。它把认证和伪装做成了标准的 HTTP/3 形式,配置也更简单。机场订阅里写的 hysteria2 或 hy2 就是第二代。
为什么 Hysteria2 在晚上反而变慢了?
常见原因是运营商在高峰期对 UDP 流量限速或丢弃。基于 UDP 的协议会首先受到影响。可以换到 Trojan 或 VLESS 节点对比,如果它们明显更稳,说明你所在的网络对 UDP 不友好。
客户端里的上传、下载带宽要怎么填?
尽量填你本地网络的真实带宽,或者略低一点。填得过高会导致发送过快、丢包增加,反而变慢;不填时会使用常规的拥塞控制算法自动调整。
哪些客户端支持 Hysteria2?
基于 mihomo(Clash Meta)内核的客户端、sing-box、v2rayN 的较新版本、Shadowrocket、Stash 等都支持。原版 Clash 和较旧的客户端不支持。
端口跳跃是什么?
端口跳跃是让客户端在一段端口范围内不断更换连接端口,避免单个 UDP 端口被长时间限速或阻断。是否支持取决于机场的服务端配置和你的客户端。
参考资料
本文的结论以下列官方文档、规范或资料为准: