Um ein transparentes TOR Gateway zu realisieren kann man wie folgt vorgehen:
Nach der Installation von TOR wird die torrc unter
/etc/tor/torrc
wie folgt ergänzt (ich habe das ganz oben gemacht):
Log notice file /var/log/tor/tor-notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.100.254
DNSPort 53
DNSListenAddress 192.168.100.254
anschließend den TOR Dienst neu starten:
sudo service tor restart
neu starten.
Mittels iptables kann man dann den gesamten Traffic eines interfaces (im Beispiel eth1) auf den TOR Transport umleiten. Dazu sollte die PREROUTING Chain der nat Table folgende Regeln enthalten:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT udp -- anywhere anywhere udp dpt:domain redir ports 53
REDIRECT tcp -- anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN redir ports 9040
Die erste Regel sorgt dafür, das DNS queries den lokalen Rechner erreichen damit .onion und .exit URLs aufgelöst werden können. Die zweite Regel leitet allen anderen Traffic auf den TOR Transport um.
Die Regeln können wie folgt erstellt werden:
sudo iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --syn -j REDIRECT --to-ports 9040
Etwas detaillierter ist das ganze noch hier beschrieben.