WireGuard ist ein quelloffenes Virtual Private Network (VPN), das moderne Kryptografieverfahren nutzt, um die Kommunikation zwischen Servern und Clients abzusichern. Es ist leichtgewichtig, effizient und besitzt eine kompakte Codebasis, die sich auf Kernfunktionen konzentriert. Dadurch bietet WireGuard im Vergleich zu anderen VPN-Lösungen wie OpenVPN eine bessere Leistung und höhere Sicherheit.
Diese Anleitung beschreibt Schritt für Schritt, wie du WireGuard VPN auf Ubuntu 24.04 installierst und konfigurierst, um sichere und verschlüsselte Netzwerktunnel einzurichten.
Voraussetzungen
- Starte einen Ubuntu 24.04 Server, der als WireGuard VPN-Host dienen soll.
- Greife über SSH als Nicht-Root-Benutzer mit
sudo-Rechten auf den Server zu. - Aktualisiere alle Pakete auf dem Server, um die neuesten Versionen zu nutzen.
Passende Infrastruktur bei centron
Ubuntu-Server ohne eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
WireGuard installieren
WireGuard ist bereits in den Standard-APT-Repositories von Ubuntu 24.04 enthalten. Befolge die folgenden Schritte, um die aktuelle Version zu installieren und den automatischen Start beim Booten zu aktivieren.
WireGuard installieren
$ sudo apt install wireguard -yInstallierte Version prüfen
$ sudo wg --versionDie Ausgabe sollte etwa wie folgt aussehen:
wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/
WireGuard konfigurieren
WireGuard nutzt das sogenannte Cryptokey-Routing, um VPN-Tunnel zu erstellen, indem öffentliche Schlüssel bestimmten IP-Adressen zugeordnet und validiert werden. Eine gültige Konfiguration besteht aus einem privaten und einem öffentlichen Schlüssel, die einer Netzwerkschnittstelle zugewiesen sind. Im Folgenden wird erklärt, wie du eine neue WireGuard-Schnittstelle einrichtest und die benötigten Schlüssel erzeugst.
Privaten Schlüssel erzeugen
$ sudo wg genkey | sudo tee /etc/wireguard/server_private.keyBeispielausgabe:
UOO//MO2GCC+5hHOz91YCP60/Zv/cnSskEH2j4eRPXo=
Dateiberechtigungen anpassen
$ sudo chmod 600 /etc/wireguard/server_private.keyÖffentlichen Schlüssel erzeugen
$ sudo cat /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.keyBeispielausgabe:
W+l7Uapd98bsNhN1g3Hs4iTCfKzcV03KNwhDPFgzqR4=
Netzwerkschnittstellen prüfen
$ ip aIdentifiziere die Hauptnetzwerkschnittstelle, z. B. enp1s0 mit der IP-Adresse 192.0.2.161. WireGuard verwendet diese Schnittstelle, um Datenverkehr zum Internet weiterzuleiten.
WireGuard-Konfigurationsdatei erstellen
$ sudo nano /etc/wireguard/wg0.confFüge den folgenden Inhalt hinzu (ersetze die Schlüssel und Schnittstellennamen entsprechend):
[Interface]
Address = 10.8.0.1/24
SaveConfig = true
PrivateKey = UOO//MO2GCC+5hHOz91YCP60/Zv/cnSskEH2j4eRPXo=
PostUp = ufw route allow in on wg0 out on enp1s0
PostUp = iptables -t nat -I POSTROUTING -o enp1s0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on enp1s0
PreDown = iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
ListenPort = 51820Diese Konfiguration weist der Schnittstelle die private IP-Adresse 10.8.0.1 zu, aktiviert NAT-Routing, definiert Firewall- und iptables-Regeln und legt den WireGuard-Port für eingehende Verbindungen fest.
Client-Konfigurationen erstellen
Jeder Client benötigt einen öffentlichen Schlüssel, der in der WireGuard-Konfiguration hinterlegt ist, um eine Verbindung herstellen zu können. Die folgenden Schritte zeigen, wie du eine neue Client-Konfiguration erstellst.
Client-Schlüssel generieren
$ sudo wg genkey | sudo tee /etc/wireguard/client1_private.key$ sudo cat /etc/wireguard/client1_private.key | wg pubkey | sudo tee /etc/wireguard/client1_public.keyClient-Konfigurationsdatei erstellen
$ sudo nano /etc/wireguard/client1.confFüge den folgenden Inhalt ein und ersetze die Platzhalter durch deine eigenen Werte:
[Interface]
PrivateKey = KBUxCUqNEJqN3DBO5xu2kiBQFT8Gv46Kkqu6OIKZu3Q=
Address = 10.8.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = W+l7Uapd98bsNhN1g3Hs4iTCfKzcV03KNwhDPFgzqR4=
AllowedIPs = 0.0.0.0/0
Endpoint = 192.0.2.161:51820
PersistentKeepalive = 15Diese Konfiguration erlaubt es dem Client, über die IP-Adresse 10.8.0.2 eine Verbindung aufzubauen. Sie definiert den öffentlichen Server-Schlüssel, den Endpunkt und das Intervall für die Keepalive-Pakete.
Client zur Serverkonfiguration hinzufügen
$ sudo nano /etc/wireguard/wg0.confFüge am Ende der Datei den folgenden Abschnitt hinzu:
[Peer]
PublicKey = xZB9I6953ebGqWVLCR7L6yJw7YJi0shJ+Sub9gfUFVU=
AllowedIPs = 10.8.0.2/32WireGuard-Dienst verwalten
Die Prozesse von WireGuard werden von systemd gesteuert. Das Hilfsprogramm wg-quick bietet Befehle, um Schnittstellen einfach zu starten, zu stoppen und zu verwalten.
$ sudo systemctl start wg-quick@wg0.service$ sudo systemctl enable wg-quick@wg0.service$ sudo systemctl status wg-quick@wg0.serviceVerwende den folgenden Befehl, um den aktuellen Tunnelstatus anzuzeigen:
$ sudo wg show wg0Firewall-Regeln einrichten
Die UFW (Uncomplicated Firewall) ist auf Ubuntu-Servern in der Regel standardmäßig aktiv. Konfiguriere sie so, dass Verbindungen über den UDP-Port 51820 zugelassen werden, und aktiviere das IP-Forwarding für eine korrekte Weiterleitung des Netzwerkverkehrs.
$ sudo ufw allow 22 && sudo ufw enable
$ sudo ufw allow 51820/udp
$ sudo ufw reloadIP-Weiterleitung aktivieren
Aktiviere die IPv4-Weiterleitung, um Netzwerkpakete zwischen Schnittstellen korrekt weiterzuleiten.
$ echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -pNAT-Regeln anwenden
Erstelle eine NAT-Regel, damit der Datenverkehr des VPN-Netzwerks über die öffentliche Schnittstelle weitergeleitet wird, und speichere diese dauerhaft.
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp1s0 -j MASQUERADE
$ sudo iptables-save | sudo tee /etc/iptables/rules.v4Clients mit dem WireGuard-VPN verbinden
Verwende deine erstellte Client-Konfiguration, um dich mit dem VPN zu verbinden, und teste anschließend den Tunnelzugriff über ping.
$ scp linuxuser@wireguard-server-ip:client1.conf .Verbindung testen
$ ping -c 4 10.8.0.1Erwartete Ausgabe:
4 packets transmitted, 4 received, 0% packet loss
Fazit
Du hast erfolgreich WireGuard VPN auf einem Ubuntu 24.04 Server installiert und konfiguriert, Clients eingerichtet und sichere VPN-Tunnel aufgebaut. Du kannst zusätzliche Schnittstellen mit eigenen Subnetzen für verschiedene Benutzergruppen anlegen. Weitere Informationen und erweiterte Konfigurationsoptionen findest du in der offiziellen WireGuard-Dokumentation.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.