PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Port und IP Forwarding für Experten



leon
02.07.04, 09:40
Ich habe hinter einer IPtables Firewall einen Webserver. Forward wird auf IP Port 80. Ganz normal halt.

Jetzt habe ich einen zweiten Webserver zum testen, welchen ich auch hinter der Firewall erreichen will. Hab ich mir gedacht, machste als einfach so das man im Browser (www.adresse:anderer Port als 80) eingibt.

Aber wie muß jetzt die Regel für IPtables sein

$IPTABLES -A FORWARD -p tcp --dport anderer Port als 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -p tcp --dport wie oben -j DNAT --to IP des zweiten Webservers



Leider klappt das so nicht

Der Browser sagt mir bei www.adresse:Port keine Verbindung




Kann mir das einer bitte helfen



Gruß Leon

geronet
02.07.04, 09:49
Liegt wohl eher am Webserver, kannst du lokal drauf?
netstat -a zeigt dir die Sockets.

leon
02.07.04, 10:19
Ja local ist kein Problem.
Wenn ich die Regel für den ersten Webserver änder, indem ich die IP des ersten duch die des zweiten ersetze geht es auch. Muß also mit dem Portumlenken zusammen hängen



Gruß Leon

canis_lupus
02.07.04, 10:55
Wo ist die FORWARD-Regel für die Antwort-Pakete?

Das sollte funktionieren (ich unterstelle Port 81 für den 2. Server):


$IPTABLES -t nat -A PREROUTING -i $IF_EXT -p tcp --dport 80 -j DNAT --to-destination <ip-www1>
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -p tcp --dport 81 -j DNAT --to-destination <ip-www2>

$IPTABLES -A FORWARD -p tcp -d <ip-www1> --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s <ip-www1> --sport 80 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -d <ip-www2> --dport 81 -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s <ip-www2> --sport 81 -j ACCEPT

leon
02.07.04, 11:05
Sorry aber ich glaube Du verstehst mich falsch. Ich möchte das die Anfrage für den Webserver 2 an der Firewall auf Port x (nicht 80) ankommt, und diese dann weitergeleitet wird auf Webserver 2 Port 80.



So verständlicher?



Gruß Leon

geronet
02.07.04, 11:29
Achsoo..

dann musst du "--to 192.168.1.2:80" schreiben.

leon
02.07.04, 11:46
Sollte dann also so aussehen sagst Du

$IPTABLES -A FORWARD -p tcp --dport anderer Port als 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -p tcp --dport wie oben -j DNAT --to IP des zweiten Webservers:80


Leon

geronet
02.07.04, 17:13
Könntest auch in der man nachlesen:

DNAT
This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined
chains which are only called from those chains. It specifies that the destination address of the
packet should be modified (and all future packets in this connection will also be mangled), and rules
should cease being examined. It takes one option:

--to-destination ipaddr[-ipaddr][:port-port]
which can specify a single new destination IP address, an inclusive range of IP addresses, and
optionally, a port range (which is only valid if the rule also specifies -p tcp or -p udp).
If no port range is specified, then the destination port will never be modified.

leon
02.07.04, 18:31
Leider funktioniert das ganze aus irgeneinen Grund nicht.


Gibt es da noch eine andere Lösung



Leon

MarcM
02.07.04, 18:37
Jo, gibts !

Lass den 2. Webserver auf nem anderen Port lauschen als 80 und forwarde ganz normal den Port dahin....

Greetz
Marc

leon
02.07.04, 18:51
Ok vielen Dank. Ich habe das ganze jetzt anders gelöst. Habe den Webserver des zweiten gleich mit nem anderen Port gestartet.




Gruß Leon

canis_lupus
02.07.04, 21:18
Der Vollständigkeit halber:

$IPTABLES -A FORWARD -p tcp -d <www2> --dport 80 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i $IF_EXT -p tcp --dport <anderer port> -j DNAT --to www2:80

Nach dem DNAT ist der Zielport wieder 80, da lag vermutlich der Fehler.

(immer noch vorausgesetzt, das die Antwortpakete durchgehen)

leon
03.07.04, 14:28
Alles klar. Vielen Dank. Ich hatte den Port auf 8080 gelegt und das hat der http Server nicht mitgemacht. Ich muß innerhalb der 1024 bleiben.



Leon