LoginSignup
0
1

More than 1 year has passed since last update.

TorとWarpにつながるプロキシを組む

Posted at

はじめに

匿名化インターネットをしたいわけじゃないけど
TorとCloudflare WARPの両方にそれぞれソフトウェアを入れず
クライアントのプロキシ設定だけで接続できると便利だなと思った
Torの出口ノードってブロックされやすいんだよな、Cloudflareさんに
じゃあCloudflareのサービスでつないでやるよということです。
Cloudflare WARPはIP秘匿できないので必要なら他のVPNを使うといいと思う。他にProxyモードがあるVPNサービスを知らないけど。
Torネットワーク宛のトラフィックはtorサービスに送って、それ以外はCloudflare WARPサービスに送るようにします。
ついでにPrivoxyの簡易的な広告ブロックが効いてくると思います。

環境
OS: Fedora 36
Cloudflare Warp 2022.8.936
Tor 0.4.7.10
Squid 5.6
Privoxy 3.0.33

Torインストール

sudo dnf install tor
sudo systemctl enable --now tor

Cloudflare WARPインストール

sudo rpm -ivh https://pkg.cloudflareclient.com/cloudflare-release-el8.rpm
sudo dnf install cloudflare-warp
sudo systemctl enable --now warp-svc

Cloudflare WARP設定

以下のコマンド打っていけば設定できちゃいます。簡単ですね。
今回全てのトラフィックをVPNしちゃうとTorに繋がらないので、プロキシモードにしてます。

warp-cli register
warp-cli set-mode dot
warp-cli set-mode proxy
warp-cli enable-always-on
warp-cli connect

Privoxyインストール

sudo dnf install privoxy

Privoxy設定

sudo nano /etc/privoxy/config

以下の設定を行う
Privoxyは下のルールが優先されるみたいですね。
/は全てにマッチするルールなので、上に書かないと.onionまでWARPに送られる。
WARPは40000ポート、Torは9050ポートで待ち受けています。

/etc/privoxy/config
# Everything goes to Cloudflare WARP, except for requests to .onion
forward-socks5 / 127.0.0.1:40000 .
forward-socks5t .onion 127.0.0.1:9050 .

自動起動設定してサービスをスタート

sudo systemctl enable --now privoxy

確認

Privoxyの通常アクセスはTorを経由していないか
Sorry. You are not using Tor.ならOK

curl -Ss --proxy http://127.0.0.1:8118 https://check.torproject.org/ |sed -n '/<h1/,/<\/h1>/p'

PrivoxyでTorネットワークにはTorで接続できるか
BBCニュースのWebサイトを取得できるか確認、ステータスコードが200ならOK

curl -IL -x http://127.0.0.1:8118 https://www.bbcnewsd73hkzno2ini43t4gblxvycyac5aw4gnv7t2rccijh7745uqd.onion

Privoxyの通常アクセスにはCloudflare WARPを使用しているか
ASNがCLOUDFLARENETになっていればOK

curl -L -x http://127.0.0.1:8118 https://ip.gs/json

ここまでできれば利用するアプリケーションでプロキシを127.0.0.1:8118に設定すれば使えるようになる。
もし他のデバイスからアクセスしたいなら、Squidを同じサーバーに建てると設定しやすい。

(オプション)Squidインストール・設定

今回の目的では必ずしもSquidは要らないのだが、
もしPrivoxyの高機能な設定に慣れていないので前段にSquidをかますと設定しやすいかもしれない
私はSquidの設定にも慣れていないが…

sudo dnf install squid

Squidのコンフィグを編集するので
sudo nano /etc/squid/squid.conf

以下の設定を注入します
既存の設定値の先頭に入れておくのがおすすめです
最後に入れてしまうとうまく反映されないことがあります

/etc/squid/squid.conf
# Define Privoxy as parent proxy (without ICP)
cache_peer 127.0.0.1 parent 8118 7 no-query
# Define ACL for protocol FTP
acl ftp proto FTP
# Do not forward FTP requests to Privoxy
always_direct allow ftp
# Forward all the rest to Privoxy
never_direct allow all

以下でサービス開始

sudo systemctl enable --now squid

必要ならファイヤーウォールで許可する。
デフォルトゾーンに入れますが、必要に応じて変更されたい。
というかポートを変えるものなのだろうか、LANならデフォルトポートでいいと思うので、そのままサービス名を使ってルール追加。
もしインターネットに公開したいのならファイヤーウォールだけでなくsquid.confも編集しないといけない。

sudo firewall-cmd --add-service=squid --permanent
sudo firewall-cmd --reload
0
1
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
0
1