Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

NAT und Ports: viele Geräte, eine Adresse

Nach dieser Lektion: Ich kann erklären, wie viele Geräte sich eine Adresse teilen.

Lektion, 45 Min.6 BefehleNAT-Gateway-Lab: Masquerading und Portweiterleitung mit nftables im Browser

Warum alle Geräte zu Hause eine Adresse teilen

NAT (Network Address Translation) lässt viele Geräte mit privaten Adressen über eine einzige öffentliche Adresse ins Internet gehen. Ohne NAT wären die IPv4-Adressen längst aufgebraucht.

Dein Handy, dein Laptop und der Fernseher teilen sich zu Hause eine Adresse. Heute siehst du, woran der Router erkennt, welche Antwort für wen ist.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie viele Geräte sich eine Adresse teilen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
NATder Router tauscht private Adressen gegen die öffentliche aus
Porteine Nummer, die ein Programm auf einem Gerät benennt443
NAT-Tabelledie Liste, die zeigt, welche Antwort zu welchem Gerät gehört
Portweiterleitungeine feste Regel, die Anfragen von außen an ein Gerät drinnen schickt
Gatewayder Router zwischen privatem Netz und Internet

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Bevor du anfängst

Notiz

Dies ist wieder ein anderes Lab. Drück oben in der Leiste auf Lab starten und warte, bis die Maschine läuft. Im Lab stehen drei Maschinen: lan ist ein Gerät im privaten Netz, gw ist das Gateway, srv ist ein Server im Internet.

Das Problem: private Adressen kommen nicht zurück

Ein Gerät mit der Adresse 10.0.0.2 schickt eine Anfrage an einen Server im Internet. Der Server soll antworten, aber 10.0.0.2 gibt es dort nicht. Die Antwort würde ins Leere gehen.

Darum tauscht das Gateway beim Hinausgehen die private Adresse gegen seine öffentliche aus. Das ist NAT. Der Server schickt die Antwort an das Gateway.

Die drei Maschinen des Labs auflisten

Befehl
netlab status

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die private Adresse von lan lesen

Befehl
sudo ip netns exec lan ip -br addr

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die zwei Adressen des Gateways lesen

Befehl
sudo ip netns exec gw ip -br addr

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Adressen im Lab

MaschineNetzAdresse
lanprivat10.0.0.2
gw innenprivat10.0.0.1
gw außenInternet (Dokumentationsbereich)203.0.113.1
srvInternet (Dokumentationsbereich)203.0.113.2

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ports unterscheiden die Gespräche

Ein Gerät führt viele Gespräche gleichzeitig: Webseite, Musik, Chat. Jedes hat eine Nummer, den Port. Der Browser hört nicht auf Port 443, er schickt dorthin und benutzt selbst eine zufällige Nummer.

Das Gateway merkt sich für jedes Gespräch ein Paar: privates Gerät und Port gegen eigene öffentliche Portnummer.

Beispiel: eine NAT-Tabelle mit drei Gesprächen

PrivatAußen (Gateway)Ziel
10.0.0.2:51000203.0.113.1:40000203.0.113.2:8000
10.0.0.2:51001203.0.113.1:40001203.0.113.2:8000
10.0.0.3:51000203.0.113.1:40002203.0.113.2:8000

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die Antwort findet ihren Weg über den Port

Die Antwort kommt an 203.0.113.1:40002 an. Das Gateway schaut in die Tabelle: 40002 gehört zu 10.0.0.3:51000. Es tauscht die Adresse zurück und reicht das Paket weiter.

Die Tabelle sieht den Unterschied zwischen zwei Geräten, die beide den Port 51000 benutzen. Die Ports außen sind eindeutig.

Die Verbindungen ansehen, die das Gateway sich merkt

Befehl
sudo ip netns exec gw conntrack -L

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, NAT sei eine Firewall und schütze darum jedes Gerät. NAT ändert nur Adressen. Dass von außen nichts hineinkommt, liegt daran, dass es keine Tabellenzeile für Anfragen von außen gibt. Eine Weiterleitung kann diese Lücke aufmachen.

Portweiterleitung öffnet einen Weg von außen

Du willst einen Server im Heimnetz von außen erreichen, etwa ein Spiel mit Freunden. Von außen gibt es keine Tabellenzeile dafür.

Mit einer Portweiterleitung sagst du dem Gateway fest: Alles, was auf Port 8080 ankommt, geht an 10.0.0.2 auf Port 80. Das gilt nur für diesen einen Port, alles andere bleibt zu.

Die Regeln lesen, mit denen das Gateway startet

Befehl
sudo ip netns exec gw nft list ruleset

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Anfrage von lan an srv schicken

Befehl
sudo ip netns exec lan curl --noproxy '*' -s -m 3 http://203.0.113.2:8000/

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Weiterführend: was bei zu vielen Gesprächen passiert

Ein Port ist eine Zahl bis 65 535. Das Gateway hat also höchstens so viele Gespräche gleichzeitig nach draußen. Die meisten Netze brauchen weit weniger.

Rechne nach: Wenn jedes Gerät 100 Gespräche offen hält, wie viele Geräte passen dann etwa hinter eine einzige Adresse? Es sind rund 655.

Über dieses Lab und seinen Quellcode: NAT-Gateway-Lab: Masquerading und Portweiterleitung mit nftables im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.