Tor + Polipoを導入する

Torはプライバシー保護のためネット経路を分散化するツールです。Torだけでも良い気がしますがProxyを挟むと接続がスムーズになるそうなので、Torの導入に合わせてProxyのPolipoも入れてみます。

構築方法は大きく分けて2つあり、個々のPCで構築する方法と、ルーターに入れてネットから接続する方法とあります。

個々のPCに導入する方法

Torブラウザをインストールするのが一番簡単ですが、今回はmacOSにTorを導入してみました。

brew install tor

/usr/local/etc/tor/torrc:

SocksPort 9050
Log notice syslog
DataDirectory /usr/local/Cellar/tor/data
ControlPort 9051
DisableDebuggerAttachment 0
HardwareAccel 1

~/.polipo:

proxyAddress =127.0.0.1
proxyPort = 8123
allowedClients = 127.0.0.1
allowedPorts = 1-65535
proxyName = localhost
cacheIsShared = false
socksParentProxy = localhost:9050
socksProxyType = socks5
chunkHighMark = 67108864
dnsUseGethostbyname = yes
disableVia = true
censoredHeaders = from,accept-language,x-pad,link
censorReferer = maybe
maxConnectionAge = 5m
maxConnectionRequests = 120
serverMaxSlots = 8
serverSlots = 2
tunnelAllowedPorts = 1-65535
logSyslog = true
scrubLogs = false

macOSのプロキシの設定: Socksを除きポートは8123

モニターのアプリarmをインストール

brew install arm

Poliloの設定を調べるには次のアドレスにアクセスします。

http://127.0.0.1:8123/polipo/config

ルーターに入れる方法(OpenWrtの場合

主にWi-Fi経由のアクセスになります。VLANでネットワークを分けて通常のネットワークと切り離して使います。

Torはメモリを多く必要としているので最小限64MBは必要です。インターネットに繋がっているルーターにはいろいろなデーモンを動かしているので負荷の少ないハブ代わりに使っているルーターにインストールしてみました。

ネットワーク図:

192.168.1.0/24
VLAN1(通常のLAN) ----+
                     |--Router--Internet
VLAN2(Tor Network)---+
192.168.2.0/24

OpenWrtのダッシュボードのNetworkでインターフェース(例:TRANSTOR)を作ります。

例)General Setup:

Protocol: Static Address
IPv4 address: 192.168.2.1
IPv4 netmask: 255.255.255.0
DHCP Server
  Start: 100
  Limit: 125
  Leasetime:12h
Advanced Settings
 DHCP-Options:6,192.168.2.1
              3,192.168.2.254

例)Physical Settings:

  • Bridge interfaces: チェックを入れます
  • VLAN Interface: “eth0.2” (transtor)

WIFIを設定します。

  • Wireless Network: Master “Tor” (transtor)

Switchを設定します。

Firewallを設定します。

  • Zones: Wifi(trantor) Input:accept Output:accept Forward:reject

インターネットのGWの親機のルーターも同様に設定します。

パッケージをインストールします。

opkg update
opkg install tor
opkg install polipo luci-app-polipo

PolipoとTorの設定です。

例)/etc/config/polipo:

config polipo 'daemon'
 option daemonise '1'
 option pidFile '/var/run/polipo.pid'

config polipo 'general'
 option enabled '1'
 option proxyAddress '0.0.0.0'
 option allowedPorts '1-65535'
 option tunnelAllowedPorts '1-65535'
 option chunkHighMark '1048576'
 option dnsQueryIPv6 'happily'
# option dnsUseGethostbyname 'reluctantly'
 option dnsUseGethostbyname 'yes'
 option disableVia 'true'
 option censoredHeaders 'from,accept-language,x-pad,link'
 option censorReferer 'maybe'
 #option logFile '/var/log/polipo.log'
 list allowedClients '192.168.2.0/24'
 option socksParentProxy 'localhost:9050'
 option socksProxyType 'socks5'

config polipo 'cache'

config polipo 'pmm'

例)/etc/tor/torrc:

User tor
AutomapHostsOnResolve 1
VirtualAddrNetworkIPv4 172.16.0.0/12
VirtualAddrNetworkIPv6 fc00::/7
DNSPort 0.0.0.0:9053
DNSPort [::]:9053
TransPort 0.0.0.0:9040
TransPort [::]:9040

例)Chromebookでの設定:

Polipoのダッシュボードにアクセスしてみます。

http://<polipo IP>:8123/polipo/

つぎのいずれかのサイトでテストしてみます。

次のように表示されればTorネットワーク接続に成功です。

Congratulations. This browser is configured to use Tor.
Your IP address appears to be: xx.xx.xx.xx

 

ブラウザの設定

Firefox

アドレスバーに about:configと入れて次のように編集します。

network.proxy.socks_remote_dns --> true

Chromium

/Applications/Chromium.app/Contents/MacOS/chromium --proxy-server="socks5://192.168.2.1:9050" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE 192.168.2.1"

Chromiumだけ次のようなエラーがありましたがネットの接続は問題ありません。

504 Connect to 127.0.0.1:8123 failed: General SOCKS server failure
following error occurred while trying to access http://127.0.0.1:8123/polipo/config:

 

References:

  • https://www.cryptomonkeys.com/2015/06/osx-tor-polipo/
  • https://www.pcsuggest.com/openwrt-tor-proxy-setup/
  • https://wiki.archlinux.org/index.php/Tor
  • https://openwrt.org/docs/guide-user/services/tor/client