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_KEYmit dem Inhalt von/etc/wireguard/server.keyCLIENT1_PUBLIC_KEYmit dem Public Key des ClientsCLIENT1_PRESHARED_KEYmit dem Inhalt von/etc/wireguard/client1.psk
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/UDPeingehend erlauben - Client: keine eingehende Freigabe nötig
- Wichtig: Wenn beim Hoster eine zusätzliche Firewall aktiv ist, muss dort ebenfalls
443/UDPerlaubt 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_KEYmit dem Inhalt von/etc/wireguard/client1.keySERVER_PUBLIC_KEYmit dem Inhalt von/etc/wireguard/server.pubCLIENT1_PRESHARED_KEYmit dem Preshared Key aus/etc/wireguard/client1.pskvom ServerDEINE_VPS_IPmit der öffentlichen IPv4-Adresse des Servers
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
PresharedKeyerzeugen - 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@wg0vergessen - Falsche Tunnel-IP angepingt
- Falscher oder vertauschter Public/Private Key
- Falscher oder fehlender
PresharedKey 443/UDPbeim 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/UDPfreigeben- Server mit
wg-quick@wg0starten - Client installieren und eigenes Schlüsselpaar erzeugen
- Client-Config mit Server-Public-Key, Preshared Key und
Endpointerstellen - Client mit
wg-quick up wg0starten und Verbindung testen
No Comments