Was ist WireGuard?
WireGuard ist ein Open-Source-VPN-Protokoll, das seit Linux-Kernel-Version 5.6 integriert ist (auch verfügbar für Windows, macOS, Android und iOS). Das Design ist minimalistisch: weniger als 4.000 Codezeilen, moderne Kryptographie (Curve25519, ChaCha20-Poly1305, BLAKE2s) und reproduzierbare Konfiguration basierend auf Schlüsselpaaren. Im Gegensatz zu OpenVPN oder IPsec ist keine Zertifikatsinfrastruktur erforderlich und der Handshake dauert Millisekunden.
Warum für IoT verwenden?
Im Feld eingesetzte IoT-Gateways verbinden sich über Betreibernetzwerke mit NAT oder CGNAT — sie haben keine feste öffentliche IP und sind nicht direkt erreichbar. Mit WireGuard baut jedes Gerät einen verschlüsselten Tunnel zu einem zentralen Server mit statischer IP auf. Das zentrale System sieht alle Gateways, als wären sie im selben lokalen Netz, ohne Ports nach außen zu öffnen.
WireGuard ermöglicht die Einrichtung verschlüsselter VPN-Tunnel mit minimalem Footprint und reproduzierbarer Konfiguration. Dieser Leitfaden behandelt die Installation und Konfiguration eines WireGuard-Servers unter Linux (Ubuntu/Debian) und Windows 10/11: Schlüsselgenerierung, wg0.conf-Datei, Dienstaktivierung und Handshake-Verifizierung mit dem Peer. Derselbe Server unterstützt mehrere gleichzeitige Peers ohne Leistungseinbußen.
Tunnelarchitektur
Der WireGuard-Tunnel ist Punkt-zu-Punkt: Ein zentraler Server (Ihre Instanz auf AWS, GCP oder on-premise) fungiert als statischer Peer mit fester öffentlicher IP, und der Remote-Peer ist der dynamische Client, der die Verbindung initiiert. Dies schafft einen verschlüsselten Zugriffskanal für Fernkonfiguration, Diagnose oder jeden Dienst, der sichere Kommunikation zwischen beiden Endpunkten erfordert.
| Komponente | WireGuard-Rolle | Tunnel-IP (Beispiel) |
|---|---|---|
| VPN-Server (Linux / Windows) | Statischer Peer (aktiver ListenPort) | 10.8.0.1/24 |
| Peer / cliente remoto | Dynamischer Peer (initiiert Verbindung) | 10.8.0.2/32 |
Schritt 1 — WireGuard auf dem Server installieren
Linux (Ubuntu / Debian)
Auf einem Ubuntu 22.04- oder Debian 12-Server (empfohlen):
sudo apt update && sudo apt install -y wireguard sudo modprobe wireguard # lädt das Kernel-Modul
Überprüfen Sie, ob das Modul verfügbar ist:
lsmod | grep wireguard # wireguard 90112 0
Windows 10 / 11
Laden Sie den offiziellen Installer von wireguard.com/install herunter oder verwenden Sie winget:
# Option A — winget (Windows 10 v1709+ / Windows 11) winget install WireGuard.WireGuard # Option B — grafischer Installer # Laden Sie die .msi von wireguard.com/install herunter und führen Sie sie als Administrator aus
Prüfen Sie, ob wg.exe verfügbar ist, indem Sie PowerShell oder CMD öffnen:
wg --version # wireguard-windows v0.5.3
Schritt 2 — Schlüsselpaar auf dem Server generieren
Linux (Ubuntu / Debian)
# Generiert den privaten Schlüssel des Servers wg genkey | sudo tee /etc/wireguard/server_private.key # Leitet den öffentlichen Schlüssel ab sudo cat /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key sudo chmod 600 /etc/wireguard/server_private.key
Speichern Sie den öffentlichen Schlüssel des Servers an einem sicheren Ort — Sie müssen ihn mit jedem Peer teilen, der sich verbindet.
Windows 10 / 11
wg.exe wird unter C:\Program Files\WireGuard\ installiert. Führen Sie PowerShell als Administrator aus:
cd "C:Program FilesWireGuard" # Generiert den privaten Schlüssel des Servers .wg.exe genkey | Set-Content server_private.key # Leitet den öffentlichen Schlüssel ab Get-Content .server_private.key | .wg.exe pubkey | Set-Content server_public.key
GUI-Alternative: Klicken Sie in der WireGuard-App auf 'Add Tunnel' → 'Add empty tunnel'. Die App generiert das Schlüsselpaar automatisch und zeigt den öffentlichen Schlüssel an. Fügen Sie einfach Address, ListenPort und die [Peer]-Blöcke hinzu.
Schritt 3 — Server-Konfigurationsdatei erstellen
Linux (Ubuntu / Debian)
Erstellen Sie /etc/wireguard/wg0.conf mit folgendem Inhalt (ersetzen Sie die Werte zwischen < >) : (/etc/wireguard/wg0.conf)
[Interface] PrivateKey = <Inhalt von server_private.key> Address = 10.8.0.1/24 ListenPort = 51820 # Aktiviert IP-Forwarding für Routing zwischen Peers PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # gateway IoT / embedded device Index AMI — Einheit 001 PublicKey = <öffentlicher Schlüssel des Index AMI — generiert in Schritt 4> AllowedIPs = 10.8.0.2/32
Hinweis: UDP-Port 51820 muss in der Server-Firewall geöffnet sein. Auf AWS: Eingehende Regel UDP 51820 in der Security Group. Auf GCP: VPC-Firewall-Regel mit UDP-Protokoll und Port 51820.
Windows 10 / 11
Das Format von wg0.conf ist identisch mit Linux. Windows benötigt keine PostUp/PostDown-Zeilen (manuelles Routing falls erforderlich):
[Interface] PrivateKey = <contenido de server_private.key> Address = 10.8.0.1/24 ListenPort = 51820 [Peer] PublicKey = <clave pública del peer — generada en Paso 4> AllowedIPs = 10.8.0.2/32
Importieren Sie die Datei als Windows-Dienst (PowerShell oder CMD als Administrator):
# Installiert den Tunnel als Windows-Dienst wireguard /installtunnelservice "C:WireGuardwg0.conf" # Der Dienst startet automatisch mit dem Namen: WireGuardTunnel$wg0
Öffnen Sie den UDP-Port 51820 in der Windows-Firewall (PowerShell als Administrator):
New-NetFirewallRule -DisplayName "WireGuard VPN" ` -Direction Inbound -Protocol UDP ` -LocalPort 51820 -Action Allow
Schritt 4 — Peer zum Server hinzufügen
Wenn der Peer Ihnen seinen öffentlichen Schlüssel sendet, fügen Sie am Ende der wg0.conf-Datei des Servers einen [Peer]-Block hinzu:
[Peer] # Beschreibender Peer-Name (optionaler Kommentar) PublicKey = <öffentlicher Schlüssel des Peers> AllowedIPs = 10.8.0.2/32
Konfiguration ohne Dienstneustart neu laden:
Linux (Ubuntu / Debian)
sudo wg syncconf wg0 <(wg-quick strip wg0)
Windows 10 / 11
Öffnen Sie die WireGuard-Benutzeroberfläche → wählen Sie den wg0-Tunnel → bearbeiten Sie die Datei und fügen Sie den [Peer]-Block hinzu → Änderungen anwenden.
Schritt 5 — Interface hochfahren und Handshake überprüfen
Linux (Ubuntu / Debian)
Auf dem Server:
sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0
Überprüfen Sie den Interface-Status:
sudo wg show # Erwartete Ausgabe: interface: wg0 public key: <öffentlicher Schlüssel des Servers> private key: (hidden) listening port: 51820 peer: <öffentlicher Schlüssel des Index AMI> endpoint: <4G-IP des Index AMI>:XXXXX allowed ips: 10.8.0.2/32 latest handshake: 3 seconds ago transfer: 1.23 KiB received, 2.45 KiB sent
Das Feld latest handshake mit einem aktuellen Wert (weniger als 3 Minuten) bestätigt, dass der Tunnel aktiv ist. Wenn es nicht erscheint, prüfen Sie den Abschnitt zur Fehlerbehebung.
Windows 10 / 11
Wenn Sie den Dienst mit /installtunnelservice installiert haben, startet der Tunnel automatisch. Für manuelles Management von PowerShell aus:
sc start WireGuardTunnel$wg0 # o para detenerlo: sc stop WireGuardTunnel$wg0
GUI-Alternative: Öffnen Sie WireGuard aus der Taskleiste oder dem Startmenü und schalten Sie den wg0-Tunnel-Schalter.
Überprüfen Sie den Tunnel-Status mit wg.exe (muss im PATH sein oder vollständigen Pfad verwenden):
wg show # interface: wg0 # public key: ... # listening port: 51820 # peer: ... # latest handshake: 3 seconds ago
Schritt 6 — Ende-zu-Ende-Konnektivität überprüfen
Pingen Sie vom Server aus die Tunnel-IP des Index AMI an:
ping 10.8.0.2 # PING 10.8.0.2 (10.8.0.2): 56 data bytes # 64 bytes from 10.8.0.2: icmp_seq=0 ttl=64 time=8.3 ms
Eine Latenz unter 15 ms über LTE ist normal. Wenn Ihre Verwaltungsanwendung auf demselben Server läuft, kann sie den Peer bereits direkt über 10.8.0.2.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Kein Handshake nach 2 Min | UDP-Port 51820 blockiert | Öffnen Sie UDP 51820 in der Server-Firewall / Security Group |
| Handshake OK, aber kein Ping | Routen oder AllowedIPs falsch konfiguriert | Überprüfen Sie, dass AllowedIPs des Peers die Ziel-IP enthält |
| Tunnel bricht nach 3–5 Min ohne Traffic ab | 4G-NAT lässt die UDP-Sitzung ablaufen | Stellen Sie sicher, dass PersistentKeepalive = 25 am Index AMI-Peer gesetzt ist |
| Ungültiger öffentlicher Schlüssel | Zeichen beim Kopieren abgeschnitten | Der Schlüssel hat genau 44 Base64-Zeichen; kopieren Sie ihn vollständig |
Mesh-Topologie (mehrere Gateways)
Für Deployments mit mehr als einem Index AMI fügen Sie einen zusätzlichen [Peer]-Block pro Einheit in die wg0.conf des Servers ein. Jedes Index AMI erhält eine eindeutige Tunnel-IP (10.8.0.2, 10.8.0.3, …). Der Server fungiert als zentraler Hub — die Index AMI benötigen keine gegenseitige Sichtbarkeit.
[Peer] # gateway IoT / embedded device Index AMI — Einheit 002 PublicKey = <öffentlicher Schlüssel Einheit 002> AllowedIPs = 10.8.0.3/32 [Peer] # gateway IoT / embedded device Index AMI — Einheit 003 PublicKey = <öffentlicher Schlüssel Einheit 003> AllowedIPs = 10.8.0.4/32
Linux (Ubuntu / Debian)
Änderungen ohne Neustart des Dienstes live anwenden:
sudo wg addconf wg0 /etc/wireguard/wg0.conf # oder wenn der Peer direkt hinzugefügt wird: sudo wg set wg0 peer <public key> allowed-ips 10.8.0.3/32
Windows 10 / 11
Unter Windows sind Hot-Änderungen mit wg addconf nicht direkt verfügbar. Um einen Peer hinzuzufügen, bearbeiten Sie wg0.conf, stoppen Sie den Dienst mit sc stop WireGuardTunnel$wg0 (oder über die GUI) und starten Sie ihn neu.
Nächste Schritte
Mit aktivem Server und verifiziertem Handshake ist der verschlüsselte Tunnel betriebsbereit. Der Remote-Peer ist sicher über seine Tunnel-IP von jedem Netzwerkpunkt aus erreichbar. Wenn der RS485-Bus des Peers Kommunikationsfehler aufweist, lesen Sie die Anleitung zur RS485-Felddiagnose.