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

Snell

現在の Mihomo フィールドに基づく Clash 系 Snell アウトバウンド設定です。psk、version、udp、obfs-opts、smux を確認し、最小 YAML、バージョン互換性、認証エラーの切り分けを解説します。

  • psk
  • version
  • udp
  • obfs-opts
  • reuse
プロキシプロトコル

Snell ノードとバージョンの仕組み

クライアントは事前共有鍵 psk を使って Snell アウトバウンドを確立し、 version に基づいて対応するパケット形式を選びます。サーバーのアドレス、ポート、PSK、バージョンは、すべて同じノード設定のものを使用する必要があります。

バージョンは UDP と接続多重化の対応状況を直接左右します。 version を指定しない場合、現在の実装は旧設定との互換性のためデフォルトで v1 を使用します。バージョンフィールドを無視できる表示情報として扱わないでください。

必須の最小フィールド

Snell の最小構成は、四つの共通接続フィールドと一つの PSK で構成されます。デフォルトの v1 にフォールバックしないよう、バージョンは明示的に指定することを推奨します。

name必須
ノード名です。ポリシーグループやルールから参照されます。
type必須
固定値 snell
server必須
Snell サーバーのドメインまたは IP です。
port必須
Snell サーバーの待受ポートです。
psk必須
Snell の事前共有鍵です。サーバー側と完全に一致させる必要があります。
version明示的な指定を推奨
1、2、3、4、5 に対応しています。省略時は、現在の実装でデフォルトの 1 が使用されます。

バージョン、UDP、接続多重化

現在のフィールドリファレンスでは、UDP と reuse の使用可否が Snell のバージョン別に定められています。現在の実装では、v5 サーバーの v4 クライアントに対する後方互換性を利用し、v5 設定を v4 クライアントの経路で処理します。

Snell のバージョン別機能
versionUDPreuse の設定説明
1未対応対象外version 未指定時の現在のデフォルト値
2未対応常に多重化v2 では接続多重化が常に使われ、reuse スイッチは機能しません
3対応対象外有効化可能 udp: true
4対応対応reuse デフォルトは false。サーバー側の対応状況に応じて有効にできます
5対応対応現在の実装では、v4 クライアントから v5 サーバーへの互換性を利用します
udpバージョン依存
有効にできるのは v3、v4、v5 だけです。v1 または v2 で有効にすると、初期化に失敗します。
reuseバージョン依存
公式の設定項目は v4、v5 の接続多重化に使われ、デフォルトは false

難読化モードと固有フィールド

obfs-opts Snell の外側に適用する難読化を設定します。mode ごとにフィールドの組み合わせが異なるため、サーバー側で実際に有効なモードとパラメーターだけを指定してください。

Snell の難読化モード
mode主なフィールド適用範囲
httphostHTTP の外観を模倣します。host をサーバー設定と一致させる必要があります
tlshostsimple-obfs の TLS 外観であり、標準の HTTPS プロキシとは異なります
shadow-tlshostpasswordversionalpnShadow TLS の対応バージョンは 1、2、3 です
restlshostpasswordversion-hintrestls-scriptversion-hint には tls12 または tls13 を指定できます
jlshostusernamepasswordalpn認証フィールドを JLS サーバー側と一致させる必要があります
obfs-opts必要に応じて指定
Snell の難読化設定オブジェクトです。難読化を使わない場合は省略できます。
client-fingerprint必要に応じて指定
Shadow TLS、Restls、JLS などの TLS 外観モードで使用します。公式のデフォルト値は Chrome です。
obfs-opts.host必要に応じて指定
難読化で使うドメインの外観です。サーバーから指定された値を入力してください。
obfs-opts.passwordモード依存
Shadow TLS または Restls モードの外側のパスワードであり、Snell の psk

Snell v4 の難読化設定例とトラブルシューティング

この例では v4 を明示し、UDP を有効にしています。ここでは simple-obfs の TLS 外観を使います。サーバー側で難読化を有効にしていない場合は、 obfs-opts

  • 全体を削除してください。認証に失敗する場合は、まず pskを確認し、Shadow TLS や Restls の外側のパスワードを psk
  • に指定しないでください。TCP は使えるのに UDP の初期化に失敗する場合は、 version が 3、4、5 のいずれかであることを確認してください。
  • 難読化ハンドシェイクに失敗する場合は、mode、host、外側のパスワード、バージョン、クライアントフィンガープリントを順に確認してください。
YAML
proxies:
  - name: snell-node
    type: snell
    server: server.example.com
    port: 44046
    psk: your-psk
    version: 4
    udp: true
    obfs-opts:
      mode: tls
      host: example.com