[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: iptables - Port Forwarding



Am 25.02.2010 21:51, Mike Dietrich schrieb:
> Hallo,
> 
> hab schon einiges gelesen, aber so richtig komme ich nicht dahinter.
> Ich möchte eine Verbindung von UltraVNC SC aus dem Internet auf einen
> Client im LAN weiterleiten.
> 
> Derzeit mache ich nur NAT und blocke NEW und INVALID Pakete:
> 
> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Ausgehend maskierst du hiermit die Pakete (NAT).

> iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP

Du dropst Pakete aus dem Internet die den Router direkt passieren,
welche neu und invalid sind. Wenn du auf dem Router (nicht dahiner!)
nichts anbietest, kannst du einfach

iptables -P INPUT DROP

setzen.

(mit DROP verzögerst du etwas die Verbindung, die Gegenstelle wird
weitere Versuche unternehmen. Ein REJECT beendet die Verbindung sofort)

> iptables -A FORWARD -i ppp0 0 -m state --state NEW,INVALID -j DROP

Tippfehler 0 zuviel. Besser ist hier, die Policy für FORWARD auch
auf DROP zu setzen mit ... und dann nur die eine Forward regel
greifen zu lassen.

iptables -P FORWARD DROP

> Die Regeln fürs Port Forward hab ich so:
> 
> iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 12345 -j DNAT --to
> 192.168.1.28

Du hast ein Paket von externe-IP, welches den Router an Port 12345
erreicht. Jetzt leitest du weiter mit DNAT und der Router nattet -
das Paket sieht also nun so aus:

Quelle: externer Host Ziel: 192.168.1.28

Jetzt rate mal, wo 192.168.1.28 die Antwort-Pakete hinschickt? Die
gehen an den externen Host, der sich wundert, denn er hat eigentlich
eine Verbindung mit dem Router angefragt und verwirft sie.

Hier musst du zusätzlich definieren, dass die Antwortpakete an den
Router gehen, welcher sie weiterschickt und nicht an den externen Host.

Wichtig, ip_forward aktivieren!

iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.128 --dport 12345
-j SNAT --to-source ROUTER-IP

> iptables -A FORWARD -i ppp0 -o eth0 -p --dport 12345 -d 192.168.1.28 -j
> ACCEPT

Hier fehlt -p tcp also korrekt:

iptables -A FORWARD -i ppp0 -o eth0 -p tcp --dport 12345 -d
192.168.1.28 -j ACCEPT

Stefan
-- 
Stefan Bauer -----------------------------------------
PGP: E80A 50D5 2D46 341C A887 F05D 5C81 5858 DCEF 8C34
-------- plzk.de - Linux - because it works ----------


Reply to: