Wer zu einer OPNsense-Firewall mit einem Client eine VPN-Verbindung aufbauen möchte, hat mehrere Varianten zur Auswahl.
Es gibt IPsec, OpenVPN und WireGuard. In unserem Beispiel erstellen wir eine VPN-Verbindung mit OpenVPN.
Damit über OpenvPN der OpenVPN-Server erstellt werden kann, benötigt es auf der Firewall ein Zertifikat und Benutzer mit entsprechender Berechtigung.
Im ersten Bild sehen Sie die angenommene Situation.

Wir nehmen an, Ihr Netzwerk hat den IP-Range 192.168.222.0 und Ihre Public IP ist 19.19.19.19 (es geht auch dynamisch) und eventuell haben Sie dazu einen passenden Domain-Namen, wir nehmen vpn.beispiel.ch
Bei der Adresse des WireGuard-Servers müssen Sie eine IP-Adresse nehmen, die nichts mit Ihrem Netzwerk oder schon vorhandenen VPNs zu tun hat. In unserem Beispiel verwenden wir die Adresse 172.16.20.0/24. Die Maske /24 verwenden wir, damit wir mehrere Clients in derselben WireGuard-Server-Umgebung konfigurieren können.
Zertifikat erstellen
- Öffnen Sie in OPNsense den Menüpunkt System, Trust und Authorities
- klicken Sie auf das "+" um ein leeres Bild für die Authority-Infos zu erhalten

- Bei Method wählen Sie Create an internal Certificate Authority, bei Description wählen Sie einen selbstsprechenden Namen, den Sie auch gleich bei Common Name einsetzen. In unserem Beispiel Beispiel-OpenVPN-CA
- Bei Lifetime (days) geben wir als Beispiel 3650 ein, damit wir nicht sofort ein abgelaufenes Zertifikat haben.
- Ergänzen Sie die restlichen Felder nach belieben.
- Klicken Sie zum Schluss auf Save.
- Wechseln Sie nun zum Menüpunkt System, Trust und Certificates
- klicken Sie auf das "+" um ein leeres Bild für Die Zertifikats-Infos zu erhalten.

- Bei Method wählen Sie Create an internal Certificate, Bei Description geben Sie einen selbstsprechenden Namen ein. Diesen setzen Sie auch gleich bei Common Name ein. In unserem Beispiel Beispiel-OpenVPN.
- Bei Type wählen Sie Server Certificate aus und bei Issuer wählen Sie die zuvor erstellte Certificate Authority aus.
- Bei Lifetime (days) geben wir dieselben Anzahl Tage ein, wie bei Certificate Authority . In unserem Beispiel 3650.
- Ergänzen Sie die restlichen Felder nach belieben.
- Klicken Sie zum Schluss auf Save.
User erfassen/erstellen
- Öffnen Sie in OPNsense den Menüpunkt System, Access und Users
- klicken Sie auf das "+" um ein leeres Bild für die User-Infos zu erhalten

- Vergeben Sie dem Benutzer einen Username und ein Password. Leerschläge sind in diesen beiden Feldern nicht zulässig.
- Sollten Sie bereits eine spezielle VPN-Anmeldegruppe haben, können Sie diese bei Group Membership auswählen.
- Speichern Sie den Benutzer mit einem Klick auf Save
User-Gruppe für lokale User erstellen
- Sollten Sie noch keine spezielle VPN-User-Gruppe zur Verfügung haben, öffnen Sie in OPNsense den Menüpunkt System, Access und Groups
- klicken Sie auf das "+" um ein leeres Bild für die Gruppen-Infos zu erhalten

- Geben Sie einen selbstsprechenden Group name ein und wählen Sie bei Members die zuvor erstellten User aus
- Speichern Sie die Gruppe mit einem Klick auf Save
Serververbindung für LDAP- oder RADIUS-Anmeldung auf Windows DC einrichten
Beginnen wir mit LDAP-Anmeldung
- Sie können auch eine Serververbindung erstellen, für Benutzer, welche auf einem Domaincontroller registriert sind und einer Sicherheitsgruppe angehören, welche für VPN freigegeben werden soll. Wir erstellen zuerst einen LDAP-Server.
Öffnen Sie in OPNsense den Menüpunkt System, Access und Servers - klicken Sie auf das "+" um ein leeres Bild für die Server-Infos zu erhalten

