PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : portforwarding mit iptables haut nicht hin



meinereinerseiner
26.11.02, 10:29
mal eine frage,

habe einen rechner mit 2 ip adressen auf einem interface eth0 mit 10.100.199.1 und 10.100.199.2.
wie setze ich die regeln für folgende funktion:

alle anfragen an 10.100.199.1 auf port 80 gehen an 192.168.0.1 port 80 und alle anfragen an
10.100.199.2 auf port 80 gehen an 192.168.0.1 port 8080?

/usr/sbin/iptables -I FORWARD -p tcp -d 10.100.199.1 --dport 80 -j ACCEPT
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.0.1:80
/usr/sbin/iptables -I FORWARD -p tcp -d 10.100.199.2 --dport 80 -j ACCEPT
/usr/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.0.1:8080
=tut irgendwie nicht

danke der tom

Harry
26.11.02, 12:29
Hallo,

so wie Du das DNAT konfiguriert hast, kann es noch nicht korrekt funktionieren.
Was bei diesen Regeln fehlt, ist:
1. Die Differenzierung über die Ziel-IP-Adressen der beiden PREROUTING-Regeln.
2. die Berücksichtigung der Antwortpakete von den HTTP-Servern in der FORWARD-Chain.
3. evtl. die Umschreibung der Absenderadresse durch SNAT auf dem NAT-Gateway, soweit die beiden HTTP-Server nicht über eine Default-Route über das Gateway verfügen und das NAT-Gateway kein Masquerading macht.
4. Der Paketfilter "sieht" immer die realen IP-Adressen von Quelle und Ziel, sprich die Tabelle "filter" sitzt genau zwischen der PREROUTING- und POSTROUTING-Chain.

Die benötigten Regeln wären somit:

iptables -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.1 --sport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 -d 10.100.199.1 --dport 80 \
-j DNAT --to 192.168.0.1:80
iptables -t nat -A POSTROUTING -p tcp -i eth0 -d 10.100.199.1 --dport 80 \
-j SNAT --to <IP-Adresse des NAT-Routers>

iptables -A FORWARD -p tcp -d 192.168.0.1 --dport 8080 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.1 --sport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 -d 10.100.199.2 --dport 80 \
-j DNAT --to 192.168.0.1:8080
iptables -t nat -A POSTROUTING -p tcp -i eth0 -d 10.100.199.2 --dport 80 \
-j SNAT --to <IP-Adresse des NAT-Routers>


PS: Noch schöner wäre es natürlich, wenn Du in der filter-Tabelle Connection-Tracking benutzen würdest (-m state -state ...).

Harry