WireGuard — schlankes, modernes VPN auf der Kommandozeile
Praxis-Guide zu WireGuard: Schlüsselpaare erzeugen, Peers und AllowedIPs konfigurieren, Tunnel mit wg und wg-quick verwalten und Verbindungen prüfen.
WireGuard ist ein modernes, schlankes VPN-Protokoll, das direkt im Linux-Kernel läuft und mit nur wenigen tausend Zeilen Code auskommt – ein Bruchteil von OpenVPN oder IPsec. Statt komplexer Cipher-Aushandlung setzt es auf festgelegte, moderne Kryptografie (Curve25519, ChaCha20, Poly1305) und macht die Konfiguration dadurch erstaunlich übersichtlich. Mit wg verwaltest du Schlüssel, Peers und den Tunnel-Status, mit wg-quick bringst du ein Interface per Konfigurationsdatei in Sekunden hoch oder runter. Jeder Knoten besitzt ein Curve25519-Schlüsselpaar; Peers werden über ihren PublicKey, ihre AllowedIPs und einen Endpoint verknüpft. Dieser Guide führt dich von der Schlüsselerzeugung über das Peer-Management bis zur Fehlersuche am laufenden Tunnel.
Schlüsselerzeugung
wg genkey — Erzeugt einen privaten Schlüssel (Curve25519). Der PrivateKey darf niemals geteilt werden – Dateirechte mit chmod 600 absichern.
wg genkey > private.keywg pubkey < <private-key-file> — Leitet aus einem privaten Schlüssel den passenden PublicKey ab, der gefahrlos mit Peers geteilt werden kann.
wg pubkey < private.key > public.keywg genkey | tee private.key | wg pubkey > public.key — Erzeugt PrivateKey und PublicKey in einem Befehl.
wg genkey | tee private.key | wg pubkey > public.keywg genpsk — Erzeugt einen Pre-Shared Key für eine zusätzliche symmetrische Sicherheitsschicht.
wg genpsk > preshared.keywg-quick (Einfaches Setup)
wg-quick up <interface> — Bringt ein WireGuard-Interface anhand seiner Konfigurationsdatei hoch.
wg-quick up wg0wg-quick down <interface> — Fährt ein WireGuard-Interface herunter.
wg-quick down wg0wg-quick strip <interface> — Zeigt die Konfiguration ohne die wg-quick-Zusätze (reines wg-Format).
wg-quick strip wg0systemctl enable wg-quick@<interface> — Startet WireGuard automatisch beim Booten.
systemctl enable wg-quick@wg0systemctl start wg-quick@<interface> — Startet WireGuard über systemd.
systemctl start wg-quick@wg0wg-Interface-Verwaltung
wg show — Zeigt den Status aller WireGuard-Interfaces.
wg showwg show <interface> — Zeigt den Status eines bestimmten Interface.
wg show wg0wg show <interface> dump — Gibt den Status in maschinenlesbarer Form aus.
wg show wg0 dumpwg showconf <interface> — Zeigt die laufende Konfiguration.
wg showconf wg0wg set <interface> listen-port <port> — Setzt den Listening-Port.
wg set wg0 listen-port 51820wg set <interface> private-key <file> — Setzt den PrivateKey für ein Interface.
wg set wg0 private-key /etc/wireguard/private.keyPeer-Verwaltung
wg set <interface> peer <pubkey> allowed-ips <cidr> endpoint <host:port> — Fügt einem Interface einen Peer hinzu. Die AllowedIPs bestimmen, welche Ziel-IPs durch den Tunnel geroutet werden – sorgfältig setzen, denn sie steuern Routing und Sicherheit.
wg set wg0 peer ABC123...= allowed-ips 10.0.0.2/32 endpoint 203.0.113.1:51820wg set <interface> peer <pubkey> remove — Entfernt einen Peer von einem Interface.
wg set wg0 peer ABC123...= removewg set <interface> peer <pubkey> persistent-keepalive <seconds> — Setzt das Keepalive-Intervall für NAT-Traversal.
wg set wg0 peer ABC123...= persistent-keepalive 25wg set <interface> peer <pubkey> preshared-key <file> — Setzt einen Pre-Shared Key für einen Peer.
wg set wg0 peer ABC123...= preshared-key /etc/wireguard/psk.keywg show <interface> latest-handshakes — Zeigt, wann jeder Peer zuletzt einen Handshake abgeschlossen hat.
wg show wg0 latest-handshakeswg show <interface> transfer — Zeigt die Transfer-Statistik pro Peer.
wg show wg0 transferFehlersuche
wg show <interface> endpoints — Zeigt die aktuellen Endpoints aller Peers.
wg show wg0 endpointsping -c 4 <peer-ip> — Testet die Verbindung zu einem Peer durch den Tunnel.
ping -c 4 10.0.0.2ip addr show <interface> — Zeigt die IP-Konfiguration des WireGuard-Interface.
ip addr show wg0ip route | grep <interface> — Prüft, welche Routen durch den WireGuard-Tunnel laufen.
ip route | grep wg0journalctl -u wg-quick@<interface> — Zeigt die systemd-Logs des WireGuard-Dienstes.
journalctl -u wg-quick@wg0 -f Fazit
WireGuard zeigt, dass ein VPN nicht kompliziert sein muss: ein Schlüsselpaar pro Knoten, eine knappe Konfigurationsdatei und zwei Kommandos genügen für einen verschlüsselten Tunnel. Achte vor allem auf zwei Dinge – halte den PrivateKey unter Verschluss (chmod 600, niemals teilen) und setze die AllowedIPs bewusst, denn sie entscheiden über Routing und damit über die Sicherheit deines Tunnels. Wer mehr als eine Handvoll Peers verwaltet, kombiniert WireGuard mit systemd (wg-quick@) und einer versionierten Konfiguration unter /etc/wireguard/.
Weiterführende Links
- WireGuard – offizielle Website – Konzept, Protokoll und Downloads (englisch)
- WireGuard Quick Start – Schnelleinstieg Schritt für Schritt (englisch)
- WireGuard – Wikipedia – Hintergrund und Einordnung