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

Eine öffentliche Adresse gemeinsam nutzen (NAT)

Nach dieser Lektion: Ich kann erklären, wie ein privater Host per NAT ins Internet kommt.

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

Vierzig Laptops, eine öffentliche Adresse

Eine Firma hat vierzig Laptops und eine Adresse von ihrem Anbieter. Alle vierzig surfen gleichzeitig.

Die Webserver sehen eine Adresse. Trotzdem findet jede Antwort den richtigen Laptop.

Der Router in der Mitte führt eine Tabelle, wer was angefragt hat. Diese Lektion öffnet sie.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie ein privater Host per NAT ins Internet kommt.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Private Adresseeine Adresse, die im Internet nie geroutet wird10.0.0.2
Gatewayder Router zwischen einem inneren Netz und der Außenwelt
NATNetwork Address Translation: Adressen in einem Paket umschreiben
MasqueradeNAT mit der eigenen äußeren Adresse des Gateways
Übersetzungstabelledas Gedächtnis des Gateways, welche Verbindung zu welchem inneren Host gehört
Portweiterleitungeine Regel, die Anfragen von außen auf einem Port an einen inneren Host schickt

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

Zu privaten Adressen führt keine Route zurück

Drei Blöcke sind für den privaten Gebrauch reserviert. Jedes Zuhause und jedes Büro nutzt sie erneut. Kein Router im Internet kennt eine Route dorthin.

Eine Anfrage von einer privaten Adresse erreicht einen Server. Die Antwort findet nicht nach Hause.

Ein Beispiel: die privaten Blöcke

BlockAdressenOft genutzt für
10.0.0.0/816 MillionenGroße Organisationen
172.16.0.0/121 MillionMittlere Netze
192.168.0.0/1665 TausendZuhause und kleine Büros

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

Die drei Maschinen kennenlernen

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.

Den äußeren Server fragen, was er kennt

Befehl
sudo ip netns exec srv ip route

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 versuchen, die nicht beantwortet werden kann

Befehl
sudo ip netns exec lan curl --noproxy '*' -sS -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.

Denselben Server vom Gateway aus fragen

Befehl
sudo ip netns exec gw curl --noproxy '*' -sS -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.

Warum eine Anfrage keine Antwort bekommt

Der äußere Server hat eine einzige Route, für sein eigenes Kabel. Für 10.0.0.0/24 hat er keine. Eine Antwort an 10.0.0.2 kann nirgends hin.

Der curl von lan wartet drei Sekunden und gibt Connection timed out aus. Die Anfrage ging hinaus, und nichts kam zurück.

Der curl von gw bekommt sofort eine Antwort: outside-server: you are 203.0.113.1. Diese Adresse liegt am Kabel des Servers selbst, also findet die Antwort ihren Weg.

Masquerade schreibt die Quelle um

Auf dem Weg nach außen tauscht das Gateway die private Quelladresse gegen seine eigene äußere Adresse. Den Quellport behält es, solange keine andere Verbindung ihn nutzt. Sonst wählt es einen freien, wie in der Tabelle unten.

Den Tausch schreibt es in seine Übersetzungstabelle. Kommt die Antwort zurück, sucht das Gateway den Port und tauscht die Adresse zurück.

Ein Beispiel: eine Anfrage und ihre Antwort

SchrittQuelleZiel
Verlässt den Laptop10.0.0.2:41574198.51.100.7:443
Verlässt das Gateway203.0.113.1:50001198.51.100.7:443
Antwort erreicht das Gateway198.51.100.7:443203.0.113.1:50001
Antwort erreicht den Laptop198.51.100.7:44310.0.0.2:41574

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

Das Gedächtnis des Gateways lesen

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.

Was das Gateway sich merkt

Jede Zeile ist eine Verbindung. Nach den ersten Adressen folgen dieselben Adressen umgekehrt: die Antwort, die das Gateway erwartet.

Die Anfrage von lan zeigt SYN_SENT und [UNREPLIED]: Sie wird verfolgt, aber keine Antwort kam. Die eigene Anfrage des Gateways zeigt TIME_WAIT und [ASSURED]: Sie wurde beantwortet und geschlossen.

Einträge halten etwa zwei Minuten, dann sagt der Befehl 0 flow entries. Mit dieser Verfolgung ordnet ein Gateway Antworten ihren Anfragen zu.

Eine Portweiterleitung lässt die Außenwelt herein

Masquerade bedient Anfragen, die innen beginnen. Was, wenn die Außenwelt eine Webseite erreichen soll, die innen liegt?

Eine Portweiterleitung sagt: Eine Anfrage an die äußere Adresse des Gateways auf Port 8080 geht an einen inneren Host auf Port 80.

Das Gateway schreibt das Ziel um, und die Tabelle bringt die Antwort zurück.

Ein Beispiel: zwei Weiterleitungen

Außen fragt nachDas Gateway sendet anWarum
Gateway-Adresse, Port 808010.0.0.2, Port 80Die Webseite des Ladens
Gateway-Adresse, Port 222210.0.0.9, Port 22Fernzugriff auf einen Server
Gateway-Adresse, Port 9999Nirgends hinKeine Regel: Die Anfrage wird verworfen

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

Die Regeln des Gateways lesen

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.

Ein häufiger Fehler

Warnung

Viele halten NAT für eine Sicherheitsfunktion. NAT schreibt nur Adressen um. Die Firewall-Regeln entscheiden, was erlaubt ist. Im obigen Regelsatz hält die Forward-Kette mit der Policy drop die Außenwelt draußen.

Weiterführend: eine volle Tabelle lesen

Sobald Ihre Masquerade-Regel im Lab funktioniert, führen Sie den curl von lan dreimal aus. Lassen Sie danach conntrack -L in gw laufen.

Notieren Sie für jeden Eintrag den inneren Quellport und den Port, an den die Antwort in der umgekehrten Hälfte geht. Sagen Sie dann, welche Teile des Eintrags das Gateway braucht, um jede Antwort an die richtige Stelle zu schicken.

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