このガイドでは、WebTunnel ブリッジを設定して、検閲下のユーザーが Tor ネットワークに接続できるようにする方法について説明します。
WebTunnel は、HTTPT に基づいてウェブブラウジングアクティビティを模倣する Pluggable Transport です。
WebTunnel ブリッジをデプロイするための要件は以下の通りです。
- 静的 IPv4 (推奨)
- TCP ポートをインターネットに公開する機能 (NAT が邪魔にならないことをご確認ください)
- 設定可能なウェブサーバー (NGINX や Apache など) と管理下のドメインを含む、セルフホストウェブサイト
- 有効な TLS 証明書
- Tor プロセスと WebTunnel トランスポートをサポートするための、少なくとも 1GB のメモリ RAM (4GB 推奨) 。
システム要件の詳細につきましては、Tor リレーの要件ページを読むことをお勧めします。
WebTunnel ブリッジをデプロイするには、この Pluggable Transport を使用してウェブサーバーと Tor ブリッジの両方を設定する必要があります。
このガイドの前半では、WebTunnel をサポートするようにウェブサーバーを設定するための詳細な手順について説明します。
後半では、WebTunnel ブリッジを運用する2つの方法 (Docker を使用する方法とソースコードからコンパイルする方法) のどちらかをお選びください。
WebTunnel や obfs4 ブリッジを運用するための要件を満たしていない場合、Snowflake プロキシを運用することは、ユーザーが検閲を回避するのを支援するために帯域幅を提供する優れた方法です。
ウェブサーバーの構成
ステップ 1. ドメインの構成
既にウェブサイトドメインをお持ちの場合は、メインドメインを使用するか、サブドメインを作成することができます。
このガイドでは、WebTunnel ブリッジはウェブサイトと同じサーバーでホストされていますが、別のサーバーでホストすることもできます。
ステップ 2. 有効な証明書の取得
ウェブサイトに TLS 証明書がない場合は、シェル言語で書かれた ACME プロトコルクライアントである acme.sh を使用して証明書を取得できます。
2.1. ACME のインストール
my@example.com をあなたのメールアドレスに置き換えてください。
$ curl https://get.acme.sh | sh -s email=my@example.com
または
$ wget -O - https://get.acme.sh | sh -s email=my@example.com
2.2. 証明書の発行
example.com をあなたのウェブサイトのドメインに置き換えてください。
$ ~/.acme.sh/acme.sh --issue --standalone --domain example.com
ステップ 3. NGINX のインストール
1つのポートで他のコンテンツと共存させるには、NGINX のようなリバースプロキシをインストールする必要があります。
以下のコマンドで NGINX をインストールできます。
$ sudo apt install nginx
ステップ 4. NGINX の構成
4.1. ランダムな文字列の生成
クライアントがウェブサーバーに接続する際に、シークレットパスを使用すると WebTunnel プロキシにリダイレクトされます。
このコマンドを実行することでランダムな文字列を生成できます。
$ echo $(cat /dev/urandom | tr -cd "qwertyuiopasdfghjklzxcvbnmMNBVCXZLKJHGFDSAQWERTUIOP0987654321"|head -c 24)
4.2. NGINX vhost の作成または編集
WebTunnel ブリッジにトラフィックを転送する /etc/nginx/sites-available/webtunnel-vhost のような新しい vhost ファイルを作成します。
以下は WebTunnel を使用した完全な NGINX vhost の例です。
あるいは、既存の vhost を使いたい場合は、location {} ブロックを編集して追加するだけです。
$PATH を任意の文字列に置き換えてください。
# NGINX vhost ブロックの例
location = /$PATH {
proxy_pass http://127.0.0.1:15000;
proxy_http_version 1.1;
### WebSocket ヘッダーの設定 ###
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
### プロキシヘッダーの設定 ###
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
proxy_redirect off;
access_log off;
error_log /dev/null;
}
4.3. vhost 構成のテストおよび NGINX の再読み込み
sudo ln -s /etc/nginx/sites-available/webtunnel-vhost /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
ステップ 5. Tor WebTunnel ブリッジの構成
おめでとうございます!Tor ブリッジへのリクエストをプロキシするようにウェブサーバーを設定することに成功しました。
次に、ウェブサーバーからのリクエストを受け取るようにブリッジをインストール・構成する必要があります。
このガイドの後半の説明に沿ってください。
ソースから Go バイナリーをコンパイルするか、Docker を使うかの、2つのオプションをご利用いただけます。