Hysteria2 与端口跳跃
Hysteria2 运行在 QUIC 之上,使用 UDP。在 TCP 协议会卡住的丢包和长距离链路上,它依然能保持连接,因此适合作为 TCP 入站之外的第二个入站。开启端口跳跃后,客户端会在许多端口之间切换,封锁一个端口只会让用户失去这一个端口。
适用场景
- 移动网络和丢包严重的网络,以及离节点很远的用户。
- 封锁单个 UDP 端口的网络,需开启端口跳跃。如果 UDP 被整体封锁,它就无能为力。
它做不到的事:在 UDP 无法到达节点的地方运行,或放在 CDN 后面。CDN 承载的是 TCP,所以面板拒绝在任何 QUIC 入站上设置域名前置。
创建
- 入站 → 从预设添加 → Hysteria2,或点击 添加 并输入类型
hysteria2。通用表单见 入站。 - 在 Basic 选项卡填写 Port。这是一个 UDP 端口。
- TLS 选项卡是必需的,默认为 节点证书,因此无需再做任何设置入站即可工作。证书 中的任何证书都可以。使用自签名证书时,面板会把它的固定值(pin)写入每个链接和文件。
- 保存,并把它加入一个模板。
如果节点主机运行防火墙,请放行该端口以及下面每个端口跳跃范围的 UDP。
端口跳跃
在 Protocol 选项卡上,Port hopping ranges 列出入站同时应答的额外 UDP 端口,每行一个范围,格式为 start:end,例如 20000:20999。总计最多 512 个端口。
- 节点自己监听所有这些端口。你无需添加防火墙重定向规则。
- 每个用户的链接和文件都携带这组端口,应用因此知道可以在哪些端口之间切换。
- 与同一模板上其他入站的端口或某条隧道的端口重叠的范围,在保存时会被拒绝。
切换频率由客户端决定,所以它作为客户端设置放在同一个选项卡上:
| 字段 | |
|---|---|
| 跳跃间隔 | 两次切换之间的秒数。留空则使用应用自己的默认值(大多数应用为 30 秒)。最少 5 秒 |
| 跳跃间隔上限 | 仅 Hysteria2。两者都设置时,应用每次在两者之间随机取值,切换就不再有固定规律 |
sing-box 应用读取这两个字段。Clash 应用读取间隔;在 mihomo 1.19.24 及以上版本中也读取端口范围。分享链接里没有放这两项的位置,所以通过导入链接添加的应用会使用自己的默认值。面板会拒绝没有间隔的上限、小于间隔的上限,以及低于五秒的任何值,这些也正是客户端在用户设备上会拒绝的值。
速度与按用户限制
节点始终以 BBR 拥塞控制运行 Hysteria2,并忽略应用声明的带宽。正因如此,用户的 速度限制 在 Hysteria2 上和在其他地方一样有效,这也是该入站没有带宽字段的原因。用户在应用里设置的带宽不会提高其速度。
BBR profile(高级)设置节点拥塞控制的激进程度:留空或 standard、conservative、aggressive。
其他字段
| 字段(高级) | |
|---|---|
| Obfs password | 用双方共享的密码打乱每个数据包,使检查流量的网络不再把连接识别为 Hysteria2。每个链接都携带它;修改后每个用户都需要刷新订阅 |
| Masquerade URL | 当有人在没有有效密码的情况下连接(例如浏览器)时,节点向其展示的网站 |
| Idle timeout、Keep-alive period、各接收窗口、Max concurrent streams | QUIC 调优;除非你经过测量有明确理由,否则留空 |
Hysteria(第 1 版)
表单还提供第一版 hysteria。它同样支持端口跳跃(没有上限)和 Obfs password,但始终使用固定速率:Up (Mbps) 和 Down (Mbps) 不能为空。留空时面板会特意填入很高的值,这样每个用户的 速度限制 才是真正的上限。只为不支持 Hysteria2 的应用提供它。
客户端应用
| 格式 | Hysteria2 | Hysteria |
|---|---|---|
| 分享链接 | 是(hysteria2://) | 是(hysteria://) |
| Clash 应用 | 是 | 是 |
| sing-box 应用 | 是 | 是 |
| Xray 客户端 | 是 | 否 |
