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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Private Adresse | eine Adresse, die im Internet nie geroutet wird | 10.0.0.2 |
| Gateway | der Router zwischen einem inneren Netz und der Außenwelt | |
| NAT | Network Address Translation: Adressen in einem Paket umschreiben | |
| Masquerade | NAT mit der eigenen äußeren Adresse des Gateways | |
| Übersetzungstabelle | das Gedächtnis des Gateways, welche Verbindung zu welchem inneren Host gehört | |
| Portweiterleitung | eine 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
| Block | Adressen | Oft genutzt für |
|---|---|---|
| 10.0.0.0/8 | 16 Millionen | Große Organisationen |
| 172.16.0.0/12 | 1 Million | Mittlere Netze |
| 192.168.0.0/16 | 65 Tausend | Zuhause und kleine Büros |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die drei Maschinen kennenlernen
netlab statusHier 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
sudo ip netns exec srv ip routeHier 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
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
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
| Schritt | Quelle | Ziel |
|---|---|---|
| Verlässt den Laptop | 10.0.0.2:41574 | 198.51.100.7:443 |
| Verlässt das Gateway | 203.0.113.1:50001 | 198.51.100.7:443 |
| Antwort erreicht das Gateway | 198.51.100.7:443 | 203.0.113.1:50001 |
| Antwort erreicht den Laptop | 198.51.100.7:443 | 10.0.0.2:41574 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Das Gedächtnis des Gateways lesen
sudo ip netns exec gw conntrack -LHier 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 nach | Das Gateway sendet an | Warum |
|---|---|---|
| Gateway-Adresse, Port 8080 | 10.0.0.2, Port 80 | Die Webseite des Ladens |
| Gateway-Adresse, Port 2222 | 10.0.0.9, Port 22 | Fernzugriff auf einen Server |
| Gateway-Adresse, Port 9999 | Nirgends hin | Keine Regel: Die Anfrage wird verworfen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Regeln des Gateways lesen
sudo ip netns exec gw nft list rulesetHier 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.