Eigenen WireGuard-VPN-Server unter Debian einrichten
Schritt-für-Schritt-Anleitung für einen schnellen, modernen WireGuard-VPN-Server unter Debian 11/10 – von der Installation über NAT/Firewall-Regeln bis zur Client-Konfiguration.
WireGuard ist speziell für den Linux-Kernel entwickelt und gilt als deutlich schlanker und schneller als klassisches OpenVPN. Es läuft plattformübergreifend (Linux, BSD, macOS, Windows, Android, iOS, OpenWRT), authentifiziert Clients über Schlüsselpaare ähnlich wie SSH und erlaubt nahtloses Wechseln zwischen WLAN und Mobilfunk ohne Verbindungsabbruch.
1. WireGuard installieren
Unter Debian 11 (Bullseye) ist WireGuard direkt im Repository enthalten:
apt update
apt install wireguard wireguard-tools linux-headers-$(uname -r)
Unter Debian 10 (Buster) wird zusätzlich das Backports-Repository benötigt:
echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
apt update
apt -t buster-backports install wireguard wireguard-tools wireguard-dkms linux-headers-$(uname -r)
Auf dem Client (ebenfalls Debian) zusätzlich openresolv installieren, um die DNS-Konfiguration zu ermöglichen.
2. Schlüsselpaar erzeugen
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key
3. Konfigurationsdatei erstellen
nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = <privater Server-Schlüssel>
[Peer]
PublicKey = <öffentlicher Client-Schlüssel>
AllowedIPs = 10.10.10.2/32
Dabei steht Address für die private IP des VPN-Servers in einem eigenen, mit dem Heimnetz nicht überlappenden Subnetz (z. B. 10.10.10.0/24), ListenPort für den UDP-Standardport, und AllowedIPs begrenzt, welche IP der jeweilige Client im Tunnel nutzen darf. Anschließend die Zugriffsrechte einschränken:
chmod 600 /etc/wireguard/ -R
4. IP-Weiterleitung aktivieren
nano /etc/sysctl.conf
Am Ende ergänzen:
net.ipv4.ip_forward = 1
Und anwenden:
sysctl -p
5. NAT/Masquerading über UFW einrichten
apt install ufw
ufw allow 22/tcp
ip addr # Name der Hauptnetzwerkschnittstelle ermitteln, z. B. ens192
In /etc/ufw/before.rules am Ende ergänzen (Schnittstellenname anpassen):
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ens192 -j MASQUERADE
COMMIT
Und im Abschnitt ufw-before-forward die Weiterleitung für das VPN-Subnetz erlauben:
-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
UFW aktivieren bzw. neu starten:
ufw enable
systemctl restart ufw
6. DNS-Resolver einrichten
apt install bind9
In /etc/bind/named.conf.options rekursive Anfragen aus dem VPN-Netz erlauben:
allow-recursion { 127.0.0.1; 10.10.10.0/24; };
In /etc/default/named sicherstellen, dass IPv4 erzwungen wird:
OPTIONS="-u bind -4"
Anschließend Bind neu starten und den VPN-Clients den Zugriff auf Port 53 erlauben:
systemctl restart bind9
ufw insert 1 allow in from 10.10.10.0/24
7. WireGuard-Port öffnen
ufw allow 51820/udp
8. WireGuard starten
wg-quick up /etc/wireguard/wg0.conf
# dauerhaft per systemd
systemctl enable --now wg-quick@wg0.service
9. Client einrichten
Beispielkonfiguration für einen Windows-Client:
[Interface]
PrivateKey = <privater Client-Schlüssel>
Address = 10.10.10.2/24
DNS = 10.10.10.1, 1.1.1.1
[Peer]
PublicKey = <öffentlicher Server-Schlüssel>
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
Endpoint = <öffentliche Server-IP>:51820
PersistentKeepalive = 25
Auf dem Server muss der passende Peer-Eintrag ergänzt werden. Bei jedem neuen Client ist ein Neustart des WireGuard-Interfaces erforderlich:
wg-quick down /etc/wireguard/wg0.conf
wg-quick up /etc/wireguard/wg0.conf
Tipp: Konfigurationsgenerator
Für die Erstellung von Schlüsseln und QR-Codes gibt es komfortable browserbasierte Generatoren – praktisch für den schnellen Einstieg, aber wie immer nur über vertrauenswürdige Quellen nutzen.
Eigenes IT-Problem?
Nicht jeder Fall passt in einen Tipp
Wenn es bei Ihnen komplizierter wird, übernehmen wir das gerne direkt für Sie.