代理协议 · Clash文档

Hysteria2

Clash 生态 Hysteria2 出站配置参考,以当前 Mihomo 字段为准,涵盖认证、端口跳跃、混淆、拥塞控制与 Realm 参数。

  • password
  • 端口跳跃
  • obfs
  • 拥塞控制
  • Realm
代理协议

协议边界与最小配置

type: hysteria2 对应重新设计的 Hysteria 2 协议。它运行在 QUIC 和 UDP 上,并把流量伪装成 HTTP/3,但不能连接 Hysteria 1.x 服务端。

节点需要名称、类型、服务器以及一个有效端口来源。可以填写单个 port,也可以填写 ports 启用端口跳跃;两者都没有时,客户端会以 invalid port 拒绝创建节点。

name必填
节点名称,用于策略组和规则引用。
type: hysteria2必填
选择 Hysteria2 实现,不是 Hysteria 1.x 的兼容模式。
server必填
服务端域名或 IP 地址。
port / ports二选一
填写单端口,或提供端口列表和范围以启用跳跃。
password认证
填写服务端认证密码;当前构造器允许空字符串,但只有服务端明确允许空认证时才可省略。

认证与 TLS 校验

Hysteria2 使用 TLS 1.3。认证密码与 TLS 证书校验是两条独立链路,密码正确也不能替代可信证书和正确的服务器名称。

password认证
服务端验证客户端身份的密码,使用 userpass 服务端时应按服务端提供的完整格式填写。
sniTLS
设置证书对应的服务器名称;省略时使用 server。
alpnTLS
官方示例使用 h3。只有服务端明确要求时才覆盖默认协商结果。
skip-cert-verify风险
跳过证书校验,只适用于明确了解风险的测试或自签场景。
name-cert-verifyTLS
单独指定证书名称校验目标。
fingerprintTLS
固定服务端证书的 SHA-256 指纹。
certificate / private-keymTLS
服务端要求客户端证书时成对填写。

端口跳跃

填写 ports 后,客户端从端口集合中建立连接并忽略单个 port。端口集合使用当前内核的端口范围语法,可用连字符表示范围,并用逗号或斜杠分隔多个值。

ports可选
例如 443,20000-21000;服务端和防火墙必须开放完全相同的 UDP 端口集合。
hop-interval默认 30 秒
使用固定秒数,或写成 15-30 让每次切换随机选取间隔。
最小间隔5 秒
当前实现会把小于 5 秒的起始值提高到 5 秒。
范围限制重要
hop-interval 只能写一个范围,不能用逗号放入多个范围;未配置 ports 时该字段没有作用。

Salamander 与 Gecko 混淆

混淆用于改变 QUIC 数据包的可识别特征,不会把 Hysteria2 变成 TCP,也不能绕过网络对所有 UDP 的封锁。客户端和服务端必须使用相同类型和密码。

obfs可选
当前支持 salamander 与 gecko;为空时禁用混淆。
obfs-password条件必填
只要填写 obfs 就必须同时填写混淆密码,否则客户端会报 missing obfs password。
obfs-min-packet-size仅 Gecko
设置握手分片的最小线上包大小,官方上游默认 512 字节。
obfs-max-packet-size仅 Gecko
设置握手分片的最大线上包大小,官方上游默认 1200 字节。
Gecko 范围约束
最大值应不小于最小值且不超过 2048 字节,Salamander 不读取这两个包大小字段。

带宽、拥塞控制与 QUIC 窗口

Hysteria2 的 updown 与 Hysteria 1.x 不同,它们按方向决定是否使用 Brutal。填写 up 会为客户端上传方向启用 Brutal,填写 down 会把下载目标速率交给服务端方向处理。

客户端的 bbr-profile 只控制未启用上传 Brutal 时的本地 QUIC 发送方向,不会替服务端选择下载方向的拥塞控制。接收窗口属于 quic-go 高级参数,不应在不了解带宽时延积和内存成本时修改。

up / down可选
填写 Brutal 速率;未写单位时按 Mbps 解释,值不应超过链路稳定可达速率。
bbr-profile默认 standard
可选 standard、conservative 或 aggressive,只影响客户端未使用 up Brutal 时的上传发送方向。
initial-stream-receive-window高级
QUIC 单流初始接收窗口。
max-stream-receive-window高级
QUIC 单流最大接收窗口。
initial-connection-receive-window高级
整个 QUIC 连接的初始接收窗口。
max-connection-receive-window高级
整个 QUIC 连接的最大接收窗口。

Hysteria2 Realm

realm-opts 用于连接 Hysteria2 Realm 的 UDP 打洞和牵线服务。它默认关闭,只有服务端或 Realm 提供方明确给出参数时才应启用。

realm-opts.enable默认 false
必须显式设为 true 才启用 Realm。
realm-opts.server-urlRealm
牵线服务的 HTTPS 地址。
realm-opts.token / realm-opts.realm-idRealm
分别填写牵线服务令牌和目标 Realm 标识。
realm-opts.stun-serversRealm
用于发现公网 UDP 地址的 STUN 服务器列表。
realm-opts.sni / skip-cert-verify / fingerprint作用域
这些子字段只作用于 realm-opts.server-url,不替代代理服务端的 TLS 字段。

基础示例与常见误配

先用单端口和无混淆配置验证认证与 TLS,再按服务端实际配置增加端口跳跃或混淆。

  • 复制 Hysteria 1.x 的 auth-strprotocol,这些字段不属于 Hysteria2。
  • 填写 obfs 却漏掉 obfs-password,节点会在创建阶段直接报错。
  • 启用 ports 但服务端或防火墙没有开放同一端口范围,表现为周期性断连。
  • updown 写得远高于真实链路带宽,造成拥塞和丢包。
YAML
proxies:
  - name: hysteria2-node
    type: hysteria2
    server: server.example.com
    port: 443
    password: replace-with-server-password
    sni: server.example.com
    alpn:
      - h3
    skip-cert-verify: false