Hysteria2 是基于 QUIC 的代理协议,可能在部分高延迟、存在丢包的网络中改善传输表现,但前提是路径允许 UDP、服务端参数正确且带宽配置合理。本文面向已持有自己服务参数的 Shadowrocket 用户,依次说明传输原理、适用条件、参数核对和可复现的排障步骤;不把协议名称当作速度保证。
Hysteria2、QUIC 与 UDP 分别负责什么
在 Shadowrocket(小火箭)中,Hysteria2 是连接用户已有服务的一种协议类型。它不是网络线路,也不等于一份订阅。订阅负责向客户端提供连接条目,协议负责约定客户端和服务端怎样认证与传输,最终表现仍受本地网络、服务端负载和目标站点影响。
可以把传输链路分为三层:底层 UDP 承载数据报,QUIC 在其上实现加密连接、流与可靠传输机制,Hysteria2 再规定代理认证和业务数据的封装方式。UDP 本身不保证送达;不能据此推断使用 UDP 的 QUIC 可靠流也不重传。浏览网页等需要可靠传输的业务,仍要等待丢失数据恢复。
例如,服务商指定端口为 443 时,需要检查的是对应 UDP 端口的可达性。相同数字的 TCP 端口能够连接,并不能证明 UDP 也能通过。端口必须使用已有服务提供的值,不能因为常见示例使用 443,就把其他有效端口统一改为 443。
所谓“更快”:拥塞控制与流隔离的作用
QUIC 可以在同一连接内承载多条流。一条流丢失数据时,通常不必像共享同一 TCP 字节流那样,等待缺失字节补齐后才交付其他流的数据。这减少了跨流的队头阻塞,但同一可靠流内的缺口仍需恢复,而且所有流仍共享实际链路容量和拥塞约束。
Hysteria2 的传输表现还与拥塞控制有关。其带宽配置可能参与发送速率控制;带宽驱动的 Brutal 与自动估计路径容量的方式不是同一思路。具体使用哪种方式,取决于客户端实现、配置和服务端协商,不能只看到协议名就断言当前连接一定采用某种算法。
- 路径有随机丢包:如果丢包并非持续拥塞造成,合适的速率控制可能维持较高吞吐;仍需承担丢包恢复的流量和时间成本。
- 路径已经拥塞:继续提高目标发送速率可能增加排队、抖动与丢包,网页响应反而变慢。
- 多条流并发:流之间的隔离可能改善部分请求的完成时间,但不会消除共享无线链路的瓶颈。
- 短连接或小文件:DNS、握手、目标响应时间可能占主要部分,持续下载速度不能代表首次打开网页的体验。
结论:先测可达性,再调整速率
只有 UDP 路径稳定可达、认证通过且目标请求实际经过该连接后,才有必要比较带宽设置。调高数值后若网页等待增加,应恢复原值,而不是继续加大。
填写带宽时还要区分单位:Mbps 表示每秒兆比特,MB/s 表示每秒兆字节,数值换算相差 8 倍。即使套餐标称带宽很高,当前无线信号与共享出口也可能只能提供更低的可用容量。以客户端字段显示的单位和已有服务说明为准,不把套餐上限直接当作当前实测速率。
哪些网络值得测试,哪些条件需要先处理
高丢包、长距离或移动网络是需要具体测量的条件,不是自动适用标签。先确认本地网络允许 UDP,再区分随机丢包、拥塞丢包和服务端异常;三者都可能表现为卡顿,但处理方向不同。
| 网络条件 | 可以观察什么 | 先做什么 |
|---|---|---|
| 高延迟且偶发丢包 | 连续请求是否完成、持续传输是否频繁停顿 | 固定目标和服务端,重复测试,不只看一次延迟 |
| Wi-Fi 与蜂窝网络切换 | 切换后现有请求是否恢复、新请求是否成功 | 分别记录切换前后结果;必要时重新建立连接 |
| 限制 UDP 的网络 | 其他网络可用,而当前网络持续握手超时 | 核对网络访问要求,换到允许 UDP 的网络再验证 |
| 低丢包、低延迟网络 | 网页响应与持续传输是否已有稳定表现 | 保留稳定参数,不为协议名称反复更换配置 |
| 共享出口拥塞 | 下载时其他请求延迟上升、停止下载后恢复 | 降低负载,重新评估带宽设置 |
QUIC 具备支持连接迁移的机制,但这不等于 Shadowrocket 中每次网络切换都能无感续传。客户端实现、服务端策略、地址变化和网络中间设备都会影响结果。移动网络下应分别测试“保持在同一网络”和“切换网络”两种情形,避免把切换失败误判成所有 Hysteria2 连接都不可用。
在 Shadowrocket 中核对已有 Hysteria2 参数
以下步骤以用户已经拥有自己的服务商与连接参数为前提。先保留当前可用配置,逐项核对协议、地址、端口、认证和 TLS 信息。不同类型的连接参数不能仅通过修改 Type 相互转换,Hysteria 与 Hysteria2 也不能按同一种协议处理。
-
查看条目
进入 Home,打开已有条目的编辑页,核对 Type 是否为 Hysteria2。若手动添加,从 Home 右上角“+”进入,按已有服务说明选择 Type;不要把服务商名称当作协议类型。
-
核对连接
逐字检查服务地址、端口和认证内容。示例地址
hy2.example.com与端口443仅用于说明字段关系,不是可用服务。认证内容不能混入首尾空格或换行。 -
核对 TLS
按已有服务说明核对 TLS 的服务器名称(SNI)和证书要求。连接地址与证书名称不一定相同;遇到证书错误时先检查名称和设备时间,不以跳过证书验证作为常规处理。
-
检查附加项
如果服务启用了 obfuscation,核对方式和密码是否成套提供;未启用时不要自行增加。带宽相关字段按显示单位填写,并保留修改前的值,便于恢复。
-
连接并复核
保存后回到 Home 选择该条目,检查 Global Routing,再开启连接并运行 Connectivity Test。接着访问固定的测试目标,分别记录测试结果与实际请求结果。
Global Routing 如何影响协议测试
“选择了 Hysteria2 条目”和“当前请求使用了该条目”不是同一件事。Home → Global Routing 决定路由方式;处于 Config 时,规则可以让某些请求使用 DIRECT,因此一次网页打开成功并不能单独证明 Hysteria2 链路已经工作。
Config:按规则核对
推荐根据当前配置分流。测试前明确目标应命中哪条规则、该规则使用什么策略;若策略引用了其他选择,还需核对最终出口。
适合:日常按规则使用,以及已明确匹配关系的复测
Proxy:临时隔离变量
将可代理请求交给所选代理,用于缩小规则因素的影响。测试期间仍需确认选中的正是待测 Hysteria2 条目,结束后恢复原有路由方式。
适合:短时判断失败是否与 Config 分流有关
Direct:建立直连参照
用于观察不经过代理时的目标访问结果。Direct 下能够打开网页,只能说明该目标的直连路径可用,不能验证 Hysteria2。
适合:核对目标本身及本地网络的基础访问情况
下面是用于理解匹配关系的最小规则片段,不是完整配置,也不指向真实测试服务。DOMAIN-SUFFIX 匹配指定域名及其子域名,FINAL 处理此前未匹配的请求;具体规则应放在兜底规则之前。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
在这个片段中,访问 example.com 及其子域名才会匹配 PROXY,其余请求落到 DIRECT。如果实际测试的是另一个域名,就不能拿结果评价待测代理。On Demand 则控制何时按条件建立 VPN 连接,与条目协议或 Rule 的匹配范围不是同一层设置;排障时在 Settings → On Demand 核对现有条件,避免自动连接行为干扰手动测试。
用固定变量记录结果,不凭一次测速判断
协议测试应同时观察连通性、响应时间和持续传输。Connectivity Test 可以作为初步检查,但测试目标、方法与实际业务不同,结果不能直接当作下载带宽。本文没有给出跨网络通用的速度差值或丢包阈值,因为这些数值需要明确的测试条件才能成立。
- 固定输入:使用同一设备、同一网络、同一服务端和同一目标;暂停其他大流量任务。一次只修改一个设置。
- 重复观察:每组设置至少重复 3 次,记录成功次数、首次响应和持续传输表现;不要只保留最高的一次结果。
- 记录路径:写明 Global Routing、所选条目、目标域名和是否发生网络切换,确保结果确实来自待测路径。
- 保留恢复点:带宽或附加参数调整后若失败率增加,先恢复旧值,再检查网络与服务端,而不是同时更换多个字段。
可在本地笔记中记录“Wi-Fi、Config、目标命中 PROXY、3 次均成功、开始传输后网页响应变慢”这样的可观察现象。它比“感觉更快”更适合定位问题,也不会把某次短暂的网络波动误当成协议的固定特性。向已有服务商反馈时提供必要的错误信息,但不要公开认证密码或完整订阅地址。
常见问题:握手、证书与网络切换
同一条目在 Wi-Fi 超时,蜂窝网络却能连?
保持条目参数不变,分别在两个网络运行 Home → Connectivity Test,并访问同一目标。如果仅一个网络持续失败,优先检查该网络的 UDP 限制或访问要求。不要仅凭 TCP 443 可用就认定 UDP 443 也可用。
提示证书错误,可以直接忽略吗?
先检查设备日期与时间,再回到 Home 的条目编辑页核对服务地址及 TLS 服务器名称。向已有服务商确认正确名称和证书状态;保留证书校验,不把忽略错误当作长期解决办法。
带宽填得更大,为什么网页反而卡住?
较大的目标速率可能超过当前路径容量,引起排队和丢包。恢复之前的字段值,暂停持续下载,再用相同目标复测。核对单位是否为 Mbps,避免把 MB/s 的数值直接填入不同单位的字段。
更新订阅后突然不能连接,先查哪里?
在 Home 打开更新后的条目,检查 Type、端口、认证及附加参数是否改变,再确认选中条目与 Global Routing。若参数确实变化,向自己的服务商核对,不要在未知含义的字段中反复尝试随机值。
切换网络后断开,是 On Demand 设置错了吗?
先在新网络中手动重新连接,确认该网络允许 UDP。然后进入 Settings → On Demand 核对自动连接条件。手动连接也失败时,先排查网络与条目;只有自动触发行为不符合预期时,再单独调整 On Demand。