Snell サーバは、PSK(事前共有鍵)とバージョンで表され、任意で難読化も使えます。Snell は Surge チームのプロキシプロトコルです。クライアントのバージョンはサーバと一致している必要があるため、最初に確認してください。プロバイダの Surge 構成にある version、またはサーバで動作している snell-server のリリースです。
Snell サーバは、手動、snell:// リンク、または次のものからの読み込みで追加できます。
- Clash または Mihomo のサブスクリプション、
- Surge の構成。
バージョン
| バージョン | 対応 | テストに使用したもの |
|---|---|---|
| v1、v2 | ❌ | |
| v3 | ✅ | open-snell |
| v4 | ✅ | snell-server v4 |
| v5 | ✅ QUIC Proxy Mode を除く | snell-server v5 |
| v6 | ✅ | snell-server v6 |
v5 のサーバは v4 のクライアントも受け付け、v4 のサーバは v5 に設定されたクライアントを受け付けます。それ以外のバージョンの組み合わせは、接続できません。
v5 の QUIC Proxy Mode は、Surge が QUIC 通信を中継する方式です。Potatso は代わりに、QUIC をほかの UDP 通信と同じように中継するため、QUIC は引き続き動作します。
Snell v6 は Surge でベータ版であり、古いクライアントが動作しなくなる変更がまだ入る可能性があります。サーバのバージョンは、プロバイダが推奨するものにしておいてください。
難読化
| 難読化 | v3 | v4、v5 | v6 |
|---|---|---|---|
| なし | ✅ | ✅ | ✅ |
| HTTP | ✅ | ✅ | |
| TLS | ✅ | ❌ サーバは HTTP のみ提供 |
難読化は、接続の開始部分を HTTP リクエストや TLS ハンドシェイクのように見せます。サーバの obfs 設定と一致している必要があります。難読化ホストには、プロバイダが示すホスト名を設定してください。指定がない場合、Clash と同様に Potatso は bing.com を使います。
v6 サーバには難読化がありません。代わりに PSK から通信の形を整えるので、デバイス側では何も必要ありません。
v6 のモード
| モード | 対応 |
|---|---|
default:暗号化と通信の整形 |
✅ |
unshaped:通信の整形なしの暗号化 |
✅ |
unsafe-raw:暗号化なし、整形なし |
✅ |
モードは、サーバの mode 設定と一致している必要があります。unsafe-raw は通信をそのまま送信し、PSK を確認しません。別の安全なトンネルの内側でのみ使用してください。
接続の再利用
接続を再利用をオンにすると、Web サイトへの接続が終わっても Potatso は Snell 接続を開いたままにし、次の接続で使います。これにより 1 往復を省けます。再利用は v4 以降で動作します。v3 サーバは接続を再利用しないため、v3 ではこの設定は表示されません。
UDP
Snell v3 以降は、Snell 接続の中で UDP を運びます。Clash と同様に、UDP はデフォルトでオフです。サーバが UDP を中継する場合は、サーバの設定で UDP リレーをオンにしてください。Surge の構成では、Surge と同様に常にオンになります。
v5 サーバでは、約 2.5 KB を超える UDP の応答が途中で切れて届きます。サーバが、Surge だけが読み取れる形式で送信するためです。DNS、QUIC、通話など、ほとんどの UDP 通信はそれより小さいパケットを使います。v4 や v6 のサーバにはこの問題はありません。
Surge の設定
Potatso は、Surge 構成の snell 行を読み込みます。
Snell = snell, snell.example.com, 8443, psk=secret, version=4, obfs=http, obfs-host=bing.com, reuse=true| 設定 | 対応 |
|---|---|
psk |
✅ |
version |
✅ 3 から 6。version がない場合、Surge は v1 を使うため、Potatso はその行を読み込みません。 |
obfs、obfs-host |
✅ 難読化を参照してください |
obfs-uri |
❌ |
reuse |
✅ |
mode |
✅ v6 のみ |
udp-port |
❌ |
shadow-tls-password |
❌ |
tfo |
❌ 無視されます |
未対応の設定、または v4 以降での obfs=tls が必要な行は、そのサーバに接続できないため、Potatso は読み込みません。
機能の対応状況
| 機能 | 対応 |
|---|---|
| Snell v3、v4、v5、v6 | ✅ |
| Snell v1、v2 | ❌ |
| HTTP 難読化(v3〜v5)、TLS 難読化(v3) | ✅ |
| v6 のモード | ✅ |
| 接続の再利用(v4 以降) | ✅ |
| UDP(v3 以降) | ✅ |
| v5 の QUIC Proxy Mode | ❌ QUIC は UDP で通ります |
| Snell を包む ShadowTLS、Restls、JLS | ❌ |
snell:// リンク |
✅ |
対応しているすべてのバージョンは、実際の Snell サーバでテスト済みです。Surge の snell-server v4、v5、v6 と、Surge が v3 サーバを提供しなくなったため v3 には open-snell を使っています。
PSK、バージョン、難読化のいずれかが一致していないと、サーバは接続を閉じます。Snell サーバにまったく接続できない場合は、まずこの 3 つを確認してください。
snell:// リンク
Snell には公式のリンク形式がありません。Potatso は Snell サーバを次の形式で読み取り、共有します。
snell://psk@host:port?version=4&obfs=http&obfs-host=bing.com#name| 部分 | 説明 |
|---|---|
psk |
PSK(パーセントエンコード)。 |
host |
サーバのアドレス。IPv6 アドレスは [2001:db8::1] のように角括弧で囲みます。 |
port |
サーバのポート。 |
version |
Snell のバージョン。省略した場合は 4。 |
obfs、obfs-host |
難読化とそのホスト名。 |
name |
任意。Potatso でのサーバ名。 |
例
各例は、読み込むリンクを示しています。PSK は secret です。
v4 サーバ:
snell://secret@snell.example.com:8443?version=4#BasicHTTP 難読化を使う v4 サーバ:
snell://secret@snell.example.com:8443?version=4&obfs=http&obfs-host=bing.com#HTTP