
Ich habe ein Problem mit iptables, da ich mich nur sehr wenig damit beschäftige.
Ich habe ein TOR-Exit-Relay eingerichtet und versuche, den gesamten lokalen und TOR-Verkehr umzuleiten, sodass er meine Box über Port 8080 verlässt.
Derzeit habe ich es wie folgt eingestellt:
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
Dies scheint jedoch nur den vorübergehenden Datenverkehr umzuleiten, wenn ich als Router fungiert, und nicht den von der Box ausgehenden Datenverkehr.
Antwort1
Ich kommentiere TOR nicht, da ich nicht viel darüber weiß.
Aber für das Ziel von iptables ist es hier. PREROUTING
beinhaltet Routing. Beim Initiieren einer Verbindung vomlokalSystem, Sie routen nicht. Sie müssen lediglich OUTPUT
anstelle/zusätzlich zu verwenden PREROUTING
.
GeltungsbereichREDIRECT
:
REDIRECT
Dieses Ziel ist nur in der NAT-Tabelle, in den PREROUTING- und OUTPUT-Ketten und in benutzerdefinierten Ketten gültig, die nur von diesen Ketten aufgerufen werden. Es leitet das Paket an die Maschine selbst um, indem es die Ziel-IP in die primäre Adresse der eingehenden Schnittstelle ändert (lokal generierte Pakete werden der Localhost-Adresse 127.0.0.1 für IPv4 und ::1 für IPv6 zugeordnet).
Also:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
BEARBEITEN:
Um zu verhindern, dass ein bestimmter Benutzer oder eine bestimmte Gruppe umgeleitet wird (z. B. um eine Endlosschleife mit dem Dienst auf Port 8080 zu vermeiden), können Sie tor
anstelle des oben stehenden Folgendes tun (Beispiel für einen Dienst, der mit der effektiven Gruppe ausgeführt wird):
iptables -t nat -N OUTPUT intercept
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j intercept
iptables -t nat -A intercept -m owner --gid-owner tor -j RETURN
iptables -t nat -A intercept -j REDIRECT --to-ports 8080