Port-Umleitung im lokalen Netz mit IPTables

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
dominik.boehm
Beiträge: 33
Registriert: 29.05.2005 12:31:10
Wohnort: Münster
Kontaktdaten:

Port-Umleitung im lokalen Netz mit IPTables

Beitrag von dominik.boehm » 26.09.2006 12:09:29

Hallo,

ich habe einen Server, der die Adresse 192.168.0.100 im lokalen Netz hat. Ich möchte einige Ports umleiten auf (andere) Ports auf anderen Rechnern: Wenn z.B. eine Verbindung an Port 1234 eingeht, soll sie an Port 3389 des Rechners mit der IP 192.168.0.57 z.B. weitergeleitet werden.

Dazu habe ich diesen Befehl verwendet:

Code: Alles auswählen

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1234 -j DNAT --to 192.168.0.57:3389
Leider macht das anscheinend gar nichts und keinerlei Ports werden weitergeleitet. Hintergrund ist, dass ich meinen Server in die DMZ meines Routers stellen will, und den Server Portfreigaben - z.B. für Remote Desktop - handlen lassen möchte.

Was habe ich falsch gemacht?

Grüße,
Dominik

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 26.09.2006 12:53:14

Hm, erlaubst du in der FORWARD-Chain entsprechende Pakete?
Also sowas a la:

Code: Alles auswählen

iptables -A FORWARD -p tcp --dport 3389 -d 192.168.0.57/32 -j ACCEPT
Um zu sehen, wie Pakete laufen, ist die Grafik hier ganz nett: http://de.wikipedia.org/wiki/Bild:Nfk-traversal.png

Das Paket kommt erstmal in PREROUTING rein, dann greift dein NAT. Danach wird entschieden, ob es lokal ist, sprich in die Chain INPUT geht oder es geroutet wird, sprich, die Chain FORWARD greift.

EDIT: Ach ja, wenn du sowas einbaust, leg dir - wenn nicht schon vorhanden - LOG-Regeln in den Chains an, die Loggen, wenn du Pakete verwirfst. Also bei Default-Policy DROP sollte deine LOG-Regel die letzte in der Chain sein. Dann siehst du, wenn er was verwirft und auch, wie die Pakete aussehen.

dominik.boehm
Beiträge: 33
Registriert: 29.05.2005 12:31:10
Wohnort: Münster
Kontaktdaten:

Beitrag von dominik.boehm » 27.09.2006 15:11:57

Hmm, als Default-Policy habe ich überall ACCEPT eingestellt. Das heißt es sollten eigentlich keine Pakete weggeworfen werden. Trotzdem funktioniert die Weiterleitung bei mir leider überhaupt nicht :-(

Hast du - oder sonst wer - noch einen guten Tipp parat?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 27.09.2006 15:55:59

Hm, bau doch trotzdem mal ans Ende aller Chains eine LOG-Regel. Dann siehst du in den Logs alle Pakete, die nirgends gematched wurden.

dominik.boehm
Beiträge: 33
Registriert: 29.05.2005 12:31:10
Wohnort: Münster
Kontaktdaten:

Beitrag von dominik.boehm » 27.09.2006 16:41:11

Hmm, wenn ich wüsste, wie ich das machen kann, und wie ich anschließend die Logs sehen kann, würde ich das glatt machen :-) Aber finde da ehrlich gesagt auf die schnelle keine Infos zu.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 27.09.2006 16:44:15

Ist ganz simpel:

Code: Alles auswählen

iptables -A INPUT -j LOG
iptables -A OUPUT -j LOG
iptables -A FORWARD -j LOG

dominik.boehm
Beiträge: 33
Registriert: 29.05.2005 12:31:10
Wohnort: Münster
Kontaktdaten:

Beitrag von dominik.boehm » 27.09.2006 16:57:31

Okay, das war ja wirklcih einfach :-) Ich hatte versucht die Kette PREROUTING mit einem Log zu belegen - aber das hat nicht geklappt.

Kann es sein, dass die Logs keine Ports anzeigen? Ich sehe da nämlich nichts. Da allerdings viele Requests eingehen (greife via SSH auf den Server zu), kann ich die nicht von Hand alle scannen.

