This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Wie funktioniert NAT genau?

Ich hab mich gefragt wie NAT im Detail funktioniert.

NAT arbeitet bekanntlich auf Layer 3 und ändert die IP Adressen pro Paket.

Folgendes Szenario:
2 Rechner im privaten Adressbereich - 1 Router - 1 Server im Internet

Ich sende von einem Rechner mit der IP 192.168.2.100 ein HTTP Request z.B.: google.de.
Der Router ersetzt die IP Adressen und liefert die Antwort zurück.

Da ein Router bzw. NAT nur auf Layer 3 arbeitet stellt sich mir folgende Frage:
Woher weiß der Router, dass das Paket für den Rechner mit IP 192.168.2.100 bestimmt ist und nicht für den zweiten Rechner mit IP 192.168.2.102?

(Wenn ich über 192.168.2.102 auch eine HTTP anfrage stellt, kann ich den Verkehr von dem Rechner 192.168.2.100 nicht mitlesen!)

Hierzu noch ein Screenshot von Wireshark:
Imageshack - wiresharkhttp.jpg

Meine Vermutung: 
Die Zuordnung auf einen der beiden Rechner funktioniert über Ports. Mir ist aufgefallen, dass pro HTTP Paket, welches einer der beiden Rechner rausschickt, ein scheinbar zufälliger Port ausgewählt wird. (s. Screenshot - TCP Source Port)

________________________________________________

Der gleiche Test mit Ping. (ICMP)
Ich pinge von beiden Rechnern google.de an.

Ich überwache den Verkehr wieder mit Wireshark von einem der Rechner.
Hier fällt folgendes auf:
Imageshack - wiresharkicmp.png

Die Meldung "Destination Unreachable" erscheint und die IP Adresse vom 2ten Rechner wird gezeigt. Was ist da denn los?

Kann mir jemand erklären wie es genau funktioniert und ob meine Vermutung stimmt? Danke für eure Antwort im Vorraus.


This thread was automatically locked due to age.
Parents Reply Children
  • Bei der Verarbeitung im Router wird das Paket in abgeänderter Form weitergeleitet: Der Router ermittelt anhand der Empfänger-IP-Adresse den nächsten Router, ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um: Es erhält nun abweichend die MAC-Adresse des nächsten Routers, die IP-Adresse des Empfängers (170.0.0.1), Ziel-Port 23 sowie die öffentliche MAC- und IP-Adresse des Source-NAT-Routers (205.0.0.2), einen gerade freien Absender-Port aus dem Reservoir des Routers (hier 4806) und den Nutzdaten, die gleich bleiben. Diese Zuordnung der ursprünglichen Absenderadresse und des Ports (192.168.0.4:1001) zum jetzt enthaltenen Adress-Tupel (205.0.0.2:4806) wird im Router solange gespeichert, bis die Telnet-Sitzung abläuft oder beendet wird. Bei NAT wird das Paket auf Schicht 3 (IP) also deutlich verändert.

    Quelle: Network Address Translation

    Ein Router arbeitet auf Layer 3. (s. http://de.wikipedia.org/wiki/Router)
    Die Ports sind im TCP/UDP Header definiert und liegen auf Layer 4.

    Warum kann der Router die Ports ändern, obwohl er doch nur auf Layer 3 arbeitet?
  • Hallo,

    NAT wird zum Maskieren der Privaten IP-Adressen benutzt, um dieses zu ermöglichen werden dem IP Packet dynamisch Ports zugwiesen. Diese Verbindungen werden in der ConnTrack Table gespeichert, sodass der Router/Firewall diese Packete später auch wieder zuordnen kann. Außerdem arbeitet NAT eigentlich zwischen Layer 3 und 4 . Layer 3 ist ja normalerweise der Network Layer mit dem IP Protokoll, erst auf Layer 4 kommen TCP/UDP dazu.
    Meine Meinung dazu ist, das NAT genzlich auf Layer 3 arbeitet, aber dabei Layer 4 nutzt. Eine strikte Trennung ist meiner Meinung nach bei NAT nicht möglich.

    Gruß Michael