PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables - simples Port Forwarding



onlineuser
16.03.13, 07:21
Hallo

ich hab folgendes Problem.

internes Netz 192.168.1.1/24 (Interface lan)
WAN Port zum nächsen Router 192.168.11.3 (Interface wan)

Nun möchte ich ein Port Forwarding von 192.168.1.1:5901 auf 192.168.11.3:5900

Wie sieht eine solche iptables Regel aus?

LG

Hitman
16.03.13, 09:21
iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --dport 5901 -j DNAT --to-dest 192.168.11.3:5900

onlineuser
16.03.13, 16:32
Ja so hab ich das auch schon versucht.

Aber wenn ich mit dem Client (192.168.1.5) versuche auf 192.168.1.1:5901 zu zugreifen, kommt die Anfrage nicht beim 192.168.11.3 auf Port 5900 raus.

Benötige ich noch eine weitere Regel?

Forwarding zwischen den Adapter ist aktiviert!

Ich brauch also eine Art Port Weiterleitung vom LAN ins WAN Netz, wobei das WAN wieder das LAN Netz des zweiten Routers ist.

onlineuser
16.03.13, 21:02
Mein Netzwerk ist ähnlich aufgebaut.

http://www.frozentux.net/iptables-tutorial/images/rc_DMZ_firewall.jpg

Laut dieser Skizze hat mein Server fürs LAN die 192.168.0.1. Der Client hat u.a. die IP 192.168.0.5.

Die Firewall hat ein Routing zwischen LAN und DMZ - hat mit dem alten Server schon funktioniert.
Nun hab ich den 192.168.0.1 erneuert und möchte ein Port Forwarding für den Client 192.168.0.5 mit iptables-Regeln einrichten.
Der 192.168.0.5 soll via 192.168.0.1:5901 auf die 192.168.1.2:5900 weitergeleitet werden.

Es liegt definitiv an den Regeln, denn mit dem alten Server (Windows Port Mapping mit CCProxy) funktioniert es problemlos.

Es scheint noch eine Forward-Regel zu fehlen, weil wenn ich mit


iptables -A FORWARD -j ACCEPT

am Ende funktioniert es.

Ja, Forwarding-Regel fehlte! :-)

onlineuser
16.03.13, 21:59
So funktionierts nun.


iptables -t nat -A PREROUTING -p tcp --dport 5901 -j DNAT --to-destination 192.168.11.3:5900
iptables -t nat -A POSTROUTING -p tcp --dport 5900 -j MASQUERADE
iptables -A FORWARD -p tcp -i lan -s 192.168.2.5 -o eth0 -d 192.168.1.1 --dport 5901 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 -s 192.168.1.1 -o lan -d 192.168.2.5 -j ACCEPT

Wozu benötigt man eigentlich die zweite Regel? Ohne Masqerade würde beim 192.168.1.1 die Anfrage mit der IP des Clients ankommen, oder? Und so wird die Client IP mit der WAN-IP ersetzt, oder?

Kann man hier noch etwas optimieren bzw. sicherer machen?

L00NIX
17.03.13, 11:25
Hi,

Das Netzwerk 192.168.11.0/24 ist nirgends erwähnt. Wo steht denn das?



Kann man hier noch etwas optimieren bzw. sicherer machen?

Sicherer geht immer, z.B. das unverschlüsselte VNC nicht ohne SSH-Tunnel zu nutzen.

Gruß
L00NIX

onlineuser
17.03.13, 12:34
Ok, das Netzwerk 11.0 ist wiederrum die DMZ vom nächsten Router.
Das Forwarding dafür macht jedoch ein anderer Router. Das Netz 11.0 ist über 1.1 erreichbar.

L00NIX
17.03.13, 13:00
Ok, das Netzwerk 11.0 ist wiederrum die DMZ vom nächsten Router.
Das Forwarding dafür macht jedoch ein anderer Router. Das Netz 11.0 ist über 1.1 erreichbar.

OK, solange der Router vom 11er-Netz auch eine korrekte Routingtabelle hat.

Grundsätzlich würde ich NAT (SNAT, DNAT, MASQERADING) sparsam verwenden, also nur, wenn bei einer Verbindung Pakete über das Internet müssen. Die internen Netzwerke sollten alle reine Routing-Beziehungen haben.

Das ist aber wenn ich es richtig verstanden habe so.

Was bei deinen NAT-Regeln etwas seltsam ist: Du verwendest keine Netzwerk-Interfaces, also wo der Datenverkehr reinkommt bzw. rausgeht. Damit werden alle Pakete an Port 5900 geNATet, egal wo sie herkommen und hingehen. Die NAT-Regeln greifen übrigens vor den FORWARD-Regeln.

Gruß
L00NIX

onlineuser
17.03.13, 19:15
Ja, befindet sich alles im "internen" Netz.

Mit reinem Routing müßte der VNC Server auf 192.168.11.3 (DMZ) jedoch die Antwortpakete an den 192.168.2.5 (LAN) zurücksenden, der kennt jedoch das 2.0er Netz nicht, weil es sich hinter dem 192.168.1.0 versteckt.

Oder verstehe ich da etwas falsch?