OPNsense – OpenVPN Legacy auf Instances umstellen
Ab OPNsense 25.7 wird das alte OpenVPN unter „Servers [legacy]“ nur noch als Plugin weitergeführt und ab Version 26.1 komplett entfernt. Wer also noch mit dem Legacy-Modus arbeitet, sollte spätestens jetzt auf das neue „Instances“-System umstellen – bevor das nächste Major-Update einem die Entscheidung abnimmt.
Bei mir liefen zwei OpenVPN-Server im Legacy-Modus: einer als Full-Tunnel (gesamter Traffic über VPN, ideal für öffentliche WLANs) und einer als Split-Tunnel (nur Heimnetz-Zugriff). Beide mussten umgezogen werden.
Das Gute vorweg: Die bestehenden Client-Konfigurationen (.ovpn-Dateien) funktionieren nach der Umstellung weiterhin, solange man Port, Protokoll und Tunnel-Netz beibehält.
🔧 Voraussetzungen
- OPNsense 25.1 oder neuer (Instances gibt es seit 23.7)
- Zugriff auf die OPNsense-Weboberfläche
- Bestehende OpenVPN Legacy-Server die umgezogen werden sollen
📋 Schritt 0: Legacy-Einstellungen dokumentieren
Bevor man irgendetwas ändert, die Einstellungen der bestehenden Legacy-Server notieren. Am besten Screenshots machen von jedem Server unter VPN → OpenVPN → Servers [legacy] (Bleistift-Icon).
Wichtig sind vor allem:
- Server Mode (z.B. Remote Access SSL/TLS + User Auth)
- Protocol und Port
- TLS Shared Key (falls vorhanden)
- Server Certificate und CA
- Encryption Algorithm und Auth Digest
- IPv4 Tunnel Network
- Redirect Gateway (ja/nein)
- IPv4 Local Network
- DNS Server (falls gepusht)
- Duplicate Connections (ja/nein)
🔑 Schritt 1: TLS Static Key anlegen
Falls die Legacy-Server einen TLS Shared Key nutzen, muss dieser zuerst ins neue System übernommen werden.
- Den TLS Shared Key aus dem Legacy-Server kopieren: VPN → OpenVPN → Servers [legacy] → Server bearbeiten → Feld „TLS Shared Key“ komplett kopieren
- VPN → OpenVPN → Instances → Tab „Static Keys“ → + klicken
- Description: einen sinnvollen Namen vergeben (z.B.
MeinVPN-TLS-Key) - Mode: crypt (entspricht „Authentication & encryption“ im Legacy)
- Static Key: den kopierten Key einfügen
- Save
Tipp: Wenn beide Legacy-Server denselben TLS Shared Key verwenden, reicht ein einziger Static Key Eintrag für beide neuen Instanzen.
🖥️ Schritt 2: Neue Instanzen anlegen
VPN → OpenVPN → Instances → Tab „Instances“
Ganz wichtig: Oben links den Advanced Mode aktivieren! Ohne Advanced Mode werden einige Felder (z.B. Keepalive, Certificate Depth) nicht angezeigt.
Dann auf + klicken und die Werte vom Legacy-Server übertragen. Hier die wichtigsten Felder und wo man sie findet:
General Settings
| Einstellung | Hinweis |
|---|---|
| Role | Server |
| Description | Frei wählbar |
| Protocol | Wie im Legacy (TCP oder UDP) |
| Port number | Wie im Legacy |
| Type | TUN |
| Server (IPv4) | Das Tunnel-Netzwerk aus dem Legacy |
| Topology | subnet |
| Keep alive interval | 10 |
| Keep alive timeout | 60 |
Trust
| Einstellung | Hinweis |
|---|---|
| Certificate | Das gleiche Server-Zertifikat wie im Legacy |
| Certificate Authority | Die gleiche CA wie im Legacy |
| Certificate Depth | One (Client+Server) – wie im Legacy |
| TLS static key | Den in Schritt 1 angelegten Key auswählen |
| Auth | SHA512 (oder was im Legacy unter „Auth Digest Algorithm“ stand) |
| Data Ciphers | AES-256-GCM (oder was im Legacy stand – aufpassen: nicht CBC mit GCM verwechseln!) |
Authentication
| Einstellung | Hinweis |
|---|---|
| Authentication | Local Database (oder wie im Legacy) |
| Strict User/CN Matching | Yes (wenn im Legacy aktiviert) |
Routing
| Einstellung | Hinweis |
|---|---|
| Local Network | Die lokalen Netze, die über VPN erreichbar sein sollen |
Miscellaneous
| Einstellung | Hinweis |
|---|---|
| Options | duplicate-cn (wenn im Legacy „Duplicate Connections“ aktiviert war) |
| Redirect Gateway | default für Full-Tunnel, leer lassen für Split-Tunnel |
| DNS Servers | z.B. die IP des Pi-hole, falls DNS über VPN gepusht werden soll |
| Push Options | block-outside-dns und register-dns für Full-Tunnel empfohlen |
Danach Save und Apply nicht vergessen.
🛡️ Schritt 3: Outbound NAT prüfen
Das war bei mir der Stolperstein!
Wer unter Firewall → NAT → Outbound den Modus „Hybrid“ oder „Manual“ nutzt, muss für Full-Tunnel-VPNs eine manuelle NAT-Regel hinzufügen. Die automatischen Regeln enthalten die neuen OpenVPN-Netzwerke möglicherweise nicht.
Ohne diese Regel hat man zwar VPN-Verbindung und erreicht das Heimnetz, aber keine Webseiten – weil der Traffic nicht nach außen geNATtet wird.
Firewall → NAT → Outbound → + (neue Regel)
| Feld | Wert |
|---|---|
| Interface | Das WAN-Interface |
| Source | Das Tunnel-Netzwerk (z.B. 10.0.8.0/24) |
| Destination | * |
| NAT Address | Interface address |
| Static Port | NO |
| Description | z.B. „OpenVPN Full-Tunnel NAT“ |
Hinweis: Für Split-Tunnel VPNs braucht man diese Regel in der Regel nicht, da der Internet-Traffic dort nicht durch den Tunnel läuft.
✅ Schritt 4: Legacy-Server deaktivieren und testen
- VPN → OpenVPN → Servers [legacy] → Bei jedem Server den grünen Play-Button drücken → wird grau (deaktiviert). Nicht löschen!
- Am Client die VPN-Verbindung trennen und neu verbinden
- Prüfen ob die Verbindung steht: VPN → OpenVPN → Connection Status
- Internet testen (Full-Tunnel) bzw. Heimnetz-Erreichbarkeit testen (Split-Tunnel)
- DNS prüfen: z.B. über
dnsleaktest.comoder die Pi-hole Admin-Oberfläche
Falls etwas nicht funktioniert: Legacy-Server wieder aktivieren (grauen Button drücken → wird grün). Man kann dann in Ruhe die Instanz-Einstellungen vergleichen.
🧹 Schritt 5: Aufräumen
Wenn alles stabil läuft (ich empfehle ein paar Tage warten):
- Legacy-Server löschen unter VPN → OpenVPN → Servers [legacy]
- Optional: das Legacy-Plugin unter System → Firmware → Plugins deinstallieren
⚠️ Fallstricke und Erkenntnisse
Hier die Dinge, die bei mir aufgefallen sind und die einem etwas Zeit sparen können:
- Advanced Mode vergessen: Ohne den Schalter oben links fehlen wichtige Felder wie Keepalive und Certificate Depth. Immer aktivieren!
- Data Ciphers verwechselt: AES-256-GCM ist nicht AES-256-CBC. Genau hinschauen was im Legacy konfiguriert war.
- Push Options vergessen: Ohne
block-outside-dnsundregister-dnskann es passieren, dass der Client den gepushten DNS ignoriert und weiterhin seinen lokalen DNS nutzt. - Outbound NAT: Der häufigste Grund warum nach der Migration „Internet nicht geht“ obwohl die VPN-Verbindung steht. Bei Hybrid-NAT immer prüfen!
- Firewall-Regeln: Wenn man die gleichen Tunnel-Netzwerke beibehält, greifen die bestehenden OpenVPN-Firewall-Regeln auch für die neuen Instanzen. Hier musste ich nichts ändern.
In der Hoffnung für den einen oder anderen eine Hilfe oder Anregung zu sein.
Solltet ihr Fragen, Tipps oder Anregungen haben, bin ich gerne dafür offen.
Kategorien: OPNsense, Netzwerk
Tags: OPNsense, OpenVPN, VPN, Migration, FirewallAb OPNsense 25.7 wird das alte OpenVPN unter „Servers [legacy]“ nur noch als Plugin weitergeführt und ab Version 26.1 komplett entfernt. Wer also noch mit dem Legacy-Modus arbeitet, sollte spätestens jetzt auf das neue „Instances“-System umstellen – bevor das nächste Major-Update einem die Entscheidung abnimmt.
Bei mir liefen zwei OpenVPN-Server im Legacy-Modus: einer als Full-Tunnel (gesamter Traffic über VPN, ideal für öffentliche WLANs) und einer als Split-Tunnel (nur Heimnetz-Zugriff). Beide mussten umgezogen werden.
Das Gute vorweg: Die bestehenden Client-Konfigurationen (.ovpn-Dateien) funktionieren nach der Umstellung weiterhin, solange man Port, Protokoll und Tunnel-Netz beibehält.
🔧 Voraussetzungen
- OPNsense 25.1 oder neuer (Instances gibt es seit 23.7)
- Zugriff auf die OPNsense-Weboberfläche
- Bestehende OpenVPN Legacy-Server die umgezogen werden sollen
📋 Schritt 0: Legacy-Einstellungen dokumentieren
Bevor man irgendetwas ändert, die Einstellungen der bestehenden Legacy-Server notieren. Am besten Screenshots machen von jedem Server unter VPN → OpenVPN → Servers [legacy] (Bleistift-Icon).
Wichtig sind vor allem:
- Server Mode (z.B. Remote Access SSL/TLS + User Auth)
- Protocol und Port
- TLS Shared Key (falls vorhanden)
- Server Certificate und CA
- Encryption Algorithm und Auth Digest
- IPv4 Tunnel Network
- Redirect Gateway (ja/nein)
- IPv4 Local Network
- DNS Server (falls gepusht)
- Duplicate Connections (ja/nein)
🔑 Schritt 1: TLS Static Key anlegen
Falls die Legacy-Server einen TLS Shared Key nutzen, muss dieser zuerst ins neue System übernommen werden.
- Den TLS Shared Key aus dem Legacy-Server kopieren: VPN → OpenVPN → Servers [legacy] → Server bearbeiten → Feld „TLS Shared Key“ komplett kopieren
- VPN → OpenVPN → Instances → Tab „Static Keys“ → + klicken
- Description: einen sinnvollen Namen vergeben (z.B.
MeinVPN-TLS-Key) - Mode: crypt (entspricht „Authentication & encryption“ im Legacy)
- Static Key: den kopierten Key einfügen
- Save
Tipp: Wenn beide Legacy-Server denselben TLS Shared Key verwenden, reicht ein einziger Static Key Eintrag für beide neuen Instanzen.
🖥️ Schritt 2: Neue Instanzen anlegen
VPN → OpenVPN → Instances → Tab „Instances“
Ganz wichtig: Oben links den Advanced Mode aktivieren! Ohne Advanced Mode werden einige Felder (z.B. Keepalive, Certificate Depth) nicht angezeigt.
Dann auf + klicken und die Werte vom Legacy-Server übertragen. Hier die wichtigsten Felder und wo man sie findet:
General Settings
| Einstellung | Hinweis |
|---|---|
| Role | Server |
| Description | Frei wählbar |
| Protocol | Wie im Legacy (TCP oder UDP) |
| Port number | Wie im Legacy |
| Type | TUN |
| Server (IPv4) | Das Tunnel-Netzwerk aus dem Legacy |
| Topology | subnet |
| Keep alive interval | 10 |
| Keep alive timeout | 60 |
Trust
| Einstellung | Hinweis |
|---|---|
| Certificate | Das gleiche Server-Zertifikat wie im Legacy |
| Certificate Authority | Die gleiche CA wie im Legacy |
| Certificate Depth | One (Client+Server) – wie im Legacy |
| TLS static key | Den in Schritt 1 angelegten Key auswählen |
| Auth | SHA512 (oder was im Legacy unter „Auth Digest Algorithm“ stand) |
| Data Ciphers | AES-256-GCM (oder was im Legacy stand – aufpassen: nicht CBC mit GCM verwechseln!) |
Authentication
| Einstellung | Hinweis |
|---|---|
| Authentication | Local Database (oder wie im Legacy) |
| Strict User/CN Matching | Yes (wenn im Legacy aktiviert) |
Routing
| Einstellung | Hinweis |
|---|---|
| Local Network | Die lokalen Netze, die über VPN erreichbar sein sollen |
Miscellaneous
| Einstellung | Hinweis |
|---|---|
| Options | duplicate-cn (wenn im Legacy „Duplicate Connections“ aktiviert war) |
| Redirect Gateway | default für Full-Tunnel, leer lassen für Split-Tunnel |
| DNS Servers | z.B. die IP des Pi-hole, falls DNS über VPN gepusht werden soll |
| Push Options | block-outside-dns und register-dns für Full-Tunnel empfohlen |
Danach Save und Apply nicht vergessen.
🛡️ Schritt 3: Outbound NAT prüfen
Das war bei mir der Stolperstein!
Wer unter Firewall → NAT → Outbound den Modus „Hybrid“ oder „Manual“ nutzt, muss für Full-Tunnel-VPNs eine manuelle NAT-Regel hinzufügen. Die automatischen Regeln enthalten die neuen OpenVPN-Netzwerke möglicherweise nicht.
Ohne diese Regel hat man zwar VPN-Verbindung und erreicht das Heimnetz, aber keine Webseiten – weil der Traffic nicht nach außen geNATtet wird.
Firewall → NAT → Outbound → + (neue Regel)
| Feld | Wert |
|---|---|
| Interface | Das WAN-Interface |
| Source | Das Tunnel-Netzwerk (z.B. 10.0.8.0/24) |
| Destination | * |
| NAT Address | Interface address |
| Static Port | NO |
| Description | z.B. „OpenVPN Full-Tunnel NAT“ |
Hinweis: Für Split-Tunnel VPNs braucht man diese Regel in der Regel nicht, da der Internet-Traffic dort nicht durch den Tunnel läuft.
✅ Schritt 4: Legacy-Server deaktivieren und testen
- VPN → OpenVPN → Servers [legacy] → Bei jedem Server den grünen Play-Button drücken → wird grau (deaktiviert). Nicht löschen!
- Am Client die VPN-Verbindung trennen und neu verbinden
- Prüfen ob die Verbindung steht: VPN → OpenVPN → Connection Status
- Internet testen (Full-Tunnel) bzw. Heimnetz-Erreichbarkeit testen (Split-Tunnel)
- DNS prüfen: z.B. über
dnsleaktest.comoder die Pi-hole Admin-Oberfläche
Falls etwas nicht funktioniert: Legacy-Server wieder aktivieren (grauen Button drücken → wird grün). Man kann dann in Ruhe die Instanz-Einstellungen vergleichen.
🧹 Schritt 5: Aufräumen
Wenn alles stabil läuft (ich empfehle ein paar Tage warten):
- Legacy-Server löschen unter VPN → OpenVPN → Servers [legacy]
- Optional: das Legacy-Plugin unter System → Firmware → Plugins deinstallieren
⚠️ Fallstricke und Erkenntnisse
Hier die Dinge, die bei mir aufgefallen sind und die einem etwas Zeit sparen können:
- Advanced Mode vergessen: Ohne den Schalter oben links fehlen wichtige Felder wie Keepalive und Certificate Depth. Immer aktivieren!
- Data Ciphers verwechselt: AES-256-GCM ist nicht AES-256-CBC. Genau hinschauen was im Legacy konfiguriert war.
- Push Options vergessen: Ohne
block-outside-dnsundregister-dnskann es passieren, dass der Client den gepushten DNS ignoriert und weiterhin seinen lokalen DNS nutzt. - Outbound NAT: Der häufigste Grund warum nach der Migration „Internet nicht geht“ obwohl die VPN-Verbindung steht. Bei Hybrid-NAT immer prüfen!
- Firewall-Regeln: Wenn man die gleichen Tunnel-Netzwerke beibehält, greifen die bestehenden OpenVPN-Firewall-Regeln auch für die neuen Instanzen. Hier musste ich nichts ändern.
In der Hoffnung für den einen oder anderen eine Hilfe oder Anregung zu sein.
Solltet ihr Fragen, Tipps oder Anregungen haben, bin ich gerne dafür offen.
Kategorien: OPNsense, Netzwerk
Tags: OPNsense, OpenVPN, VPN, Migration, Firewall
