Anleitung für eine WireGuard Site-to-Site Verbindung zwischen AVM FritzBox FritzOS 7.58 und OPNSense 24.1.7.
Hintergrund
Der Hintergrund dieses Projektes war, auf ein Netzwerk in einem Ferienhaus (in Italien) zu zugreifen, und so das Ferienhaus von zu Hause aus zu überwachen. Des weiteren war noch gewünscht, dass es eine lokale Telefonnummer gibt, die man dann auch von zu Hause aus verwenden kann. Hier nun der Erfahrungsbericht und eine Anleitung für eine WireGuard Site-to-Site Verbindung zwischen AVM FritzBox FritzOS 7.58 und OPNSense 24.1.7.
Voraussetzung
Dafür wurde eine FritzBox 6850 LTE (Fritz!OS 7.58) besorgt und ein Mobilfunkvertrag für monatlich 6 Euro mit 150GB/Monat, 10000 Minuten und 500 SMS abgeschlossen. Die SIM wird dann fix in der FritzBox 6850 bleiben, und über ein VPN soll man ins Ferienhaus-Netzwerk kommen und mit !FritzFon auch telefonieren können.
Warum nicht die FritzBox 6890? Die FritzBox 6890 war ursprünglich die 1. Wahl, aber leider funktioniert das Telefonieren mit der FritzBox 6890 nicht über GSM/LTE, sondern nur über VOIP oder einen Festnetzanschluss. Deswegen wurde es die FritzBox 6850, wobei das Telefonieren auch nur dann funktioniert, wenn der Mobilfunkbetreiber VoLTE unterstützt.
Plan A – Direkt mit WireGuard auf die FritzBox
Der ursprüngliche Plan war, die WireGuard Verbindung zwischen PC/Handy und der FritzBox direkt aufzubauen. Die dafür benötigten Einstellungen und Schritte, die auf der FritzBox gemacht werden müssen, sind gut dokumentiert und waren auch kein Problem. Allerdings habe ich die Rechnung ohne dem Mobilfunkanbieter gemacht. Dieser stellt leider keine öffentliche IP-Adresse zur Verfügung, sondern die FritzBox bekommt eine IP-Adresse aus einem privaten IP-Adressbereich. Damit war eine Verbindung von außerhalb auf die FritzBox nicht möglich.
Plan B – WireGuard Site-to-Site Verbindung von der FritzBox zu OPNSense
Da zu Hause eine OPNSense Firewall für etwas Sicherheit und den geschützten Zugriff von außerhalb sorgt, lag es nahe, eine WireGuard Site-to-Site Verbindung zwischen FritzBox und OPNSense Firewall herzustellen. Dann wäre es möglich von zu Hause auf das Netzwerk des Ferienhaus zu zugreifen. Zu Hause gibt es quasi eine statische IP-Adresse, sicherheitshalber gibt es aber mit Dynamic DNS eine Möglichkeit immer die aktuelle IP-Adresse unter dem selben DNS Namen zu erreichen.
Einrichten der WireGuard Site-to-Site Verbindung der falsche Weg
Damit die FritzBox die Verbindung zur OPNSense Firewall aufbauen kann, habe ich eine WireGuard Instance „Ferienhaus_Site2Site“ angelegt und danach ein Peer „FritzBox_Site2Site“, damit sich die FritzBox autenthifizieren kann.
Daraus ergibt sich dann folgende Konfiguration, die ich in der FritzBox hinterlegt habe
[Interface] PrivateKey = PRIVATE_KEY_FRITZBOX Address = 10.178.0.1/32 DNS = 10.178.0.1, 8.8.8.8 [Peer] PublicKey = PUBLIC_KEY_OPNSENSE PresharedKey = PRESHARED_KEY_OPNSENSE Endpoint = NACH_HAUSE.dyndns.org:7001 AllowedIPs = 10.178.0.0/24, 192.168.0.0/24, 192.168.178.0/24
Der Erfolg ist nicht ausgeblieben, FritzBox und OPNSense haben sich verbunden, ABER es war nur eine Verbindung aus dem Netzwerk „Ferienhaus“ nach Hause möglich, eine Verbindung von zu Hause in das Netzwerk „Ferienhaus“ war nicht möglich. Dabei hat die OPNSense Firewall alles durchgelassen, was auch in den Logs ersichtlich war, aber es kam keine Antwort zurück.
Das hat mich dann gute 4 Abende gekostet, und ich konnte keine Lösung dafür finden. Dann habe ich in einem Forum gelesen, dass der AVM Support gemeint hat, dass es sich bei dieser Konfiguration um keine Site-to-Site Verbindung handelt, sondern die FritzBox eine RoadWorrier Verbindung zur OPNSense aufbaut.
Also nochmals von vorne begonnen, und die Tutorials durch gegangen, wo die Konfiguration nicht über eine Datei erstellt wird.
WireGuard Site-to-Site von der FritzBox zu OPNSense
Aufbau
Hier nun die Schritt für Schritt Anleitung, wie es bei mir funktioniert hat. Wobei derzeit folgende Versionen aktuell sind
- Fritz!OS Version 7.58
- OPNSense Version 24.1.7
1. Instance in OPNSense anlegen
Für die Site-to-Site Verbindung habe ich eine extra „Instance“ angelegt mit einem eigenen Port. Damit will ich die Site-to-Site und die schon bestehenden RoadWorrier Verbindungen trennen.
2. Aus der WireGuard Instance muss ein „Interface“ gemacht werden
Dazu auf „Interfaces -> Assignments“ klicken und aus den vorhandenen „Devices“ ein Interface machen. Es sollte dann in der Liste aufscheinen.
3. Konfiguration der Regeln
Ich habe noch 2 Regeln für das Interface „WireGuardFerienHaus“ erstellt. Dazu auf „Firewall -> Rules -> WireGuardFerienHaus“ gehen und folgende Regeln hinzufügen ..
4. Verbindung in der FritzBox konfigurieren
Beim Abschluss sollte unbedingt die wg_config.conf gesichert werden, weil man davon mehrere Daten braucht. Dafür wird nachdem Abschluss der Konfiguration ein Download-Button zur Verfügung gestellt.
[Interface] Address = 10.11.0.1/24 DNS = 192.168.178.1 DNS = fritz.box [Peer] PublicKey = PUBLIC_KEY_AUS_FRITZBOX_WG_CONFIG) PresharedKey = PRESHARED_KEY_AUS_FRITZBOX_WG_CONFIG) AllowedIPs = 192.168.178.0/24 Endpoint = secret_address.myfritz.net:56277 PersistentKeepalive = 25
Beim editieren der eben erstellten Verbindung, sieht man dann folgendes
5. Peer in OPNSense anlegen
WireGuard Site-to-Site Kontrolle
In OPNSense kann man unter „VPN -> WireGuard -> Status“ kontrollieren, ob eine Verbindung besteht und wann der letzte Handshake statt gefunden hat,
in der FritzBox kann man den Status unter „Internet -> Freigaben -> VPN (WireGuard)“ kontrollieren. Gibt es einen grünen Punkt, dann besteht eine Verbindung, ist der Punkt grau, dann gibt es Probleme. Natürlich sollte man, bei bestehender Verbindung, noch versuchen ein Gerät im gegenüber liegenden Netz zu pingen.
Daraus ergeben sich folgende Verbindungen
- Computer aus dem Netzwerk „Ferienhaus“ können auf Computer im Netzwerk „Heimnetzerk“ zugreifen
- Computer aus dem Netzwerk „Heimnetzwerk“ können auf Computer im Netzwerk „Ferienhaus“ zugreifen
Heimnetzwerk und WG Roadworrier mit Zugriff auf Netzwerk „Ferienhaus“
An und für sich passt das jetzt, allerdings war geplant, dass sowohl der IP-Adressbereich 192.168.0.0/24 (Netzwerk ZuHause) als auch 10.11.0.0/24 (WG RoadWorrier) Zugriff auf das Netzwerk „Ferienhaus“ bekommen sollen. Das ist daran gescheitert, dass in der FritzBox nur der IP-Adressbereich für ein entferntes Netzwerk hinterlegt werden kann.
Als derzeitigen Workaround habe ich die ganze Konfiguration anstatt für 192.168.0.0/24 für das Netz 10.11.0.0/24 gemacht. Daraus ergeben sich folgende Möglichkeiten
- Computer aus dem Netzwerk „Ferienhaus“ können auf Computer im Netzerk „WG Roadworrier“ zugreifen
- Computer aus dem Netzwerk „Ferienhaus“ können NICHT auf Computer im Netzwerk „Heimnetzerk“ zugreifen
- Computer aus dem Netzwerk „Ferienhaus“ können mit VPN Verbindung „WG Roadworrier“ auf das Netzwerk „Heimnetzwerk“ zugreifen
- Computer aus dem Netzwerk „WG Roadworrier“ können auf Computer im Netzwerk „Ferienhaus“ zugreifen
- Computer aus dem Netzwerk „WG Roadworrier“ können auf Computer im Netzwerk „Heimnetzwerk“ zugreifen
- Computer aus dem Netzwerk „Heimnetzwerk“ können auf Computer im Netzwerk „WG Roadworrier“ zugreifen
- Computer aus dem Netzwerk „Heimnetzwerk“ können NICHT auf Computer im Netzwerk „Ferienhaus“ zugreifen
- Computer aus dem Netzwerk „Heimnetzwerk“ können mit VPN Verbindung „WG Roadworrier“ auf das Netzwerk „Ferienhaus“ zugreifen
Die Lösung, dass Geräte aus dem Netzwerk 192.168.0.0/24 (Heimnetzwerk) nur mit bestehender „WG Roadworrier“ Verbindung auf das Netzwerk 192.168.178.0.0/24 (Ferienhaus) zugreifen können, ist nicht optimal, aber für die jetzigen Zwecke reicht es einmal.
Vielleicht weiß jemand dazu eine Lösung, oder in einer der nächsten FritOS Versionen kann man mehrere Netzwerke angeben.
Quellen
- v64.tech – Site2Site WireGuard Verbindung zwischen pfSense und FritzBox
https://v64.tech/t/anleitung-site2site-wireguard-verbindung-zwischen-pfsense-und-fritzbox/438/6 - administrator.de – Wireguard Site2Site VPN-Verbindung zwischen OPNSense und Fritzbox 7590
https://administrator.de/forum/wireguard-site2site-vpn-verbindung-zwischen-opnsense-und-fritzbox-7590-6578709172.html - forum.opnsense.org
https://forum.opnsense.org/index.php?topic=35216.0 - Site-to-Site vs. RoadWorrier FritzBox
https://www.fritzbox-info.com/forum/viewthread.php?thread_id=405 - ip-phone-forum.de – Frizbox Lan zu Lan Verbindung funktioniert nur in eine Richtung
https://www.ip-phone-forum.de/threads/fritzbox-lan-zu-lan-verbindung-funktioniert-nur-in-eine-richtung.315742/
AMAZON LINKS
Alle Angaben ohne Gewähr!
In diesem Artikel sind Partnerlinks enthalten.
Durch einen Klick darauf gelangt man direkt zum Anbieter.
Moin,
bin grad hierauf gestoßen – wenn du in OPNsense unter VPN > WireGuard > Peer generator dir die Config für die FritzBox erstellst, kannst du dort unter „Allowed IPs“ mehrere Netze angeben. Die Konfig wird dann unten angezeigt – speichern, und bei der FritzBox „Wurde diese Wireguard Verbindung bereits auf der Gegenseite erstellt“ mit Ja beantworten – dann gibts die Option die Konfigdatei zu importieren, und damit ist dann auch mehr als ein Netz möglich.
Viele Grüße
xpac
Hallo,
Danke für die Information, werde ich demnächst testen.
Michael
Hallo,
ich habe mir das nochmals durchgelesen. Es klingt sehr danach, dass ich diesen Weg schon probiert bzw. beschrieben habe unter „Einrichten der WireGuard Site-to-Site Verbindung der falsche Weg“. Bei mir hat da nur die Verbindung vom Ferienhaus nach Hause, aber nie von zu Hause ins Ferienhaus geklappt. Bist Du bei der Konfiguration das irgendwie anders angegangen?
Michael
Moin,
yep, ich sehe woher das Problem kommt, konnte das mittels tcpdump nachvollziehen – und zwar hat AVM für die FritzBox einfach sehr merkwürdig implementiert (um nicht zu sagen: falsch :D)
Ich spare mir die lange Erklärung – funktionieren tut bei mir folgendes:
Instanz in OPNsense anlegen, analog zu deinem Schritt 1 – aber das Transfernetz muss so gewählt werden, dass man es nachher einfach mit dem zuhause genutzten Netz zusammenfassen kann.
Bei dir ist das lokale Netz 192.168.0.0/24, also wähle als Transfernetz bspw. 192.168.1.0/24, und gib der OPNsense die 192.168.1.1.
Danach erstellst du in OPNsense über den Wireguard Peer Generator (dein Schritt 5) eine Konfig für die FritzBox. Endpoint ist der DynDNS + Port deiner OPNsense WG Instanz, also NACH_HAUSE.dyndns.org:7001. Address = 192.168.1.2/24 (ist aber egal, dazu später). Bei Allowed IPs trägst du 192.168.0.0/23 ein (dieser Bereich muss dein eigentliches Netz und das Transfernetz abdecken, daher /23), Keepalive auf 25, kein DNS (vielleicht funktioniert das, ich habs nicht genutzt weil nicht benötigt).
Die Konfig, die dir dann angezeigt wird, kopierst du dir und speicherst sie unten mit den Pfeil auf der OPNsense ab.
Jetzt gehst du hin und löscht aus der kopierten Konfig die Zeile „Address = 192.168.1.2/24“, und speicherst das als Datei ab.
Jetzt gehst du zur FritzBox (existierende WG-Konfig löschen), wählst neue WG-Konfig, Site2Site, und beantwortest die erste Frage mit Ja.
Daraufhin erlaubt dir die FB das hochladen deiner gespeicherten Konfig-Datei. Das sollte klappen – evtl. zickt die FB, bei mir hat sie sich nach zwei Reboots und mehreren Versuchen dazu überreden lassen die Datei zu akzeptieren.
Wenn du das getan hast meldet die FritzBox Vollzug, und wird versuchen sich mit deiner OPNsense zu verbinden.
Auf der OPNsense gehst du jetzt nochmal zu WG -> Peers, suchst dir den Eintrag für deine FritzBox, editierst ihn, löscht bei Allowed IPs die 192.168.1.2/24, und trägst dafür das Netz der FB aus – also 192.168.178.0/24.
Achja, du kannst auf der FritzBox unter Wireguard-Einstellungen die myfritz Adresse und den von der FB gewürfelten Port anzeigen lassen, und diesen auch beim Peer bei „Endpoint address“ und „Endpoint port“ eintragen.
Dann Save, Apply, und dann sollten die beiden Kisten eine Verbindung miteinander aufbauen, über die sich alle Geräte auf beiden Seiten erreichen können sollten. Allerdings hat die FritzBox bei mir dafür ein paar Bedenk-Minuten gebraucht – dann gings aber.
Falls dir das aus Netzwerk-Sicht irgendwie bescheuert vorkommt – ist es auch. Die FritzBox konfiguriert sich (wenn man ihr in der importierten Konfig keine Adresse vorgibt) auf ihrer Seite für das Transfernetz nochmals ihre lokale IP (192.168.178.1). Das ist recht eindeutig Quatsch, aber funktioniert für dieses Setup trotzdem. Wird von AVM in deren Anleitung sogar explizit so gefordert:
https://avm.de/service/vpn/wireguard-vpn-zwischen-fritzbox-und-anderem-router-einrichten/
„Tragen Sie beim Erstellen der WireGuard-Verbindung für die FRITZ!Box keine IP-Adresse aus einem Transfernetz (Intermediate-Adresse), sondern die lokale IP-Adresse der FRITZ!Box ein (z.B. 192.168.20.1, Subnetzmaske 255.255.255.0).“
Hoffe das hilft dir, hab da gestern ein paar Studen dran gebastelt und ein paar Foren durchwühlt, bis ich es funktional hatte. AVM hätte das auch gern standardkonform implementieren dürfen, aber nun, immerhin funktioniert es 😀
Hallo,
vielen herzlichen Dank für die Mühe. Nachdem ich eh noch eine FritzBox anbinden muss, werde ich es Mal nach der Anleitung versuchen und dann den Beitrag ergänzen. Jetzt muss ich nur noch die nötige Zeit dafür finden 😉
Michael
Hallo,
endlich bin ich dazu gekommen, die Variante zu testen. Ich bin leider bei „evtl. zickt die FB, bei mir hat sie sich nach zwei Reboots und mehreren Versuchen dazu überreden lassen die Datei zu akzeptieren“.
Ich hab mehrmals einen Reboot gemacht, und auch einige male versucht die Datei hochzuladen. Leider ohne Erfolg …
Vielleicht liegt es auch am FritzOS, ich habe eine 6890 und FritzOS 7.57
Trotzdem Danke für die Erklärung
Michael
Hi,
Danke für das gute HowTo.
Bei mir funktioniert die Verbindung soweit, allerdings leider nur von Ferienhaus zu Heimnetz. Mein Heimnetz kann leider nicht auf das Ferienhaus zugreifen. Woran könnte das noch liegen?
VG
Hallo,
FritzBox ist im Ferienhaus, denke ich mal. Ist der richtige IP-Bereich vom Heimnetz (Entferntes Netzwerk bei FritzBox VPN) in der FritzBox hinterlegt?
Wenn ja, dann Mal in den Logs von OPNSense nachschauen, ob Pakete ankommen und die Firewall diese blockiert.
Michael
Hallo Michael, vielen Dank für Deine Anleitung hat alle sowie wie beschrieben geklappt.
Damit ich von allen verbundenen Netzen (Lan, DMZ, WG Roadwarrior und IPSec) auf das Netz der Fritz!Box zugreifen kann habe ich an der Opnsense eine ausgehende NAT Regel angelegt:
Schnittstelle: WG0, Quelle: jegliche, Quellport: *, Ziel: Netz_Fritzbox, Zielport: *, NAT-Adresse: LAN Adresse, NAT-Port:*, Statischer Port: NEIN
So funktioniert’s bei mir, bei den Clients nicht vergessen das Subnet einzutragen wenn man nicht alles durch den WG routed.
Hallo,
vielen Dank werde ich demnächst mal ausprobieren, weil ich muss ein zweites Netzwerk mit FritzBox über den „Umweg“ zugänglich machen.
Michael