Die Open Source Firewall OPNsense unterstützt mehrere Technologien zur Einrichtung von VPN (Virtual Private Network) Verbindungen. In diesem Beispiel zeigen wir, wie Sie eine Site-to-Site VPN Verbindung mit zwei OPNsense Firewalls mit der beliebten VPN Technologie OpenVPN einrichten. Die Anleitung zeigt die Konfiguration mit dem mit OPNsense 23.7 neu eingeführten Instances Menü, erstellt wurde sie unter der Version OPNsense 25.1.7_4-amd64.
Dieser Abschnitt zeigt kompakt zusammengefasst die konfigurierte Topologie und die wichtigsten Einstellungen des OpenVPN Tunnels.
HA Cluster und OpenVPN
Wenn Sie als OpenVPN Server einen OPNsense High Availability Cluster einsetzen, dann stellen Sie die virtuelle WAN IP-Adresse als Server Adresse ein.[1]
Site A
OPNsense OpenVPN Server
Lokales Netz: 192.168.1.0/24
WAN-IP: 100.64.2.1
Site B
OPNsense OpenVPN "Client"
Lokales Netz: 192.168.2.0/24
WAN-IP: 100.64.2.2
OpenVPN Einstellungen
Port: 1194
Protokoll: UDP
Topology: subnet
Transfer-Netz: 100.64.100.0/24
TLS static key mit Mode crypt
OpenVPN Site-to-Site einrichten
Zum Einrichten von OpenVPN Instances-Verbindungen sind folgende Schritte erforderlich:
OpenVPN Instance Site A (Server) konfigurieren
Certificate Authority erstellen
Server Zertifikat für die Site A (Server) erstellen
Client Zertifikat für die Site B (Client) erstellen
Firewall Regeln für WAN und OpenVPN erstellen
OpenVPN Server erstellen
Client Specific Overrides erstellen
Certificate Authority exportieren
Client Zertifikat exportieren
OpenVPN Instance Site B (Client) konfigurieren
Certificate Authority importieren
Client Zertifikat importieren
Firewall Regeln für WAN und OpenVPN erstellen
OpenVPN Instances Client konfigurieren
Konfigurationsschritte OpenVPN Instance Site A (Server)
Die nachfolgenden Screenshots zeigen die auf der OpenVPN Instance Serverseite erforderlichen Schritte auf.
Menü Trust
Zu Beginn werden im Menü Trust die Certificate Authority, also eine interne Zertifikatsstelle, erstellt. Mithilfe dieser CA werden die beiden Zertifikate für den Server und Client erstellt.
Wechseln Sie im OPNsense Webinterface zum Menü System → Trust → Authorities. Klicken Sie auf das orange Plus und wählen Sie bei MethodCreate an internal Certificate Authority. Füllen Sie die Zertifikatsdaten aus und klicken Sie anschließend auf Save.
Wechseln Sie in das Menü Certificates und erstellen Sie mit dem Klick auf das orange Plus ein neues internes Zertifikat für den Server. Wählen Sie im Dropdown Menü Type den Punkt Server Certificate aus
Bei Issuer verwenden Sie die zuvor erstellte neue interne CA. Prüfen Sie die dann automatisch gesetzten Einstellungen und klicken Sie danach auf Save.
Klicken Sie anschließend erneut auf das orange Plus und erstellen Sie ein zweites Zertifikat für den VPN Client. Wählen Sie im Dropdown Menü Client Certificate an.
Bei Issuer verwenden Sie dann ebenso die zuvor erstellte neue interne CA. Prüfen Sie die Einstellungen und klicken Sie dann auf Save.
Nun wurde ein Zertifikat für den OpenVPN Server und Client erstellt.
Firewall Regeln
Damit der OpenVPN Dienst Verbindungsanfragen von extern annehmen kann, muss der in der OpenVPN Serverkonfiguration eingestellte Port in der Firewall geöffnet werden.
Navigieren Sie zu Firewall → Rules → WAN (Beziehungsweise zur passenden Schnittstellenbezeichnung Ihrer WAN-Anbindung) und legen Sie mit dem + Button eine neue Regel an. Diese Regel soll den eingehenden Verkehr auf den Zielport OpenVPN erlauben.
Prüfen Sie die Einstellungen und klicken Sie dann auf Save.
Aktivieren Sie die Regel per Apply changes.
OpenVPN Instances Site A (Server) Konfiguration
Nach den vorbereitenden Tätigkeiten kann nun der OpenVPN Instance Site A (Server) mit der Instances Konfigurationsmethode erstellt werden.
Zuerst wird im Reiter Static Keys ein ebensolcher Static Key erstellt. Dieser dient zur Verschlüsselung und Authentifizierung. Geben Sie eine Bezeichnung an, stellen Sie bei Mode crypt (Encrypt and authenticate) ein und klicken Sie auf den Button um einen neuen Static Key zu erstellen. Klicken Sie auf Save nachdem der 2048 bit Key erzeugt wurde.
Wechseln Sie zum Reiter Instances und klicken Sie zum Erstellen eines neuen OpenVPN Servers auf das orange Plus. Geben Sie die entsprechenden Daten an, Bind address ist in dem Fall die IP-Adresse des WAN Interfaces, Server (IPv4) ist das OpenVPN Netz. Den TLS static key können Sie in der entsprechenden Konfigurationszeile auswählen.
Legen Sie die weiteren Einstellungen des VPN Tunnels fest und klicken Sie auf Save.
Der OpenVPN Server ist nun angelegt, klicken Sie auf Apply.
OpenVPN Interface Firewall Regel
Es gibt nun ein neues Interface, das OpenVPN Interface. Hier können Sie den Datenverkehr im OpenVPN Tunnel regeln. In diesem Beispiel wird jeglicher Traffic im Tunnel erlaubt. Sie können dies natürlich noch granularer und restriktiver einstellen.
Navigieren Sie zu Firewall → Rules → OpenVPN und legen Sie mit dem + Button eine neue Regel an.
Klicken Sie auf Save.
Aktivieren Sie die Regel per Klick auf Apply changes.
Client specific overrides
Hier wird ein OpenVPN Server mit einer Site-to-Site Verbindung angelegt. Die Client specific overrides sind dafür zuständig, dass der Server weiß an welchen Endpunkt er die Daten schicken soll. Es können ja mehrere entfernte Standorte an einen zentralen OpenVPN Server angebunden werden.
Wechseln Sie vom Menü Instances zu Client Specific Overrides und klicken Sie auf das orange Plus um einen neuen Eintrag anzulegen. Wichtig ist hier, dass sie den Common name so setzen, wie er im Zertifikat des Clients bei CN eingetragen ist. Bei IPv4 Tunnel Network geben Sie eine IP-Adresse aus dem OpenVPN Tunnelnetz an, die 100.64.100.1 ist für den Server reserviert, 100.64.100.2 gilt nun für den ersten Client.
Local Network ist das lokale Netzwerk hinter dem OpenVPN Server, Remote Network das entfernte lokale Netzwerk des Clients. Klicken Sie anschließend auf Save.
Konfigurationsschritte OpenVPN Instance Client(s)
Die nachfolgenden Screenshots zeigen die für die OpenVPN Instance Site B (Client) erforderlichen Schritte auf. Es können mittels Sternprinzip natürlich mehrere Clients mit einem OpenVPN Server verbunden werden. Die Kommunikation wird dann über individuelle Client Specific Overrides geregelt.
Menü Trust
Bei dem Client muss im Menü Trust die CA und das Client Zertifikat importiert werden, diese wurde zuvor auf dem OpenVPN Server erstellt.
Wechseln beim Client im OPNsense Webinterface zum Menü System → Trust → Authorities. Klicken Sie auf das orange Plus und wählen Sie bei Method "Import an internal Certificate Authority". Geben Sie die exportierten CA Daten ein und klicken Sie anschließend auf Save.
Wechseln beim Client im OPNsense Webinterface zum Menü System → Trust → Certificates. Klicken Sie auf das orange Plus und wählen Sie bei Method "Import an existing Certificate". Geben Sie die exportierten Zertifikatsdaten ein und klicken Sie anschließend auf Save.
Firewall Regeln
Setzen Sie die Firewallregeln für das WAN Interface analog zur OpenVPN Serverkonfiguration.
OpenVPN Instances Site B (Client) Konfiguration
Nach den vorbereitenden Tätigkeiten kann nun der OpenVPN Client mit der Instances Konfigurationsmethode erstellt werden.
Zuerst wird im Reiter Static Keys der Static Key angelegt, kopieren Sie dazu den TLS Key des OpenVPN Servers und fügen Sie ihn im Feld Static Key ein, klicken Sie danach auf Save.
Wechseln Sie zum Reiter Instances und klicken Sie auf das orange +. Wählen Sie bei Role Client aus und setzen Sie die Werte passend zur Serverinstanz. Die Zeile Remote enthält die öffentlich erreichbare WAN IP des OpenVPN Servers und Port.
Klicken Sie anschließend auf Save.
OpenVPN Interface Firewall Regel
Es gibt nun auch beim Client ein neues Interface, das OpenVPN Interface. Konfigurieren Sie dieses Interface analog zur Serverseite. Nun ist die Konfiguration erledigt und ein Verbindungsaufbau sollte möglich sein.
Testen der Verbindung
Prüfen Sie ob sich der Client zum Server verbinden kann, sie finden dies bei Client und Server im Webinterface im Menü VPN → OpenVPN → Connection Status.
Erfolgreicher Verbindungsaufbau auf der OpenVPN-Server Seite.
Routen zum Zielnetzwerk hinter der Client-Firewall erfolgreich gesetzt.
Erfolgreicher Verbindungsaufbau des Clients.
Ping aus dem lokalen Netzwerk der OpenVPN Server-Firewall zum Zielnetzwerk hinter der Client-Firewall erfolgreich.
Ping aus dem lokalen Netzwerk der OpenVPN Client-Firewall zum Zielnetzwerk hinter der Server-Firewall erfolgreich.
Troubleshooting
Diese Sektion zeigt die verschiedenen Troubleshooting Möglichkeiten, um Fehler in der Konfiguration entdecken zu können.
Ping
Setzen Sie einen Pingbefehl auf eine IP-Adresse im Zielnetzwerk ab.
Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates.