Wenn Sie auf einer OPNsense-Firewall ein Site-to-Site-VPN (Tunnel zwischen zwei Netzwerken) aufbauen möchten, können Sie zwischen verschiedenen Verfahren wählen. Es gibt IPsec in verschiedenen Varianten und in OPNsense auch WireGuard. In unserem Beispiel erstellen wir eine Site-to-Site-VPN-Verbindung mit IPsec. IPsec gliedert sich in zwei Phasen. Phase 1 stellt zwischen den Standorten generell die Verbindung her und benötigt dafür die "externen" Angaben. Phase 2 steuert den Netzverkehr durch die Phase 1. Phase 2 benötigt dazu vor allem die jeweiligen lokalen Netzwerkangaben.
In unserem Beispiel verwenden wir nicht mehr die Legacy-Variante, sondern die Connections-Variante, welche ab Version 25.3 verfügbar ist.
Achtung: Ab Version 26.1 wird der Legacy-Mode für IPsec nicht mehr unterstützt!
Im ersten Bild sehen Sie die angenommene Situation.

Wir nehmen an, Ihr Netzwerk hat den IP-Range 192.168.99.0 und Ihre Public IP ist 19.19.19.19 (es geht auch dynamisch) und eventuell haben Sie dazu einen passenden Domain-Name, wir nehmen vpn.beispiel.ch.
Die Gegenseite hat den IP-Range 192.168.199.0 und dessen Public IP ist 20.20.20.20 und hat den Domain-Name vpn.extern.ch.

Pre-Shared Key erstellen

  • Setzen Sie als erstes im Menü VPN, IPsec, Connections im Feld Enable IPsec ein Häkchen.
  • Klicken Sie dann auf Apply, um die Änderung zu speichern.
  • Der zu erstellende Tunnel benötigt auf beiden Seiten ein Passwort. Um das Passwort zu erstellen, gehen Sie zu VPN, IPsec und Pre-Shared Keys, klicken Sie dort auf das "+" um einen neuen Key zu erstellen.
  • Bei Local Identifier kommt die Pulic-IP des lokalen Netzes rein. Gemäss unserem Beispiel 19.19.19.19
  • Bei Remote Identifier muss die Public-IP des fernen Netzes rein. Im Beispiel ist dies 20.20.20.20
  • Das Passwort können im Feld Pre-Shared Key eintippen. Dieses wird dann auch auf der Gegenseite benötigt.
  • Bei Description können Sie eine Beschreibung zum Tunnel eintippen. Das kann beliebig sein.
  • Speichern Sie den Key mit Save und Apply ab.

Connection erstellen

  • Gehen Sie nun zu VPN, IPsec und Connections. Klicken Sie hier auf das "+" um eine neue Verbindung zu erstellen.
  • Aktivieren Sie als Erstes den advanced mode
  • Danach wählen Sie bei Proposals die passende Verschlüsselung aus und entfernen Sie unbedingt default
  • Unique stellen Sie auf Replace.
  • Die Version stellen Sie auf IKEv2
  • Bei Local addresses kommt die eigene Public-IP rein und bei Remote addresses muss die Public-IP der Gegenstelle rein. In unserem Beispiel ist die eigene Adresse 19.19.19.19 und diejenige der Gegenstelle 20.20.20.20
  • Dann muss noch bei Rekey time(s) eine für die Gegenstelle passende Zeit rein. Wir nehmen mal 86400 (Sekunden) an.
  • Ganz unten bei Description können Sie einen freien, passenden Text zu diesem Tunnel eingeben. Wir haben da mal "zu fernem Standort" eingegeben.
  • Klicken Sie danach auf Apply
  • Im unteren Bereich erscheint nun ein weiterer Teil.
  • Sie sehen 3 zusätzliche Bereiche. Local Authentication, Remote Authentication und Children. Klicken Sie jetzt bei Local Authentication auf das "+".
  • Bei ID müssen Sie die Public-IP des lokalen Netzes eingeben. Dieser Eintrag muss mit dem Eintrag im zuvor erstellten Pre-Shared Keys übereinstimmen. Bei uns im Beispiel ist das 19.19.19.19
  • Bei Description schreiben wir denselben Wert rein.
  • Klicken Sie nun auf Save und Sie kommen wieder zur Übersicht innerhalb der Connection.
  • Klicken Sie jetzt bei Remote Authentication auf das "+".
  • Bei ID müssen Sie die Public-IP des fernen Netzes eingeben. Dieser Eintrag muss mit dem Eintrag im zuvor erstellten Pre-Shared Keys übereinstimmen. Bei uns im Beispiel ist das 20.20.20.20
  • Bei Description schreiben wir denselben Wert rein.
  • Klicken Sie nun auf Save und Sie kommen wieder zur Übersicht innerhalb der Connection.
  • Klicken Sie jetzt bei Children auf das "+".
  • Achten Sie darauf, dass der advanced mode aktiviert ist
  • Die Felder bis zu ESP proposals müssten schon dieselben Werte haben, wie auf dem oberen Bild. Bei ESP proposals entfernen Sie default und wählen Sie die passende Verschlüsselung aus.
  • Bei Local muss die Netzwerkadresse des lokalen Netzes eingetragen werden, die ist in unserem Beispiel 192.168.99.0/24
  • Bei Remote kommt die Netzwerkadresse des fernen Systems rein. Bei uns ist dies 192.168.199.0/24
  • Dann muss noch bei Rekey time(s) eine für die Gegenstelle passende Zeit rein. Wir nehmen mal 86400 (Sekunden) an.
  • Klicken Sie jetzt auf Save und in der Übersicht gleich nochmals Save. Jetzt kommen Sie zu Übersicht aller Connections. Hier unbedingt auf Apply klicken, damit alle Änderungen angewendet werden.

