WireGuard
Dieser Artikel gilt größtenteils unabhängig von der Ubuntu-Version.
Dieser Artikel wurde für die Ubuntu-Version Noble Numbat getestet. Es wird erwartet, dass er im wesentlichen auch mit darauf folgenden Versionen anwendbar ist. Bitte melde abweichendes Verhalten in der Diskussion zu diesem Artikel.
Für frühere Versionen als 24.04 benutze die in der Übersicht[2] beschriebenen Methoden.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt die Einrichtung und Benutzung von Verbindungen per WireGuard[2] mittels NetworkManager[1]. Dafür benötigt man die im Artikel über WireGuard[2] beschriebenen Grundlagen und muss auch auf jedem Rechner die dort beschriebenen Voraussetzungen erfüllen.
Geheimer Schlüssel¶
Man muss für jeden Rechner im VPN[4] jeweils auf dem Rechner selbst einen geheimen Schlüssel erzeugen und diesen an sicherer Stelle ablegen. Dazu benutzt man am besten – wie im Artikel über WireGuard[2] beschrieben – als root den Befehl[3]:
wg genkey
Diesen Schlüssel muss man sich für spätere Verwendung merken oder an sicherer, vor Unbefugten geschützten Stelle ablegen, da man in sonst später nicht reproduzieren kann.
Wenn man eine Fritzbox als Mittelpunkt des WireGuard-Netzes verwenden möchte, benötigt man den vorstehenden Schritt nicht. Statt dessen wird der geheime Schlüssel des Rechners auf einem anderen Rechner (die Fritzbox) erzeugt und per Textdatei an den Client übertragen. ▶ WireGuard-Client an Fritzbox
Verbindungsprofil WireGuard¶
GUI¶
Für eine Verbindung über die Bedienoberfläche des NetworkManagers muss ein Verbindungsprofil des Typs WireGuard angelegt werden. Man kann dafür den grafischen Systemdialog in den Einstellungen des Desktops Gnome oder generell eine zum NetworkManager gehörende grafische Bedienoberfläche verwenden oder auch auf der Kommandozeile nmcli benutzen:
Systemdialog:
Beim Desktop Gnome das Mehrfachfeld in der oberen rechten Ecke des Bildschirms anklicken, dann auf das Symbol für die Einstellungen (Zahnrad oder Werkzeug) klicken und dann im sich öffnenden Dialog auf Netzwerk; das Zeichen + bei VPN ermöglicht, ein neues Verbindungsprofil anzulegen. Man muss einige wichtige Einstellungen eintragen (s.u.), bevor die Schaltfläche zum Speichern frei gegeben wird.
Manche anderen Desktops verwenden für diese Funktionalität das nm-applet.
nm-connection-editor: Man öffnet ein Terminal[3] mit einer Shell oder öffnet mit Alt + F2 eine Kommandozeile und startet hier
nm-connection-editor, dann die Schaltfläche mit dem Zahnrad klicken und ein Verbindung des TypsWireGuardanlegen .nmtui: Man öffnet ein Terminal[3] mit einer Shell und startet hier
nmtui, dann „Eine Verbindung bearbeiten“ und Hinzufügen wählen.
Wichtige Einstellungen im Verbindungsprofil sind der Verbindungsname, unter WireGuard der Name der VPN-Schnittstelle und der geheime Schüssel (256 Bit als Base-64 codiert), und unter IPv4-Einstellungen und IPv6-Einstellungen ist das Protokoll jeweils zu deaktivieren oder manuell mit einer Adresse aus einem für das VPN vorgesehenen internen Adressbereich zu konfigurieren.
Wenn der momentan konfigurierte Rechner der Mittelpunkt sein soll, speichert man nun zunächst das Verbindungsprofil und fährt fort mit der Konfiguration der Außenstellen. Für jede Außenstelle muss man deren Daten später im Verbindungsprofil auf der Registerkarte WireGuard unter Gegenstellen nachtragen.
Wenn der momentan konfigurierte Rechner eine Außenstelle sein soll, trägt man im Verbindungsprofil zusätzlich die Daten des Mittelpunktes auf der Registerkarte WireGuard unter Gegenstellen ein. Die einzutragenden Daten umfassen jeweils:
Endpunkt der Gegenstelle, also eine im öffentlichen Internet sichtbare IP-Adresse und durch einen Doppelpunkt getrennt den von der Gegenstelle für WireGuard benutzten UDP-Port, statt einer numerischen IP-Adresse kann man auch einen symbolischen, über DNS auflösbaren Namen angeben.
öffentlicher Schlüssel der Gegenstelle (256 Bit als Base-64 codiert)
Liste (ggf. nur mit einem Eintrag oder vorläufig leer) der internen Adressbereiche im VPN, für die die Gegenstelle zuständig ist:
Wenn die Gegenstelle eine Außenstelle ist, dann ein möglichst weit eingeschränkter Teilbereich des internen VPN-Adressbereiches.
Wenn die Gegenstelle der Mittelpunkt ist, dann entweder der gesamte Adressbereich des VPN oder sogar der gesamte Adressbereich des Internets.
Wenn das WireGuard-Netz zusätzlich eine symmetrische Verschlüsselung benutzt (Fritzboxen nutzen diese Option), dann ist der dafür benötigte Schlüssel unter „Vorher vereinbarter Schlüssel“ ("Preshared Key") einzutragen.
Manuelle Einrichtung¶
Das benötigte Verbindungsprofil kann auch auf der Kommandozeile[3] mit Hilfe des Dienstprogramms nmcli oder den im Artikel NetworkManager ohne GUI beschriebenen Methoden erstellt werden. Hierfür ist der Verbindungstyp wireguard anzugeben.
WireGuard-Client an Fritzbox¶
Eine Fritzbox mit Betriebssystem FRITZ!OS ab Version 7.50 (teilweise auch frühere, aber mit Einschränkungen und nicht bei Modellen 6490 Cable und 6590 Cable) kann als Mittelpunkt in einem WireGuard-Netz arbeiten. Zur Einrichtung befolgt man die über die Hilfeseiten in der Fritzbox erreichbare Anleitung des Herstellers. Man kann den vom Hersteller kostenlos angebotenen DynDNS-Dienst myFRITZ! oder einen anderen für WireGuard benutzen.
Zur Einrichtung eines Ubuntu-Desktop-System als Außenstelle (Client) in diesem Netz erstellt man auf der Fritzbox eine Verbindung für den Client und transferiert die von der Fritzbox erzeugte Konfigurationsdatei auf den Client.
Achtung!
Das Vorgehen der Fritzbox, für den Client einen geheimen Schlüssel zu erzeugen, ist natürlich inhärent unsicher. Der Anwender muss selber entscheiden, ob die vom Hersteller implementierten Vorsichtsmaßnahmen (z.B. ist der Schlüssel nur direkt nach der Erzeugung verfügbar und wird später nicht mehr gezeigt) für die eigenen Zwecke ausreichen und muss selber mit der heruntergeladenen Konfigurationsdatei sehr sorgfältig und vorsichtig umgehen – sie darf auf keinen Fall in unbefugte Hände fallen und darf nicht über das Internet oder andere öffentliche Medien transportiert werden.
Das Vorgehen der Fritzbox vereinfacht allerdings die Einrichtung für den Anwender.
Mit den Informationen aus der Konfigurationsdatei kann man ein Verbindungsprofil wie im vorstehendem Kapitel beschrieben erstellen, jedoch ist einfacher und sicherer, die Datei in das für WireGuard vorgesehene Verzeichnis zu verschieben, dort Besitzer und Gruppe auf root zu ändern und die Dateiberechtigungen auf 0600 einzuschränken. Als Dateinamen wählt man den gewünschten Namen der Schnittstelle (hier beispielhaft: VPN) mit anhängendem .conf. Diese Datei wird einfach in NetworkManager importiert, lese Details in der Übersicht[2]:
# Im Verzeichnis für Download des Browsers: sudo mv wg_config.conf /etc/wireguard/VPN.conf # Im Verzeichnis /etc/wireguard/: sudo chown root:root VPN.conf sudo chmod 0600 VPN.conf sudo nmcli connection import type wireguard file /etc/wireguard/VPN.conf
Achtung!
Manche Versionen von FRITZ!OS bzw. manche Modelle der Fritzbox kümmern sich beim Umgang mit WireGuard gar nicht um das Protokoll IPv6. Wenn über dieses Protokoll bereits eine Verbindung ins Internet besteht, hat man dann nach dem Aufbau des VPNs ein Datenleck, da die Pakete mit IPv6 am Tunnel vorbei laufen. Eine Deaktivierung von IPv6 im Netzwerkprofil des VPNs reicht alleine nicht aus zur Vermeidung dieses Datenlecks.
Abhilfe: IPv6 ins Internet sperren, beispielsweise über einen speziellen Leitweg:
sudo ip -6 route add prohibit 2000::/3
Problembehebung¶
Siehe
Checkliste für generelle Probleme bei Netzwerkprofilen
Checkliste beim Betrieb von WireGuard