- In diesem Bild geben Sie die Angaben zu Ihrem Server ein. Wir haben als Beispiel die interne Domain beispiel.ch, sowie die Serveradresse 192.168.222.2 verwendet. Unser Beispiel bezieht sich auf einen Windows Domaincontroller.
- Bei Descriptive name geben Sie einen selbstsprechenden Namen ein
- Bei Type wählen Sie LDAP
- Bei Hostname kommt die IP-Adresse des Server rein, bei Bind credentials geben Sie den Benutzernamen und das Passwort eines AD-Leseberechtigten Benutzers ein
- Bei Search scope wählen Sie Entire Subtree und bei Base DN geben Sie die Domain-Angaben ein
- Bei Authentication Container können Sie auf Select klicken und wenn alle bisherigen Angaben stimmen, wird Ihnen die Auswahl Ihres ActiveDirectories angezeigt. Wählen Sie den für Sie gültigen Container aus
- Da wir in unserem Beispiel auch auf dem ActiveDirectory eine Sicherheitsgruppe für die berechtigten Benutzer erstellt haben, müssen wir uns auf diese Gruppe beziehen. In unserem Beispiel heisst die Gruppe OpenVPN. Also habe ich bei Extended Query diese Zeichenfolge eingegeben
&(memberOf=CN=OpenVPN-User,CN=Users,DC=BEISPIEL,DC=CH) - Als Letztes geben Sie bei User naming attribute noch sAMAccountName ein (wenn nicht automatisch vorgegeben)
- Speichern Sie den Server mit einem Klick auf Save
- Wichtig: Sollten Sie LDAP zu einem Windows 2025 Server eingerichtet haben, beachten Sie bitte die Anleitung LDAP Problem bei Windows 2025 Server
Serververbindung RADIUS-Anmeldung
- Sie können auch eine Serververbindung erstellen, für Benutzer, welche auf einem Domaincontroller registriert sind und einer Sicherheitsgruppe angehören, welche für VPN freigegeben werden soll. Wir erstellen jetzt einen Radius-Server.
Öffnen Sie in OPNsense den Menüpunkt System, Access und Servers - klicken Sie auf das "+" um ein leeres Bild für die Server-Infos zu erhalten

- In diesem Bild geben Sie die Angaben zu Ihrem Server ein. Wir haben als Beispiel die interne Domain beispiel.ch, sowie die Serveradresse 192.168.222.2 verwendet. Unser Beispiel bezieht sich auf einen Windows Domaincontroller.
- Bei Descriptive name geben Sie einen selbstsprechenden Namen ein
- Bei Type wählen Sie Radius
- Bei Hostname kommt die IP-Adresse des Server rein.
- Bei Shared Secret müssen Sie ein Passwort eingeben, welches wir nachher auf dem Domaincontroller wieder benötigen.
- Bei Service offered wählen Sie Authentication
- Bei Authentication Timeout können Sie eingeben, wie viele Sekunden der Server für eine Anfrage haben darf. Standardwert ist 5
- Bei Protocol können Sie zwischen PAP und MSCHAPv2 auswählen, wobei PAP die Daten unverschlüsselt an den Server gibt. Die hier getätigte Auswahl wird ebenfalls nachher auf dem Domaincontroller benötigt
- Speichern Sie den Server mit einem Klick auf Save
- Melden Sie sich nun auf dem Domaincontroller an und öffnen Sie den Server-Manager
- Gehen Sie zum Dashboard und klicken Sie auf Rollen und Features hinzufügen
- Sollte das Bild Vorbemerkungen erscheinen, klicken Sie auf Weiter
- Beim Bild Installationstyp klicken Sie auf Weiter
- Wählen Sie nun den Domaincontroller aus und klicken Sie auf Weiter

- Wählen Sie Netzwerkrichtlinien- und Zugriffsdienste aus und klicken Sie sich mit Weiter durch die nachfolgenden Bilder, bis der Dienst installiert wird

