---
title: "Shadowsocks"
description: "Potatso が対応する Shadowsocks の暗号方式、プラグイン、リンク、機能。"
---

> Documentation Index
> Fetch the complete documentation index at: https://potatso.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Shadowsocks

Shadowsocks サーバは、**暗号方式**と**パスワード**で表され、任意で接続を偽装する**プラグイン**も使えます。Potatso は、暗号方式と、プラグインがある場合はそのプラグインに対応していれば、サーバに接続します。プロバイダが示す設定、またはサーバの `ss://` リンクを見ながら、以下の表でサーバの設定を確認してください。

Shadowsocks サーバは、手動、[`ss://` リンク](#links)、または次のものからの読み込みで追加できます。

- Clash または Mihomo のサブスクリプション、
- ファイルまたはリンクからの [SIP008](https://shadowsocks.org/doc/sip008.html) オンライン構成、
- shadowsocks-rust または shadowsocks-libev の `config.json`、
- Surge の構成、または Xray や V2Ray の構成。

## 暗号方式 {#ciphers}

サーバが 2022 の暗号方式を提供している場合はそれを、次に AEAD の暗号方式を優先してください。ストリーム暗号には既知の弱点があります。ほかに選択肢がないサーバに対してのみ使ってください。

| 暗号方式 | 種類 | 対応 |
| --- | --- | --- |
| `2022-blake3-aes-128-gcm`、`2022-blake3-aes-256-gcm` | 2022 | ✅ [マルチユーザ](#multi-user)に対応 |
| `2022-blake3-chacha20-poly1305`、`2022-blake3-chacha8-poly1305` | 2022 | ✅ |
| `aes-128-gcm`、`aes-192-gcm`、`aes-256-gcm` | AEAD | ✅ |
| `chacha20-ietf-poly1305`、`xchacha20-ietf-poly1305` | AEAD | ✅ |
| `aes-128-ccm`、`aes-256-ccm`、`aes-128-gcm-siv`、`aes-256-gcm-siv` | AEAD | ✅ |
| `sm4-gcm`、`sm4-ccm` | AEAD | ✅ |
| `aes-128-ctr`、`aes-192-ctr`、`aes-256-ctr` | ストリーム | ✅ |
| `aes-128-cfb`、`aes-192-cfb`、`aes-256-cfb`（`-cfb128` とも書かれます） | ストリーム | ✅ |
| `aes-128-cfb1`、`aes-192-cfb1`、`aes-256-cfb1` | ストリーム | ✅ |
| `aes-128-cfb8`、`aes-192-cfb8`、`aes-256-cfb8` | ストリーム | ✅ |
| `aes-128-ofb`、`aes-192-ofb`、`aes-256-ofb` | ストリーム | ✅ |
| `camellia-128-ctr`、`camellia-192-ctr`、`camellia-256-ctr` | ストリーム | ✅ |
| `camellia-128-cfb`、`camellia-192-cfb`、`camellia-256-cfb`（`-cfb128` とも書かれます） | ストリーム | ✅ |
| `camellia-128-cfb1`、`camellia-192-cfb1`、`camellia-256-cfb1` | ストリーム | ✅ |
| `camellia-128-cfb8`、`camellia-192-cfb8`、`camellia-256-cfb8` | ストリーム | ✅ |
| `camellia-128-ofb`、`camellia-192-ofb`、`camellia-256-ofb` | ストリーム | ✅ |
| `chacha20-ietf`、`chacha20`、`salsa20` | ストリーム | ✅ |
| `bf-cfb`、`rc4-md5`、`rc4`、`table` | ストリーム | ✅ |
| `none`（`plain` とも書かれます） | 暗号化なし | ✅ |
| `cast5-cfb`、`des-cfb`、`idea-cfb`、`rc2-cfb`、`seed-cfb`、`rc4-md5-6` | ストリーム | ❌ ShadowsocksR のみ |
| `xchacha20`、`xsalsa20` | ストリーム | ❌ |

名前は大文字と小文字を区別しないため、`AES-256-GCM` は `aes-256-gcm` と同じように動作します。

`none` は通信を暗号化せずに送信します。TLS 付きの v2ray-plugin など、接続自体を暗号化するプラグインと組み合わせる場合にのみ使ってください。

対応しているすべての暗号方式は、実際の Shadowsocks サーバ（[shadowsocks-rust](https://github.com/shadowsocks/shadowsocks-rust)、[sing-box](https://sing-box.sagernet.org/)、または元の Python サーバ）のうち、少なくとも 1 つに対してテスト済みです。上記の AEAD 暗号のうち、`aes-*-ccm`、`aes-*-gcm-siv`、`sm4-*` を提供するのは shadowsocks-rust のサーバだけで、使っているプロバイダはほとんどありません。

### 2022 のキー {#2022-keys}

2022 の暗号方式（[SIP022](https://shadowsocks.org/doc/sip022.html)）はパスワードを使いません。キーを使います。これは、暗号方式が必要とする長さのランダムなバイト列を Base64 でエンコードしたものです。`2022-blake3-aes-128-gcm` には 16 バイトのキー、そのほかの 2022 暗号方式には 32 バイトのキーが必要です。サーバにあるとおりのキーをそのまま使ってください。

Potatso は、長さが正しくないキーや、Base64 ではないパスワードでは接続しません。サーバ用に新しいキーを作るには、`2022-blake3-aes-128-gcm` では `openssl rand -base64 16` を、そのほかの 2022 暗号方式では `openssl rand -base64 32` を実行します。

### マルチユーザサーバ {#multi-user}

2022 のサーバは、1 つのポートを複数のユーザで共有できます（[SIP023](https://shadowsocks.org/doc/sip023.html)）。各ユーザが自分のキーを持ちます。このようなサーバでは、パスワードに、サーバのキーとユーザのキーをコロンで区切って設定します。

```text
server-key:user-key
```

マルチユーザサーバに対応しているのは、`2022-blake3-aes-128-gcm` と `2022-blake3-aes-256-gcm` だけです。

## プラグイン {#plugins}

プラグインは、Shadowsocks の接続を包んで、検出されにくくします。Potatso にはこれらのプラグインが組み込まれているので、ほかに何もインストールする必要はありません。

| プラグイン | プラグイン名 | 対応 | UDP |
| --- | --- | --- | --- |
| Simple Obfs | `obfs-local`、`simple-obfs`、`obfs` | ✅ `obfs=http` と `obfs=tls` | プラグインなしでサーバに送信されます |
| v2ray-plugin | `v2ray-plugin` | ✅ WebSocket（TLS の有無は問いません）。QUIC モードには対応していません。 | ❌ |
| gost-plugin | `gost-plugin` | ✅ WebSocket（TLS の有無は問いません） | ❌ |
| ShadowTLS | `shadow-tls` | ✅ バージョン 1、2、3 | ❌ |
| Restls | `restls` | ✅ | ❌ |
| JLS | `jls` | ✅ | ❌ |

別のプラグインが必要なサーバは、Potatso では読み込まれません。

- Cloak、xray-plugin などのプラグインは、デバイスが Potatso と並べて実行しなければならないプログラムであり、iOS では許可されていません。
- kcptun と ech-tls-tunnel は、Potatso ではまだ利用できません。

### プラグインを設定する {#set-plugin}

サーバの設定で、**プラグイン**からプラグインを選び、**プラグインパラメータ**にそのオプションを入力します。オプションは、セミコロンで区切った `key=value` の組です。Simple Obfs の例を示します。

```text
obfs=tls;obfs-host=cdn.example.com
```

`tls` のようにキーだけを書くと、そのオプションがオンになります。不要なオプションは省略してください。デフォルト値は以下の表のとおりです。

サーバを読み込むと、Potatso がプラグインとそのオプションを設定します。

- [`ss://` リンク](#links)では、`plugin` パラメータの、プラグイン名のあとに指定します：`simple-obfs;obfs=tls;obfs-host=cdn.example.com`。
- Clash または Mihomo のサブスクリプションでは、`plugin` と `plugin-opts` に指定されます。
- SIP008 構成、または shadowsocks-rust や shadowsocks-libev の `config.json` では、`plugin` と `plugin_opts` に指定されます。

どの形式でも、オプションは同じです。Clash の `plugin-opts` のように、プロバイダが 1 行に 1 つずつ書いている場合は、それぞれを `key=value` にして、セミコロンでつないでください。

### プラグインのオプション {#plugin-options}

**Simple Obfs**

| オプション | 説明 |
| --- | --- |
| `obfs` | 必須。`http` または `tls`。 |
| `obfs-host` | `Host` ヘッダー（`http`）、または TLS ハンドシェイクで送信されるサーバ名（`tls`）。空の場合、Potatso はサーバのアドレスを使います。 |
| `obfs-uri` | `http` のみ。リクエストのパス。デフォルトは `/`。 |
| `http-method` | `http` のみ。リクエストのメソッド。デフォルトは `GET`。 |

**v2ray-plugin**

| オプション | 説明 |
| --- | --- |
| `mode` | `websocket`（デフォルト）。QUIC モードには対応していません。 |
| `tls` | TLS で接続します。デフォルトはオフ。 |
| `host` | `Host` ヘッダーと、TLS のサーバ名。空の場合、Potatso はサーバのアドレスを使います。 |
| `path` | WebSocket のパス。デフォルトは `/`。 |
| `mux` | 多重化。デフォルトはオフ。サーバが使っている場合にのみオンにしてください。 |
| `skip-cert-verify` | あらゆるサーバ証明書を受け入れます。信頼できるサーバに対してのみ使用してください。 |
| `header` | 追加のリクエストヘッダー（`header=Name:Value`）。ヘッダーを増やすには繰り返し指定します。 |

**gost-plugin**

| オプション | 説明 |
| --- | --- |
| `mode` | 必須。`websocket`。 |
| `tls` | TLS で接続します。デフォルトはオフ。 |
| `host` | `Host` ヘッダーと、TLS のサーバ名。gost と同様に、デフォルトは `bing.com`。 |
| `path` | WebSocket のパス。デフォルトは `/`。 |
| `mux` | 多重化。デフォルトはオン。 |
| `skip-cert-verify` | あらゆるサーバ証明書を受け入れます。信頼できるサーバに対してのみ使用してください。 |
| `fingerprint` | その証明書だけを受け入れるための、サーバ証明書の SHA-256 フィンガープリント。 |
| `header` | 追加のリクエストヘッダー（`header=Name:Value`）。ヘッダーを増やすには繰り返し指定します。 |

**ShadowTLS**

| オプション | 説明 |
| --- | --- |
| `host` | 必須。偽装先サイトのサーバ名（`www.example.com` など）。 |
| `version` | 必須。`1`、`2`、`3` のいずれか。 |
| `password` | パスワード。バージョン 2 と 3 で必要です。 |
| `alpn` | ALPN のリスト。カンマ区切り。デフォルトは `h2,http/1.1`。 |
| `skip-cert-verify` | あらゆる偽装先サイトの証明書を受け入れます。 |

**Restls**

| オプション | 説明 |
| --- | --- |
| `host` | 必須。偽装先サイトのサーバ名。 |
| `password` | 必須。パスワード。 |
| `version-hint` | 必須。サーバの設定に合わせて `tls13` または `tls12`。 |
| `restls-script` | レコードスクリプト。プロバイダから提供されている場合。 |

**JLS**

| オプション | 説明 |
| --- | --- |
| `host` | 必須。偽装先サイトのサーバ名。 |
| `username` | 必須。ユーザ名。 |
| `password` | 必須。パスワード。 |
| `alpn` | ALPN のリスト。カンマ区切り。デフォルトは `h2,http/1.1`。 |

必須のオプションがない場合、または値が無効な場合、Potatso はサーバに接続しません。

## UDP {#udp}

Shadowsocks サーバでは UDP はデフォルトでオンで、対応するすべての暗号方式で動作します。サーバが UDP を中継しない場合は、サーバの設定でオフにしてください。

UDP はプラグインを通して送られないので、Simple Obfs 以外のプラグインを使うと、サーバは TCP しか運びません。Potatso は UDP-over-TCP（リンクやサブスクリプションの `udp-over-tcp` や `uot`）には対応しておらず、それを必要とするサーバは読み込みません。

## 機能の対応状況 {#features}

| 機能 | 対応 |
| --- | --- |
| [SIP002](https://shadowsocks.org/doc/sip002.html) の `ss://` リンク | ✅ 古い Base64 形式を含む |
| [SIP003](https://shadowsocks.org/doc/sip003.html) プラグイン | [組み込みのプラグイン](#plugins)のみ |
| SIP003u（プラグイン経由の UDP） | ❌ |
| [AEAD 暗号](https://shadowsocks.org/doc/aead.html)（SIP004） | ✅ |
| [SIP008](https://shadowsocks.org/doc/sip008.html) オンライン構成 | ✅ |
| [SIP022](https://shadowsocks.org/doc/sip022.html) 2022 暗号方式 | ✅ TCP と UDP |
| [SIP023](https://shadowsocks.org/doc/sip023.html) マルチユーザの ID ヘッダー | ✅ AES 2022 暗号方式で |
| [ストリーム暗号](https://shadowsocks.org/doc/stream.html) | ✅ [暗号方式](#ciphers)を参照してください |
| UDP-over-TCP | ❌ |
| TCP Fast Open、MPTCP | ❌ |

shadowsocks-rust の機能の一部は、そのクライアントプログラム `sslocal` 自体の設定で、Potatso は同じ役割を独自の方法で果たしています。

- ローカルの SOCKS5、HTTP、tunnel、redir、DNS、TUN サーバ：Potatso がデバイスの通信を自分で取り込みます。
- アクセス制御リスト（ACL）：プロファイルのルールを使ってください。
- 複数のサーバから最速のものを選ぶ：プロファイルのプロキシグループを使ってください。

## `ss://` リンク {#links}

`ss://` リンクは、1 行にサーバ全体の情報をまとめたものです（[SIP002](https://shadowsocks.org/doc/sip002.html)）。

```text
ss://userinfo@host:port/?plugin=…#name
```

| 部分 | 説明 |
| --- | --- |
| `userinfo` | `cipher:password` 形式の暗号方式とパスワード。Base64 エンコードまたはパーセントエンコードのいずれか。2022 暗号方式では、パーセントエンコードの形式を使う必要があります。 |
| `host` | サーバのアドレス。IPv6 アドレスは `[2001:db8::1]` のように角括弧で囲みます。 |
| `port` | サーバのポート。 |
| `plugin` | 任意。プラグイン名とそのオプションを、セミコロンで区切ってパーセントエンコードしたもの（`simple-obfs;obfs=tls;obfs-host=cdn.example.com` など）。 |
| `name` | 任意。Potatso でのサーバ名。 |

Potatso は、`#` より前のすべてが Base64 でエンコードされた、古い形式も読み込めます。

```text
ss://base64(cipher:password@host:port)#name
```

Potatso は、標準と URL セーフの Base64 を、`=` のパディングの有無を問わず受け付けます。Potatso がサーバを共有するときは、SIP002 の Base64 形式とパーセントエンコード形式、および古い形式を提供します。

### 例 {#link-examples}

各例は、読み込むリンクを示しています。AEAD の例のパスワードは `secret` です。

`aes-256-gcm` の基本的なサーバ：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Basic
```

16 バイトのキー `MTIzNDU2Nzg5MDEyMzQ1Ng==` を使う 2022 サーバ：

```text
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022
```

サーバのキーとユーザのキーをコロン（`%3A`）で区切った、マルチユーザの 2022 サーバ：

```text
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-user
```

サーバ名に `cdn.example.com` を使う、TLS の Simple Obfs：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#Obfs
```

基本的なサーバの古い形式：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#Legacy
```

IPv6 アドレスのサーバ：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6
```

Source: https://potatso.com/docs/ja/protocols/shadowsocks/index.mdx
