Aus Neugier lese ich einige Tutorials über transparente TOR-Proxys, da dies vom Standpunkt des Netzwerks aus ein recht interessantes Thema ist. Im Gegensatz zu VPN-Gateways, die nur tun
/ tap
Schnittstellen verwenden und für mich völlig klar sind, verwendet der TOR-Proxy einen einzelnen Port. Alle Tutorials wiederholen die magische Linie:
iptables -t nat -A PREROUTING -i eth0 -p tcp --syn -j REDIRECT --to-ports 9040
Wo eth0
ist die Eingangsschnittstelle (LAN) und 9040
ist ein TOR-Port. Die Sache ist, ich verstehe überhaupt nicht, warum so etwas vom Standpunkt der Vernetzung überhaupt Sinn macht.
Nach meinem Verständnis von redirect
/ chain dst-nat
und wie es in physischen Routern zu funktionieren scheint, dst-nat
nimmt Chain Takes dst-port
und dst-addr
BEVOR die Routing-Entscheidung getroffen wird und ändert sie in etwas anderes. Also zum Beispiel:
- vorher
dst-nat
:192.168.1.2:46364 -> 88.88.88.88:80
- nachher
dst-nat
:192.168.1.2:46364 -> 99.99.99.99:8080
Und 99.99.99.99:8080
das sehen weitere Ketten in der IP-Paketflussspur (z. B. filter
Tabelle), und so sieht das Paket von nun an beispielsweise nach dem Verlassen des Geräts aus.
Nun behaupteten viele Leute im Internet (einschließlich dieses Stapelaustauschs), dass dies redirect
im Grunde dasselbe sei wie dst-nat
bei der dst-addr
Einstellung der lokalen Adresse der Schnittstelle. In diesem Licht gilt diese Regel:
iptables -t nat -A PREROUTING -i eth0 -p tcp --syn -j REDIRECT --to-ports 9040
macht eindeutig keinen Sinn. Wenn es so funktionieren würde, würde TOR alle Pakete mit Ziel erhalten 127.0.0.1:9040
. Für typische Anwendungen, bei denen die App ein Paket entgegennimmt und irgendwie darauf reagiert (z. B. Webserver), ist dies absolut sinnvoll, da ein solcher Serverprozess ohnehin das endgültige Ziel des Pakets ist und es in Ordnung ist, dass die Zieladresse localhost ist. Aber der TOR-Router ist gut ... ein Router, der das ursprüngliche Ziel des Pakets kennen muss. Vermisse ich etwas Hat dies DNAT
keinen Einfluss darauf, welche lokalen Anwendungen empfangen werden? Oder ist es spezifisches Verhalten der REDIRECT
Richtlinie?
192.168.1.1:9040
in den Verbindungsdetails wirklich als Ziel angezeigt, sodass ich keine Ahnung habe, woher der Tor-Proxy weiß, was das tatsächliche Ziel des Pakets ist ... Es ist vollständig ... Magie