WireGuard Site-to-Site zwischen FritzBox und OPNSense

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

AMAZON LINKS

 

Alle Angaben ohne Gewähr!

In diesem Artikel sind Partnerlinks enthalten.
Durch einen Klick darauf ge­lan­gt man direkt zum Anbieter. 

 

 

 

 

 

10 Kommentare zu "WireGuard Site-to-Site zwischen FritzBox und OPNSense"

  1. 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

  2. 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

  3. 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

Einen Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


− 4 = 2