プロキシプロトコル · Clash ドキュメント

Hysteria

現在の Mihomo フィールドに基づく Clash 系 Hysteria 1.x アウトバウンド設定です。認証、転送モード、帯域幅、ポートホッピング、QUIC パラメーターを解説します。

  • auth-str
  • 帯域幅
  • ポートホッピング
  • QUIC
  • obfs
プロキシプロトコル

まず Hysteria 1.x であることを確認する

type: hysteria は Hysteria 1.x に対応します。QUIC を基盤としていますが、プロトコル形式は Hysteria2 とまったく互換性がありません。クライアントとサーバーは同じ世代のプロトコルを使用する必要があります。

作成可能な Hysteria ノードには、少なくとも名前、種別、サーバー、ポート、有効な updownが必要です。認証情報を空にできるかはサーバー側の設定によりますが、認証を有効にする場合は一致する 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 を使用してください。

帯域幅と輻輳制御

updown は、Hysteria 1.x の Brutal 輻輳制御に与える速度値です。単位を省略すると Mbps として解釈されるため、 30 Mbps のような形式で明示することを推奨します。

この二つの値は契約回線の公称帯域幅ではなく、大きいほど速くなるものでもありません。現在の回線で実現できる速度を超えて指定すると、送信側で輻輳が発生し続けます。

Hysteria の帯域幅フィールド
フィールド通信の向き指定の基準
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 の設定の違い
設定項目Hysteria 1.xHysteria2
認証auth-str または authpassword
転送モードudp、wechat-video、faketcpQUIC over UDP。protocol は使用しません
帯域幅updown 有効な値が必須方向ごとに任意で指定でき、指定すると Brutal が有効になります
難読化obfs 文字列salamander または gecko と obfs-password
互換性Hysteria 1.x サーバーにだけ接続できますHysteria2 サーバーにだけ接続できます

基本例とよくある設定ミス

以下の例では、サーバー側も同じ認証情報、SNI、帯域幅制限を使用していることを前提としています。 alpn を省略した場合は、Hysteria 1.x のデフォルト値を使用します。

  • Hysteria2 の passwordobfs-password または salamander フィールドを誤って使用しています。
  • 次を省略しています: up または down。または、どちらかを 0 にしたため、速度が無効となりノードの作成に失敗します。
  • ALPN に h3 を指定していますが、サーバー側は引き続き Hysteria 1.x のデフォルトである hysteria を使っています。
  • ports を有効にした後で port を削除しており、現在の Hysteria 設定の境界に反しています。
YAML
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