匿名化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
はシステム起動直後に実行して下さい。
完成
これらの変更を加えても前回と同じ動作をします。