Rechercher dans ce blog

Tuesday, June 1, 2021

Open Source: Schnelles und einfaches VPN mit Wireguard - Golem.de - Golem.de

VPN-Verbindungen selbst aufzusetzen, kann mühsam sein. Auch ist die Verbindung oft langsam. Wireguard ändert das.

Eine Anleitung von
Das Wireguard-Maskottchen ist ein Drache.
Das Wireguard-Maskottchen ist ein Drache. (Bild: ROSLAN RAHMAN/AFP via Getty Images)

Viele VPN-Techniken, allen voran IPsec und OpenVPN, sind seit Jahren weit verbreitet und werden millionenfach genutzt. Beide Techniken gelten aber nicht nur als veraltet und deshalb schwer an moderne Einsatzszenarien oder kryptografische Protokolle anpassbar, sondern auch als sehr langsam. Das von Hauptentwickler Jason Donenfeld initiierte Wireguard soll damit aufräumen und eine schnelle, moderne VPN-Technik liefern.

Der wohl größte Vorteil von Wireguard im Vergleich zu bisherigen Lösungen besteht vor allem in der extrem geringen Anzahl an Codezeilen der Technik. So umfasst die Kernel-Technik selbst nur etwa 4.000 Zeilen Code. Die bisher zur Verfügung stehenden Alternativen wie OpenVPN oder auch IPSec umfassen dagegen mehrere Hunderttausend Zeilen Code.

Eine der grundlegenden Ideen von Wireguard ist, die Technik als normale Netzwerkschnittstelle des Systems bereitzustellen. Sämtliche Werkzeuge, die bisher etwa Schnittstellen wie eth0 und wlan0 verwalten, können so auch theoretisch sehr einfach die Wireguard-Schnittstelle wg0 verwalten. Verschiedene Userspace-Dienste wie zum Beispiel Systemd-Networkd haben ihren Code bereits angepasst. Inzwischen finden sich auch GUI-Werkzeuge für den Linux-Network-Manager.

Zur Identifizierung von Rechnern untereinander nutzt Wireguard lediglich öffentliche Schlüssel, analog zu SSH, wodurch etwa auf eine Zertifikatsinfrastruktur verzichtet werden kann. Der Aufbau ermöglicht darüber hinaus theoretisch ein Peer-to-Peer-Netzwerk vieler verschiedener Rechner, die sich nur über ihre Schlüssel identifizieren und diese unabhängig voneinander akzeptieren können. Das klassische und bekannte Client-Server-Modell existiert in Wireguard genau genommen also nicht. Der Einfachheit halber benutzen wir dieses hier aber weiter.

Von der Kommandozeile zum eigenen VPN

Die Nutzung von Wireguard ist dabei denkbar einfach: Die Software muss installiert werden, Schlüssel müssen erstellt, verteilt und dann noch akzeptiert werden. Darüber hinaus muss eigentlich nur das genutzte Subnetz korrekt gewählt werden.

Wie bereits erwähnt, ist Wireguard schon längere Zeit im Hauptzweig des Linux-Kernels vorhanden. Die Wireguard-Community pflegt darüber hinaus zahlreiche weitere Implementierungen für andere Betriebssysteme. Wir konzentrieren uns für die Erklärung hier zunächst auf Linux.

Sinnvollerweise wird die Konfiguration in dem Ordner /etc/wireguard durchgeführt. Dort erstellen wir unsere Schüssel:


  1. wg genkey > privatekey
  2. wg pubkey < privatekey > pubkey

Dann folgt die Konfiguration der eigentlichen Netzwerkschnittstelle beispielsweise in /etc/wireguard/wg0.conf


  1. [Interface]
  2. Address = 10.0.0.1/24
  3. ListenPort = 51820
  4. PrivateKey = PRIVATER_SCHLÜSSEL
WireGuard im Einsatz

In der Konfigurationsdatei ist nun die Adresse der Schnittstelle samt dem Subnetz festgelegt sowie der für das VPN genutzte Port 51820. Der private Schlüssel wie auch die Konfigurationsdatei selbst sollten dabei bestenfalls nur vom Root-Nutzer genutzt werden können.


  1. sudo chmod 600 /etc/wireguard/wg0.conf /etc/wireguard/privatekey

Zum Starten der Verbindung liefert das Wireguard-Team eine eigene kleine Werkzeugsammlung mit. Alternativ dazu kann die Schnittstelle auch manuell konfiguriert und gestartet werden.


  1. sudo wg-quick up wg0

Der Status der Verbindung lässt sich dann selbst schnell testen:


  1. sudo wg show wg0

