Outline クライアント v1.15.0 以降。
このチュートリアルでは、Shadowsocks-over-WebSockets の実装に役立つ詳細を示します。Shadowsocks-over-WebSockets とは、通常の Shadowsocks 接続がブロックされる環境で検閲を回避する強力な手法のことです。Shadowsocks トラフィックを WebSockets にカプセル化すると、このトラフィックを標準のウェブトラフィックのように偽装して、トラフィックのレジリエンスとアクセシビリティを強化できます。
ステップ 1: Outline サーバーを構成して実行する
新しい config.yaml
ファイルを作成し、次の構成を含めます。
web:
servers:
- id: server1
listen:
- "127.0.0.1:WEB_SERVER_PORT"
services:
- listeners:
- type: websocket-stream
web_server: server1
path: "/TCP_PATH"
- type: websocket-packet
web_server: server1
path: "/UDP_PATH"
keys:
- id: 1
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
最新の outline-ss-server
をダウンロードし、作成した構成を使用して実行します。
outline-ss-server -config=config.yaml
ステップ 2: ウェブサーバーを公開する
WebSocket ウェブサーバーを一般公開するには、インターネットに公開して、TLS を構成する必要があります。 このための方法はいくつかあります。Caddy、nginx、Apache などのローカル ウェブサーバーを使用して有効な TLS 証明書を保存したり、Cloudflare Tunnel や ngrok などのトンネリング サーバーを導入したりできます。
TryCloudflare を使用する例
この例では、TryCloudflare を使用して簡易トンネルを作成する方法を示します。この方法を使用すると、インバウンド ポートを開かなくても、ローカル ウェブサーバーを簡単に、かつ安全に公開することができます。
cloudflared
をダウンロードして、インストールします。ローカル ウェブサーバー ポートを指すトンネルを作成します。
cloudflared tunnel --url http://127.0.0.1:WEB_SERVER_PORT
Cloudflare からサブドメイン(acids-iceland-davidson-lb.trycloudflare.com
など)が提供され、WebSocket エンドポイントへのアクセスや、TLS の自動処理を実行できるようになります。このサブドメインは後で必要になるため、書き留めてください。
ステップ 3: 動的アクセスキーを作成する
アクセスキーの構成で示された形式を使用してユーザーのクライアント アクセスキー ファイル(YAML)を生成し、サーバー側で以前に構成した WebSocket エンドポイントを含めます。
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN/TCP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://DOMAIN/UDP_PATH
cipher: chacha20-ietf-poly1305
secret: SHADOWSOCKS_SECRET
動的アクセスキー ファイル(YAML)を生成したら、ユーザーに提供する必要があります。このファイルは静的なウェブ ホスティング サービスでホストすることも、動的に生成することもできます。動的アクセスキーの使用方法を確認してください。
ステップ 4: Outline クライアントで接続する
公式の Outline クライアント アプリケーション(バージョン 1.15.0 以降)のいずれかを使用して、新しく作成した動的アクセスキーをサーバー エントリとして追加します。[Connect] をクリックし、Shadowsocks-over-Websocket 構成を使用してサーバーへのトンネリングを開始します。
IPInfo などのツールを使用して、Outline サーバー経由でインターネットをブラウジングしていることを確認します。