Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
In diesem Tutorial erkläre ich, wie Sie mit OPNsense und ZeroTier einen robusten, wartbaren Fernzugriff auf Ihr eigenes Netzwerk aufbauen. Ziel ist ein Zero‑Trust‑ähnliches VPN, das sich gut in bestehende Firewall‑Regeln, Routing und DNS‑Lösungen integriert und für fortgeschrittene Entwickler und DevOps‑Profis reproduzierbar ist.
Ich zeige sowohl GUI‑ als auch CLI‑Schritte, Konfigurationsbeispiele, typische Fallstricke und Security‑Empfehlungen. Das Tutorial geht davon aus, dass Sie OPNsense bereits als Gateway/Firewall betreiben und Zugriff auf die Weboberfläche sowie die Konsole haben.
Relevante Links und Referenzen:
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass folgende Punkte erfüllt sind:
Architekturüberblick
Die Grundidee: OPNsense läuft als ZeroTier‑Member und verbindet sich zu einem ZeroTier‑Netzwerk. OPNsense kann über das ZeroTier‑Interface Routen zu internen LANs ankündigen (Managed Routes), so dass andere ZeroTier‑Peers direkt auf Geräte hinter OPNsense zugreifen können. Firewall‑Regeln auf OPNsense kontrollieren Traffic zwischen ZeroTier und internen Netzen.
Typische Komponenten:
Schritt 1 — ZeroTier Netzwerk anlegen
Besuchen Sie ZeroTier Central, melden Sie sich an und erstellen Sie ein neues Netzwerk.
Empfohlene Einstellungen:
Notieren Sie die Network ID; Sie benötigen sie zum Joinen auf OPNsense und Clients.
Schritt 2 — ZeroTier Plugin auf OPNsense installieren
OPNsense bietet ein Community‑Plugin oder Paket für ZeroTier. Installieren Sie es bevorzugt über die WebUI:
WebUI:
CLI (falls GUI nicht erwünscht):
Auf der OPNsense Konsole bzw. per SSH:
sudo pkg update
sudo pkg install os‑zerotier
Starten Sie danach die OPNsense WebUI neu oder starten Sie den Plugin‑Service.
Schritt 3 — OPNsense dem ZeroTier Netzwerk beitreten
GUI:
CLI:
Wenn der Dienst os‑zerotier direkt installiert ist, können Sie
sudo zerotier-cli join
ausführen. Prüfen Sie mit
sudo zerotier-cli listnetworks
oder
sudo ifconfig | grep zt
ob ein Interface erstellt wurde (z. B. zt0) und eine IP zugewiesen ist.
Schritt 4 — Node autorisieren und IP prüfen
In ZeroTier Central erscheint nun Ihr OPNsense‑Node als unauthorisierter Member. Autorisieren Sie ihn und prüfen Sie die zugewiesene IP (z. B. 10.147.17.2).
Wichtig: Notieren Sie die Node‑ID von OPNsense. Sie benötigen diese für Managed Routes und ACLs.
Schritt 5 — Managed Route für LAN ankündigen
Damit andere ZeroTier‑Peers direkt 192.168.1.0/24 (Beispiel LAN) erreichen können, müssen Sie die Route entweder in ZeroTier Central definieren oder OPNsense so konfigurieren, dass es Managed Routes ankündigt.
Option A — Route in ZeroTier Central anlegen (manuell):
Option B — OPNsense Managed Route (falls Plugin unterstützt):
In der OPNsense ZeroTier Konfiguration gibt es meist eine Option ‚Advertise Route‘ oder ‚Managed Routes‘. Tragen Sie das lokale LAN Subnet ein und aktivieren Sie das Advertisement. Das Plugin schreibt dann die Route in ZeroTier Central.
Ergebnis: Andere ZeroTier‑Peers lernen über ZeroTier, dass 192.168.1.0/24 über OPNsense erreichbar ist und routen Traffic dorthin.
Schritt 6 — Firewall Regeln auf OPNsense
Der häufigste Fehler ist fehlende oder falsche Firewall‑Rule, die Traffic vom ZeroTier Interface zum LAN blockiert. Legen Sie explizite Regeln an:
WebUI:
Firewall > Rules > [ZeroTier Interface (z. B. zt0)]
Erstellen Sie mindestens folgende Regel:
Optional: Inverse Rule für LAN->ZeroTier falls interne Hosts initieren sollen.
CLI Beispiel mit pfctl (nur Debug):
sudo pfctl -s rules | grep zt
Falls Sie Outbound NAT betreiben und Probleme auftreten, prüfen Sie NAT > Outbound; in 1:1 oder Manual Modus müssen Sie ggf. Regeln anpassen, damit Source IPs nicht unnötig SNATed werden.
Schritt 7 — DNS
Für eine benutzerfreundliche Namensauflösung haben Sie mehrere Optionen:
Beispiel: DNS in ZeroTier für Netzwerk setzen
DNS: 192.168.1.1
Search Domain: home.local
Clients erhalten dadurch beim Joinen automatisch DNS‑Settings von ZeroTier.
Schritt 8 — Testen und Troubleshooting
1) Prüfen Sie Interface und IPs auf OPNsense:
ifconfig | grep -A3 zt
zerotier-cli info
zerotier-cli listpeers
2) Prüfen Sie Routen auf einem Remote‑Client:
ip route | grep 192.168.1.0
traceroute 192.168.1.1
3) Testen Sie Connectivity:
Häufige Ursachen bei Problemen:
Schritt 9 — Sicherheit und Härtung
ZeroTier ist per Design ein Overlay‑Netz. Dennoch beachten Sie:
Link zu ACLs und Security‑Best‑Practices: ZeroTier Manual
Advanced Topics
Einige fortgeschrittene Szenarien:
Beispiel: ZeroTier Join via Shell Script und automatische Autorisierung (Admin‑Workflow)
# On OPNsense
sudo pkg install os‑zerotier
sudo zerotier-cli join 8b3f4a1c2d3e4f56
# Then check ID and paste into ZeroTier Central to authorize
zerotier-cli info
Tipps aus der Praxis / Insights
Beispiel: pfSense/OPNsense Firewallregel als XML‑Snippet
Wenn Sie Konfigurationen per config.xml deployen, sieht eine einfache Allow‑Regel etwa so aus (vereinfachtes Beispiel):
<rule>
<type>pass</type>
<interface>zt0</interface>
<protocol>any</protocol>
<source>
<network>10.147.17.0/24</network>
</source>
<destination>
<network>192.168.1.0/24</network>
</destination>
<description>Allow ZeroTier to LAN</description>
</rule>
Achten Sie bei Automation darauf, dass Sie bestehende Regeln nicht überschreiben.
Fazit und nächste Schritte
ZeroTier in Kombination mit OPNsense bietet eine flexible, skalierbare Lösung für Fernzugriff auf private Netzwerke ohne klassische VPN‑Server‑Infrastruktur. Die wichtigsten Schritte sind das Joinen des ZeroTier‑Netzwerks, Authorisierung des OPNsense‑Nodes, Ankündigung der Managed Routes und korrekte Firewall‑Regeln auf dem ZeroTier‑Interface.
Als nächste Schritte empfehle ich:
Wenn Sie weiterführende Beispiele oder ein Beispiel‑Repo mit Automation wünschen, kann ich ein Shell‑ und Ansible‑Playbook zur Verfügung stellen, das OPNsense per SSH vorbereitet, ZeroTier installiert und Managed Routes konfiguriert.
Quellen und weiterführende Lektüre:
Viel Erfolg beim Aufbau Ihrer ZeroTier‑basierten Fernzugriffe. Falls Sie möchten, kann ich ein Beispiel für ein Ansible‑Playbook oder eine Terraform‑basierte ZeroTier Central Provisioning Pipeline ergänzen, um die Lösung in einer produktiven Infrastruktur zu standardisieren.