Mal angenommen auf PC A laeuft eine Software, die Daten über das
Internet zu PC B senden soll. Weiterhin wird angenommen das die
oeffentlichen IP-Adressen der Router statisch sind, sich also nicht
aendern.(zur einfacheren betrachtung)
An die IP-Adresse von PC B kann man nicht senden, da das ja die
"private" IP-Adresse, und vom Internet aus nicht sichtbar ist. Die
einzige Adresse die man erreichen kann, ist die oeffentliche IP-Adresse
von Router B.
Wenn man jetzt ein Datenpaket, das für PC B bestimmt ist, an Router B
sendet, woher weiss Router B, dass er das Datenpaket weiterleiten soll,
weil das Paket für PC B und nicht fuer ihn selber ist?
Irgendwie fehlt mir an der Stelle dieser "Aha"-Effekt. :-/
Um das auf die "echte" Welt zu uebertragen, stell ich mir das so vor:
Es gibt ein Haus (der Router), da koennen mehrere Leute (PC B) drin
wohnen. Das Haus hat die Adresse 31 (oeffentliche IP-Adresse des Router
B), und nur einen Briefkasten wo alle Nachrichten drin landen. Wer oder
wie viele Leute in dem Haus wohnen, weiss man nicht, man kann also nur
einen Brief an Haus 31 senden. In dem Haus gibt es einen Brieftraeger,
der die Nachrichten verteilt. Woher weiss der Brieftraeger jetzt, das
die Nachricht nicht fuer ihn selbst ist, sondern fuer einen Bewohner des
Hauses?
Soweit ich das verstehe, wird einer Nachricht ja ein Header mitgegeben,
wo sachen wie Absender IP, Absender MAC, Empfaenger IP, Empfaenger MAC
usw, drin steht. Vom Prinzip wuerde ich sagen, man koennte die
Grundnachricht nehmen, schreibt in den Header: Empfaenger=PC B
Dann verpackt man die Nachricht nochmal und schreibt auf den aeusseren
Header: Empfaenger=Router B
Dann koennte Router B die Nachricht auspacken und sieht: Aha, das Ding
ist fuer PC B...
Ich glaube aber dass das so nicht passiert, denn es besteht ja die
limitierung, das Netzwerkpakete einer maximalen groesse unterliegen,
waren glaube ich 1518 Byte. Das bedeutet das man eine Nachricht nicht
"beliebig" oft einpacken kann.
Kann mir da mal bitte jemand etwas Erleuchtung schenken, wie das
wirklich von statten geht? :-/
Gruesse
--
"ASCII-Art" bitte in [ pre ] [ /pre ] einschließen
-rufus
Wenn immer A die Verbindung aufbaut, dann musst du dem Router B
einkonfigurieren, dass alles an Port 12345 an PC B weitergeleitet werden
soll. Nennt sich "port forwarding".
Kaj G. schrieb:> Mal angenommen auf PC A laeuft eine Software, die Daten über das> Internet zu PC B senden soll. Weiterhin wird angenommen das die> oeffentlichen IP-Adressen der Router statisch sind, sich also nicht> aendern.(zur einfacheren betrachtung)> An die IP-Adresse von PC B kann man nicht senden, da das ja die> "private" IP-Adresse, und vom Internet aus nicht sichtbar ist. Die> einzige Adresse die man erreichen kann, ist die oeffentliche IP-Adresse> von Router B.
richtig als kann man ohne schmutzte Tricks nichts an PC-B senden.
Server im Internet hängen ja nicht an so einen Router.
> Dann verpackt man die Nachricht nochmal und schreibt auf den aeusseren> Header: Empfaenger=Router B> Dann koennte Router B die Nachricht auspacken und sieht: Aha, das Ding> ist fuer PC B...
doch, das nennt sich dann VPN. (z.b. über PPP, IPsec, OpenVPN )
> Ich glaube aber dass das so nicht passiert, denn es besteht ja die> limitierung, das Netzwerkpakete einer maximalen groesse unterliegen,> waren glaube ich 1518 Byte. Das bedeutet das man eine Nachricht nicht> "beliebig" oft einpacken kann.
dann werden einfach 2 Pakete genommen, das kein Problem.
Der Router trackt die von innen nach außen aufgemachten TCP-Verbindungen
in einer Tabelle, so daß er anhand der Port-Nummer stets weiß wohin er
die Antwortpakete aus dem Internet intern schicken soll.
Wenn ein Rechner im privaten Netz ein Paket nach außen schickt so
erscheint es von außen genau so als ob es der Router selbst gewesen
wäre (Der Router ändert den Paketheader und setzt sich selbst als
Absender ein, NAT). Da der Router sich das jedoch gemerkt hat kann er
das nun an ihn adressierte Antwortpaket (bzw alle zu dieser
TCP-Verbindung gehörenden hereinkommenden Pakete) umgehend wieder
passend umlabeln (NAT) und nach innen hin passend weiterleiten.
Wenn Du dauerhaft auf einem bestimmten Port erreichbar sein willst
kannst Du auch permanente Weiterleitungen in diese Tabelle eintragen,
die bleiben permanent erhalten und verschwinden nicht wieder nach
Nichtbenutzung. Eingehende Pakete werden dann an die IP-Adresse des
Routers geschickt an einen bestimmten Port und der Router tauscht die
Adresse gemäß den Angaben in obiger Tabelle aus (sofern ein
entsprechender Eintrag existiert) und leitet das umadressierte Paket
nach innen weiter.
Stichworte zum Weiterlesen: "Network Address Translation (NAT)"
Kaj G. schrieb:> Wenn man jetzt ein Datenpaket, das für PC B bestimmt ist, an Router B> sendet, woher weiss Router B, dass er das Datenpaket weiterleiten soll,> weil das Paket für PC B und nicht fuer ihn selber ist?
Das geschieht durch die Angabe der Portnummer. Das ist eine Art
"Sub-Adressierung" und wird im Rahmen der Portfreigaben auf dem Router
konfiguriert.
Soll beispielsweise auf PC B ein Webserver lauschen, so ist vom Router B
eingehender Netzwerkverkehr für Port 80 (dem http-Port) an PC B
durchzureichen. Das muss entsprechend konfiguriert werden.
In der Gegenrichtung (Antwort auf eingehenden Netzwerkverkehr) will nun
PC B ein Paket an PC A absenden. In diesem Fall wird die von Bernd
erwähnte routerinterne Portverwaltung aktiv; Router A weiß, daß PC A
eine Netzwerkverbindung über Router B aufgebaut hat, und kann daher die
von PC B über Router B zurückgesandten Daten an PC A weiterleiten, ohne
daß explizit eine Portfreigabe in Router A eingerichtet ist.
Dieser Automatismus aber wird nur bei Antworten auf ausgehenden
Netzwerkverkehr aktiv, nie unaufgefordert bei eingehendem
Netzwerkverkehr.
Rufus Τ. Firefly schrieb:> Dieser Automatismus aber wird nur bei Antworten auf ausgehenden> Netzwerkverkehr aktiv, nie unaufgefordert bei eingehendem> Netzwerkverkehr.
...kann auch gezielt genutzt werden für verschiedene "hole
punching"-Techniken um gezielt von innen Ports zu "öffnen" wenn zwei
Hosts die beide jeweils hinter einem NAT-Router sitzen spontan direkt
miteinander kommunizieren wollen. Eine gewisse marktführende
Videotelefonie-Software war ganz erstaunlich erfolgreich in der
Anwendung solcher Techniken.
> "ASCII-Art" bitte in [ pre ] [ /pre ] einschließen> -rufus
Danke fuer den Hinweis Rufus :)
Ich danke euch fuer die Erklaerungen, jetzt ist das gane schon etwas
klarer geworden. Dann werd ich mir mal NAT, port forwarding und VPN mal
naeher ansehen.
Vielen Dank :-)
Wenn man IPv6 verwendet kann der Router wieder Router sein und nicht
mehr nur NAT-Box.
Das "interne" Gerät hat dann IPv6. Je nach Router muss man noch eine
Freigabe einrichten da man meist nicht alle Ports von aussen erreichbar
haben möchte.
Um das Beispiel zu nehmen:
+------+ +----------+ +----------+ +----------+ +------+
| | | | | | | | | |
| PC A |<===>| Router A |<===>| Internet |<===>| Router B |<===>| PC B |
| ipv6 | | /57-Netz | | | |/59-Netz | | ipv6 |
+------+ +----------+ +----------+ +----------+ +------+
Aber was bei IPv4 passiert ist doch eigentlich ein Sicherheitsgewinn:
Man kan von aussen nicht sehen welche oder wie viele Rechner hinter
einem Router stecken. Ausserdem ist ein Rechner nicht direkt erreichbar.
Der Router fungiert als zusaetzliche Huerde fuer Angreifer. Das ist aus
meiner Sicht ein grosses Sicherhets plus.
Nach deiner Formulierung wird das mit IPv6 ausgehebelt, da ein Rechner
jetzt direkt erreichbar ist.
Ist das so, oder verstehe ich das falsch?
Kaj G. schrieb:> Nach deiner Formulierung wird das mit IPv6 ausgehebelt, da ein Rechner> jetzt direkt erreichbar ist.> Ist das so, oder verstehe ich das falsch?
ja und nein. Die Sicherheit von NAT ist nicht wirklich sicher. Sie ist
mehr oder weniger zufällig, weil der Router gar nicht weiß wohin zu
welchen PC er es schicken soll. Es kann aber genauso gut jemand anders
Implementieren der einfach Sagt wenn du ein PC am Router hängt, dann
schicke ich alles zu dem PC.
Bei IPv6 wird sich einfach die Aufgabe vom Router etwas ändern, aber
muss dann kein NAT mehr machen, sondern übernimmt einfach die Aufgabe
eine Firewall. Es lässt also nur Antworten auf anfragen nach innen
durch. Damit hat man die gleiche Sicherheit.
Aber man den hat Vorteil, das man (wenn man will) auch die PC intern
erreichen kann. Portforwarding ist und bleibt eine Krücke. Es macht z.b.
bei FTP Probleme.
Kaj G. schrieb:> Nach deiner Formulierung wird das mit IPv6 ausgehebelt, da ein Rechner> jetzt direkt erreichbar ist.
Wenn man den Rechner komplett freigibt, ja.
In meinem Router (fritzbox) kann ich aber einzelne Port(Bereiche)
freigeben.
Im Gegensatz zu ip4 macht man eben kein NAT mehr. Es wird also eine
IPv6-IP freigeben, ich würde es eher für "routing freischalten" nennen.
Aber eben auch auf Portebene.
Da jetzt jedes Gerät im Heimnetz eine eigene IPv6-IP hat kann man bei
jedem Gerät den passenden Port freigeben, Port 22 zum Beispiel.
Der lokale Anteil der Adresse ist meist aus der MAC-Adresse des Geräts
gebildet. Um also alle potentiellen Adressen hinter Deinem Router zu
scannen bräuchte man auch viel Zeit.