WireGuard VPN: Grundlagen
WireGuard ist ein modernes Virtual Private Network (VPN)-Protokoll, das sichere, verschlüsselte Verbindungen zwischen Geräten ermöglicht. Mit einer einfachen Codebasis und hoher Leistung hat es sich als leistungsstarke und ressourcenschonende Alternative zu älteren VPN-Protokollen wie IPsec und OpenVPN etabliert. In diesem Artikel erfahren Sie, was WireGuard auszeichnet, wie es funktioniert und wie Sie die VPN-Lösung auf dem eigenen System installieren.
- Jederzeit vollständige Datenhoheit sowie Datenkontrolle
- Im Einklang mit allen gesetzlichen Regelungen in Deutschland
- Ohne Vendor Lock-in für höchste Flexibilität
Was ist WireGuard?
WireGuard ist ein Open-Source-VPN-Protokoll, das für den Aufbau verschlüsselter Tunnel zwischen Geräten genutzt wird. Datenströme werden durch den Tunnel geleitet und sind somit vor unbefugtem Zugriff geschützt. Neben dem Fokus auf starke Verschlüsselung bietet WireGuard auch Optimierungen für mobile Systeme und das Internet of Things (IoT). Die Software ist unter der GPLv2-Lizenz als freie Software lizenziert und plattformübergreifend verfügbar. WireGuard ist in den Sprachen C und Go geschrieben und läuft unter Windows, macOS, BSD, iOS und Android.
Seit 2020 ist WireGuard direkt in den Linux-Kernel integriert. Da Linux als Standard-Betriebssystem auf Milliarden von vernetzten Geräten weltweit läuft, kann WireGuard nahezu überall eingesetzt werden. Dank seiner einfachen Konfiguration und der geringen Systembelastung wird WireGuard zunehmend von VPN-Diensten und Unternehmen genutzt.
Welche Features hat WireGuard?
Ein zentrales Merkmal von WireGuard ist das sogenannte Cryptokey Routing. Dabei werden dem öffentlichen Schlüssel eines Verbindungspartners die innerhalb eines Tunnels erlaubten IP-Adressbereiche zugeordnet. Eingehende Pakete eines Verbindungspartners werden mithilfe des öffentlichen Schlüssels entschlüsselt. Ein eingehendes Paket wird nach der Entschlüsselung nur dann zugestellt, wenn es von einer zum Schlüssel korrespondierenden IP-Adresse stammt. Andernfalls wird das Paket verworfen.
Im Gegensatz zu älteren VPN-Protokollen wie IPsec und OpenVPN verwendet WireGuard einen festen Satz moderner kryptografischer Primitive ohne Verhandlung. Während bei den etablierten Protokollen die kryptografischen Grundlagen während des Handshakes ausgehandelt werden, setzt WireGuard auf eine feste, versionierte Kombination von Algorithmen. Sollte eine kryptografische Grundlage in Zukunft als unsicher gelten, wird eine neue Version des Protokolls veröffentlicht, die dann eine aktualisierte und sichere Algorithmuswahl enthält.
Das Protokoll verwendet moderne und hochsichere Verschlüsselungsalgorithmen, darunter:
- Noise Protocol Framework für die Handshake- und Schlüsselaustauschprozesse
- Curve25519 für den sicheren Schlüsselaustausch
- ChaCha20 für die symmetrische Verschlüsselung
- Poly1305 für Authentifizierung
- BLAKE2 für eine schnelle kryptografische Hash-Funktion
- SipHash24 für die Erzeugung von kryptografisch sicheren Hashes
- HKDF für den sicheren Schlüsselableitungsprozess
Was sind die Vorteile von WireGuard?
WireGuard bietet viele Vorteile, die es zu einer bevorzugten Wahl für moderne VPN-Verbindungen machen. Die wichtigsten Vorteile im Überblick:
- Schlanke Codebasis: WireGuard hat mit nur ca. 4.000 Codezeilen eine signifikant kleinere Codebasis im Vergleich zu OpenVPN oder IPsec (ca. 100.000 bis 600.000 Zeilen). Diese Reduzierung macht das Protokoll sicherer, da Bugs leichter gefunden werden können, und ressourcenschonender, da weniger Rechenleistung erforderlich ist.
- Höhere Performance: Durch die geringere Komplexität liefert WireGuard eine höhere Übertragungsgeschwindigkeit und niedrigere Latenz als viele konkurrierende Protokolle. Das macht es ideal für Anwendungen, die eine schnelle und stabile Verbindung erfordern, wie z. B. Streaming, Online-Gaming und Video-Conferencing.
- Energieeffizienz: WireGuard wird nur dann aktiv, wenn tatsächlich Daten übertragen werden. Diese Energieeinsparung ist insbesondere für mobile Geräte von Vorteil, da sie die Akkulaufzeit verlängert.
- Roaming-Unterstützung: WireGuard unterstützt den nahtlosen Wechsel zwischen WLAN und mobilen Netzwerken, ohne dass die Verbindung verloren geht. Sollte die Verbindung dennoch abbrechen, erfolgt der Wiederaufbau in der Regel schneller als bei anderen VPN-Protokollen.
- Einfache Konfiguration: Im Vergleich zu anderen VPN-Protokollen erfordert WireGuard keine manuelle Einstellung einer Vielzahl kryptografischer Optionen. Es verwendet eine fest definierte Konfiguration, die sowohl für erfahrene Nutzer als auch für Anfänger zugänglich ist.
Wie funktioniert WireGuard?
WireGuard ist ein dezentrales Peer-to-Peer-VPN-Protokoll, das keinen zentralen Server benötigt. Stattdessen kann direkt ein Tunnel zwischen zwei Geräten („Peers“) aufgebaut werden. Ein „WireGuard-Server“ ist in diesem Fall einfach ein Gerät, das Konfigurationsdaten für mehrere Peers enthält.
Der Verbindungsaufbau funktioniert ähnlich wie bei Secure Shell (SSH): Peers generieren öffentliche und private Schlüsselpaare, tauschen diese aus und verwenden sie zur Authentifizierung und Verschlüsselung der übertragenen Daten. Die Verschlüsselung basiert auf modernen kryptografischen Verfahren, die für hohe Sicherheit sorgen.
Neben der Erstellung der kryptografischen Schlüssel müssen auf den Peers Netzwerk- und Routing-Einstellungen vorgenommen werden (siehe dazu unsere Anleitung weiter unten). Dies umfasst die Konfiguration der erlaubten IP-Adressbereiche, die mit den öffentlichen Schlüsseln verknüpft werden. Nur Pakete von diesen IP-Adressen werden akzeptiert.
Der Datenversand läuft über das User Datagram Protocol (UDP), das aufgrund seiner Geschwindigkeit und Effizienz bevorzugt wird. Es benötigt keine umfangreiche Fehlerkorrektur wie das Transmission Control Protocol (TCP), was eine schnellere Übertragung ermöglicht.
Die Konfiguration erfolgt in der Regel über das WireGuard-Kommandozeilen-Tool und gängige Netzwerktools. Für weniger erfahrene Nutzer bieten kommerzielle VPN-Dienste benutzerfreundliche Apps zur einfachen Konfiguration.
Erste Schritte mit WireGuard
Prinzipiell lässt sich WireGuard auf einem Linux-System mit geringem Aufwand installieren und konfigurieren. Auf neueren Ubuntu-Versionen (ab 20.04 LTS) ist WireGuard bereits als Kernelmodul integriert, sodass keine zusätzliche Installation von Personal-Package-Archive-(PPA)-Repositories erforderlich ist. Führen Sie einfach den folgenden Befehl aus:
sudo apt install wireguardbash
WireGuard auf dem eigenen System installieren
Die Installation von WireGuard auf Ihrem eigenen System ist einfach und kann mit wenigen Befehlen durchgeführt werden.
Für Ubuntu 20.04 LTS oder neuer:
WireGuard ist bereits als Kernelmodul integriert, sodass keine zusätzlichen PPA-Repositorys erforderlich sind. Führen Sie einfach den folgenden Befehl aus:
sudo apt update
sudo apt install wireguardbashFür ältere Ubuntu-Versionen:
Hier müssen Sie das PPA von WireGuard hinzufügen, um die Installation vorzunehmen:
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguardbashWireGuard-Schlüssel erzeugen
Wie bei vielen anderen modernen VPN-Protokollen basiert auch WireGuard auf der Verwendung von kryptografischen Schlüsseln, um sichere Verbindungen zwischen Peers herzustellen. Jeder Peer benötigt ein privates und ein öffentliches Schlüsselpaar. Der private Schlüssel bleibt immer geheim, während der öffentliche Schlüssel mit anderen Peers geteilt wird.
Führen Sie die folgenden Befehle auf der Kommandozeile aus, um einen privaten und öffentlichen WireGuard-Schlüssel zu erzeugen:
# Schlüsselverzeichnis erstellen und Berechtigungen setzen
sudo mkdir -p /etc/wireguard/keys
sudo chmod 700 /etc/wireguard/keys
cd /etc/wireguard/keys
# Umask so setzen, dass nur root lesen/schreiben kann
umask 077
# Privaten Schlüssel erzeugen und in Datei speichern
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
# Ausgabe der erzeugten Schlüssel prüfen
sudo cat privatekey
sudo cat publickeybashDie Schlüssel sollten in einer sicheren Umgebung erstellt und gespeichert werden. Die obigen Befehle sind für Testzwecke geeignet. In einer Produktionsumgebung sollten zusätzliche Sicherheitsvorkehrungen getroffen werden, wie z. B. die Verwendung von sicheren Verzeichnissen und Zugriffssteuerungen.
Netzwerkeinstellungen für WireGuard konfigurieren
Nachdem die kryptografischen Schlüssel erzeugt wurden, müssen auf jedem Peer bestimmte Netzwerk- und Routing-Einstellungen vorgenommen werden. Diese Konfiguration ist entscheidend, um die sichere Kommunikation zwischen den Peers zu ermöglichen.
Im Wesentlichen wird eine Konfigurationsdatei erstellt, die unter anderem folgende Informationen enthält:
- Private und öffentliche Schlüssel der Peers
- Erlaubte IP-Adressen (die IP-Bereiche, mit denen der Peer kommunizieren darf)
- Peer-Adressen, die mit den jeweiligen öffentlichen Schlüsseln verknüpft sind
Ein Beispiel für die grundlegende Konfiguration einer WireGuard-Verbindung könnte wie folgt aussehen:
[Interface]
# Interne VPN-IP des Servers
Address = 10.0.0.1/24
# Privater Schlüssel (vom Server)
PrivateKey = <SERVER_PRIVATE_KEY>
# UDP-Port, auf dem WireGuard Verbindungen akzeptiert
ListenPort = 51820
# Client-Peer
[Peer]
# Öffentlicher Schlüssel des Clients
PublicKey = <CLIENT_PUBLIC_KEY>
# Interne VPN-IP, die dem Client zugewiesen ist
AllowedIPs = 10.0.0.2/32txtVerbindung testen und WireGuard aktivieren
Nachdem WireGuard auf Ihrem System installiert und konfiguriert wurde, ist es an der Zeit, die Verbindung zu testen und das Netzwerkinterface zu aktivieren. Dies kann über die Kommandozeile erfolgen, indem die folgenden Befehle ausgeführt werden:
1. Netzwerkinterface aktivieren
Zunächst müssen Sie das WireGuard-Interface aktivieren, das Sie gerade konfiguriert haben:
sudo systemctl enable --now wg-quick@wg0bashDieser Befehl aktiviert das WireGuard-Interface (wg0), das Sie zuvor erstellt haben. Wenn dieser Befehl erfolgreich ausgeführt wird, sollte die Verbindung bereit sein, Daten zu senden.
2. Verbindung testen
Um sicherzustellen, dass die Verbindung funktioniert, können Sie den Ping-Befehl verwenden, um zu überprüfen, ob das entfernte Gerät erreichbar ist. Beispiel:
ping 192.168.1.2bashErsetzen Sie die IP-Adresse durch die des entfernten Peers, mit dem Sie verbunden sind. Wenn der Ping erfolgreich ist, bedeutet das, dass die VPN-Verbindung funktioniert.
3. Fehlerbehebung
Sollte die Verbindung nicht wie erwartet funktionieren, überprüfen Sie die folgenden Punkte:
- Stellen Sie sicher, dass die IP-Adressen korrekt konfiguriert sind.
- Überprüfen Sie, ob die öffentlichen und privaten Schlüssel korrekt miteinander ausgetauscht wurden.
- Stellen Sie sicher, dass die Firewall auf beiden Geräten so konfiguriert ist, dass sie WireGuard-Verkehr zulässt (normalerweise über den Port 51820).
Falls weiterhin Probleme auftreten, können Sie auch den WireGuard-Dienst neu starten:
sudo systemctl restart wg-quick@wg0bash