- Sie finden nun den Menüpunkt NPAS auf der linken Seite. Wenn Sie diesen anklicken, erscheint rechts im Bild der soeben aktualisierte Domaincontroller.
- Klicken Sie mit der rechten Maustaste auf diesen Server und wählen Sie Netzwerkrichtlinienserver aus

- Mit der rechten Maustaste klicken Sie jetzt auf RADIUS-Client und wählen Neu
- Beim Anzeigename können Sie einen beliebigen Namen einsetzen, sinnvollerweise einen passenden Namen zum Zugriffs-Client
- Bei Adresse (IP oder DNS) haben wir in unserem Beispiel die IP-Adresse der zugreifenden Firewall angegeben
- Bei Gemeinsamer geheimer Schlüssel muss jetzt dasselbe Passwort eingegeben werden, welches Sie bei erstellen des RADIUS-Server auf der Firewall verwendet haben. Klicken Sie danach auf OK.

- Für die Richtlinien klicken Sie nun mit der rechten Maustaste auf Netzwerkrichtlinien und danach auf Neu
- Vergeben Sie dieser Richtlinie einen Namen und klicken Sie auf Weiter
- Es erscheint ein Bild Bedingungen. Hier können Sie die verschiedensten Auswahlen treffen. Wir haben eine Windows-Gruppe hinzugefügt. In dieser Gruppe sind alle VPN-Zugriffsberechtigen Benutzer hinterlegt.
- Nach dem Bild Bedingungen, erscheint Zugriffsberechtigung angeben
- Sie kommen dann zu Authentifizierungsmethoden konfigurieren. Hier ist es wichtig, dass ggf. die Auswahl PAP aktiviert werden muss, wenn Sie diese auf der Firewall ausgewählt haben.
- Klicken Sie zum Schluss auf Fertig stellen
User-Anmeldeangaben testen
- Öffnen Sie in OPNsense den Menüpunkt System, Access und Tester

- Bei Authentication Server wählen Sie aus, ob es sich um lokale Benutzer (Local Database), Server-User (LDAP / ActiveDirectory) oder Server User (Radius / Active Diretory) handelt. Je nachdem, welche Verbindungen Sie erstellt haben.
OpenVPN Instanz erstellen
- Öffnen Sie in OPNsense den Menüpunkt VPN, OpenVPN und Instances
- klicken Sie auf das "+" um ein leeres Bild für die Instance-Infos zu erhalten

- Gehen Sie am oberen Ende zuerst auf advanced mode
- Bei Role wählen Sie Server und bei Description geben Sie einen selbstsprechenden Namen ein
- Protocol und Port number sind UDP und 1198. Der Standardport ist 1190, kann aber verändert werden und ist wichtig für weitere Eingaben.
- Bei Keep alive interval geben Sie 10 ein. Das bedeutet, dass die Serverseite alle 10 Sekunden einen Ping auf die Gegenseite absetzt. Wenn dieser Wert leer ist, kann es sein, dass die Verbindung bei "Leerlauf" unterbricht. Bei Keep alive timeout geben Sie 60 ein. Das bedeutet, dass spätestens nach 60 Sekunden Unterbruch eine neue Verbindung ausgehandelt wird.
- Bei Server (IPv4) kommt die im Beispiel verwendete IP-Adresse 172.16.20.0/24 rein. Die Firewall nimmt sich für diesen Server automatisch die x.x.x.1.
- Bei Certificate wählen Sie das zuvor erstellte Zertifikat aus. In unserem Beispiel war dies Beispiel-OpenVPN.
- Bei Authentication können Sie nun auswählen, ob Sie die Local Database oder die Server-User testen möchten. Wenn Sie die Local Database verwenden, können Sie bei Enforce local group noch die Eingangs erstellte VPN-User-Group auswählen. Dann haben nur die ausgewählten Benutzer VPN-Zugang.
- Bei Username as CN setzen Sie ein Häkchen.
- Bei Renegotiation time stellen Sie ein, nach wie vielen Sekunden die Verbindung zwingend getrennt wird. Wenn Sie dort 86400 eingeben, wird nach 8 Stunden die Verbindung geschlossen und muss von Client-Seite neu aufgebaut werden.
- Bei Local Network kommt noch die IP-Adresse des lokalen Netzes hinzu, bei uns als Beispiel 192.168.222.0/24
- Im Auswahlfeld Options aktivieren Sie persist-remote-ip.
- Speichern Sie den Eintrag mit einem Klick auf save und vergessen Sie danach nicht, auf der Übersicht den Knopf Apply zu drücken.
Interface einbinden
- Öffnen Sie in OPNsense den Menüpunkt Interfaces und Assignments

