Re: nat pat usw

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Sven Velt
Date:  
To: list
Subject: Re: nat pat usw
Moinsen!

Sebastian Harl wrote:
> On Fri, Apr 03, 2009 at 12:54:11AM +0200, Marc Zimmermann wrote:
> > 1.nach erfolgloser suche bei google bleibt bei mir eine frage.
> > Bei port-forwarding kann ich immer nur auf einen rechner umleiten,
> > geht es irgendwie das ich das auf mehrere abbilden kann z.b. bei
> > identd oder online spielen wie wc3.
>
> Also mit reinem Port-Forwarding geht das afaik nicht - wie wuerdest du
> dir das denn vorstellen? Soll aus einer Anfrage zwei gemacht werden? ...
> per Multicast weitergeschickt werden? ...
>
> Imho macht sowas nur in einem Load-Balancing Setup Sinn. Wenn du sowas
> willst, dann schau dir z.B. IPVS (und die abertausend Frontends dazu)
> an.


Alternativ: Wenn es um HTTP(S) geht, wäre es noch eine Möglichkeit einen
"Reverse-Proxy" auf dem Gateway aufzusetzen und je nach zugegriffenem
Pfad entscheiden zu lassen, wohin die Reise in's interne Netz gehen
soll.

Prolem: Für jedes Protokoll braucht man einen Proxy mit passender
Protokollunterstützung.

> > 2.wenn jetzt zwei rechner aus den lokalen netz auf auf den selben port
> > und ip eines externen zugreifen wie hält das der router auseinander
> > z.b. bei einen irc server oder amdern?
>
> Was du hier hast ist sog. Masquarading in Verbindung mit (Source-)NAT,
> d.h. dein Router ersetzt deine privaten IPs und ggf. Ports durch andere,
> bevor das Paket ins Internet freigelassen wird. Diese Abbildung merkt
> sich der Router. Das Ziel wird dabei natuerlich nicht angefasst. Am
> Rueckweg passiert dann genau der umgekehrte Weg (quasi Destination-NAT).
> Dafuer gibt's aber sicher _massig_ an Dokumentation online ... ;-)


Da bin ich mir gar nicht so sicher, ob's da so viel gibt - außer man
nimmt den Source als Doku ;-)

Beispiel:

Zugriff auf www.heise.de (193.99.144.85) Port 80 von 2 internen
Rechnern 192.168.1.3 und 192.168.1.7. Gateway soll die 192.168.1.1 sein.
IP auf dem DSL ist 83.171.161.18.

Jede TCP-Verbindung hat eine Quell-IP/Port und Ziel-IP/Port.

Fall 1: Unterschiedliche Quell-Ports

192.168.1.3:2023 -> 193.99.144.85:80
192.168.1.7:20042 -> 193.99.144.85:80

Masquerading auf dem Gateway macht daraus (und merkt sich für den
Rückweg zusätzlich die Information in Klammern):

(192.168.1.3:2023) 83.171.161.18:2023 -> 193.99.144.85:80
(192.168.1.7:20042) 83.171.161.18:20042 -> 193.99.144.85:80

Es kann also ganz einfach Unterschieden werden, wohin ein Paket muss.
Kommt's auf dem DSL auf Port 2023 rein, war's 192.168.1.3, Port 20042
geht nach 192.168.1.7.


Fall 2: Gleiche Quell-Ports (unwahrscheinlich, aber möglich)

192.168.1.3:1234 -> 193.99.144.85:80
192.168.1.7:1234 -> 193.99.144.85:80

Masquerading muss nun die Portnummer verändern:

(192.168.1.3:1234) 83.171.161.18:1234 -> 193.99.144.85:80
(192.168.1.7:1234) 83.171.161.18:*1235* -> 193.99.144.85:80


Wer's mal selber ausprobieren will und ein Linux auf seinem (DSL-)Router
hat:

Vorher auf dem DSL-Gateway:
root@dustpuppy:~# grep 172.22.0.16 /proc/net/ip_conntrack
root@dustpuppy:~#

Auf dem Client:
svelt@client:~ > telnet www.heise.de 80
[...]

Nachher auf dem DSL-Gateway [Leerzeile eingefügt]:
root@dustpuppy:~# grep 172.22.0.16 /proc/net/ip_conntrack
udp 17 0 src=172.22.0.16 dst=172.22.0.1 sport=1025 dport=53 packets=1 bytes=58 src=172.22.0.1 dst=172.22.0.16 sport=53 dport=1025 packets=1 bytes=200 mark=0 secmark=0 use=1

tcp 6 117 TIME_WAIT src=172.22.0.16 dst=193.99.144.85 sport=1027 dport=80 packets=43 bytes=2250 src=193.99.144.85 dst=83.171.161.182 sport=80 dport=1027 packets=55 bytes=71841 [ASSURED] mark=0 secmark=0 use=1

Preisfrage: Warum zwei Verbindungen? *g*


Das Verfahren funktioniert in geschätzten 99,999% aller Fälle. Nur wen
eine Software auf einen bestimmten Quell-Port besteht (warum auch immer
man das machen will[1]) gibt's dann Probleme.

Zum Abschluss sei noch zu sagen, dass ich mich vor einigen Jahren mal
intensiv damit auseinander gesetzt habe - es könnte sein, dass sich da
inzwischen was geändert hat, ich gehe aber nicht davon aus.

bye

Sven

PS: Wer das jetzt da oben nicht kapiert, der sollte IMHO keine
"Firewall" oder einen Paketfilter anfassen - sondern jemanden anrufen,
der sich mit sowas auskennt ;-)

[1] Ja, Serverdienste, Rechte, root, Port<1024 - I know, aber davon laufen
net mehrere *HINTER* einem NAT-Router

-- 
Leukämie     -> http://de.wikipedia.org/wiki/Leuk%C3%A4mie
Heilung      -> http://de.wikipedia.org/wiki/Knochenmark#Knochenmarkspende
Typisierung  -> http://www.knochenmarkspende.de/html/reg_akb.php
Warum&Fragen -> sven@???
-- 
Mailing-Liste der Linux User Schwabach (LUSC) e.V.
Vor und beim Posten bitte
        => http://lusc.de/List-Netiquette <=    und
        => http://lusc.de/List-Howto      <=    beachten. Danke!