このガイドでは、WebTunnel ブリッジを設定して、検閲下のユーザーが Tor ネットワークに接続できるようにする方法について説明します。 WebTunnel は、HTTPT に基づいてウェブブラウジングアクティビティを模倣する Pluggable Transport です。

WebTunnel ブリッジをデプロイするための要件は以下の通りです。

  1. 静的 IPv4 (推奨)
  2. TCP ポートをインターネットに公開する機能 (NAT が邪魔にならないことをご確認ください)
  3. 設定可能なウェブサーバー (NGINX や Apache など) と管理下のドメインを含む、セルフホストウェブサイト
  4. 有効な TLS 証明書
  5. 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つのオプションをご利用いただけます。

WebTunnel Docker の設定

WebTunnel ブリッジを Docker で実行する方法

ソースから WebTunnel をコンパイルして実行

WebTunnel ブリッジをソースコードから実行する方法