匿名化KubuntuのQuadTor化(続編)

前回の仕組みに加え、Torを4つにしてTorrentの速度を上げます。
前回:https://note.com/torproject/n/nf0896df41977

仕組みは非常に単純で、Torを4つ起動してIPTablesを使って順番に割り当てていきます。
なおこれは出口ノードを増やして速度を上げているだけなので、HTTPなど接続が1つの場合は当然早くなりません。

以下の作業は全てrootで行います。
また作成するファイルは全て

/opt/quadtor

にあるものとします。

IPTablesの設定
以下のスクリプトを作成します。
※これは前回の環境で動いている事が前提なので恐らく他の環境では動きません。

torproxy

#!/bin/sh

_virt_addr="10.192.0.0/10"
_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
_resv_iana="0.0.0.0/8 100.64.0.0/10 169.254.0.0/16 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32"

iptables -F
iptables -t nat -F

iptables -t nat -A OUTPUT -d $_virt_addr -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DNAT --to-destination 127.0.0.1:9040
iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.1:10053
iptables -t nat -A OUTPUT -o lo -j RETURN

for _lan in $_non_tor; do
iptables -A INPUT -d $_lan -j ACCEPT
iptables -A OUTPUT -d $_lan -j ACCEPT
iptables -t nat -A OUTPUT -d $_lan -j RETURN
done

for _iana in $_resv_iana; do
iptables -t nat -A OUTPUT -d $_iana -j RETURN
done

iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m statistic --mode nth --every 4 --packet 0 -j DNAT --to-destination 127.0.0.1:9040
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m statistic --mode nth --every 4 --packet 1 -j DNAT --to-destination 127.0.0.1:9041
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m statistic --mode nth --every 4 --packet 2 -j DNAT --to-destination 127.0.0.1:9042
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m statistic --mode nth --every 4 --packet 3 -j DNAT --to-destination 127.0.0.1:9043

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 127.0.0.1/32 -o lo -j ACCEPT
iptables -A OUTPUT -j DROP

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP

None

Torの追加ディレクトリの作成
同時に4つ動かすので不足している3つのディレクトリを追加する。

mkdir /var/lib/tor1 /var/lib/tor2 /var/lib/tor3


chown debian-tor:debian-tor /var/lib/tor1 /var/lib/tor2 /var/lib/tor3


chmod 2710 /var/lib/tor1 /var/lib/tor2 /var/lib/tor3

Torの追加設定ファイルの作成
4つ分の設定ファイルを追加する。
※それぞれ微妙に異なるので注意

torrc0

VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
DNSPort 127.0.0.1:5353
TransPort 127.0.0.1:9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort

None

torrc1

DataDirectory /var/lib/tor1
SocksPort 0
VirtualAddrNetworkIPv4 10.192.0.0/10
TransPort 127.0.0.1:9041 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort

None

torrc2

DataDirectory /var/lib/tor2
SocksPort 0
VirtualAddrNetworkIPv4 10.192.0.0/10
TransPort 127.0.0.1:9042 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort

None

torrc3

DataDirectory /var/lib/tor3
SocksPort 0
VirtualAddrNetworkIPv4 10.192.0.0/10
TransPort 127.0.0.1:9043 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort

None

Torの起動スクリプトの作成
quadtor

#!/bin/sh

sudo -u debian-tor /usr/bin/tor -f /opt/quadtor/torrc0 >/dev/null &
sudo -u debian-tor /usr/bin/tor -f /opt/quadtor/torrc1 >/dev/null &
sudo -u debian-tor /usr/bin/tor -f /opt/quadtor/torrc2 >/dev/null &
sudo -u debian-tor /usr/bin/tor -f /opt/quadtor/torrc3 >/dev/null &

None

実行
標準のTorを停止。

/etc/init.d/tor stop


2つのスクリプトを起動してみてTorrentで適当にDLする

chmod +x torproxy quadtor


./torproxy


./quadtor


動作チェック

Torが正しく動作しているか確認

ps a | grep tor | grep -v sudo | grep -v grep | awk '{print $7" "$4}' | sort

/opt/quadtor/torrc0 0:00
/opt/quadtor/torrc1 0:00
/opt/quadtor/torrc2 0:00
/opt/quadtor/torrc3 0:00

None
4つ起動していて、かつ実行時間を見て全てのTorが動作しているか判断。


注意事項
仕組み上、既に接続が確立されている場合はTorに切り替わりませんので

torproxy

はシステム起動直後に実行して下さい。

完成
これらの変更を加えても前回と同じ動作をします。

この記事が気に入ったらサポートをしてみませんか?