
Ich verwende Debian 8
. Ich versuche alle Pakete abzufangen und verwende iptables
dafü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, TPROXY
dass dies der richtige Weg sein sollte, da es nicht verwendet wird NAT
.
Ich habe versucht, es REDIRECT
durch 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.