Einen VPN-Tunnel zwischen einer OPNsense-Firewall und FRITZ!Box können Sie mit OpenVPN-IPsec oder WireGuard herstellen. Der Unterschied zwischen diesen beiden Varianten liegt in der Konfiguration und Performance. Generell kann auf einer FRITZ!Box in IPsec und WireGuard relativ wenig konfiguriert werden. Parameter wie DH, SHA oder AES können auf der FRITZ!Box nicht verstellt werden.
Die Performance bei den IPsec-Verbindungen auf der FRITZ!Box sind eher etwas gemächlich, so dass sich die Alternative mit WireGuard durchaus lohnt, wenn auch die Konfiguration gegenüber anderen Firewalls etwas speziell ist.
In unserem Beispiel erstellen wir eine VPN-Verbindung zwischen WireGuard und einer FRITZ!Box. Ab OPNsense, Version 24.1, ist WireGuard integriert und muss nicht separat hinzugefügt werden. Alle Angaben in diesem Beispiel wurden auf der Version 24.1.5_3 konfiguriert und getestet.
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
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.1/24. Die Maske /24 verwenden wir, damit wir mehrere VPN in derselben WireGuard-Server-Umgebung konfigurieren können.
Das ferne Netzwerk hat den IP-Range 192.168.199.0/24.
Beginnen wir bei WireGuard im OPNsense.

  • setzen Sie als erstes im Menü VPNWireGuardInstances im Feld Enable WireGuard ein Häkchen
  • Klicken Sie nun auf der Lasche Instances auf das + um einen neuen WireGuard-Server zu erstellen. Jeder WireGuard-Server kann mehrere Clients (Peers) beinhalten. Sie benötigen also bei mehreren Clients nur einen WireGuard-Server.
  • Die Felder Public key sowie Private key lassen Sie sich mit einem Klick auf das Zahnrad bei Public key generieren. Kopieren Sie sich den Public Key in eine Textdatei, Sie benötigen ihn auf der FRITZ!Box.
    Bei Listen port nehmen Sie z.B. 51825. Passen Sie diesen so an, dass er andere Funktionen in OPNsense nicht stört. Standard verwendet WireGuard die Ports ab 51820.
    Im ersten Bild haben wir für den WireGuard-Server die IP-Adresse 172.16.20.1 angenommen. Dieselbe Adresse verwenden wir bei Tunnel address. Wie bereits erwähnt, nehmen Sie einen Netzwerkbereich, der von Ihrem Netzwerk abweicht. Die Tunnel address wird dem WireGuard-Server als Gateway zugewiesen und die Maske dahinter zeigt an, welche Netzwerkadressen des Bereiches in diesem Server abgedeckt sind. Im Normalfall erhalten Clients eine fixe Nummer aus diesem Range. Bei FRITZ!Box benötigen wir dies nicht. Dazu weiter unten mehr.
    Speichern Sie die WireGuard-Server-Konfiguration ab mit einem Klick auf Save.
  • Klicken Sie nun bei der Übersicht der Instanzen unten auf Apply.
  • Gehen Sie im Menü zu Interfaces und Assignments
  • Suchen Sie im unteren Teil der Auswahl die von Ihnen erstellte Instanz und fügen Sie diese mit Add hinzu.
  • Sie finden jetzt in der Übersicht Ihre neu hinzugefügte Instanz
  • Klicken Sie auf den orangen Text des Eintrages
  • Aktivieren Sie den Eintrag mit einem Häkchen auf Enable und sichern Sie den Eintrag mit Save.
  • In der Übersicht erscheint am oberen Rand der Hinweis auf die Änderung. Bestätigen Sie diesen mit einem Klick auf Apply changes.
  • Im Menü bei Firewall und Rules finden Sie jetzt den Eintrag WireGuard (Group) und die neu erstellte Instanz BeispielClientServer.
  • Klicken Sie als Erstes auf WireGuard (Group) und im darauf folgenden Bild auf das Plus um einen neuen Eintrag hinzuzufügen.
  • Bei diesem Eintrag können Sie alles auf den Standardeinstellungen stehen lassen und ihn abspeichern mit einem Klick auf Save. Bestätigen Sie danach den neuen Eintrag mit einem Klick auf Apply Changes.
  • Jetzt klicken Sie im Menü auf FirewallRules und die neu erstellte Instanz Beispiel-Site-to-Site-Server. Dort danach auf das Plus um einen neuen Eintrag zu erstellen.
  • Bei diesem Eintrag müssen Sie bei Source denselben Namen mit der Endung net auswählen Dies erlaubt den Clients den Zugriff auf das lokale Netzwerk. Alle anderen Werte können Sie auf den vorgegebenen Standardwerten stehen lassen. Speichern Sie den Eintrag mit einem Klick auf Save ab. Bestätigen Sie danach den neuen Eintrag mit einem Klick auf Apply Changes.
  • Als nächsten Schritt klicken Sie im Menü auf FirewallRules und WAN. Dort auf das Plus um eine neue Regel zu erstellen, welche den in der Instanz angegebenen Port frei gibt. In unserem Beispiel haben wir den Port 51825 verwendet.
  • Wichtig! Beim Protocol muss UDP stehen und bei Destination port range wählen Sie other, damit Sie bei from und to die richtigen Einträge vornehmen können. Im oben gezeigten Beispiel werden gleich alle Ports von 51820 bis 51850 freigegeben. Somit müssen wir bei einer Erweiterung diesen Punkt nicht mehr ansprechen.
  • Speichern Sie den Eintrag ab mit Save und bestätigen Sie die Änderung mit einem Klick auf Apply changes.
  • Jetzt müssen Sie sich auf der FRITZ!Box einloggen.
  • Gehen Sie auf der FRITZ!Box zu Internet, Freigaben und zur Lasche VPN (WireGuard)
  • Klicken Sie auf Verbindung hinzufügen.
  • Wählen Sie Netzwerk koppeln und klicken Sie auf Weiter.
  • Wurde diese WireGuard-Verbindung bereits auf der Gegenstelle erstellt --> Nein
  • Soll die neue WireGuard-Verbindung gleichzeitig zu einer bestehenden Verbindung der Gegenstelle genutzt werden --> Ja
  • Soll die Einstellungsdatei der Gegenstelle importiert werden --> Nein
  • Klicken Sie nun auf Weiter
  • Bei Name der WireGuard-Verbindung können Sie einen beliebigen Namen enitippen. Nehmen Sie einen aussagekräftigen Namen.
  • Bei Öffentlicher Schlüssel geben Sie nun den aus der Instance kopierten Public key ein.
  • Bei der Internet-Adresse kommt nun die Public-IP des WireGuard-Servers rein. In unserem Beispiel wäre das 19.19.19.19 oder eben der Domain-Name vpn.beispiel.ch, beide gefolgt vom Port, welchen wir in der Instance auf dem WireGuard-Server hinterlegt haben. Bei uns 51825.
  • Beim entfernten Netzwerk tippen wir den Range des lokalen Netzwerkes hinter dem WireGuard-Server ein, dazu die passende Subnetzmaske.
    Bei uns sind dies die Werte 192.168.99.0 / 255.255.255.0
  • Aktivieren Sie NetBIOS über diese Verbindung zulassen. Wenn Sie dies nicht machen, können Sie keine Laufwerke verbinden, da der Name dann nicht weitergegeben wird.
  • Wenn die Angaben komplett sind, klicken Sie auf Fertigstellen
  • Damit die Konfiguration auf der FRITZ!Box gespeichert wird, werden Sie aufgefordert, an einem angeschlossenen Telefon eine bestimmte Tastenkombination einzutippen, oder Sie drücken an der FRITZ!Box einfach kurz eine Taste.
  • Auf dem jetzt erscheinenden Bild haben Sie die Möglichkeit, die Einstellungen zu sichern/herunterzuladen.
    Unbedingt die Daten herunterkopieren, da Sie ansonsten auf der WireGuard-Seite die Konfiguration nicht beenden können!
  • Die Datei enthält alle benötigten Angaben.
  • Auf der FRITZ!Box sind wir nun fertig, wechseln Sie wieder zu WireGuard.
  • Klicken Sie im Menü auf VPNWireGuard und Peers. Dort auf das Plus um einen neuen Peer zu erstellen.
  • Bei Name können Sie einen beliebigen Namen vergeben. Idealerweise einen selbstsprechenden Text, da Sie eventuell mehrere VPNs aufbauen möchten.
  • Bei Public key und Pre-Shared key fügen Sie die Werte aus der von der FRITZ!Box generierten Datei ein.
  • Bei Allowed IPs geben Sie den Netzwerkrange der FRITZ!Box, mit der gültigen Subnetzmaske ein.
  • Unter Endpoint address geben Sie den Domain-Namen aus der konfigurierten Datei ein. Entfernen Sie den Port dahinter, der kommt dann bei Endpoint port rein.
  • Bei Instances wählen Sie die Anfangs auf diesem WireGuard-Server erstellte Instanz aus.
  • Sichern Sie den Eintrag mit einem Klick auf Save und aktivieren Sie den Eintrag auf der Übersicht mit einem Klick auf Apply.
  • Jetzt funktioniert der Zugriff aus beiden Netzen jeweils zur Gegenstelle.