Zum Aufbau der VPN-Verbindung braucht es nun einen zweiten Rechner, etwa ein Android-Telefon. Hier lässt sich ebenfalls schnell und fast selbsterklärend eine Konfiguration erstellen. Zu beachten ist, dass sich die IP-Adresse des Clients im VPN-Subnetz des Servers befindet. Unter Android kann dafür die Open-Source-App des Projekts verwendet werden, die kostenlos aus Googles Play Store oder dem alternativen App Store F-Droid bezogen werden kann. Diese erstellt automatisch die benötigten Schlüssel.

  • Die Konfiguration von Wireguard unter Android (Bild: Golem.de)
Die Konfiguration von Wireguard unter Android (Bild: Golem.de)

Jetzt müssen nur noch die öffentlichen Schlüssel zur gegenseitigen Kommunikation ausgetauscht werden. Auf dem Server wächst unsere Konfigurationsdatei um den Inhalt im folgenden Codebeispiel. Mit der Option für zugelassene Adressen (AllowedIPs) lässt sich festlegen, von wo aus der Server Verbindungen des Clients akzeptiert.


  1. [Peer]
  2. PublicKey= CLIENT_PUBLICKEY
  3. AllowedIPs = 0.0.0.0/0

Das Gleiche folgt nun mit dem Schlüssel des Servers auf unserem Android-Client. Als Endpunkt legen wir hier noch die WAN-IP-Adresse unseres Servers fest. Für ein internes Netzwerk könnte das wie in diesem Beispiel 192.168.178.70:51820 sein.

  • Die Konfiguration von Wireguard unter Android (Bild: Golem.de)
Die Konfiguration von Wireguard unter Android (Bild: Golem.de)

Sowohl der Client als auch der Server sollten nun anzeigen, dass eine Verbindung zu dem jeweiligen Peer besteht und Daten ausgetauscht werden.

Golem Akademie
  1. Advanced Python - Fortgeschrittene Programmierthemen
    16./17. September 2021, online
  2. Docker & Containers - From Zero to Hero
    5.-7. Oktober 2021, online
Weitere IT-Trainings

Die Konfiguration der Clients lässt sich auch auf dem Server selbst mit einer Konfigurationsdatei und dort erzeugten Schlüsseln erstellen. Diese Datei lässt sich dann als QR-Code codieren und mit der Android-App direkt einspielen.


  1. qrencode -t ansiutf8 -r client.conf

Firewall-Regeln zur Kommunikation nach draußen

Um auch tatsächlich sinnvoll per VPN zu kommunizieren, müssen nun noch die Firewall-Regeln angepasst werden. So muss der Server die Kommunikation über den genutzten Port erlauben. Darüber hinaus muss ein Paket-Forwarding für den Fall eingerichtet werden, dass der Server als eine Art VPN-Gateway zum Internet dienen soll. Auch VPN-intern müssen Zugriffe geregelt werden, etwa auf Webservern oder Ähnliches.

Wireguard selbst bietet hier in der Konfigurationsdatei die Möglichkeit, mit den Schlüsselwörtern Postup und Postdown direkt das Verhalten etwa der Firewall durch Skripte und Befehle zu beeinflussen.

WireGuard im Einsatz

Da sich die verschiedenen Betriebssysteme, Linux-Distributionen und auch Möglichkeiten oder Schnittstellen etwa bei gemieteten Servern in Bezug auf die Firewall teils sehr deutlich voneinander unterscheiden, können wir hier nur auf deren Dokumentation verweisen. Anleitungen dazu, auch speziell für Wireguard, bieten inzwischen auch einige kommerzielle Hoster sowie vor allem die Communitys der Linux-Distributionen.

Im Vergleich zu anderen VPN-Techniken ist es immer noch überraschend, wie verblüffend einfach die Einrichtung von Wireguard ist - insbesondere in Bezug auf die Sicherheit der Verbindung, da Hauptentwickler Donenfeld von Beginn an keinerlei Abstriche zugelassen hat. Bei anderen Techniken wie etwa OpenVPN hängt die Sicherheit oft von der gewählten Konfiguration und der unterstützten Technik der eingesetzten Clients ab. Auch das verhindert Wireguard.

Adblock test (Why?)


Open Source: Schnelles und einfaches VPN mit Wireguard - Golem.de - Golem.de
Read More

No comments:

Post a Comment

One UI 5.1: Samsung kündigt Update-Start für ältere Galaxy-Smartphones an, los geht es u.a. mit Galaxy S20, S21 und S22 - Notebookcheck.com

Nachdem es vor wenigen Tagen bereits inoffizielle Informationen zum Rollout von Samsungs One UI 5.1 für die ersten Modelle jenseits der ne...