WireGuard auf Server und Client einrichten Diese Anleitung beschreibt die Installation und Grundkonfiguration von WireGuard auf einem Debian-Server und einem Debian-Client. Das Beispiel verwendet einen WireGuard-Server auf UDP Port 443 und das interne VPN-Netz 172.31.255.224/27. Verwendete Beispielwerte Öffentliche IPv4 des Servers: DEINE_VPS_IP WireGuard-Port: 443/UDP VPN-Subnetz: 172.31.255.224/27 Server-IP im Tunnel: 172.31.255.254/27 Client 1 im Tunnel: 172.31.255.253/32 1. WireGuard auf dem Server installieren Auf dem Server werden die benötigten Pakete installiert und das Verzeichnis für die Konfiguration vorbereitet. apt update apt install -y wireguard-tools install -d -m 700 /etc/wireguard cd /etc/wireguard umask 077 2. Schlüssel auf dem Server erzeugen Der Server benötigt ein Schlüsselpaar. Zusätzlich wird für jeden Client ein eigener PresharedKey erzeugt. wg genkey | tee server.key | wg pubkey | tee server.pub >/dev/null wg genpsk | tee client1.psk >/dev/null chmod 600 /etc/wireguard/server.key /etc/wireguard/client1.psk chmod 644 /etc/wireguard/server.pub 3. Server-Konfiguration erstellen Die Datei /etc/wireguard/wg0.conf wird auf dem Server angelegt. nano /etc/wireguard/wg0.conf Beispielinhalt: [Interface] Address = 172.31.255.254/27 ListenPort = 443 PrivateKey = SERVER_PRIVATE_KEY SaveConfig = false # Client 1 [Peer] PublicKey = CLIENT1_PUBLIC_KEY PresharedKey = CLIENT1_PRESHARED_KEY AllowedIPs = 172.31.255.253/32 Dabei müssen die Platzhalter ersetzt werden: SERVER_PRIVATE_KEY mit dem Inhalt von /etc/wireguard/server.key CLIENT1_PUBLIC_KEY mit dem Public Key des Clients CLIENT1_PRESHARED_KEY mit dem Inhalt von /etc/wireguard/client1.psk Hinweis: Für jeden weiteren Client wird ein zusätzlicher [Peer]-Block mit eigener Client-IP, eigenem Public Key und eigenem Preshared Key ergänzt. Beispiel: # Client 2 [Peer] PublicKey = CLIENT2_PUBLIC_KEY PresharedKey = CLIENT2_PRESHARED_KEY AllowedIPs = 172.31.255.252/32 4. WireGuard-Port in der Firewall freigeben Damit Clients den Server erreichen können, muss der verwendete UDP-Port offen sein. In diesem Beispiel ist das 443/UDP. Server: 443/UDP eingehend erlauben Client: keine eingehende Freigabe nötig Wichtig: Wenn beim Hoster eine zusätzliche Firewall aktiv ist, muss dort ebenfalls 443/UDP erlaubt werden 5. WireGuard auf dem Server starten Nach dem Speichern der Konfiguration wird das Interface gestartet und beim Booten aktiviert. systemctl enable --now wg-quick@wg0 systemctl status wg-quick@wg0 --no-pager wg show Falls die Konfigurationsdatei später geändert wird, muss der Dienst neu geladen werden: systemctl restart wg-quick@wg0 wg show 6. WireGuard auf dem Client installieren Auch auf dem Client wird zunächst WireGuard installiert und das Konfigurationsverzeichnis angelegt. apt update apt install -y wireguard-tools install -d -m 700 /etc/wireguard cd /etc/wireguard umask 077 7. Schlüssel auf dem Client erzeugen Der Client erzeugt sein eigenes Schlüsselpaar lokal. Der Private Key bleibt nur auf dem Client. wg genkey | tee client1.key | wg pubkey | tee client1.pub >/dev/null chmod 600 /etc/wireguard/client1.key chmod 644 /etc/wireguard/client1.pub Der Public Key des Clients kann angezeigt werden mit: cat /etc/wireguard/client1.pub Dieser Public Key wird anschließend in die Server-Konfiguration im passenden [Peer]-Block eingetragen. 8. Client-Konfiguration erstellen Die Datei /etc/wireguard/wg0.conf auf dem Client anlegen: nano /etc/wireguard/wg0.conf Beispielinhalt für Client 1: [Interface] Address = 172.31.255.253/32 PrivateKey = CLIENT1_PRIVATE_KEY [Peer] PublicKey = SERVER_PUBLIC_KEY PresharedKey = CLIENT1_PRESHARED_KEY Endpoint = DEINE_VPS_IP:443 AllowedIPs = 172.31.255.254/32 PersistentKeepalive = 25 Platzhalter ersetzen: CLIENT1_PRIVATE_KEY mit dem Inhalt von /etc/wireguard/client1.key SERVER_PUBLIC_KEY mit dem Inhalt von /etc/wireguard/server.pub CLIENT1_PRESHARED_KEY mit dem Preshared Key aus /etc/wireguard/client1.psk vom Server DEINE_VPS_IP mit der öffentlichen IPv4-Adresse des Servers Wichtig: In diesem Beispiel erlaubt AllowedIPs = 172.31.255.254/32 nur den Zugriff auf die Tunnel-IP des Servers. Der gesamte Internetverkehr des Clients wird dadurch nicht automatisch über WireGuard geleitet. 9. Verbindung auf dem Client starten Zum Testen wird das Interface zunächst manuell gestartet. wg-quick up wg0 Status prüfen: wg show ip addr show wg0 ping -c 3 172.31.255.254 Verbindung wieder beenden: wg-quick down wg0 Wenn alles funktioniert, kann WireGuard dauerhaft aktiviert werden: systemctl enable --now wg-quick@wg0 systemctl status wg-quick@wg0 --no-pager wg show 10. Weitere Clients hinzufügen Für jeden weiteren Client werden dieselben Schritte wiederholt: Auf dem Client eigenes Schlüsselpaar erzeugen Auf dem Server einen eigenen PresharedKey erzeugen Auf dem Server einen neuen [Peer]-Block anlegen Dem Client eine eigene feste Tunnel-IP geben Server-Dienst nach Änderungen neu starten Beispiel für Client 2: Client 2 IP: 172.31.255.252/32 Server Peer AllowedIPs: 172.31.255.252/32 11. Typische Fehlerquellen Server-Konfiguration geändert, aber systemctl restart wg-quick@wg0 vergessen Falsche Tunnel-IP angepingt Falscher oder vertauschter Public/Private Key Falscher oder fehlender PresharedKey 443/UDP beim Hoster oder auf dem Server nicht freigegeben Falsche öffentliche IPv4 im Endpoint 12. Kurzfassung Server installieren und Schlüssel erzeugen Server-Config mit [Interface] und [Peer] erstellen 443/UDP freigeben Server mit wg-quick@wg0 starten Client installieren und eigenes Schlüsselpaar erzeugen Client-Config mit Server-Public-Key, Preshared Key und Endpoint erstellen Client mit wg-quick up wg0 starten und Verbindung testen