協議邊界與最小設定
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 的 up 和 down 與 Hysteria 1.x 不同,它們按方向決定是否使用 Brutal。填寫 up 會為用戶端上傳方向啟用 Brutal,填寫 down 會把下載目標速率交給伺服器端方向處理。
用戶端的 bbr-profile 只控制未啟用上傳 Brutal 時的本機 QUIC 傳送方向,不會替伺服器端選擇下載方向的擁塞控制。接收視窗屬於 quic-go 進階參數,不應在不瞭解頻寬延遲積和記憶體成本時修改。
up / down可選- 填寫 Brutal 速率;未寫單位時按 Mbps 解釋,值不應超過鏈路穩定可達速率。
bbr-profile預設 standard- 可選 standard、conservative 或 aggressive,只影響用戶端未使用
upBrutal 時的上傳傳送方向。 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-str或protocol,這些欄位不屬於 Hysteria2。 - 填寫 obfs 卻漏掉
obfs-password,節點會在建立階段直接發生錯誤。 - 啟用 ports 但伺服器端或防火牆沒有開放同一連接埠範圍,表現為週期性斷連。
- 把
up和down寫得遠高於實際鏈路頻寬,造成擁塞和封包遺失。
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