Forum: PC Hard- und Software Frage zu Netzwerkkommunikation


von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Hallo Leute,

ich habe da mal eine verstaendnis Frage zum Thema Netzwerkkommunikation.

Folgendes Szenario:
1
+------+     +----------+     +----------+     +----------+     +------+
2
|      |     |          |     |          |     |          |     |      |
3
| PC A |<===>| Router A |<===>| Internet |<===>| Router B |<===>| PC B |
4
|      |     |          |     |          |     |          |     |      |
5
+------+     +----------+     +----------+     +----------+     +------+
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

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

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".

von Peter II (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

> richtig als kann man ohne schmutzte Tricks nichts an PC-B senden.

korrektur:

richtig, also kann man nichts ohne schmutzte Tricks an PC-B senden.

von Bernd K. (prof7bit)


Lesenswert?

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)"

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Bernd K. (prof7bit)


Lesenswert?

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.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

> "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 :-)

von Oliver S. (phetty)


Lesenswert?

Peter II schrieb:
> richtig, also kann man nichts ohne schmutzte Tricks an PC-B senden.

Der schmutzige Trick nennt sich IPv6.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Oliver Stellebaum schrieb:
> Der schmutzige Trick nennt sich IPv6.
Magst du das vielleicht naeher erlaeutern?

von Oliver S. (phetty)


Lesenswert?

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 |
+------+     +----------+     +----------+     +----------+     +------+

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

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?

von Peter II (Gast)


Lesenswert?

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.

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Ok, danke fuer die Erklaerung. :)

von Oliver S. (phetty)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.