1. 紹介#
ShadowTLS の利点は、TLS の混乱を利用しており、ウェブサイト側の証明書を提供する必要がないため、任意のウェブサイトの証明書を使用して混乱を行うことができます。また、私が使用している間は Windows にはクライアントがなく、現在は正式な GUI クライアントもありません。使用するには一定のハードルが必要ですので、現時点では比較的マイナーな存在です。インストールは非常に簡単で、バイナリファイルを直接実行するだけで、パラメータも複雑ではありません。混乱を目的としたツールであるため、サーバー上で別途暗号化プログラムを起動する必要があります。例えば、Shadowsocks や snell などのソフトウェアです。
プロセスは以下の通りです:SS リッスンポート ->ShadowTLS 構成ポート ->ShadowTLS リッスンポート -> クライアント構成 ShadowTLS リッスンポート
2. 暗号化プロキシプログラムのインストール#
Teddysun の Docker 方式を使用することをお勧めします。詳細はこちらを参照してください:https://hub.docker.com/r/teddysun/shadowsocks-rust
アクセスできない場合は、以下に主な設定を記載します。
#設定ファイルを作成
mkdir -p /etc/shadowsocks-rust
#設定ファイルに書き込む、具体的な内容はパスワードを自分で変更し、ポート番号は変更しなくてもかまいません。これにより、Dockerを起動する際に多くのコマンドを変更する必要がありません。
#ポート番号を変更する場合は、コンテナ内外のポート番号マッピングに注意してください。わからない場合は検索するか、私のDockerノートを参照してください。
cat > /etc/shadowsocks-rust/config.json <<EOF
{
"server":"0.0.0.0",
"server_port":9000,
"password":"password0",
"timeout":300,
"method":"aes-256-gcm",
"nameserver":"8.8.8.8",
"mode":"tcp_and_udp"
}
EOF
#イメージを取得してコンテナを起動
docker pull teddysun/shadowsocks-rust
docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-rust --restart=always -v /etc/shadowsocks-rust:/etc/shadowsocks-rust teddysun/shadowsocks-rust
Surge のみを使用する場合は、Snell を使用することを検討してください。以下は Surge の作者による 2 つの比較です:
- 完全に特徴がない:shadowsocks、VMess、およびその他の派生プロトコルのように、完全に特徴のないトラフィックは、特徴としてブロックされる可能性があるため、ブロックされる特徴として扱われることはありません。
- ランダムな特徴:Snell の設計方法では、Snell クライアントはいくつかのランダムな特徴を生成し、現在のセッション(Surge は 1 回の設定の再読み込みで 1 つの新しいセッションとしてカウントされます)、PSK ハッシュなどの入力に依存してランダムに生成されるため、各ユーザーのトラフィック特徴は異なります。(安心してください、特徴は非常に弱く、アルゴリズムは逆にできないため、Surge を再起動するたびに特徴が更新されます。ユーザーの追跡には絶対に使用されません)この方法は現在非常に良い結果を示しています。
同時に、Snell も比較的マイナーな存在です。必要な場合はSurge マニュアルを使用することもできます。バイナリを直接実行するだけです。ただし、既に ShadowTLS を使用しているため、暗号化方法は重要ではありません。
3. ShadowTLS の設定#
公式の GitHub を参照してください:https://github.com/ihciah/shadow-tls/releases
2 つの方法があります。1 つは公式が提供する docker-compose.yml ファイルを変更して Docker で実行する方法で、もう 1 つはバイナリファイルをダウンロードして実行する方法です。
私はバイナリ方式を使用しています:
#バイナリファイルを/usr/binにダウンロードします。私がダウンロードしたのは最新バージョンですが、後で更新がある場合はreleasesから探す必要があります。
cd /usr/bin
wget https://github.com/ihciah/shadow-tls/releases/download/v0.2.23/shadow-tls-x86_64-unknown-linux-musl
#実行権限を追加します
chmod +x shadow-tls-x86_64-unknown-linux-musl
#起動時に変更する必要がある自動起動ファイル:
cat > /etc/systemd/system/shadow-tls.service <<EOF
[Unit]
Description=Shadow-TLS Custom Server Service
Documentation=man:sstls-server(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/shadow-tls-x86_64-unknown-linux-musl --v3 server --listen 0.0.0.0:45632 --password I6knDArfHW2TPhRdB7 --server 127.0.0.1:9000 --tls www.bing.com:443
[Install]
WantedBy=multi-user.target
EOF
#上記のI6knDArfHW2TPhRdB7はパスワードファイルです。--v3は実行バージョン、--listenは45632ポートでリッスンするため、クライアントの設定ポートは45632にする必要があります。--serverは暗号化プロキシのポートで、上記の設定は9000です。--tlsは混乱のウェブサイト証明書で、googleなどのウェブサイトを入力しないでください。
#その後、サービスをリロードして開始します
systemctl daemon-reload
systemctl enable shadow-tls.service
systemctl start shadow-tls.service
4. クライアントの設定#
クライアントを設定する際には、プロキシのタイプや方法には暗号化プロキシを選択し、ポートには ShadowTLS のリッスンポートを入力し、パスワードには暗号化プロキシのパスワードを入力し、Shadow-TLS の設定位置には対応するバージョン:v3 を入力し、Shadow-TLS パスワードには Shadow-TLS の起動時に入力したパスワードを入力し、SNI には起動時の --tls に対応するウェブサイトのアドレスを入力します。
Windows で使用する場合は、sing-box を使用する必要があります。詳細はこちらを参照してください:https://sing-box.sagernet.org/zh/examples/shadowtls/
設定ドキュメントを自分で作成する必要がありますが、私は NekoBox を使用することをお勧めします。それにはチェーンプロキシを設定できる機能が付属しており、設定でコアを sing-box に設定し、公式の設定に従って ShadowTLS と ss の設定を作成する必要があります。ShadowTLS にはカスタムアウトバウンド設定を使用する必要があります。詳細については、公式マニュアルを参照してください:https://matsuridayo.github.io/n-configuration/#_13
ここでは一部を抜粋します。
例:NekoBox で ShadowTLS サーバーを使用する方法。
- カスタムアウトバウンド(設定 1)を作成します。
{ "type": "shadowtls", "tag": "shadowtls-out", "server": "サーバーのIPアドレス", "server_port": 45632, "tls": { "enabled": true, "server_name": "www.bing.com" } }
- Shadowsocks アウトバウンド(設定 2)を作成します。ビジュアルインターフェースを使用して作成できます。
- 設定 1 と設定 2 の順序でチェーンプロキシを構成します。
NekoBox のチェーンプロキシを使用すると、ShadowTLS を使用しなくても、トラフィックを自分のサーバーに転送することができます。サーバーが禁止されないようにするためです。興味があれば、私が使用しているネットワークエアの忍者クラウドを試してみてください。