Guides · OPNsense
WireGuard auf OPNsense einrichten: Road-Warrior-VPN Schritt für Schritt
WireGuard-VPN auf OPNsense für den Zugriff von unterwegs: Instanz, Peers, Firewall-Regeln, FritzBox-Portweiterleitung — und die Checkliste, wenn der Handshake nicht zustande kommt.
Veröffentlicht:
WireGuard ist der einfachste Weg, von unterwegs sicher ins Homelab zu kommen: schlank, schnell, in OPNsense fest integriert. Dieser Guide richtet ein klassisches Road-Warrior-Setup ein — Smartphone/Laptop wählen sich ins Heimnetz ein.
Vorbereitung
- OPNsense aktuell halten — WireGuard ist seit OPNsense 24.1 fest im Kern integriert (kein Plugin mehr nötig).
- Du brauchst einen Weg, deinen Anschluss von außen zu erreichen: eine öffentliche IPv4, DS-Lite mit IPv6 oder einen dynamischen DNS-Namen (DynDNS). Hinter einer FritzBox zusätzlich: Portweiterleitung (unten).
Schritt 1: WireGuard-Instanz anlegen
Unter VPN → WireGuard → Instances eine neue Instanz erstellen:
- Listen Port:
51820(frei wählbar, merken) - Tunnel Address: ein eigenes Transfernetz, z. B.
10.10.10.1/24 - Schlüsselpaar generieren lassen — der öffentliche Schlüssel wird gleich in den Clients gebraucht.
Nach dem Speichern WireGuard aktivieren (Haken Enable + Apply).
Schritt 2: Peer pro Gerät anlegen
Jedes Endgerät bekommt unter VPN → WireGuard → Peer generator bzw. Peers einen eigenen Eintrag:
- Allowed IPs: genau eine Adresse aus dem Tunnelnetz, z. B.
10.10.10.2/32fürs erste Gerät,10.10.10.3/32fürs zweite. - Der Peer-Generator erstellt direkt einen QR-Code für die WireGuard-App — dort sind Endpoint, Schlüssel und DNS schon eingetragen.
In der Client-Konfiguration entscheidet AllowedIPs über den Modus:
0.0.0.0/0— kompletter Traffic läuft durch den Tunnel (unterwegs im offenen WLAN sinnvoll).192.168.10.0/24, 10.10.10.0/24— Split-Tunnel: nur Heimnetz-Ziele gehen durch den Tunnel.
Schritt 3: Firewall-Regeln
Zwei Regeln sind nötig:
- WAN: eingehend UDP auf Port
51820erlauben (Destination: WAN address). Ohne diese Regel kommt kein Handshake zustande. - WireGuard-Interface: Was dürfen eingewählte Clients? Für den Anfang eine Allow-Regel auf die Netze, die erreichbar sein sollen — später gern feiner (z. B. nur Management-VLAN für dein eigenes Gerät).
Empfehlenswert: Der WireGuard-Instanz unter Interfaces → Assignments ein eigenes Interface zuweisen — dann tauchen die Regeln sauber getrennt auf und Routing/NAT verhalten sich vorhersehbar.
Schritt 4: Hinter der FritzBox — Portweiterleitung
Läuft die OPNsense hinter einer FritzBox, muss UDP 51820 dort ankommen:
Entweder ist die OPNsense als Exposed Host eingetragen (dann ist nichts
weiter zu tun), oder du legst eine gezielte Portfreigabe an:
Internet → Freigaben → Portfreigabe, Protokoll UDP, Port 51820 → interne
IP der OPNsense.
Als Endpoint im Client trägst du deinen DynDNS-Namen ein. Die FritzBox kann
DynDNS direkt aktualisieren (Internet → Freigaben → DynDNS) — alternativ
übernimmt das die OPNsense per ddclient-Plugin.
Troubleshooting: kein Handshake?
Die Checkliste in der Reihenfolge der häufigsten Ursachen:
- Kommt UDP 51820 überhaupt an? FritzBox-Freigabe auf die richtige interne IP? Exposed Host aktiv?
- DS-Lite-Anschluss? Ohne öffentliche IPv4 ist dein Anschluss über IPv4 von außen nicht erreichbar. Optionen: IPv6-Endpoint verwenden (Client braucht dann IPv6), beim Provider echte IPv4 anfragen — oder der Umweg über ein Relay (z. B. einen kleinen VPS als WireGuard-Hop).
- WAN-Regel vergessen? Der Klassiker: Instanz läuft, aber die Firewall verwirft den Handshake.
- Falscher öffentlicher Schlüssel oder Tippfehler beim Endpoint — WireGuard meldet keine Fehler, es schweigt einfach. Ein Blick unter VPN → WireGuard → Status zeigt, ob je ein Handshake ankam.
- AllowedIPs-Kollision: Zwei Peers mit derselben Allowed-IP verdrängen sich gegenseitig — jede Client-IP nur einmal vergeben.
- Hinter CGNAT im Mobilfunk funktioniert der eingehende Weg nie — für Road-Warrior egal (der Client baut die Verbindung auf), relevant nur für Site-to-Site.
Wie weiter?
Läuft der Tunnel, lohnen sich zwei Ausbaustufen: DNS durch den Tunnel (im Client die OPNsense/Unbound als DNS eintragen — dann funktionieren interne Hostnamen und Werbefilter auch unterwegs) und Site-to-Site zu einem zweiten Standort oder VPS.