externen Port XXXX auf internen Port 80 umleiten [gelöst]

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
twelve
Beiträge: 39
Registriert: 10.02.2006 14:49:17

externen Port XXXX auf internen Port 80 umleiten [gelöst]

Beitrag von twelve » 05.08.2006 10:32:43

Hallo,

habe mich schon fast tot gegoogelt, es aber immer noch nicht geschafft eingehende externe Pakete umzuleiten.
Habe folgendes versucht:

Code: Alles auswählen

iptables -A INPUT --protocol tcp --dport 50000 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 50000 -j REDIRECT --to-ports 80
Intern erreiche ich Apache danach wie gewünscht über 192.168.1.1:50000. Nur ist der Zugriff von außen nicht möglich.

Gruß
Robert
Zuletzt geändert von twelve am 16.08.2006 17:59:48, insgesamt 1-mal geändert.

Hummel
Beiträge: 15
Registriert: 31.07.2006 18:12:49
Wohnort: SH

Beitrag von Hummel » 05.08.2006 18:24:25

Moin Robert,

kurze Frage vorab:

der Apache läuft auf demselben Rechner, der diese Regeln enthält ?

Hast Du Dir bei Verbindungsversuchen von außen einmal die Zähler der Ketten angesehen ?
Evtl. laufen Deine Pakete nicht dort, wo man sie auf den ersten Blick vermuten würde.
Wenn Du für die in Frage stehenden Ports zusätzliche Regeln für FORWARD und OUTPUT generiertest, würdest Du vielleicht sehen, ob sie an anderer Stelle laufen.

Ansonsten ist 'tcpdump' Dein Freund. Evtl. siehst Du auch mit 'iptraf', ob Deine Porttranslation so ausgeführt wird, wie sie soll.
Zumindest hast Du ja nicht auf Interfaces oder Adressen eingeschränkt. Insoweit sieht es auf den ersten Blick nicht verkehrt aus.

Gruß
Hummel

Hummel
Beiträge: 15
Registriert: 31.07.2006 18:12:49
Wohnort: SH

Beitrag von Hummel » 05.08.2006 18:35:39

Hast Du es schon einmal mit
iptables -t nat -I PREROUTING -p tcp --dport 50000 -j DNAT --to 192.168.1.1:80
versucht ? (192.168.1.1 ist Dein Apache-Server ?!)

Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.

twelve
Beiträge: 39
Registriert: 10.02.2006 14:49:17

Beitrag von twelve » 05.08.2006 20:10:53

Hallo Hummel,

erst einmal danke für deine Hilfe.
Der Apache läuft auf dem gleichen Rechner der die Regeln enthält. Außerdem ist es auch der Rechner, der mit dem Internet verbunden ist.
Also alles eigentlich 127.0.0.1.
Zu deiner nächsten Frage: Zähler der Ketten? :?

Habe bis jetzt mit folgenden Regeln gearbeitet:

Code: Alles auswählen

IPTABLES="/sbin/iptables"
EXTIF="ppp0"
INTIF="eth0"

# alle Regeln loeschen
$IPTABLES -F
$IPTABLES -Z

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

# eingehende Pakete aus lokalem Netz akzeptieren
$IPTABLES -t filter -A INPUT -s 192.168.2.0/24 -j ACCEPT
$IPTABLES -t filter -A INPUT -s 127.0.0.0/24 -j ACCEPT

# eingehende Pakete fuer DHCP-Server akzeptieren
$IPTABLES  -I INPUT -i $INTIF -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# eingehende Pakete fuer bestehende Verbindungen akzeptieren
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# MASQUERADING (NAT ROUTING) aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -s 192.168.2.0/24 -d 0/0 -o $EXTIF -j MASQUERADE
Habe es dann auch mit deinem Vorschlag:
iptables -t nat -I PREROUTING -p tcp --dport 50000 -j DNAT --to 192.168.1.1:80
versucht - leider auch ohne Erfolg.

Hummel
Beiträge: 15
Registriert: 31.07.2006 18:12:49
Wohnort: SH

Beitrag von Hummel » 07.08.2006 19:53:35

Moin twelve,

ich habe noch ein wenig ausprobiert, zwar intern, aber mit Portweiterleitung.

Probiere doch einmal folgendes aus
iptables -I PREROUTING -i $EXTIF -p tcp --dport 50000 -j DNAT --to 127.0.0.1:80
iptables -I INPUT -i $EXTIF -p tcp --dport 50000 -j ACCEPT
iptables -I OUTPUT -o $EXTIF -p tcp --sport 80 -j ACCEPT
Die sog. Zähler, d. h. Paket- und Bytezähler erhälst Du in den ersten beiden Spalten der Ausgaben von:
iptables -L -vn für die "normale" Kette (filter)
iptables -t nat -L -vn für die NAT-Kette

Auf Groß- und Kleinschreibung achten !

Daneben empfiehlt sich (wenn Du die Möglichkeit dazu hast) ein tcpdump mitlaufen zu lassen

Code: Alles auswählen

tcpdump -n -i eth0 host $externe_adresse
Damit siehst Du die Pakete, die von und zu der externen Adresse auf dem IF-eth0 laufen.
Analog dazu kannst Du natürlich auch "ppp0" angeben.

Was hat es mit den UDP-Ports 67:68 auf sich bzw. warum hast Du dports und sports definiert ? Wenn der Rechner der DHCP-Server ist, so sollten es doch seine dports sein.
Seine Antwortpakete laufen dann im OUTPUT. Außerdem solltest Du die Regel auf Dein $INTIF beschränken.

Erst einmal viel ErfolCH !

Gruß Hummel

Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.

twelve
Beiträge: 39
Registriert: 10.02.2006 14:49:17

Beitrag von twelve » 16.08.2006 17:58:57

Hallo Hummel,

hat etwas gedauert und mit den genannten Vorschlägen leider nicht funktioniert. ABER ... :D
Ich habe nach langer Suche eine Text-GUI für gefunden, die meiner Meinung nach wirklich gut ist und mit der ich das Problem dann ohne Probleme in den Griff bekommen habe.
Die GUI nennt sich "Vuurmuur". Quellen für apt-get sind auf der Hompage zu finden (u.a. die aktuellste Version für sarge).

Auch wenn es eigentlich mit dem Ursprungsthema nichts zu tun hat, würden mich Meinungen zur GUI sehr interessieren.

Danke noch einmal für die Hilfe!

Gruß
Robert

Antworten