Die grafischen Oberflächen WG-Easy und Wireguird machen das Setup eines Wireguard-VPN-Tunnels zum Kinderspiel.
Es gibt gute Gründe, ein Virtual Private Network (VPN) zu nutzen: Da es die Daten verschlüsselt und den Standort verschleiert, sorgt es für eine gewisse Sicherheit und Anonymität im Internet. Das schützt sowohl vor Kriminellen als auch vor staatlicher Überwachung. Vor allem in ungeschützten, öffentlichen Netzwerken wie WLAN-Hotspots spielt das eine wichtige Rolle. Wer ausländische Fernsehsender empfangen möchte, kommt mit einem VPN ebenfalls ans Ziel, indem er einen externen VPN-Anbieter nutzt, der Server in verschiedenen Ländern vorhält.
Häufig dient ein VPN auch dazu, von einem Client wie Notebook, Tablet oder Smartphone unterwegs sicher auf das heimische Netzwerk zuzugreifen. Dazu benötigen Sie einen dedizierten VPN-Server, der als Software auf einem Router wie der Fritzbox, einem Raspberry Pi oder anderen Geräten läuft. Die Homeserver-Distribution Unraid bringt bereits einen Wireguard-Server mit.
Anatomie eines VPNs
Ein VPN ist ein virtuelles, privates und in sich geschlossenes Netzwerk auf Softwarebasis, das Geräte via Internet per Tunnel miteinander verbindet und die übertragenen Inhalte verschlüsselt. Virtuell bedeutet hier, dass die Geräte nicht physisch miteinander verbunden sind. Als Verbildlichung eignet sich ein unsichtbares Verbindungskabel zwischen den entfernten Geräten. Das kann das Intranet Ihres Arbeitgebers oder Ihr eigenes LAN zu Hause sein. Die Software verschlüsselt die zu übertragenden Daten vor dem Versenden und entschlüsselt sie auf der Gegenseite wieder. Der zum Absichern benötigte Schlüsselaustausch erfolgt automatisch beim Verbindungsaufbau.
Zum Betrieb eines VPN stehen diverse Protokolle zur Verfügung. Schon seit über 20 Jahren schützt die freie Software OpenVPN Nutzer unter Linux, MacOS, BSD und Windows. Der Newcomer der Szene heißt seit 2015 Wireguard. Durch die Integration in den Kernel ab Linux 5.6 hat das Werkzeug die Konkurrenz sowohl in Bezug auf Sicherheit als auch auf Schnelligkeit überholt. Zudem umfasst es lediglich 4000 Zeilen Code, während das Schwergewicht OpenVPN mehr als 500 000 Zeilen auf die Waage bringt. Wir berichteten unter anderem in LinuxUser 06/2020 [1] und zuletzt in LinuxUser 05/2024 [2] ausführlich über das Wireguard-Protokoll.
In diesem Artikel geht es um das möglichst komfortable Aufsetzen eines Wireguard-Servers und eines passenden Clients. Für den auf einem Raspberry Pi laufenden Server kommt Wireguard-Easy (WG-Easy [3]) zum Einsatz. Die Software vereinfacht das Einrichten und ermöglicht später, administrative Aufgaben wie das Setup neuer Zugänge über eine Weboberfläche zu erledigen. Dadurch sparen Sie sich eine SSH-Verbindung auf den RasPi.
WG-Easy setzt Docker voraus. Wenn Sie darauf verzichten möchten, können Sie im Fall des Raspberry Pi auch PiVPN zum Aufsetzen des Servers verwenden [4]. Für diesen Artikel wollen wir es uns jedoch einfach machen und setzen die Software in einem Docker-Container auf. Anstatt auf dem RasPi funktioniert das genauso gut auf jedem anderen Rechner oder in einer virtuellen Maschine.
Der Server
Auf der Github-Seite von WG-Easy finden Sie einen Leitfaden [5], der erklärt, wie Sie sowohl Docker als auch die GUI installieren. Daraus kopieren Sie den ganzen Block, der mit sudo docker run --detach beginnt (Abbildung 1), in das Terminal auf dem RasPi.

Abbildung 1: Die einzige potenzielle Fehlerquelle bei der Installation von WG-Easy: Editieren Sie den Befehl sorgsam, dann läuft er ohne Fehler durch.
Dabei fallen noch zwei Anpassungen an: Die Zeile --env WG_HOST vervollständigen Sie mit der festen IP-Adresse des RasPi, einer Domain oder einem zuvor eingerichteten DynDNS-Hostnamen. Die Zeile --env PASSWORD_HASH= verlangt einen Passwort-Hash, der einen kleinen Umweg erfordert. Überlegen Sie sich, welches Passwort Sie in der GUI später verwenden möchten, und generieren Sie mit dem Befehl aus Listing 1 daraus den Hash. Ihn hängen Sie in der Form '$2b$tcNOW4.Iu7OOA' inklusive der umschließenden Hochkommas an die Zeile --env PASSWORD_HASH= an.
Listing 1
Hash generieren
$ sudo docker run -it ghcr.io/wg-easy/wg-easy wgpw Passwort
Führen Sie die Befehlskette aus und öffnen Sie anschließend WG-Easy in einem Browser mit der Adresse, die Sie im Setup festgelegt haben. Ergänzen Sie nach einem Doppelpunkt den Port 51820, den Sie im Router für UDP freigeben müssen. Alternativ zur manuellen Docker-Einrichtung greifen Sie auf Portainer oder Docker Compose zum Aufsetzen [6] zurück.
Im Browser loggen Sie sich mit Ihrem Passwort ein und richten Ihren ersten Wireguard-Client ein. Geben Sie ihm zunächst einen sprechenden Namen und betätigen Sie den Schalter hinter dem Namen zum Aktivieren (Abbildung 2). Handelt es sich bei dem Client um ein stationäres Gerät wie einen Desktop-PC oder ein Notebook, laden Sie nun über den Pfeil rechts oben die Konfigurationsdatei herunter (Abbildung 3). Sie benötigen sie später zum Einrichten des Clients auf dem entsprechenden Gerät. Handelt es sich beim Client hingegen um ein Mobilgerät wie ein Smartphone, nutzen Sie den QR-Code zum Übertragen der Datei.

