Hallo Andreas, On Thursday 17 February 2005 21:40, Andreas Appenheimer wrote:
Torsten Foertsch schrieb:
On Thursday 17 February 2005 20:34, Andreas Appenheimer wrote:
möchte alle Verbindungen zu einer bestimmten IP Adresse und einem bestimmten Port auf localhost:anderer_port umleiten. Wie mache ich das am besten?
Kurze Verständnisfrage: von Anwendung(Port) PC1 nach PC2? oder von Anwendung(Port) Lokal nach anderer Port Lokal?
lokal: telnet 1.2.3.4:412 ==> lokal 543 und anderer Rechner: telnet 1.2.3.4: 412 ==> lokal 543
auf den anderen Rechner ist natürlich "lokal" als Router eingetragen.
hmm.. sofern ich Dich jetzt richtig verstehe:
bräuchtest Du: # FORWARDen akzeptieren iptables -A FORWARD -i SCHNITTSTELLE -p tcp --dport 543 -j ACCEPT
# SCHNITTSTELLE:543 zu 1.2.3.4:412 iptables -t nat -A PREROUTING -i SCHNITTSTELLE -p tcp --dport 543 -j DNAT --to-destination 1.2.3.4:412
Damit wäre es wurscht, ob das nun lokal oder entfernt angefragt wird. Es wird in jedem Falle von der Schnittstelle Port 543 an den Rechner mit der IP 1.2.3.4 am Port 412 weitergeleitet.
Wie gesagt, sofern ich Dich richtig verstanden habe.
Nicht ganz. Deine Regel würde einen Connect auf Router:543 auf 1.2.3.4:412 weiterleiten. Ich möchte aber genau das Gegenteil, nämlich einen Connect auf 1.2.3.4:412 immer auf Router:543 umlenken. Dabei soll Router aber über lo, also 127.0.0.1 angesprochen werden. Ein Stück auf dem Weg bin ich schon vorgedrungen. Angenommen, der Router hat ein Interface eth0 mit der Adresse 192.168.123.234 und auf dem Router lauscht ein Service auf 192.168.123.234:543 und ein anderer Rechner hat 192.168.123.234 als Gateway eingestellt, dann klappt mit der folgenden Regel ein Connect von dem anderen Rechner auf 1.2.3.4:412, wobei die Verbindung auf 192.168.123.234:543 umgelenkt wird. Hier die Regel: iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --destination-port 412 -j DNAT --to 192.168.123.234:543 Eigentlich möchte ich aber nicht auf 192.168.123.234:543 umlenken, sondern auf 127.0.0.1:543 auf dem Router. Schreibe ich das aber in die Regel, also iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --destination-port 412 -j DNAT --to 127.0.0.1:543 so erscheint diese Zeile: Feb 18 09:02:42 opi kernel: martian destination 127.0.0.1 from 192.168.9.129, dev vmnet1 in /var/log/messages. Der Kernel ordnet also in dieser Situation die Adresse 127.0.0.1 irgendwo auf dem Mars zu und weiß nicht wie er dorthin soll, ;-) Irgendwie müsste man ihm noch beibringen, dass er die 127.0.0.1 auf lo routet, auch wenn sie von einem anderen Interface kommt. Torsten