まず Hysteria 1.x であることを確認する
type: hysteria は Hysteria 1.x に対応します。QUIC を基盤としていますが、プロトコル形式は Hysteria2 とまったく互換性がありません。クライアントとサーバーは同じ世代のプロトコルを使用する必要があります。
作成可能な Hysteria ノードには、少なくとも名前、種別、サーバー、ポート、有効な up と downが必要です。認証情報を空にできるかはサーバー側の設定によりますが、認証を有効にする場合は一致する auth-str または auth。
name必須- ノード名です。ポリシーグループから参照されます。
type: hysteria必須- Hysteria 1.x アウトバウンドを明示的に選択します。Hysteria2 の別名ではありません。
server / port必須- サーバーアドレスと基本ポートです。ports を使う場合でも、公式設定では port を残す必要があります。
up / down必須- ゼロではない有効なアップロード速度とダウンロード速度を指定します。値がない場合や 0 として解析された場合、ノードの作成に失敗します。
認証と転送モード
Hysteria 1.x の認証情報は、通常の文字列または Base64 フィールドで指定できます。転送モードは QUIC パケットの外側の送信方式を制御するため、サーバー側の対応状況と一致させる必要があります。
auth-str認証- サーバーの認証文字列をそのまま指定します。最も一般的で、照合しやすい方式です。
auth認証- Base64 エンコード済みの認証バイト列を指定します。auth-str と同時に存在する場合、現在の実装では auth が優先されます。
protocolデフォルトは udp- udp、wechat-video、faketcp から選択できます。省略時は udp を使用します。
obfs任意- Hysteria 1.x の XPlus 難読化文字列を指定します。Hysteria2 の salamander や gecko ではありません。
obfs-protocol互換フィールド- 一部の Stash 設定との互換性に使用します。存在する場合は protocol より優先されます。通常の設定では protocol を使用してください。
帯域幅と輻輳制御
up と down は、Hysteria 1.x の Brutal 輻輳制御に与える速度値です。単位を省略すると Mbps として解釈されるため、 30 Mbps のような形式で明示することを推奨します。
この二つの値は契約回線の公称帯域幅ではなく、大きいほど速くなるものでもありません。現在の回線で実現できる速度を超えて指定すると、送信側で輻輳が発生し続けます。
| フィールド | 通信の向き | 指定の基準 |
|---|---|---|
up | クライアントのアップロード | 現在のネットワークで安定して実現できるアップロード速度以下にします |
down | クライアントのダウンロード | 現在のネットワークで安定して実現できるダウンロード速度以下にします |
| 単位 | 両方に共通 | Mbps を明示することを推奨します。単位を省略した場合も Mbps として扱われます |
ポートホッピング
Hysteria 1.x は、複数の UDP ポートを切り替えて使用できます。ports 単一ポート、範囲、カンマまたはスラッシュで区切った組み合わせを指定できますが、基本の port は省略できません。
port必須- ports を同時に設定する場合でも、基本となるサーバーポートを一つ残してください。
ports任意- 例:1000,2000-3000,4000。サーバー側のファイアウォールと転送ルールでも、同じ UDP ポート群を開放する必要があります。
hop-intervalデフォルトは 10 秒- ポートの切り替え間隔を制御します。Hysteria 1.x では整数の秒数を指定します。
TLS と QUIC のパラメーター
Hysteria 1.x には TLS 1.3 が必要です。サーバー側で明示的に求められている場合を除き、Hysteria2 の h3 ALPN をそのまま流用しないでください。現在のコアでは、 alpn を指定しない場合に hysteria。
sniTLS- を使用します。証明書に対応するサーバー名を設定してください。省略時は server を使用します。
alpnデフォルトは hysteria- サーバー側で異なる ALPN を使う場合に限って上書きします。プロトコルが QUIC ベースであるという理由だけで、h3 を指定しないでください。
skip-cert-verifyリスク- 証明書の検証を省略します。明確に必要なテストまたは自己署名証明書の環境だけで使用してください。
name-cert-verify / fingerprintTLS- それぞれ、証明書名の検証対象の指定と、証明書フィンガープリントの固定に使用します。
recv-window-conn高度な設定- 個々の QUIC ストリームの受信ウィンドウを調整します。通常はデフォルト値を維持してください。
recv-window高度な設定- QUIC 接続全体の受信ウィンドウを調整します。根拠なく増やすと、メモリ使用量が増えるだけです。
disable-mtu-discovery高度な設定- パス MTU 探索を無効にします。プラットフォームまたは回線に MTU の問題があると確認できた場合にだけ使用してください。
fast-openデフォルトは false- 接続確立の遅延を減らしますが、接続先への到達性を確認するタイミングが変わります。
Hysteria と Hysteria2 のフィールド比較
どちらの世代も UDP と QUIC を使うように見えますが、認証、難読化、帯域幅の意味が異なります。移行時は、フィールド名だけを機械的に変えず、ノードを作り直してください。
| 設定項目 | Hysteria 1.x | Hysteria2 |
|---|---|---|
| 認証 | auth-str または auth | password |
| 転送モード | udp、wechat-video、faketcp | QUIC over UDP。protocol は使用しません |
| 帯域幅 | up と down 有効な値が必須 | 方向ごとに任意で指定でき、指定すると Brutal が有効になります |
| 難読化 | obfs 文字列 | salamander または gecko と obfs-password |
| 互換性 | Hysteria 1.x サーバーにだけ接続できます | Hysteria2 サーバーにだけ接続できます |
基本例とよくある設定ミス
以下の例では、サーバー側も同じ認証情報、SNI、帯域幅制限を使用していることを前提としています。 alpn を省略した場合は、Hysteria 1.x のデフォルト値を使用します。
- Hysteria2 の
password、obfs-passwordまたは salamander フィールドを誤って使用しています。 - 次を省略しています:
upまたはdown。または、どちらかを 0 にしたため、速度が無効となりノードの作成に失敗します。 - ALPN に h3 を指定していますが、サーバー側は引き続き Hysteria 1.x のデフォルトである hysteria を使っています。
- ports を有効にした後で port を削除しており、現在の Hysteria 設定の境界に反しています。
proxies:
- name: hysteria-v1
type: hysteria
server: server.example.com
port: 443
auth-str: replace-with-server-auth
protocol: udp
up: "30 Mbps"
down: "200 Mbps"
sni: server.example.com
skip-cert-verify: false