Migration der OpenVPN-Verbindungen in OPNsense 23.7

In der neuesten Version 23.7 von OPNsense wurden die sog. "Instanzen" bei OpenVPN eingeführt. Diese können parallel zu den nun als "legacy" bezeichneten alten OpenVPN-Verbindungen genutzt und eingerichtet werden.

Da es keinen direkten Migrationspfad für die alten Verbindungen gibt, muss die Migration manuell erfolgen.

Damit du dir bei der Migration nicht unnötig mehr Arbeit machen musst, hier eine kleine Checkliste.
Die Firewall-Sprache ist für dieses Tutorial auf Englisch gestellt (System -> Settings -> General).

Wichtiger Hinweis
Beachte bitte, dass dieses "Kurz notiert"-Tutorial kein vollständiges Tutorial für die Einrichtung der OpenVPN-Verbindungen darstellt. Ich gehe davon aus, dass du vorab bereits alle nötigen Firewall-Regeln, Portweiterleitungen und dergleichen gesetzt hattest, da wir ja eine bestehende Verbindung migrieren und keine neue anlegen.

* * *

Legende

Hinweis:
Ich habe mich mit den Bezeichnungen Site A und Site B an das offizielle, englische Tutorial gehalten, auch wenn ich die Bezeichnung nicht für logisch halte und sie anders herum mehr Sinn ergeben würden.

🏠️ Site A (VPN-Client – Branch office) - Netz: 192.168.2.0/24
🏢 Site B (VPN-Server – Main office) - Netz: 192.168.1.0/24, WAN-IP: 192.168.178.25
Transfer-Netz: 192.168.99.0/24

* * *

Bestehende Site-to-Site Verbindung migrieren

Basierend auf der englischsprachigen Anleitung

Durchführen auf der 🏢 Site B-Firewall

  • Deaktivieren der alten OpenVPN-Verbindung unter VPN -> OpenVPN -> Servers, damit der Port nicht belegt ist.
  • Unter System -> Trust -> Authorities eine neue CA anlegen.
  • Unter System -> Trust -> Certificates ein neues Server-Zertifikat mit dem Firewall-Namen als common name anlegen (der Firewall-Name steht oben rechts in der Statusleiste hinter dem benutzername@).
  • Unter System -> Trust -> Certificates ein neues Server-Zertifikat mit einem benutzerdefinierten Kürzel als common name anlegen, z.B. s2s-vpn.
  • Den öffentlichen Schlüssels der CA und des dritten Zertifikates (s2s-vpn) inkl. dessen privatem Schlüssel als Datei exportieren.
  • Unter VPN -> OpenVPN -> Instances [new] oben den Reiter Static Keys anklicken, den Modus auth auswählen und einen statischen Schlüssel generieren (dazu auf das Zahnrad klicken).
  • Jetzt den Reiter Instances anklicken, mit dem + eine neue Instanz hinzufügen und sie wie folgt konfigurieren:
Eigenschaft Wert
Role Server
Description z.B. OpenVPN S2S-Server
Protocol UDP (IPv4)
Port number 1194 (oder der von dir festgelegte Port)
Bind address 192.168.178.25 (WAN-IP, alternativ 127.0.0.1 + Portweiterleitung oder leer lassen, um auf allen Interfaces zu hören)
Topology subnet
Server (IPv4) 192.168.99.0/24 (Das Transfer-Netz)
Certificate Das erste Zertifikat auswählen, das wir erstellt haben (das mit dem Firewall-Namen als common name)
Certificate Revocation List none (andernfalls treten Fehler auf, wenn die CRL leer ist)
TLS static key Den statischen Schlüssel auswählen, den wir erstellt haben
Authentication Nothing selected
Local Network 192.168.1.0/24 (die lokalen Netzwerk(e) der Site B eintragen)
Remote Network 192.168.2.0/24 (die entfernten Netzwerk(e) der Site A eintragen)
  • Unter VPN -> OpenVPN -> Client Specific Overrides mit dem + einen neuen Eintrag mit folgendem Inhalt hinzufügen:

Wichtiger Hinweis
Die neuen OpenVPN-Instanzen werden im Drop-Down-Feld bisher nicht propagiert. Wähle dort am Besten keinen Server aus (Nothing selected), denn wenn du den falschen Server auswählst, funktioniert das Routing der Site A Netze von Site B aus nicht (Fehlerbild: Ping von A nach B funktioniert, von B nach A hingegen nicht, obwohl die notwendigen Routen existieren).

Eigenschaft Wert
Servers Nothing selected (❗️Hinweis beachten)
Description s2s-vpn
Common name s2s-vpn
Remote Network 192.168.2.0/24 (die entfernten Netzwerk(e) der Site A eintragen)
* * *

