Skip to main content

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:

  1. Auf dem Client eigenes Schlüsselpaar erzeugen
  2. Auf dem Server einen eigenen PresharedKey erzeugen
  3. Auf dem Server einen neuen [Peer]-Block anlegen
  4. Dem Client eine eigene feste Tunnel-IP geben
  5. 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

  1. Server installieren und Schlüssel erzeugen
  2. Server-Config mit [Interface] und [Peer] erstellen
  3. 443/UDP freigeben
  4. Server mit wg-quick@wg0 starten
  5. Client installieren und eigenes Schlüsselpaar erzeugen
  6. Client-Config mit Server-Public-Key, Preshared Key und Endpoint erstellen
  7. Client mit wg-quick up wg0 starten und Verbindung testen