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 クライアントの経路で処理します。
| version | UDP | reuse の設定 | 説明 |
|---|---|---|---|
| 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 ごとにフィールドの組み合わせが異なるため、サーバー側で実際に有効なモードとパラメーターだけを指定してください。
| mode | 主なフィールド | 適用範囲 |
|---|---|---|
http | host | HTTP の外観を模倣します。host をサーバー設定と一致させる必要があります |
tls | host | simple-obfs の TLS 外観であり、標準の HTTPS プロキシとは異なります |
shadow-tls | host、password、version、alpn | Shadow TLS の対応バージョンは 1、2、3 です |
restls | host、password、version-hint、restls-script | version-hint には tls12 または tls13 を指定できます |
jls | host、username、password、alpn | 認証フィールドを 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、外側のパスワード、バージョン、クライアントフィンガープリントを順に確認してください。
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