在管理后台:协议配置
Hysteria2
了解 Hysteria2 协议配置编辑器中的所有设置、节点如何处理流量,以及应用会收到和需要什么。
Hysteria2 是一种基于 QUIC、通过 UDP 传输的协议。在 Mistgate 中,它供订阅类应用使用:用户添加一个链接,即可获得所属分组中的所有 Hysteria2 服务器。每位用户都有自己的密钥令牌;节点只保存其哈希值。本页列出 Hysteria2 协议配置的设置及其作用;如何创建协议配置并部署到节点,请参阅协议配置。
设置#
编辑器将设置分为基础、混淆和高级。更改关键设置后,用户现有的服务器会失效,直到应用更新订阅;编辑器保存前会先询问(请参阅协议配置)。
| 设置 | 默认值 | 是否关键 | 作用 |
|---|---|---|---|
| 端口 | 443 | 是 | 节点监听的 UDP 端口。节点可单独使用其他端口。 |
| 端口跳跃 | 关闭(0 和 0) | 是 | 节点将 UDP 流量转发到协议配置端口的一个范围。见下文。 |
| 域名(SNI) | 留空 | 是 | 证书中的服务器名称,应用会看到此名称。留空时使用节点地址。 |
| 证书 | Let’s Encrypt | 是 | Let’s Encrypt或自签名(固定指纹)。请参阅协议配置。 |
| 混淆 | Salamander | 是 | 无、Salamander或Gecko(实验性)。 |
| 混淆密码 | 已生成 | 是 | 长度为 8–128 个字符;节点和应用使用相同密码。 |
| 伪装 | 内置站点 | 否 | 节点对非 Hysteria2 客户端请求的响应:内置站点或无(404)。 |
| 忽略客户端声明的带宽(始终使用 BBR) | 开启 | 否 | 请参阅「速度与公平性」。 |
| BBR 模式 | 标准 | 否 | 标准、保守或激进。 |
| 上传上限 | 0(不限) | 否 | 单位为 Mbit/s,最高 100,000:限制单个客户端向节点发送数据的速度。 |
| 下载上限 | 0(不限) | 否 | 单位为 Mbit/s,最高 100,000:限制节点向单个客户端发送数据的速度。 |
| 转发 UDP | 开启 | 否 | 关闭后,客户端只能通过隧道传输 TCP。 |
| 出口 | 直连 | 否 | 直连或WARP。请参阅 WARP。 |
新建协议配置时,始终会生成 Salamander 密码,并默认忽略客户端声明的带宽。
混淆#
Salamander 会封装每个数据包,使 QUIC 握手看起来不像 QUIC;节点和应用共享同一个密码。Gecko 是 Hysteria2 核心提供的另一种混淆方式,会拆分较长的握手,目前标记为实验性。选择无时,流量为普通 QUIC。字段提示说明 Happ 目前只支持 Salamander。
更改混淆类型或密码后,所有用户的服务器都会失效,直到其应用更新订阅。点击生成可生成新密码。
伪装#
非 Hysteria2 客户端发起的连接会看到一个网站。选择内置站点时,节点会在 UDP 端口上通过 HTTP/3、并在旁边的 TCP 443 上通过 HTTPS 提供一个中性内置站点,同时像真实网站一样将 UDP 端口通告为 HTTP/3 端口。选择无(404)时,此类请求都会收到纯文本 404 响应。所有安装中的内置站点都相同;节点也可以改为显示面板站点或自己的站点:请参阅节点:三种选项。
TCP 443 也用于节点响应 Let’s Encrypt 请求,因此有 Let’s Encrypt 协议配置的节点必须保留此端口。同一节点上的 VLESS 协议配置若使用 TCP 443,站点和验证响应都会暂停:请参阅在同一节点上运行 VLESS 和 Hysteria2。
速度与公平性#
Hysteria2 客户端可以声明自己的速度,并要求服务器按该速度发送数据(Brutal)。声明速度很高的客户端可能因此占满节点的整条链路。开启忽略客户端声明的带宽(始终使用 BBR)后,节点会忽略客户端声明的速度并使用 BBR 拥塞控制,公平地共享链路。BBR 模式用于调整 BBR 提速的速度。
上传上限和下载上限会限制此协议配置的每个客户端。速度还可以按用户和按设备限制,在用户卡片中设置:每用户限速(该用户所有设备在同一节点上合计)和每设备限速(实验性功能,适用于 Hysteria2 和 VLESS)。每个字节都要通过两道限速。请参阅用户与分组。
端口跳跃#
设置端口范围后,节点会将该范围内任一端口收到的 UDP 数据包转发到协议配置的端口,因此客户端可以在连接期间更换端口;过滤器封锁单个端口也不会导致连接中断。节点通过防火墙重定向实现此功能。
规则:
- 范围起始端口必须为 1024 或更高,最多包含 20,000 个端口;
- 协议配置自身的端口必须在范围之外;
- 范围不能与节点上其他协议配置的端口或端口范围重叠;面板会在点击前拒绝此类设置;
- 节点也会拒绝覆盖 SSH 端口或其他协议配置端口的范围。协议配置本身仍会监听其端口,但不会安装该范围;协议配置会报告错误「端口跳跃被拒绝:……」,节点事件会显示「某个协议配置拒绝了其端口跳跃」。
只有 Mihomo 格式会包含端口范围:基于 mihomo 内核的应用会收到端口和 30 秒的跳跃间隔。链接列表(Happ 和其他读取分享链接的应用)只包含单个端口。此协议配置的 WARP 副本不会设置端口跳跃。
域名(SNI)和证书#
域名、证书及其与节点地址的关系详见协议配置。简而言之:Let’s Encrypt 需要一个 A 记录指向节点的域名,并且可访问端口 80 和 443;自签名证书可用于 IP 地址,应用会检查其指纹。
节点如何处理流量#
- 嗅探。 节点会从连接的首批字节中读取目标名称(HTTP Host 或 TLS 服务器名称),并使用该名称,而不是应用发送的 IP。节点不会信任应用自己的 DNS 解析结果,因此用户侧的 DNS 解析遭到投毒或封锁也不会造成影响。
- 节点 DNS。 节点使用自身的此节点的 DNS 服务器设置解析这些名称;默认使用服务器自身的 DNS 解析器。优先使用 IPv4;名称没有 A 记录时使用 IPv6。WARP 出口也使用相同方式解析。请参阅节点和 DNS。
- 被禁止的目标地址。 用户无法通过隧道访问私有网络、回环地址、链路本地地址、云元数据地址或节点自身的任何地址。
- 用户。 添加、移除或停用用户只会更改节点上的令牌列表,不会断开其他人的连接。用户被移除或订阅过期后,其连接会在下一个数据包到达时中断。
- BitTorrent。 开启节点上的拦截已识别的 BitTorrent 流量后,节点会关闭识别为 BitTorrent 的出站连接,或丢弃相应的 UDP 数据报。更改此设置会重启节点上的 Hysteria2 协议配置。请参阅BitTorrent 防护。
应用收到的内容#
Hysteria2 有两种格式;应用会收到哪种格式,由订阅中的规则决定。
链接列表。 每台服务器对应一个分享链接,供 Happ 和大多数其他应用读取:
hysteria2://<token>@de1.example.com:443/?obfs=salamander&obfs-password=<password>&sni=de1.example.com#<server name>obfs和obfs-password会在开启混淆时出现;- 服务器名称为域名时会包含
sni; - 使用自签名证书时,链接会包含
insecure=1和pinSHA256=<64 hex digits>:应用只接受指纹匹配的证书; #<server name>是名称模板生成的名称,会经过 URL 编码且最长为 30 个字符;Happ 中的名称还会以节点负载结尾。请参阅订阅。
Mihomo YAML。 基于 mihomo 内核的应用(Clash Verge、FlClash 等)会为每台服务器收到一个代理配置:
- name: "🇩🇪 DE · Hysteria2"
type: hysteria2
server: "de1.example.com"
port: 443
ports: "20000-30000"
hop-interval: "30"
password: "<token>"
obfs: salamander
obfs-password: "<password>"
sni: "de1.example.com"
skip-cert-verify: false
alpn: [h3]只有设置端口跳跃时才会包含 ports 和 hop-interval。使用自签名证书时,代理配置会包含 fingerprint 和证书指纹,而不是域名验证。
应用要求#
- 使用 Hysteria2 分享链接的应用(Happ 等),或基于 mihomo 内核的应用(Clash Verge、FlClash)。
- UDP 必须能够通过端口(以及端口跳跃范围,如有)抵达节点。如果服务商封锁了该端口,客户端视角检测会因超时而失败,节点会显示为无流量;请更换端口。请参阅运行状况。
- 使用自签名证书的协议配置必须已在节点上启动过一次,节点之后才能报告证书指纹。此前链接不含指纹,应用会拒绝该证书,Mihomo 格式也会省略此服务器。
面板说明,自签名证书已通过官方 Hysteria2 客户端和 Mihomo 的验证,尚未通过 Happ 的验证。请先在手机上检查。