シャドウソックスのドキュメント
ナビゲーション
Shadowsocks の設定形式
設定ファイル
Shadowsocks は JSON 形式の構成を取ります。
{
“サーバー”:”my_server_ip”,
「サーバーポート」:8388、
「ローカルポート」:1080、
「パスワード」:「バーフー!」,
「メソッド」:「chacha20-ietf-poly1305」
}
JSON形式
- サーバー: ホスト名またはサーバー IP (IPv4/IPv6)。
- server_port: サーバーのポート番号。
- local_port: ローカル ポート番号。
- password: 転送の暗号化に使用されるパスワード。
- method: 暗号化方式。
暗号化方式
サーバーを構成し、最も強力な暗号化方法である chacha20-ietf-poly1305 AEAD 暗号を使用することをお勧めします。
独自のシャドウソックス サーバーを構成する場合は、「chacha20-ietf-poly1305」または「aes-256-gcm」のいずれかを選択できます。
URI & QRコード
Android / IOS 用の Shadowsocks は、BASE64 でエンコードされた URI 形式の構成も受け取ります。
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
プレーン URI は次のようになります: ss://method:password@hostname:port
上記の URI は RFC3986 に従っていません。 この場合のパスワードは、パーセントでエンコードされたものではなく、平文である必要があります。
例: 192.168.100.1:8888 のサーバーを使用しています BF-CFB 暗号化方式とパスワード テスト/!@#:.
次に、プレーンな URI を使用して ss://bf-cfb:test/!@#:@192.168.100.1:8888、BASE64 でエンコードされた URI を生成できます。
> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
これらの URI を整理して識別するために、BASE64 でエンコードされた文字列の後にタグを追加できます。
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
アドレッシング
Shadowsocks は、SOCKS5 アドレス形式で見つかったアドレスを使用します。
【1バイトタイプ】【可変長ホスト】【2バイトポート】
定義されているアドレス タイプは次のとおりです。
- 0x01 : ホストは 4 バイトの IPv4 アドレスです。
- 0x03 : ホストは可変長の文字列で、1 バイトの長さで始まり、その後に最大 255 バイトのドメイン名が続きます。
- 0x04 : ホストは 16 バイトの IPv6 アドレスです。
ポート番号は、2 バイトのビッグエンディアンの符号なし整数です。
TCP
ss-local クライアントは、ターゲット アドレスで始まり、その後にペイロード データが続く暗号化されたデータを送信することにより、ss-remote への接続を開始します。 暗号化は、使用する暗号によって異なります。
[ターゲットアドレス][ペイロード]
ss-remote は暗号化されたデータを受信し、ターゲット アドレスを解読して解析します。 次に、ターゲットへの新しい TCP 接続を作成し、ペイロード データを転送します。 ss-remote はターゲットから応答を受け取り、データを暗号化し、切断されるまで ss-local に転送します。
難読化の目的で、ローカルとリモートは、最初のパケットに何らかのペイロードを含むハンドシェイク データを送信する必要があります。
UDP
ss-local は、ターゲット アドレスとペイロードを含む暗号化されたデータ パケットを ss-remote に送信します。
[ターゲットアドレス][ペイロード]
暗号化されたパケットが受信されると、ss-remote はターゲット アドレスを復号化して解析します。 次に、ペイロードを含む新しいデータ パケットをターゲットに送信します。 ss-remote は、ターゲットからデータ パケットを受信し、各パケットのペイロードにターゲット アドレスを付加します。 暗号化されたコピーは ss-local に送り返されます。
[ターゲットアドレス][ペイロード]
このプロセスは、ss-local のネットワーク アドレス変換を実行する ss-remote に要約できます。