- Wählen Sie im unteren Bereich bei Device die soeben erstellte Server Instance, passen Sie die Description gegebenenfalls an und klicken Sie auf Add
- Sie finden jetzt bei der Übersicht der Interfaces Ihre neu hinzugefügte Verbindung. Klicken Sie auf den orangen Teil des neuen Interfaces.
- Setzen Sie bei Enable ein Häkchen, lassen Sie den Rest wie er vorgeschlagen wird und speichern Sie es mit einem Klick auf Save und auf der Übersicht auf Apply ab.
Richtlinien erstellen (Rules)
Damit der Netzwerkverkehr von den Clients durch die erstellte Server-Instanz auf das Netzwerk durchgreifen kann, sind Richtlinien notwendig, die den Verkehr entsprechend weiterleiten.
- Öffnen Sie in OPNsense den Menüpunkt Firewall und Rules
- Sie finden neben diversen Anderen Zeilen auch Ihre neu erstellte Instanz, sowie eine weitere Zeile mit OpenVPN. Klicken Sie zuerst auf WAN
- Klicken Sie auf das "+" um eine neue Richtlinie zu erstellen

- Bei Interface wählen Sie WAN, beim Protocol nehmen Sie UDP und bei Destination nehmen Sie die WAN address.
- Bei Destination port range müssen wir jetzt auf (other) wechseln und den Port 1198 verwenden, den wir bei der Server Instanz eingetragen haben.
- Speichern Sie diese Regel mit einem Klick auf Save und danach in der Übersicht auf Apply

- Öffnen Sie in OPNsense den Menüpunkt Firewall, Rules und OpenVPN
- Klicken Sie auf das "+" um einen neuen Eintrag zu erstellen

- Bei Source geben Sie die Netzwerkadresse der OpenVPN-Server-Instanz ein. In unserem Beispiel ist dies 172.16.20.0/24
- Speichern Sie diese Regel mit einem Klick auf Save und danach in der Übersicht auf Apply

- Öffnen Sie in OPNsense den Menüpunkt Firewall, Rules und unsere neu erstellte Server-Instanz. In unserem Beispiel ist dies BeispieleOpenVPN
- Klicken Sie auf das "+" um einen neuen Eintrag zu erstellen

- Bei Source wählen Sie jetzt den gleichnamigen Eintrag aus, der mit net endet. Dies ist wichtig, da ansonsten die eingehenden VPN-Verbindungen nicht weitergeleitet werden.
- Speichern Sie den Eintrag mit einem Klick auf Save ab und klicken Sie danach auf der Übersicht auf Apply
Exportieren der Konfiguration
Damit ein Client über diese VPN-Einrichtung zugreifen kann, benötigt er die Konfiguration
- Öffnen Sie in OPNsense den Menüpunkt VPN, OpenVPN und Client Export

- Wählen Sie bei Remote Access Server die erstellte Server-Instanz aus
- Bei Export type nehmen Sie File Only
- Unter Hostname geben Sie Ihre externe IP-Adresse ein oder den Domain Name. Wir haben hier als Beispiel vpn.beispiel.ch
- Bei Disable password save haben wir ein Häkchen gesetzt
- Dann klicken Sie auf das Downloadsymbol neben dem Zertifikat

- Speichern Sie die Konfigurationsdatei auf Ihrem PC ab. Sie benötigen diese beim Einrichten des Clients.
Wie Sie die Konfigurationsdatei auf Ihrem externen PC einsetzen können, wird in einer weiteren Anleitung beschrieben.