WireGuard VPN Server einrichten: Schnelles, modernes VPN für dein Heimnetzwerk
WireGuard VPN Server einrichten – schnell, modern, sicher. WireGuard ist das neue Standard-VPN-Protokoll, das klassische Lösungen wie OpenVPN in puncto Geschwindigkeit, Einfachheit und Sicherheit weit übertrifft. In diesem Guide richtest du deinen eigenen WireGuard-Server ein und verbindest deine Geräte damit.
Warum WireGuard statt OpenVPN?
WireGuard wurde von Grund auf neu entwickelt und überzeugt mit:
- Einfachheit: Nur ~4.000 Zeilen Code (OpenVPN hat ~100.000+) – weniger Code bedeutet weniger Angriffsfläche
- Geschwindigkeit: Deutlich höherer Durchsatz, niedrigere Latenz als OpenVPN oder IPsec
- Moderne Kryptographie: ChaCha20, Curve25519, BLAKE2 – State-of-the-Art-Algorithmen
- Im Linux-Kernel integriert: Ab Kernel 5.6 direkt integriert – keine Kernel-Module nötig
- Einfache Konfiguration: Unkompliziertes Schlüsselpaar-System wie SSH
Voraussetzungen
Du brauchst:
- Einen Linux-Server mit öffentlicher IP-Adresse (VPS oder Heimserver mit Port-Forwarding)
- Einen offenen UDP-Port (Standard: 51820)
- Linux-Kernel 5.6+ (auf modernen Systemen standardmäßig vorhanden)
WireGuard installieren
Server (Debian/Ubuntu)
sudo apt update && sudo apt install wireguard -y
Schlüsselpaare generieren
# Server-Schlüsselpaar
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
# Client-Schlüsselpaar (für jeden Client wiederholen)
wg genkey | tee /etc/wireguard/client1_private.key | wg pubkey > /etc/wireguard/client1_public.key
# Schlüssel anzeigen
cat /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key
cat /etc/wireguard/client1_private.key
cat /etc/wireguard/client1_public.key
Schreibe alle vier Werte auf – du brauchst sie für die Konfigurationsdateien.
Server konfigurieren
Erstelle die Konfigurationsdatei /etc/wireguard/wg0.conf:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY_HIER
# IP-Forwarding aktivieren
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Client 1
PublicKey = CLIENT1_PUBLIC_KEY_HIER
AllowedIPs = 10.0.0.2/32
Ersetze eth0 durch dein tatsächliches Netzwerk-Interface (ip route get 1.1.1.1 zeigt es dir).
IP-Forwarding aktivieren
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
WireGuard starten
# Starten
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
# Status prüfen
sudo wg show
Client konfigurieren
Erstelle auf dem Client-Gerät die Konfigurationsdatei wg0.conf:
[Interface]
PrivateKey = CLIENT1_PRIVATE_KEY_HIER
Address = 10.0.0.2/24
DNS = 1.1.1.1 # Optional: oder dein Pi-hole
[Peer]
PublicKey = SERVER_PUBLIC_KEY_HIER
Endpoint = DEINE_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0 # Gesamten Traffic durch VPN leiten
PersistentKeepalive = 25
AllowedIPs: Mit 0.0.0.0/0 läuft der gesamte Internettraffic durch den VPN-Server. Für Split-Tunneling (nur Heimnetz-Traffic) nutze stattdessen 10.0.0.0/24.
Client verbinden
Linux
sudo wg-quick up wg0
Windows und macOS
Importiere die wg0.conf-Datei in die offizielle WireGuard-App (wireguard.com).
iOS und Android
Generiere einen QR-Code auf dem Server und scanne ihn mit der WireGuard-App:
sudo apt install qrencode
qrencode -t ansiutf8 < /etc/wireguard/client1.conf
WireGuard VPN Server einrichten: Fehlerbehebung und Optimierung
Verbindung kommt nicht zustande
Häufige Ursachen und Lösungen:
- Falsche Schlüssel: Private Key des Clients muss mit dem Public Key übereinstimmen. Nochmals überprüfen
- Firewall blockiert UDP 51820: Füge eine Regel hinzu:
ufw allow 51820/udp - NAT/Portweiterleitung fehlt: Im Router muss UDP-Port 51820 an den WireGuard-Server weitergeleitet werden
- AllowedIPs falsch: Stelle sicher, dass die Client-IP in der Server-Konfiguration unter AllowedIPs eingetragen ist
WireGuard-Status und Debugging
# Verbindungsstatus anzeigen (als root)
sudo wg show
# Logs anzeigen
sudo journalctl -u wg-quick@wg0 -f
# Verbindung testen
ping 10.0.0.1 # Server-IP im WireGuard-Netz
Mehrere Clients verwalten
Für jeden neuen Client erstellst du ein Schlüsselpaar und fügst den Public Key in die Server-Konfiguration ein:
# Neuen Client-Schlüssel generieren
wg genkey | tee client2_private.key | wg pubkey > client2_public.key
# In /etc/wireguard/wg0.conf ergänzen:
[Peer]
PublicKey = CLIENT2_PUBLIC_KEY
AllowedIPs = 10.0.0.3/32
Split-Tunneling: Nur bestimmter Traffic durch VPN
Statt allen Traffic durch WireGuard zu leiten (AllowedIPs = 0.0.0.0/0), kannst du nur den Traffic für dein Heimnetz tunneln:
AllowedIPs = 192.168.1.0/24, 10.0.0.0/24
Damit nutzt du WireGuard nur für den Zugriff auf dein Heimnetz, während dein normaler Internetzugang unverändert bleibt – schneller und ressourcenschonender.
WireGuard einfacher verwalten: wg-easy
Für eine komfortable Weboberfläche empfiehlt sich wg-easy – ein Docker-Container mit Admin-UI:
docker run -d \
--name wg-easy \
-e WG_HOST=deine.domain.de \
-e PASSWORD=sicheresAdminPasswort \
-v ~/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add NET_ADMIN \
--cap-add SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy
Öffne http://server-ip:51821 im Browser und verwalte alle VPN-Clients komfortabel per Weboberfläche.
Fazit: WireGuard für dein sicheres Heimnetz
WireGuard ist das modernste und performanteste VPN-Protokoll, das du heute einsetzen kannst. Die Konfiguration ist zwar manuell etwas aufwendiger als bei Tailscale, aber du behältst die volle Kontrolle ohne Abhängigkeit von externen Diensten. Wer eine einfachere Alternative ohne eigene Server-IP sucht, sollte Tailscale in Betracht ziehen – dazu gibt es ebenfalls einen Guide auf Lapalutschi.de.
