iptables, um ein Ziel-Port zu ändern
Frage
Ist es möglich, den Ziel-Port eines UDP-Paket unter Verwendung von iptables zu ändern?
Ich versuche, einen SNMP-Agenten zu erhalten Fallen auf 1620 auszusenden statt 162. Leider bisher habe ich es geschafft, nur den Quell-Port zu ändern:
iptables -t nat -A POSTROUTING- -p udp --dport 162 -j SNAT --to: 1620
Lösung
Diese Nutzung wird offenbar nicht unterstützt. Genommen von http://www.netfilter.org/documentation/HOWTO/NAT- howto.txt :
6.3.7. Das Ändern des Ziel von lokal-generierten Verbindungen
Der NAT-Code können Sie einfügen DNAT-Regeln in der Wertschöpfungskette, aber
dies ist nicht vollständig in 2.4 (es unterstützt sein kann, aber es erfordert eine neue
Konfigurationsoption, einige Tests, und ein gutes Stück von Codierung, so es sei denn, jemand Verträge Rusty es, ich zu schreiben würde es bald nicht erwarten).Die Strombegrenzung ist, dass Sie kann nur das Ziel ändern, um
die lokale Maschine (z `j DNAT --to 127.0.0.1' ), nicht auf einer anderen Maschine, sonst werden die Antworten nicht werden korrekt übersetzt.
Andere Tipps
Angenommen, Sie wissen, welche Maschine Sie senden an:
iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
könnten Sie umleiten 162-1620
iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620
@PiedPiper war richtig. Mit DNAT müssen Sie eine IP-Adresse angeben, aber wir wollen nur Port-Umleitung zu tun, so -j REDIRECT in diesem Fall arbeiten kann.
Siehe http: //www.netfilter .org / Dokumentation / Howto // NAT-HOWTO-6.html # ss6.2
Statt SNAT zu machen, versuchen, mit DNAT. Der Quell-Port wird geändert, weil SNAT bedeutet SourceNAT, so DNAT wird für Sie arbeiten.
Sie können eine Umleitungsregel einrichten und dann das Paket mit dem modifizierten Port wieder injizieren.
Ich habe diese ein getan Weile zurück auf Mac OS X, aber es ist das gleiche Prinzip auf Linux: http: //blog.dv8. ro / 2006/08 / mit-divert-Steckdosen-on-mac-os-x.html
Sie müssen im Grunde eine sehr einfache transparente Proxy erstellen.