Ich verstehe nicht, warum es nicht mit 127.0.0.1 funktioniert.
Pakete an die lokale IP (192.168.a.b) des Rechner lassen sich nämlich problemlos an einen externen Rechner umleiten:
Code: Alles auswählen
iptables -t nat -A OUTPUT -p tcp -d 192.168.a.b --dport 6789 -j DNAT --to 78.x.y.z:80
Ein zusätzliches SNAT hilft bei 127.0.0.1 auch nicht weiter:
Code: Alles auswählen
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 6789 -j DNAT --to 78.x.y.z:80
iptables -t nat -A POSTROUTING -p tcp -d 78.x.y.z --dport 80 -j SNAT --to-source 192.168.a.b
Was mich wundert ist, dass die Pakete erst gar nicht auf den Interfaces (eth0 und lo) zu sehen sind, sie verlassen also noch nicht einmal den Rechner, also kann es an dem Rückweg schonmal nicht liegen.
Ohne die beiden Regeln bekomme ich sofort ein "Connection refused", wenn ich mich mit "telnet 127.0.0.1 6789" verbinden möchte, mit den Regeln passiert aber einfach nichts, d.h. ich bekomme irgendwann einmal einen Timeout.
Mich würde schon mal interessieren, woran das liegt.
Gruß,
Daniel