シャドウソックスのドキュメント

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 に要約できます。

5 日間の無料トライアルを開始する