订阅里其他协议的节点都只管认证和加密,Hysteria 2 的节点会多出几行看着像设置项的东西。
proxies:
- name: "美国 Hysteria2"
type: hysteria2
server: us01.example.com
port: 443
ports: 443-8443
hop-interval: 30
password: "your-password-here"
up: "30 Mbps"
down: "200 Mbps"
obfs: salamander
obfs-password: "your-obfs-password"
sni: us01.example.com
alpn:
- h3
up 和 down 填的是带宽,ports 是一段端口范围,alpn 写着 h3。这几样在别的协议里都没有对应物。
up 和 down 是报给服务器的数字
这两栏不是限速。Mihomo 文档给它们的说明是 brutal 速率控制,Brutal 是 Hysteria 自己的拥塞控制算法,官方文档对它的描述是按固定速率模型工作,不会因为丢包或者 RTT 变化而降速。真遇到发不满目标速率的情况,算法会算出丢包率并提速补偿。
单位可以省,Mihomo 默认按 Mbps 理解。官方客户端文档列的后缀有 bps、kbps、mbps、gbps、tbps 几档,也接受 b、k、m、g、t 的简写。两栏都不填的话,客户端退回 congestion 段配置的算法,默认是 BBR。
填错的后果文档写得很清楚。原话是更高的带宽值并不总是更好,千万注意不要超过当前网络能支持的最大带宽。数字报高了,Brutal 就按那个速率硬发,多出来的包在路上排队丢掉,体感是卡顿而不是变快。
服务端有权不信你。官方配置里有一项 ignoreClientBandwidth,开了之后服务器忽略客户端报的带宽,改用自己配的非 Brutal 控制器。文档说明这一项给的是那些更看重拥塞公平性、或者不信任用户会如实填写的服务器管理员。机场开没开这一项,订阅里看不出来。
换成 sing-box 的 JSON,这两栏的名字带上了单位,只收数字。
{
"type": "hysteria2",
"tag": "us-hy2",
"server": "us01.example.com",
"server_port": 443,
"server_ports": ["443:8443"],
"hop_interval": "30s",
"up_mbps": 30,
"down_mbps": 200,
"password": "your-password-here",
"obfs": { "type": "salamander", "password": "your-obfs-password" },
"tls": { "enabled": true, "server_name": "us01.example.com" }
}
sing-box 文档对这两栏的说明和上面一致,留空就改用 BBR 拥塞控制算法,而不是 Hysteria 自己那套。端口范围的写法两家不同,Mihomo 用连字符,sing-box 用冒号,抄配置时别抄串了。
为什么把整条隧道建在 UDP 上
协议规范第一句就定死了底座,Hysteria 2 必须实现在标准 QUIC 传输协议之上,并带上不可靠数据报扩展。QUIC 跑在 UDP 上,这就是它和另外五种协议最大的分界线。
握手长得像访问一个网站。客户端发一个 HTTP/3 的 POST 请求,路径写 /auth,主机名写 hysteria,再带三个自定义头,Hysteria-Auth 放密码,Hysteria-CC-RX 放客户端的最大接收速率,Hysteria-Padding 放一段随机填充。服务器认可之后回一个 233 状态码,这个号标准 HTTP 里没有,是 Hysteria 自己挑的。
认证过不去的请求会被当成普通网站请求处理。服务端配置里有一段 masquerade,类型可选 file、proxy 和 string,分别对应挂一个静态目录、反代一个真站点、直接回一段固定内容。所以 Hysteria 2 节点在外面看是一台会说 HTTP/3 的网站服务器。这和 Trojan 的回落是同一个思路,只是一个在 TCP 上,一个在 UDP 上。
丢包多的线路上它有优势,原因就在 Brutal 不把丢包当成减速信号。TCP 系的协议丢一点包就退让,速度掉得比丢包率本身厉害得多,晚高峰掉速里有一部分就是这么来的。
ports 那一栏是在跳端口
端口跳跃是 Hysteria 2 为一种具体现象做的功能。官方文档的说法是,中国用户有时反映运营商会阻断或限速持续的 UDP 连接,而这些限制往往只针对正在使用的那个端口。
客户端那侧的写法是把端口范围直接写进服务器地址,例如 example.com:20000-50000,也支持逗号分隔的列表和混写。Mihomo 把它拆成两个字段,ports 写范围,hop-interval 写间隔,默认 30 秒。官方配置里对应的是 hopInterval,同样默认 30 秒,最小值 5 秒,另外可以用最小最大两个值让间隔随机化。
要留意的是,这套办法只对按端口施加的限制有效。运营商如果对 UDP 整体限速,换多少个端口都一样。
什么网络下它不合适
有几类环境可以先排除掉。
公司和学校的网络常常只放行 TCP 的 80 和 443,UDP 出不去,这类节点在那里连不上是正常的。部分家庭宽带对持续的大流量 UDP 会降速,表现是前几十秒很快、之后掉到很低。还有一些老旧的路由器和 NAT 设备对 UDP 会话记得很短,连接会反复重建。
官方排错文档列的报错里,最常见的是 timeout: no recent network activity。文档给的原因有服务器没运行、防火墙挡住端口、地址或端口填错、域名解析有问题、混淆参数填错,以及 CentOS 7 这类内核太旧的系统。另外三条分别是认证失败、证书验证失败和权限不足,后两条主要是自建的人会碰到。
买之前试一段是唯一靠谱的办法。同一个节点在两条宽带上的表现能差出好几倍,这不是机场能控制的事,怎么挑机场那篇里也把先买短期套餐当成第一条。
本站 28 家机场里没有一家标它
写明协议的 8 家机场标的全是 VLESS、Trojan 和 AnyTLS,Hysteria 2 一次都没出现。数据来自机场自述与站长资料,核对日 2026-08-09。
这不说明没有机场发 Hysteria 2 节点,只能说明肯把协议写进宣传的那几家没选它。要确认自己那家有没有,把订阅导进客户端数一眼类型标签。客户端这边也要留意,sing-box 和 Mihomo 都认 hysteria2,某些只支持原版 Clash 内核的老客户端不认,节点会直接从列表里消失。