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@velt.de -- 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!