Der Laden hier, die Dateien dort
Eine Firma hat einen Laden in einer Stadt und ein Büro in einer anderen. Jeder Standort hat sein eigenes privates Netz. Der Laden braucht den Dateiserver im Büro.
Die einzige Verbindung ist das offene Internet. Ein Tunnel trägt den privaten Verkehr hindurch, so verpackt, dass niemand unterwegs mitlesen kann.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie ein Tunnel zwei Standorte verbindet.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Tunnel | privater Verkehr, in anderem Verkehr verpackt | |
| Schlüsselpaar | ein privater Schlüssel, den Sie behalten, und ein öffentlicher, den Sie teilen | |
| Peer | das Gerät am anderen Ende eines Tunnels | |
| Endpoint | die öffentliche Adresse und der Port, unter denen ein Peer erreichbar ist | 203.0.113.2:51820 |
| AllowedIPs | die Netze, die zu einem Peer gesendet und von ihm angenommen werden | |
| Handshake | der Austausch, der zeigt, dass beide Enden die richtigen Schlüssel haben |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Private Netze kreuzen das Internet nicht
Jeder Standort hat private Adressen. Das Internet hat keine Routen dorthin. Ein Paket von einem Standort zum anderen wird unterwegs verworfen.
Ein Tunnel löst das. Das Gateway am einen Standort steckt das ganze private Paket in ein neues Paket an das andere Gateway.
Das Internet sieht nur Verkehr zwischen den zwei Gateways.
Ein Beispiel: ein Paket, zwei Sichten
| Wo | Quelle | Ziel | Sichtbar |
|---|---|---|---|
| Im Laden | 192.168.50.5 | 192.168.60.9 | Klare Daten |
| Im Internet | 198.51.100.1 | 198.51.100.2 | Verschlüsselte Daten in UDP |
| Im Büro | 192.168.50.5 | 192.168.60.9 | Klare Daten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die zwei Standorte kennenlernen
wglab statusHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zum anderen Standort durchkommen wollen
sudo ip netns exec a1 ping -c 2 -W 1 10.2.0.2Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Routen des Gateways lesen
sudo ip netns exec gwA 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.
Was die Antworten sagen
Der erste Run listet vier Maschinen und ihre Adressen. Jedes Gateway hat eine zweite Adresse auf wan0, der Leitung, die das Internet darstellt.
Der Ping scheitert mit Destination Net Unreachable. Die Tabelle des Gateways hat zwei Zeilen, den eigenen Standort und die Internetleitung. Für den anderen Standort hat sie keine.
Jedes Gateway hat ein Schlüsselpaar
Jedes Gateway erzeugt ein Schlüsselpaar: einen privaten Schlüssel und einen öffentlichen, der daraus entsteht. Vom öffentlichen kann niemand auf den privaten zurückrechnen.
Der private Schlüssel bleibt auf seinem Gateway. Der öffentliche geht zum anderen Ende, auf beliebigem Weg, sogar per E-Mail.
Jedes Gateway führt das andere als Peer, benannt durch dessen öffentlichen Schlüssel.
Ein Beispiel: die Teile einer Konfiguration
| Zeile | Abschnitt | Was sie sagt |
|---|---|---|
| PrivateKey | Interface | Das eigene Geheimnis dieses Gateways |
| Address | Interface | Die Adresse dieses Endes im Tunnel |
| ListenPort | Interface | Der UDP-Port, auf dem es lauscht |
| PublicKey | Peer | Der öffentliche Schlüssel des anderen Gateways |
| AllowedIPs | Peer | Netze, die zu diesem Peer gehen |
| Endpoint | Peer | Wo der Peer im Internet zu finden ist |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Nach den vorhandenen Tunneln fragen
sudo ip netns exec gwA wg showHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Ordner für die Konfiguration ansehen
sudo ip netns exec gwA ls -ld /etc/wireguardHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Zeichen eines Wegwerfschlüssels zählen
wg genkey | wc -cHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was die drei Antworten sagen
Der erste Run gibt gar nichts aus. Es gibt noch keinen Tunnel und keine Schlüssel. Ein Befehl, der nichts findet, sagt oft nichts.
Der zweite Run beginnt mit drwx------. Nur root darf den Ordner öffnen. Das ist richtig, denn dort wird ein privater Schlüssel liegen.
Der dritte Run erzeugt einen privaten Schlüssel und zählt ihn, ohne ihn zu zeigen. Er gibt 45 aus: die 44 Zeichen des Schlüssels und den Zeilenumbruch danach.
Ein häufiger Fehler
Warnung
Viele glauben, auch der öffentliche Schlüssel sei geheim. Nur der private ist es. Den öffentlichen dürfen Sie frei teilen. Senden Sie nie den privaten, und lassen Sie die Datei, die ihn enthält, nur ihren Besitzer lesen.
AllowedIPs ist die Routenliste
Die Zeile AllowedIPs hat zwei Aufgaben. Sie nennt die Netze, die zu diesem Peer gesendet werden dürfen. Und wg-quick, das Werkzeug, das einen Tunnel startet, liest sie und legt daraus Routen in den Tunnel an.
Ein Paket vom Peer wird nur angenommen, wenn seine Quelle auf dieser Liste steht.
Ein Muster für einen Laden und ein Büro
# Das Gateway des Ladens. Andere Adressen als die des Labs.
[Interface]
PrivateKey = (privater Schlüssel des Laden-Gateways)
Address = 10.77.0.1/24
ListenPort = 51820
[Peer]
PublicKey = (öffentlicher Schlüssel des Büro-Gateways)
AllowedIPs = 192.168.60.0/24
Endpoint = 198.51.100.2:51820Der Handshake beweist die Schlüssel
Braucht das erste Paket den Tunnel, führen die zwei Gateways einen Handshake durch. Jedes beweist, dass es den privaten Schlüssel zum erwarteten öffentlichen hat.
Danach fließen Pakete, und der Handshake wiederholt sich alle paar Minuten, solange Verkehr da ist. Ein Tunnel ohne Handshake trägt nichts.
Weiterführend: den Handshake absichtlich brechen
Sobald Ihr Tunnel läuft, führen Sie sudo ip netns exec gwA wg show aus, während a1 b1 anpingt. Notieren Sie die Zähler für transfer.
Ändern Sie dann einen Buchstaben des PublicKey in der wg0.conf von gwB, führen Sie wglab down und wglab up aus und pingen Sie erneut. Was sagt wg show jetzt über den letzten Handshake? Stellen Sie den Schlüssel danach wieder her.