WireGuard-VPN zwischen vServer und PC
Schlüssel erzeugen, wg0.conf auf beiden Seiten, Firewall und Weiterleitung nur, wenn du darüber ins Internet willst.
5 Min. Lesezeit
Auf dieser Seite
Mit WireGuard verbindest du deinen PC und deinen vServer über einen verschlüsselten Tunnel. Danach erreichst du Dienste auf dem Server, die nicht offen im Internet stehen sollen (Datenbank, Admin-Oberflächen), über eine private Adresse.
Gilt für Debian 12 und 13, Ubuntu 22.04 und 24.04, AlmaLinux 9 und Rocky Linux 9 auf dem Server. Auf dem PC nimmst du die offizielle WireGuard-App von https://www.wireguard.com/install/ (Windows, macOS, Linux, Android, iOS). Befehle auf dem Server laufen als root.
Wir nutzen dieses kleine Netz:
| Gerät | Adresse im Tunnel |
|---|---|
| vServer | 10.8.0.1 |
| PC | 10.8.0.2 |
Installieren
Debian und Ubuntu:
apt update
apt install -y wireguard-toolsAlmaLinux und Rocky Linux:
dnf install -y wireguard-toolsDas Kernelmodul ist bei allen genannten Systemen schon dabei.
Schlüssel erzeugen
Auf dem Server:
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
cat server.pubserver.key ist geheim und bleibt auf dem Server. server.pub ist der öffentliche Schlüssel, den bekommt der PC.
Auf dem PC: In der WireGuard-App Tunnel hinzufügen → Leeren Tunnel hinzufügen (Windows) bzw. „Neu erstellen“. Die App erzeugt den privaten Schlüssel selbst und zeigt den öffentlichen an. Unter Linux geht es mit denselben Befehlen wie auf dem Server (client.key, client.pub).
Server: wg0.conf
Leg /etc/wireguard/wg0.conf an. Bei PrivateKey steht der Inhalt von server.key, bei PublicKey der öffentliche Schlüssel des PCs:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = INHALT-VON-server.key
[Peer]
# Mein PC
PublicKey = OEFFENTLICHER-SCHLUESSEL-DES-PCS
AllowedIPs = 10.8.0.2/32PC: Tunnel-Konfiguration
In der App (oder unter Linux in /etc/wireguard/wg0.conf). PrivateKey hat die App schon eingetragen. Endpoint ist die IPv4 deines vServers aus dem Dashboard (Tab Netzwerk):
[Interface]
PrivateKey = PRIVATER-SCHLUESSEL-DES-PCS
Address = 10.8.0.2/24
[Peer]
PublicKey = INHALT-VON-server.pub
Endpoint = DEINE-SERVER-IP:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25AllowedIPs = 10.8.0.0/24 heißt: Nur der Verkehr ins Tunnelnetz läuft durch den Tunnel, alles andere geht wie gewohnt direkt ins Internet. PersistentKeepalive hält die Verbindung offen, wenn dein PC hinter einem Router mit NAT sitzt.
Firewall und Start
Öffne auf dem Server UDP 51820.
Debian und Ubuntu mit ufw:
ufw allow 51820/udpAlmaLinux und Rocky Linux mit firewalld:
firewall-cmd --permanent --add-port=51820/udp
firewall-cmd --reloadTunnel auf dem Server starten und beim Booten automatisch hochfahren:
systemctl enable --now wg-quick@wg0Auf dem PC in der App Aktivieren klicken (Linux: wg-quick up wg0).
Prüfen, ob es geklappt hat
Auf dem Server:
wg showBeim Peer sollte latest handshake vor wenigen Sekunden stehen und transfer Daten in beide Richtungen zeigen.
Vom PC aus:
ping 10.8.0.1Klappt der Ping, steht der Tunnel. Dienste, die auf dem Server nur auf 10.8.0.1 hören, erreichst du jetzt nur noch über den Tunnel.
Nur wenn nötig: allen Verkehr über den vServer leiten
Willst du, dass dein PC über den vServer ins Internet geht (z. B. im öffentlichen WLAN), braucht der Server Weiterleitung und NAT. Für den einfachen Zugriff auf den Server ist das nicht nötig; lass es dann weg.
-
Weiterleitung einschalten:
bashecho 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/99-wireguard.conf sysctl --system -
Den Namen der Netzwerkkarte herausfinden, über die der Server ins Internet geht (steht hinter
dev):baship route show default -
NAT einrichten.
Debian und Ubuntu: In
/etc/wireguard/wg0.confunter[Interface]ergänzen,eth0durch deinen Kartennamen ersetzen:iniPostUp = nft add table ip wg-nat; nft add chain ip wg-nat post '{ type nat hook postrouting priority 100; }'; nft add rule ip wg-nat post oifname "eth0" ip saddr 10.8.0.0/24 masquerade PostDown = nft delete table ip wg-natFehlt der Befehl
nft, installier ihn mitapt install -y nftables.Nutzt du
ufw, erlaube zusätzlich die Weiterleitung:ufw route allow in on wg0 out on eth0.AlmaLinux und Rocky Linux mit
firewalld:bashfirewall-cmd --permanent --zone=public --add-masquerade firewall-cmd --permanent --zone=trusted --add-interface=wg0 firewall-cmd --reload -
Auf dem PC
AllowedIPs = 0.0.0.0/0setzen und einen DNS-Server eintragen, z. B.DNS = 1.1.1.1unter[Interface]. -
Auf dem Server
systemctl restart wg-quick@wg0, auf dem PC den Tunnel neu aktivieren.
Prüfen: Auf dem PC zeigt eine Seite wie https://ifconfig.co jetzt die IPv4 deines vServers.
Häufige Fehler
- Kein Handshake. UDP 51820 ist zu, die Server-IP im
Endpointstimmt nicht, oder die öffentlichen Schlüssel sind vertauscht. Jede Seite trägt beim Peer den öffentlichen Schlüssel der anderen Seite ein. - Handshake ja, Ping nein. Die Adressen passen nicht zu
AllowedIPs. Der Server muss beim Peer10.8.0.2/32haben, der PC10.8.0.0/24. wg-quickmeldet „Line unrecognized“. Ein Tippfehler inwg0.conf, oft ein fehlendes=.- Mit
0.0.0.0/0geht gar nichts mehr ins Internet. Weiterleitung oder NAT auf dem Server fehlt, oder der Kartenname in derPostUp-Zeile ist falsch. - Nach dem Neustart des Servers ist der Tunnel weg.
systemctl enable wg-quick@wg0vergessen.
Wie es weitergeht
- Weitere Geräte bekommen je einen eigenen
[Peer]-Block mit eigener Adresse, z. B.10.8.0.3/32. - Die Datenbank nur im Tunnel erreichbar machen: MariaDB einrichten.
Kommst du nicht weiter, schreib uns ein Ticket.