PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IPTables Forwarding Problem



HJS
18.08.11, 18:18
Hi,

ich versuche gerade verzweifelt eine Forwardingregel für folgenden Zweck hinzubekommen. Und zwar habe ich einen Dienst auf 127.0.0.1:5500 laufen (es lässt sich kein Port unter 1023 konfigurieren, deswegen die Umleitung und kein direktes Binding aufs externe Interface) und ich will diesen Dienst auf <öffentlicheIP>:22 erreichbar machen. Ich habe schon alles mögliche durchprobiert und komme auf keinen grünen Zweig bzw. blicke mittlerweile gar nicht mehr durch. Wäre super wenn mir dabei jemand auf die Sprünge helfen kann.

grüße
hjs

derRichard
19.08.11, 08:27
was spricht gegen eine iptables dnat regel?

//richard

HJS
19.08.11, 08:48
Gar nichts, nur leider habe ich es nicht hinbekommen nachdem ich schon einige Varianten ergoogelt habe.

muell200
19.08.11, 08:49
Gar nichts, nur leider habe ich es nicht hinbekommen nachdem ich schon einige Varianten ergoogelt habe.

und was genau geht nicht?
bzw. was hast du versucht....

derRichard
19.08.11, 08:57
btw: pakete auf das localhost-netz umleiten ist generell eine schlechte idee.
kannst du den dienst nicht auf ein anderes device binden?

//richard

HJS
19.08.11, 09:14
und was genau geht nicht?
bzw. was hast du versucht....
Was genau nicht geht? Ja nix geht, sonst hätte ich ja nicht gepostet :D Und die Versuche die ich gemacht habe ich jetzt leider nicht dokumentiert.

btw: pakete auf das localhost-netz umleiten ist generell eine schlechte idee.
kannst du den dienst nicht auf ein anderes device binden?

//richard

Also das hat durchaus funktioniert, einmal auf Port 5500 und auf dem selben Device ein Forwarding auf Port 22, wäre also auch eine Variante, wollte den Dienst nur nicht nach draußen über zwei Ports erreichbar haben, aber das sollte ich ja wiederum blocken können. über Devicegrenzen hinweg aufs lo ging die weiterleitung allerdings nicht.
Andere Frage: Weswegen hälst du die Weiterleitung eines Ports aufs loopback Device für eine schlechte Idee?

derRichard
19.08.11, 09:19
Was genau nicht geht? Ja nix geht, sonst hätte ich ja nicht gepostet :D Und die Versuche die ich gemacht habe ich jetzt leider nicht dokumentiert.


"nix geht" hilft keinem.
finde raus, warum genau.
tcpdump und wireshark sind dabei deine freunde.



Andere Frage: Weswegen hälst du die Weiterleitung eines Ports aufs loopback Device für eine schlechte Idee?

sorry, hab mich schlecht ausgedrückt "schlechte idee" ist untertrieben.
der kernel verwirft alle pakete, die an 127/8 gehen aber nicht aus dem netz 127/8 kommen.
um das zu umgehen müsstest du eine private ip an de loop device binden.

hth,
//richard

HJS
19.08.11, 09:56
sorry, hab mich schlecht ausgedrückt "schlechte idee" ist untertrieben.
der kernel verwirft alle pakete, die an 127/8 gehen aber nicht aus dem netz 127/8 kommen.

Das ist ja dann auch schon die Erklärung warum es nicht funktioniert, wenn das so ist, dass Pakete die ich von "irgendwo" nach 127/8 umleite grundsätzlich verworfen werden. Danke für diese Info.

derRichard
19.08.11, 13:56
um auf nummer sicher zu gehen kannst du ja mal

sysctl -w net.ipv4.conf.all.log_martians=1
machen.
dann loggt der kernel diese verworfenen pakete...

hth,
//richard

HJS
22.08.11, 19:39
Hallo,

ich nutze jetzt den folgenden Befehl:
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination <öffentlicheIP>:5500
Wie kann ich nun erreichen das der Dienst nur auf Port 22 von außen erreichbar ist?
Ich habe es mit "iptables -t nat -A POSTROUTING -p tcp --dport 5500 -j MASQUERADE" versucht und dann als Quelladresse für den Zugriff auf Port 5500 nur <öffentlicheIP> zugelassen (da kommt dann auf beiden Ports nichts mehr an). Kann es sein dass das Masquerading nicht so funktioniert? Per tcpdump bekomme ich keine Adressumsetzung zu sehen. Man sieht bei Zugriff auf Port 22 nur die IP des clients der auf Port 5500 zugreift, aber erreichen möchte ich, das er dank masquerading dort dann nur noch die öffentliche IP sieht und ich so filtern kann. Hat da jeman eine Idee?