作業メモ:WindowsのCUIのみでDockerをインストールしてTorを動かしたときの備忘録

WSL2をインストール

Windows上でDockerを動作させるためには、Docker Desktop for Windowsをインストールし、WSL2を有効にする必要があります。

Powershellを管理者権限で開き

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

mkdir c:\tmp

curl https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -o c:\tmp\wls_update_x64.msi

msiexec /i c:\tmp\wsl_update_x64.msi /qn /norestart

wsl --set-default-version 2

解説

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe を使って、Windowsの機能を有効にします。
“/online” は、オンラインの Windows イメージを操作することを示し、”/enable-feature” は、機能を有効にすることを示しています。
“/featurename” は、有効にする機能の名前を指定するために使用されます。
この場合は “Microsoft-Windows-Subsystem-Linux” という名前の Linux サブシステムです。
“/all” は、この機能に関連するすべてのパッケージをインストールすることを示しています。
最後に、”/norestart” は、コマンドの実行後に再起動しないようにするために使用されます。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2行目は、1行目と同様に、dism.exe を使って “VirtualMachinePlatform” 機能を有効にするためのコマンドです。

mkdir c:\tmp

3行目は、一時ディレクトリ “c:\tmp” を作成するためのコマンドです。

curl https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi -o c:\tmp\wls_update_x64.msi

4行目は、curl コマンドを使用して、wsl_update_x64.msi ファイルをダウンロードしています。
このファイルは、WSL2 をインストールするために必要なファイルです。
“-o” オプションは、出力ファイルの名前と場所を指定します。

msiexec /i c:\tmp\wsl_update_x64.msi /qn /norestart

5行目は、msiexec コマンドを使用して、ダウンロードしたファイルをインストールするためのコマンドです。
“/i” は、インストールを指示し、”/qn” は、進行状況の表示を抑制して非対話型モードでインストールすることを示します。
最後に、”/norestart” は、インストール後に再起動しないようにする指定です。

wsl --set-default-version 2

6行目は、wsl コマンドを使用して、WSL2 をデフォルトバージョンに設定するためのコマンドです。これにより、WSL2 が既定で実行されるようになります。

dockerをインストール

winget install --id Docker.DockerDesktop

ここで一旦PCを再起動させます。

torをインストール

docker run -it -p 8118:8118 -p 9050:9050 -d dperson/torproxy

このDockerコマンドは、dperson/torproxyというDockerイメージを使って、Torプロキシを実行するコンテナを作成します。以下は各オプションの説明です。

  • docker run: Dockerコンテナを実行するコマンド
  • -it: コンテナをインタラクティブなモードで実行するためのオプションです。このオプションを使用すると、コンテナに対話的に入力できます。
  • -p 8118:8118: ホストOSのポート8118をコンテナのポート8118にマッピングするためのオプションです。これにより、Torプロキシを使用するために必要なHTTPプロキシがホストOS上で使用可能になります。
  • -p 9050:9050: ホストOSのポート9050をコンテナのポート9050にマッピングするためのオプションです。これにより、Torネットワークにアクセスするために必要なSocksプロキシがホストOS上で使用可能になります。
  • -d: コンテナをデタッチド(バックグラウンド)モードで実行するためのオプションです。
  • dperson/torproxy: 実行するDockerイメージの名前です。これは、dperson/torproxyというDocker Hubのリポジトリから取得されます。

このコマンドを実行すると、Torプロキシが実行され、ホストOSのポート8118と9050がコンテナのポート8118と9050にマッピングされます。これにより、ホストOS上のプログラムがTorプロキシを介してインターネットにアクセスできるようになります。

確認

curl -L lil.la/ip
curl -Lx socks5h://localhost:9050 lil.la/ip
curl -Lx localhost:8118 lil.la/ip

curlと呼ばれるコマンドラインツールを使用して、Webサイトlil.laからIPアドレスを取得してみます。

  • 最初のコマンド curl -L lil.la/ip は、lil.laのWebサイトにHTTP GETリクエストを送信し、WebサイトからIPアドレスを取得します。-Lは、リダイレクトが発生した場合に、リダイレクト先に再度アクセスするオプションです。
  • 2番目のコマンド curl -Lx socks5h://localhost:9050 lil.la/ip は、Torプロキシを使用してlil.laのWebサイトからIPアドレスを取得します。-xオプションは、使用するプロキシの種類を指定するためのもので、socks5h://localhost:9050は、TorのSocks5プロキシを使用することを指定しています。
  • 3番目のコマンド curl -Lx localhost:8118 lil.la/ip は、Privoxyプロキシを使用してlil.laのWebサイトからIPアドレスを取得します。-xオプションは、使用するプロキシの種類を指定するためのもので、localhost:8118は、Privoxyプロキシを使用することを指定しています。

この方法の良い点

Dockerコンテナとイメージを使用してTorを実行することには、以下の利点があります。

  • Torのバージョンを気にすることなく、最新のTorが利用可能:Dockerイメージを更新して、最新のTorをインストールできます。コンテナを再作成するだけで、最新のTorが利用可能になります。
  • Dockerコンテナとイメージを削除して更新可能:Dockerの特性により、Dockerイメージを削除して、最新バージョンのTorが含まれる新しいイメージをダウンロードして、コンテナを再作成できます。
  • Torをサービス化できる:Dockerコンテナを使用すると、Torをサービス化することができます。これにより、異なるアプリケーションでTorを使用することが容易になります。また、複数のコンテナを使用してTorネットワークを構成することもできます。

また、DockerでTorを実行すると、以下の利点があります。

  • 環境の標準化:Dockerを使用すると、アプリケーションが異なる環境で動作する場合でも、環境を標準化できます。これにより、アプリケーションが依存する環境に影響を受けずに、同じ動作をすることができます。
  • ポータビリティ:Dockerは、コンテナを他の環境に移動することができます。これにより、開発やテスト、本番環境など、異なる環境でコンテナを使用することができます。
  • セキュリティ:Dockerコンテナは、他のプロセスと分離された環境で実行されるため、より安全な環境でアプリケーションを実行することができます。

以上のように、Dockerを使用してTorを実行することで、Torの最新バージョンを容易に利用でき、サービス化することができます。また、Dockerの利点により、環境の標準化、ポータビリティ、セキュリティが向上することが期待されます。

コメント

タイトルとURLをコピーしました