Firewall Rules

  • Gehen Sie jetzt im Menü zu Firewall, Rules und IPsec.
  • Kontrollieren Sie, ob hier schon ein Eintrag mit IPv4 besteht und allenfalls schon den fernen Netzwerkbereich beinhaltet.
  • Fehlt ein solcher Eintrag, klicken Sie auf das Plus um einen neuen Eintrag zu erstellen.
  • Sie können alle Werte auf Standard stehen lassen. Dies erlaubt Ihnen mehrere Tunnels einzurichten, ohne dass Sie diese Angaben bei den Rules anpassen müssen.
  • Klicken Sie auf Save und in der Übersicht auf Apply.
  • Gehen Sie jetzt zu Firewall, Rules und WAN.
  • Kontrollieren Sie, ob die Einträge für ESP, Port 500 und Port 4500 schon bestehen.
  • Fehlt einer der Einträge, klicken Sie auf das "+" und erstellen Sie die fehlenden Einträge.
  • Bei Protocol wählen Sie ESP, bei Destination wählen Sie This Firewall aus. Den Rest können Sie belassen wie vorgeschlagen.
  • Klicken Sie dann auf Save und in der Übersicht gleich wieder auf das "+" für einen weiteren Eintrag.
  • Bei Protocol wählen Sie TCP/UDP, bei Destination wählen Sie This Firewall aus.
  • Bei Destination port range wählen Sie ISAKMP aus.
  • Klicken Sie dann auf Save und in der Übersicht gleich wieder auf das "+" für einen weiteren Eintrag.
  • Bei Protocol wählen Sie TCP/UDP, bei Destination wählen Sie This Firewall aus.
  • Bei Destination port range wählen Sie IPsec NAT-T aus.
  • Klicken Sie dann auf Save und in der Übersicht auf Apply.

Gegenseite konfigurieren

  • Konfigurieren Sie nun auf der Gegenseite dieselben Einträge, aber mit den Querverbindungen zu diesem lokalen Netz. Alle Angaben müssen über Kreuz stimmen.
    In der fernen Konfiguration geben Sie als lokale Adresse 192.168.199.0/24 und als ferne Adresse 192.168.99.0/24 ein. Dasselbe bei den Public-IP.
    Bei der fernen Firewall geben Sie die externe IP-Adresse Ihres eigenen Standortes an (19.19.19.19) ein.
    Auf beiden Seiten müssen der Pre-Shared key, die Verschlüsselungsangaben und die Lifetime-Werte identisch sein.

Gegenstelle ist eine FritzBox

  • Achtung: Haben Sie auf der Gegenseite eine FRITZ!Box, loggen Sie sich dort ein und gehen zu Internet, Freigaben und dann auf die Lasche VPN (IPSec). Klicken Sie hier auf VPN-Verbindung hinzufügen.
  • Wählen Sie Ihr Heimnetz mit einem weiteren FRITZ!Box-Netzwerk verbinden, und klicken Sie auf Weiter.
  • Bei diesen Feldern kommen, wie oben erwähnt, die Gegenstücke zu unserer Firewall rein. Mehr können Sie auf einer FRITZ!Box nicht angeben.

Gegenstelle ist eine Swisscom Internetbox oder Centro Business

  • Beim Centro Business von Swisscom gehen Sie auf Netzwerk, Peer-to-Peer VPN und wählen VPN-Standort hinzufügen.
  • Beim Profile können Sie IKEv1 oder IKEv2 auswählen. Dies muss mit Ihrem eigenen Tunneleintrag übereinstimmen. Bei Connections in OPNsense können Sie nur noch IKEv2 verwenden.
    Die Peer-IP-Adresse und das Peer-IP-Subnetz beziehen sich wiederum auf Ihr eigenes lokale Netz und beim Passwort muss der Pre-Shared key von Ihrem eigenen Tunnel eingegeben werden. Auch hier, wie bei der FRITZ!Box, können keine weiteren Werte angepasst werden.
  • Bei Opnsense, Connections funktioniert die Verbindung zu Centro Business mit den Einstellungen aes256-sha256-modp8192 [DH18] in Proposals, sowie bei Children und ESP Proposals der Wert aes256-sha256