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

Shadowsocks (SS)

現在の Mihomo フィールドに基づく Clash 系 Shadowsocks アウトバウンド設定です。暗号方式、UDP over TCP、プラグイン転送を解説します。

  • cipher
  • UDP over TCP
  • plugin-opts
  • smux
  • TLS
プロキシプロトコル

Shadowsocks ノードを構成するフィールド

クライアントは cipherpassword で Shadowsocks の暗号化方式を作成し、続いて server:port で指定したサーバーへ接続します。アドレス、ポート、暗号化方式、パスワードは、すべて同じサーバー設定のものを使用する必要があります。

基本の Shadowsocks は TCP と UDP を個別に扱えます。プラグインは Shadowsocks 接続の外側で動作し、転送方式や通信の見え方を変えますが、基本の暗号化フィールドを置き換えるものではありません。

name必須
ノード名です。ポリシーグループやルールから参照されます。
type必須
固定値 ss
server必須
Shadowsocks サーバーのドメインまたは IP です。
port必須
サーバーの待受ポートです。
cipher必須
暗号化方式です。サーバー側の値と完全に一致させる必要があります。
password必須
現在の暗号化方式で使う Shadowsocks パスワードです。

サーバーで実際に使われている Cipher を選ぶ

現在のコアは、複数の Shadowsocks 暗号化方式に対応しています。名称の新旧だけを理由に cipher を置き換えないでください。クライアントとサーバーで値が異なると、暗号化ハンドシェイクを完了できません。

Shadowsocks 暗号化方式の分類
カテゴリ公式フィールドの例説明
AESaes-128-gcmaes-256-gcm、CTR、CFB、CCM、GCM-SIVAEAD と、一部の互換用途のストリーム暗号を含みます
ChaChachacha20-ietf-poly1305xchacha20-ietf-poly1305公式リストにある ChaCha20 と ChaCha8 の派生方式にも対応しています
2022 Blake32022-blake3-aes-128-gcm2022-blake3-chacha20-poly1305パスワードまたは鍵の形式は、対応するサーバー実装に従う必要があります
LEAlea-128-gcmlea-192-gcmlea-256-gcmサーバー側も同じ実装を使っている場合にだけ選択してください
その他の互換項目aegis-128laegis-256rc4-md5none など既存のサーバー設定どおりに使用し、互換性を求めて安易にダウングレードしないでください

UDP と UDP over TCP

udp ノードで UDP の処理を許可するかを制御します。デフォルトでは、UDP は Shadowsocks のネイティブ UDP を使用します。UOT を有効にすると UDP データが TCP 接続へカプセル化されるため、サーバー側も同じ仕組みとバージョンに対応している必要があります。

udp必要に応じて指定
ノードによる UDP の処理を許可します。デフォルトは無効です。
udp-over-tcp必要に応じて指定
UDP over TCP を有効にします。デフォルトは false
udp-over-tcp-versionバージョン
UOT のバージョンは 1 または 2 のみを指定できます。未指定時はバージョン 1 を使用します。
smux高度な設定
汎用の TCP 多重化設定です。UOT と同じものではなく、サーバー側のプロトコル対応を代替することもできません。

プラグインと Plugin Options

各ノードでは、サーバー側に対応するプラグインだけを選択し、plugin-opts の構造はプラグインごとに異なります。Shadowsocks のトップレベルには汎用の tls スイッチはありません。TLS は、対応するプラグインのオプション内で設定してください。

Shadowsocks プラグインの適用範囲
plugin主なモード設定上の境界
obfshttp または tls一般的 modehost。simple-obfs サーバー側の設定と一致させる必要があります
v2ray-pluginwebsocketプラグイン内で TLS を有効にできます。現在、QUIC モードには対応していません
gost-pluginwebsocketHost、Path、リクエストヘッダー、Mux、プラグイン内 TLS を設定できます
shadow-tlsShadow TLShost、password、バージョン、任意の ALPN を設定します。対応バージョンは 1、2、3 です
restlsRestlshost、password、version-hint、任意の通信スクリプトを設定します
kcptunKCPパラメーターを kcptun サーバー側と一致させる必要があります。現在の実装では UOT が有効になります
jlsJLShost、username、password、任意の ALPN を設定します
plugin必要に応じて指定
プラグイン名です。現在のコアが対応し、サーバー側でも実際に有効になっている種別だけを指定できます。
plugin-opts必要に応じて指定
プラグイン固有のオプションです。異なるプラグイン間でそのまま使い回すことはできません。
client-fingerprint必要に応じて指定
Shadow TLS、Restls、JLS などの対応プラグインで、TLS クライアントの外観を模倣するために使用します。

基本ノードの例とトラブルシューティング

以下はプラグインを使わない基本ノードの例です。サブスクリプションでプラグインが指定されている場合は、六つの基本フィールドを変えずに、次を追加します: plugin と、それに対応する plugin-opts

  • 初期化時に cipher エラーが報告された場合は、まず暗号化方式の綴りと、現在のコアが対応する一覧を確認してください。
  • TCP は使えるのに UDP が使えない場合は、サーバー側の UDP、クライアント側の udp 、ファイアウォールの三か所を確認してください。
  • プラグイン接続に失敗する場合は、プラグイン名、mode、host、path、TLS、パスワードを順に確認してください。SS のパスワードだけを確認しても解決しません。
YAML
proxies:
  - name: ss-node
    type: ss
    server: server.example.com
    port: 443
    cipher: chacha20-ietf-poly1305
    password: your-password
    udp: true