Ich hatte versucht, folgendes auszuführen, um eine Weiterleitung von Port 3389 von rechner 192.168.0.100 auf Rechner 192.168.0.81 durchzuführen:

Code: Alles auswählen

iptables -t nat -A PREROUTING -p tcp -d 192.168.0.100 --dport 3389 -j DNAT --to-destination 192.168.0.81
Greife ich anschließend via Remote Desktop auf den 192.168.0.100 zu (ich sollte ja weitergeleitet werden), finde ich mit "cat /var/log/syslog | grep 192.168.0.81" keine zeitlich passenden Übereinstimmungen.

Irgendwas scheint also schief zu gehen :-/[/code][/quote]

Benutzeravatar
DynaBlaster
Beiträge: 958
Registriert: 25.03.2004 18:18:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DF0://dynablaster.adf

Beitrag von DynaBlaster » 27.09.2006 17:43:44

Hallo,

habe dazu 2 Fragen:

1) Kannst du ohne den Umweg über den Server (192.168.0.100) auf den Dienst von 192.168.0.81 connecten ? Sprich: kommt eine Verbindung zwischen deinem Client-Rechner (welche IP hat der überhaupt ?) und dem Rechner, der die Remote-Desktop-Verbindung bereitstellt, zustande, wenn du vom Client direkt auf 192.168.0.81:3389 connectest ?

Nur um schon mal eine mögliche weitere Fehlerquelle auszuschließen.

2) Läuft auf dem Cleint-Rechner (der nach 192.168.0.81 connecten will) eine Firewall bzw. ein Paketfilter ? Evtl. suchst du auch an der falschen Stelle und der Client-Rechner blockt die Antwortpakete von 192.168.0.81:3389.

Wenn du die Logging-regeln von nepos an den Anfang der CHAINS legst, wird alles geloggt - evtl. bringt dich das ja weiter.

dominik.boehm
Beiträge: 33
Registriert: 29.05.2005 12:31:10
Wohnort: Münster
Kontaktdaten:

Beitrag von dominik.boehm » 27.09.2006 18:21:34

DynaBlaster hat geschrieben: 1) Kannst du ohne den Umweg über den Server (192.168.0.100) auf den Dienst von 192.168.0.81 connecten ? Sprich: kommt eine Verbindung zwischen deinem Client-Rechner (welche IP hat der überhaupt ?) und dem Rechner, der die Remote-Desktop-Verbindung bereitstellt, zustande, wenn du vom Client direkt auf 192.168.0.81:3389 connectest ?
Ich habe drei relevante Rechner:
192.168.0.2 - das ist mein Client
192.168.0.81 - das ist der RemoteDesktop-Server
192.168.0.100 - das ist der Hauptserver, welcher dann die RemoteDesktop-Verbdinung nach außen hin freigeben soll.

Ich kann von .100 auf .81 via Telnet auf Port 3389 zugreifen. Sehen tue ich da nichts - aber zumindest verbinden. .2 kann auf .81 ohne Probleme via Remote-Desktop zugreifen. Da sind auf keine Paketblocker installiert. Und .81 kann auch auf .100 auf sonst allen Ports zugreifen (wenn denn da dann auch Dienste lauschen).
DynaBlaster hat geschrieben: 2) Läuft auf dem Cleint-Rechner (der nach 192.168.0.81 connecten will) eine Firewall bzw. ein Paketfilter ? Evtl. suchst du auch an der falschen Stelle und der Client-Rechner blockt die Antwortpakete von 192.168.0.81:3389.

Wenn du die Logging-regeln von nepos an den Anfang der CHAINS legst, wird alles geloggt - evtl. bringt dich das ja weiter.
Firewalls habe ich komplett abgeschaltet. Daran liegt es also nicht.

Die Log-Dateien bringen mich auch nicht so recht weiter. Ich habe mehrere 100 MB Log-Dateien innerhalb von einer halben Stunde erzeugt. Darin finde ich leider zu wenig wieder :-/

Antworten