Abbildung 2: Im zweiten Schritt geben Sie der Verbindung einen Namen und nutzen den Schalter dahinter zur Aktivierung. Damit wird die Konfiguration erstellt, die Sie über den Pfeil nach unten herunterladen, um sie später auf den Client zu übertragen.

Abbildung 3: Die Konfigurationsdatei für den Client enthält unter anderem die privaten und öffentlichen Schlüssel. Wireguird kopiert sie anschließend ohne Ihr Zutun an die richtigen Stellen.
Weitere Clients legen Sie über Neu an. Damit ist das Setup des Wireguard-Servers bereits abgeschlossen. Wenn Sie künftig Änderungen vornehmen möchten, rufen Sie die Weboberfläche der Software erneut auf.
Der Client
Auf der Client-Seite heißt die Komfortsoftware Wireguird, ein Kofferwort aus Wireguard und GUI. Das in Go und GTK geschriebene Programm findet sich lediglich im AUR von Arch Linux. In Distributionen ohne Zugriff auf AUR müssen Sie es von der Github-Instanz [7] des Projekts herunterladen. Für Debian und dessen Derivate steht dort ein DEB-Paket bereit. Nutzer anderer Distributionen müssen die Anwendung aus den Quellen selbst bauen.
Unter Debian und dessen Derivaten wechseln Sie ins Download-Verzeichnis und laden das DEB-Paket von der Github-Seite des Projekts herunter. Zur Installation dient der Befehl aus der zweiten Zeile von Listing 2. Erstellen Sie das Programm aus dem Quelltext, beziehen Sie diesen ebenfalls von der Github-Seite und wechseln dann in das dabei entstandene Verzeichnis wireguird/. Die Kommandos ab der vierten Zeile von Listing 2 richten die Software ein.
Listing 2
Wireguird installieren
### DEB-Paket installieren $ sudo apt install ./wireguird_amd64.deb ### Wireguird selbst kompilieren $ chmod +x ./*.sh $ ./deps.sh $ ./package.sh $ ./install.sh
Nach dem Öffnen von Wireguird sehen Sie sehr viel unknown – das gilt es nun zu ändern. Dazu kopieren Sie die von WG-Easy kopierte Konfiguration auf den Client, klicken in Wireguird unten links auf Add Tunnel und navigieren zur Konfigurationsdatei. Ein Klick darauf fügt sie in Wireguird ein. Über den Button Edit (Abbildung 4) rechts nehmen Sie gegebenenfalls Änderungen vor. Zum Schluss genügt ein Mausklick auf Activate, und die verschlüsselte Verbindung steht. Das erkennen Sie sowohl am grünen Haken links oben vor dem Namen der Verbindung, als auch am Vorhandensein des Schalters Deactivate, mit dem Sie das VPN bei Bedarf unterbrechen.

Abbildung 4: Nachdem Sie den Pfad zur Konfigurationsdatei angegeben haben, laufen die benötigten Werte in die Maske von Wireguird ein. Um die Verbindung zu aktivieren, klicken Sie auf Activate.
Unten links neben Add Tunnel befinden sich noch zwei kleine Symbole. Das X ist selbsterklärend: Es löscht den aktiven Tunnel. Mit dem Schalter rechts daneben packen Sie die Konfigurationen aller Tunnel in ein ZIP-Archiv.
Fazit
Schneller als mit der Kombination von WG-Easy und Wireguird lässt sich ein VPN mit Wireguard vermutlich nicht aufsetzen. Sie brauchen dabei weder kryptische Zahlenfolgen von Public Keys zu bearbeiten noch manuell Konfigurationsdateien anzulegen und zu editieren. All das übernehmen die grafischen Oberflächen. Sie müssen lediglich die Konfigurationsdatei vom Server auf den Client kopieren. Neue Clients fügen Sie bequem über die Weboberfläche von WG-Easy hinzu. Wireguard wird zudem seinem Ruf gerecht: Sie bemerken keinerlei Verzögerungen beim Arbeiten mit aktiviertem VPN. (tle/csi)
Infos
-
Wireguard: Christoph Langner, Ferdinand Thommes, “Unkompliziert”, LU 06/2020, S. 28, https://www.linux-community.de/44459
-
Wireguard: Martin Mohr, “Gute Verbindung”, LU 05/2024, S. 36, https://www.linux-community.de/50654
-
WG-Easy: https://github.com/wg-easy/wg-easy
-
Wireguard mit PiVPN: Christoph Langner, “Sicherer Draht”, RPG 10/2021, S. 38, https://www.raspi-geek.de/46542
-
WG-Easy Installation: https://github.com/wg-easy/wg-easy?tab=readme-ov-file#installation
-
Docker Compose: https://docker-compose.de/wg-easy/
-
Github: https://github.com/UnnoTed/wireguird/releases/tag/v1.1.0





