代理協定 · 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