Verwenden von iptables TPROXY anstelle von REDIRECT

Verwenden von iptables TPROXY anstelle von REDIRECT

Ich verwende Debian 8. Ich versuche alle Pakete abzufangen und verwende iptablesdafür derzeit:

iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5000

Dies scheint zu funktionieren, entfernt jedoch die Möglichkeit, den ursprünglichen Zielport des Pakets zu erhalten.

Ich habe gelesen, TPROXYdass dies der richtige Weg sein sollte, da es nicht verwendet wird NAT.

Ich habe versucht, es REDIRECTdurch Folgendes zu ersetzen:

iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 5000

Dabei fange ich jedoch keine Pakete meines Dienstes ab ...

Antwort1

In Documentation/networking/tproxy.txt im Kernelbaum wird Folgendes erwähnt:

Das Ziel „TPROXY“ bietet ähnliche Funktionen, ohne auf NAT angewiesen zu sein. Fügen Sie einfach Regeln wie diese zum obigen iptables-Regelsatz hinzu:

iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY \
  --tproxy-mark 0x1/0x1 --on-port 50080

Beachten Sie, dass Sie dafür den Proxy ändern müssen, um (SOL_IP, IP_TRANSPARENT) für den Abhörsocket zu aktivieren.

Haben Sie die oben genannten Optionen für den Listening-Socket in Ihrer App festgelegt?

Bitte beachten Sie auch, dass im obigen Dokument die Notwendigkeit erwähnt wird, entsprechende IP-Routing-Regeln und -Tabellen hinzuzufügen, um die Pakete lokal zuzustellen.

verwandte Informationen