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.