Durchführen auf der 🏠️ Site A-Firewall

  • Importieren der CA über System -> Trust -> Authorities über das +. Daraufhin den Inhalt der vorhin heruntergeladenen Datei in das Feld hineinkopieren und speichern.
  • Importieren des Server-Zertifikates mit dem common name s2s-vpn über System -> Trust -> Certificates über das +. Daraufhin den Inhalt der vorhin heruntergeladenen Dateien in die jeweiligen Felder hineinkopieren und speichern.
  • Unter VPN -> OpenVPN -> Instances [new] oben den Reiter Static Keys anklicken, den Modus auth auswählen und den statischen Schlüssel von der Site B-Firewall einfügen.
  • Jetzt den Reiter Instances anklicken, mit dem + eine neue Instanz hinzufügen und wie folgt konfigurieren:
Eigenschaft Wert
Role Client
Description z.B. OpenVPN S2S-Client
Protocol UDP (IPv4)
Remote Öffentliche IP von Site B (z.B. 1.2.3.4:1194 (oder dem von dir festgelegte Port))
Certificate Das Zertifikat auswählen, das wir vorhin importiert haben (das mit s2s-vpn als common name)
TLS static key Den statischen Schlüssel auswählen, den wir erstellt haben
Remote Network 192.168.1.0/24 (die entfernten Netzwerk(e) der Site B eintragen)
  • Anschließend kannst du unter VPN -> OpenVPN -> Connection status prüfen, ob die Verbindung erfolgreich aufgebaut werden konnte. Unter VPN -> OpenVPN -> Log File findest du die Log-Ausgaben (oben rechts kannst du das Log-Level anpassen).

Sollte es nicht wie erwartet klappen, kannst du bei Server und Client auch jeweils in der Konfiguration den Log-Level erhöhen. Dazu muss jeweils oben links der advanced mode aktiviert werden.

* * *

Feintuning

Da mit der neuen Instanz auf beiden Seiten jeweils auch ein neues Interface angelegt wird, muss dieses noch zugewiesen werden. Gehe dazu an beiden Firewalls einmal auf Interfaces -> Assignments und weise das neue Interface analog zum alten zu.

Nachdem du das Interface angelegt hast, müssen noch folgende Anpassungen erfolgen:

  • Deaktivieren des alten VPN-Interfaces unter Interfaces -> "Name des Interfaces", indem du den Haken bei Enable Interface entfernst.
  • Prüfen und ggf. korrigieren des Gateways (🏠️ Site A-Firewall), falls du den gesamten Internet-Traffic über den Hauptstandort geroutet hast.
  • Prüfen, ob auf beiden Seiten in der Routing-Tabelle (System -> Routes -> Status) die Netze der jeweils anderen Firewall enthalten sind.
  • Lege die Firewall-Regeln des alten VPN-S2S-Interfaces analog für das neue Interface an.
  • Passe ggf. vorhandene NAT-Regeln (Firewall -> NAT -> Port Forward) und auch fließende Firewall-Regeln (Firewall -> Rules -> Floating) an, falls bei diesen das alte VPN-S2S-Interface genutzt wurde.

Zum Testen des Tunnels kannst du ganz unter Interfaces -> Diagnostics -> Ping auf beiden Seiten jeweils einen Ping auf das Gateway der Gegenseite und auf die Firewall-IP des Remote-Netzes legen, z.B.

🏠️ Site A-Firewall

  • 192.168.99.1 (VPN-Gateway Site B)
  • 192.168.1.1 (Firewall)

🏢 Site B-Firewall

  • 192.168.99.2 (VPN-Gateway Site A)
  • 192.168.2.1 (Firewall)

Falls du die alte VPN-Konfiguration nochmal auslesen und mit der neuen vergleichen willst, kannst du das über die Shell sehr einfach erledigen. Die Konfigurationen liegen jeweils unter /var/etc/openvpn/ und haben die Endung *.conf

Wenn alles funktioniert, kannst du zum Schluss unter VPN -> OpenVPN -> Servers bzw. VPN -> OpenVPN -> Clients die alten "legacy" Verbindungen entfernen.

* * *

Bestehende Roadwarrior-Verbindung migrieren

Basierend auf der englischsprachigen Anleitung

to be continued...

* * *

Ich möchte meine OpenVPN-Verbindungen migrieren, habe dabei aber Schwierigkeiten

Ich unterstütze dich gerne bei der Migration der OpenVPN-Verbindungen in die neuen Instanzen.
Schreib mir hierzu einfach über Kontakt, per Telegram oder unten in die Kommentare eine Nachricht.

* * *
* * *
Christian Süßenguth Christian Süßenguth @sweetgood

Hi, ich bin Christian und Inhaber der Firma SWEETGOOD. Mit dem andersGOOD Blog möchte ich auch dich für datensichere IT-Lösungen begeistern. So bringst du dein Unternehmen voran, ohne großen Konzernen deine wertvollen Daten zu liefern. Probiers mal anders!


Kommentarbereich

Die Kommentare sind für dich noch deaktiviert, da du dem Setzen von Cookies bisher nicht zugestimmt hast.
Klicke oben rechts auf "Ja, klar!" und lade die Seite neu, um die Kommentare anzuzeigen.

Seite neu laden

👾 Magst du Kekse?

Ich würde gerne Cookies setzen

Ist das OK für dich?