• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Ports forwarden

Magnus_

Newbie
Hallo. Vorab folgendes: ich geh mal stark davon aus, dass ihr solche Fragen hier schon x-Mal hattet, aber ich bitte euch mir tortzdem zu helfen.

Also mein Problem: wir haben hier 4 Rechner die über einen Linux Router ins Netz gehen. Ich möchte jetzt, dass bestimmte Ports(bspw. 1000-1100) vom Linux Rechner an eine bestimmte IP im Netzwerk weitergeleitet werden.

Ich selber habe absolut keine Ahnung von Linux und weiss nur, dass es mittels "iptables" geht. Hab schon verschiedene Sachen getestet, es funktioniert allerdings immer noch nicht. Ich weiss auch , dass es diverse How-tos und Tuts dafür gibt, das ist allerdings recht viel Lesestoff und es geht mir nur um den einen command.

Es wäre also wirklich klasse wenn mir jemand die passenden commands zum forwarden geben könnte.
 

Martin Breidenbach

Ultimate Guru
Hier ein Codefragment das Zugriff auf Port 80 der Firewall auf einen Webserver in einer DMZ umbiegt:

# bestehende Verbindungen werden akzeptiert
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

## http von extern umleiten
$IPTABLES -t nat -A PREROUTING -i $INET_IF -d $WWW_IP_INET -p tcp --dport 80 -j DNAT --to $WWW_IP_DMZ

## ... und die umgeleiteten Pakete durchlassen
$IPTABLES -A FORWARD -i $INET_IF -d $WWW_IP_DMZ -p tcp --dport 80 -j ACCEPT
 
OP
M

Magnus_

Newbie
Erstmal DANKE für die schnelle Antwort.
Aber ich habe wohl nicht deutlich genug gemacht, wie wenig Ahnung ich habe.

Ich verstehe nicht, was du mit "$INET_IF" meinst. Müsste da nicht "dnat" stehen? "$WWW_IP_INET" ist wohl die IP des mit dem Inet verbundenen Routers und "$WWW_IP_DMZ" die IP im LAN die die Ports nutzen will.

Bsp: Eingewählte Router hat die IP -> 192.168.1.100
Der andere Rechner im LAN -> 192.168.1.101
Die Ports sind zB die für den BitTorrent, also -> 6881 - 6889

Mit deinen commands sieht es dann also so aus:

IPTABLES -t nat -A PREROUTING -i $INET_IF -d 192.168.1.100 -p tcp --dport *???* -j DNAT --to 192.168.1.101

$IPTABLES -A FORWARD -i $INET_IF -d 192.168.1.101 -p tcp --dport *???* -j ACCEPT

Ist das soweit richtig? Und wie muss der Portbereich eingefügt werden?

MfG
 

Martin Breidenbach

Ultimate Guru
Das mit den $ davor sind Variablen die ich zu Beginn des bash-Skriptes aus dem ich das kopiert habe definiert habe um das Skript besser lesbar zu machen und IP-Adressen leichter nachträglich ändern zu können da ich dann nur an einer Stelle eine Änderung machen muß. $IPTABLES ist eine Variable die /sbin/iptables beinhaltet. Spart Tipparbeit :)
$INET_IF und $DMZ_IF = eth0/1/2... für externe Schnittstelle bzw Schnittstelle zur DMZ
$WWW_IP_DMZ = IP des Webservers in der DMZ usw

IPTABLES -t nat -A PREROUTING -i $INET_IF -d 192.168.1.100 -p tcp --dport *???* -j DNAT --to 192.168.1.101

Das geht nicht. Die Pakete treffen ja auf der externen Schnittstelle ein und die hat garantiert nicht 192.168.1.100. Wie ist denn die Internetanbindung realisiert ?

Die Syntax für das Umleiten bzw Ansprechen eines Bereiches von mehreren aufeinanderfolgenden Ports weiß ich nicht auswendig.

Tip: Lesestoff über Iptables gibts auf http://www.iptables.org. Jede Menge Beispielskripte gibt es auf http://www.linuxguruz.com/iptables
 
Oben