6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerを使ってPrivoxy+Torの環境を一瞬で作る

Last updated at Posted at 2020-09-28

はじめに

Dockerを使えば、Privoxy + Tor の環境を簡単に立ち上げることができます。基本的には下記の公式ページを読めば理解できる内容ですが、Dockerの便利さを改めて実感したので記事にまとめました。

dperson/torproxy

今回は dperson/torproxy のイメージを利用しています。ただし、Privoxy + Tor のイメージはいくつか公開されており、検索すると他のものも見つかります。そちらは試していませんが、この記事で紹介するような簡単な要件であれば、どれを使っても同じように動作すると思います。

Privoxy + Tor を使う理由

LinuxではTorを導入して起動すると、デフォルトでローカルホストの9050番ポートにSOCKS5プロキシが立ち上がり、そのプロキシを利用することでTor経由のWebアクセスが可能になります。
curlなどでアクセスする場合はこれで十分ですが、環境によってはHTTPプロキシは使えてもSOCKSプロキシを直接利用できないことがあります。
そのような場合はPrivoxyとTorを組み合わせることで解決できます。適切に設定すれば、Privoxy(デフォルトでは8118番ポート)がHTTPプロキシとして動作し、Privoxy → Tor → Webサイト という経路でアクセスできるようになります。

具体的な設定方法は、以下のページでも紹介されています。

4.10. How do I use Privoxy together with Tor?

ただし、Privoxyをインストールして設定ファイルを編集するのは少々面倒ですし、ローカル環境に残しておきたくない場合もあります。
そこでDockerを使えば、環境を簡単に構築して不要になったら消すことができるため便利です。

dockerコマンド

起動

次のコマンドで Privoxy + Tor のコンテナを起動します。

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

-p 8118:8118 はポートのバインドを指定しており、-p ホスト側ポート:コンテナ側ポート の形式です。
すでにホストの8118番ポートが使用中なら、次のように空いているポートに変更してください。

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

また、-p 9050:9050 はTorのSOCKSプロキシ用ポートです。HTTPプロキシのみ必要な場合は、以下のように省略して構いません。

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

動作確認

curlで動作確認を行います。

curl -L ipinfo.io

ipinfo.io にアクセスすると、接続元のIPアドレスなどが表示されます。プロキシを指定せずアクセスすると、自宅のIPアドレスが表示されるはずです。

次に、先ほどのコマンドでコンテナを起動し、8118番ポートのHTTPプロキシを利用してアクセスしてみます。

curl -Lx localhost:8118 ipinfo.io

-x オプションでプロキシを指定します)
この場合、自宅のIPアドレスではなく、Tor経由のIPが表示されれば成功です。

SOCKSプロキシも同様に確認できます。

curl -Lx socks5h://localhost:9050 ipinfo.io

こちらも、Tor経由のIPが表示されれば正しく動作しています。

もし ipinfo.io に接続できない場合は、代わりに https://check.torproject.org/api/ip を試してください。最近、ipinfo.io がTor経由のアクセスをブロックしている可能性があります。

終了する

起動中のコンテナは次のコマンドで確認できます。

docker ps

出力例:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                 PORTS                                                      NAMES
ae9565085d51        dperson/torproxy    "/sbin/tini -- /usr/…"   8 hours ago         Up 8 hours (healthy)   0.0.0.0:8118->8118/tcp, 9050/tcp, 0.0.0.0:9050->9050/tcp   inspiring_brahmagupta

ここで CONTAINER ID または NAMES を確認し、以下のように指定します。

docker stop ae9565085d51

docker stop の引数に CONTAINER ID または NAMES を渡すと、コンテナが停止します。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?