#Anleitung: Site2Site WireGuard Verbindung zwischen pfSense und FritzBox

Einfache Methode
Aufbau:

  1. WireGuard Tunnel und Interface auf der pfSense erstellen:
    1.1. In der pfSense unter „VPN“ → „WireGuard“ → „Tunnel“ auf „Add Tunnel“ [1] klicken

    1.2. Auf „Generate“ [1] klicken. Den erstellten Public Key der pfSense „pfsense.wg.public.key“ [2] kopieren. Abschließend auf “Save Tunnel” klicken.

    1.3. Unter „Schnittstellen“ → „Zuweisungen“ bei „Verfügbare Netzwerkports“ den erstellten Tunnel „tun_wg0“ auswählen und auf „Hinzufügen“ [1] klicken und die erstellte Schnittstelle durch klicken auf „OPTx“ öffnen.

    1.4. Haken bei „Schnittelle aktivieren“ [1] setzen und unter „Beschreibung“ [2] zum Beispiel „WG0“ eintragen. Abschließend auf „Speichern“ [3] klicken.
  2. Wireguard Tunnel auf der FritzBox einrichten.
    2.1. Unter „Internet“ [1], „Freigaben“ [2], „VPN (WireGuard)“ [3] auf „Verbindung hinzufügen“ [4] klicken.

    2.2. „Netzwerke koppeln oder spezielle Verbindungen herstellen“ [1] auswählen und auf „Weiter“ [2] klicken

    2.3. Einen Namen bei „Name der WireGuard®-Verbindung“ [1] eingeben. Den kopierten Public Key „pfsense.wg.public.key“ aus 1.2.[2] bei „Öffentlicher Schlüssel“ [2] eintragen den DNS-Namen oder die WAN IP Adresse und den WireGuard Port der pfSense (pfsense.lab.com:51820) bei „Internet-Adresse“ [3] eintragen. Das LAN-Netz der pfSense bei „Entferntes Netzwerk“ und „Subnetzmaske“ [4] eintragen. Gegebenenfalls „NetBIOS über diese Verbindung zulassen“ [5] anhaken. Abschließend „Fertigstellen“ [6] klicken.

    2.4. Auf der folgenden Seite kann eine Datei mit den Einstellungen durch klicken auf „Einstellungen herunterladen“ [1] heruntergeladen werden. Die Seite mit klicken auf „Schließen“ [2] schließen.

    2.5. Es kommt noch der Hinweis, dass aus Sicherheitsgründen die Einstellungen dieser Verbindung nicht erneut abgerufen werden können. Auch ohne die Einstellungsdatei gespeichert zu haben, lassen sich die Einstellungen später einfach über das Webinterface der FritzBox einsehen.
  3. Einrichten des Peers auf der pfSense
    3.1. Öffnen die aus 2.4.[1] heruntergeladene Einstellungsdatei. Die Datei hat folgenden Inhalt:

    [Interface]
    Address = 192.168.0.1/24
    DNS = 192.168.1.1
    DNS = fritz.box
    [Peer]
    PublicKey = „fritzbox1.wg.public.key“
    PresharedKey = „presharedkey.fritzbox1.wg.pfsense“
    AllowedIPs = 192.168.1.0/24
    Endpoint = fritzbox1.myfritz.net:56641
    PersistentKeepalive = 25
    3.2. In der pfSense unter „VPN“ → „WireGuard“ → „Peers“ auf „Add Peer“ [1] klicken.

    3.3. Den erstellten „Tunnel“ „tun_wg0“ [1] aus 1.2. auswählen. Unter „Beschreibung“ [2] zum Beispiel fritzbox1 eintragen. Ist die FritzBox im Internet direkt erreichbar den haken unter „Dynamic“ [3] entfernen. Unter „Endpoint“ [4] den „Hostname“ und „Port“ aus der Einstellungsdatei (Endpoint = fritzbox1.myfritz.net:56641) übernehmen Bei „Keep Alive“ [5] wie in der Einstellungsdatei „25“ eintragen. Bei „Public Key“ [6] den „PublicKey“ („fritzbox1.wg.public.key“) aus der Einstellungsdatei eintragen. Bei „Pre-shared Key“ [7] den „PresharedKey“ („presharedkey.fritzbox1.wg.pfsense“) aus der Einstellungsdatei eintragen. Bei „Allowed IPs“ [8] das Netz unter „AllowedIPs“ (192.168.1.0/24) aus der Einstellungsdatei eintragen. Abschließen auf „Save Peer“ [9] klicken.

Sollte alles geklappt haben, ist die Wireguard verbindung zwischen FritzBox und pfSense hergestellt und im jeweiligen System als „grün“ zu erkennen. Die LAN IP Adressen sollten aber noch nicht erreichbar sein. Hierfür muss der pfSense das Routing sowie die Firewall Regeln noch gegeben werden.

  1. Routing und Firewall Regeln der pfSense anpassen
    4.1. Unter „System“ → „Routing“ → „Gateways“ auf „Hinzufügen“ [1] klicken.

    4.2. Unter „Schnittstelle“ [1] „WG0“ auswählen und unter „Name“ [2] zum Beispiel „WG0_GW“ eintragen und auf „Speichern“ [3] klicken.

    4.3. Unter „System“ → „Routing“ → „Statische Routen“ auf „Hinzufügen“ [1] klicken.

    4.4. Unter „Zielnetzwerk“ [1] das LAN Netz der FritzBox eintragen und bei „Gateway“ [2] „WG0_GW – dynamic“ auswählen und auf „Speichern“ [3] klicken.

    4.5. Unter „Firewall“ → „Regeln“ → „WG0“ entsprechende Regeln erstellen. Zum Testen kann eine „Allow all“ Regel wie auf dem Bild zu sehen ist erstellt werden. Gegebenenfalls auch unter „LAN“.
    Wie hier und an anderen Stellen müssen bei der pfSense die Änderungen auch angewendet werden. Bitte selbstständig auf die Schaltflächen achten und anklicken.

Wenn ich nichts Vergessen oder übersehen habe, sollten sich beide LAN-Netze nun gegenseitig erreichen können.

Anmerkungen:

  • Gewisse IPs/Netze können bei der FritzBox über VPN nicht geroutet werden. Zum Beispiel die 192.168.180.1 und 192.168.180.2. Diese Adressen verwendet die FritzBox Systemintern für DNS. Beim Versuch eine Verbindung mit diesen Adressen über WireGuard zu erstellen kommt eine entsprechende Konfliktmeldung.
  • Verwendete pfSense: VM mit CE 2.7.0-RELEASE
  • Verwendete FritzBox: 7590 mit FRITZ!OS 7.57
  • Sollte noch keine WireGuard Verbindung auf der FritzBox vorhanden sein, generiert die FritzBox einen Private- sowie Public-Key. Der WireGuard Port wird dabei auch zufällig von der FritzBox gewählt und ist für alle weiteren Verbindungen Gültig solange nicht alle WireGuard Verbindungen in der FritzBox gelöscht werden.
3 Likes

Ich hab ein Screenshot vergessen. Ich konnte meinen Beitrag aber nicht mehr bearbeiten. Ist das normal dass das nach einer gewissen Zeit nicht mehr geht?
Der Screenshot gehöre zwischen Punkt 2.2. und 2.3.

„Du machst die FritzBox zum Server und die pfSense zum Wireguard Client.“

Verstehe ich nicht ganz. Aus meiner Sicht können die FritzBox und die pfSense in der Anleitung jeweils die Rolle des Servers oder Clients annehmen.

Ich hab zwar kein DS-lite Anschluss aber um es mal bestmöglich nachzustellen, hab ich am Smartphone die Hotspot Funktion gestartet und bei der FritzBox den Internetzugang auf „vorhandener Zugang über WLAN“ umgestellt. Im Smartphone direkt wurde mir nur eine öffentliche v6 Adresse Adresse angezeigt. In der FritzBox wurde beim Internetzugang eine private v4 und eine öffentliche v6 Adresse angezeigt. Auf der Startseite von ipv64.net über den PC an der FritzBox wurde mir wiederum nur eine öffentliche v4 Adresse angezeigt.

Wenn wie bereits in Punkt 3.3.[3] beschrieben der Haken bei Dynamic drin bleibt und die pfSense sozusagen nur als Server agiert und die FritzBox nur als Client, funktioniert alles weitere auch ohne Probleme. Die LAN Netze erreichen sich gegenseitig.

Kann gern mal getestet werden. Vielleicht übersehe ich auch etwas bei dem Szenario.

Servus,

tolle Anleitung, hab es aber nur überflogen - incl. der Kommentare. Ich würde das gern im Sonntag-Stream testen und (falls es geht) auch ein Video dazu machen. Ist das Ok für dich wenn ich den Beitrag hier dann als Vorlage verwende und u.U. auch zeige?

VG
Gerd

Kannst du gern tun. Falls es bei dir doch ein Abend-Stream werden sollte, kann ich mit drüber schauen.
Wenn ich es noch schaffe, schreibe ich noch was zusammen, um 2 verschiedene Netze hinter der pfSense mit dem LAN Netz der FritzBox über einen WireGuard Tunnel zu verbinden.

Erweiterte Methode
zum hinzufügen, bearbeiten oder ergänzen von Peers in der FritzBox.

  1. Allgemein kann man sich unter „WireGuard-Einstellungen anzeigen“ [1] alle gespeicherten Daten zu WireGuard Verbinden, wie die Keys, anzeigen lassen.

  2. Es empfiehlt sich mindestens eine WireGuard Verbindung gespeichert zu haben, da ansonsten neue Keys vergeben werden sowie der WireGuard Port neu gewählt wird. Hierzu reicht eine Einzelgerät Verbindung welche nach der Erstellung auch auf inaktiv gesetzt werden kann.
    2.1. Dazu in der WireGuard Übersicht auf „Verbindung hinzufügen“ klicken und anschließend „Einzelgerät verbinden“ [1] auswählen und auf „Weiter“ [2] klicken.


    2.2. Der Verbindung nur noch einen Namen geben [1] und auf „Abschließen“ [2] klicken

  3. Das hinzufügen, bearbeiten oder ergänzen von Peers erfolgt nun durch die Erstellung einer Datei (zum Beispiel „wg-peer.conf“) mit folgenden Inhalt:

[Interface]
DNS = 192.168.0.1 # optinal
[Peer]
PublicKey = „pfsense.wg.public.key“
PresharedKey = „presharedkey.fritzbox1.wg.pfsense“
AllowedIPs = 192.168.0.0/24
Endpoint = pfsense.lab.com:51820
PersistentKeepalive = 25
  • Der Bereich [Interface] ist hier komplett Optional.
  • Durch die Datei lassen sich so Verbindungen schnell hinzufügen in die FritzBox.
  • Möchte man eine Vorhanden Verbindung in der FritzBox bearbeiten oder ergänzen muss dieses zuerst aus der FritzBox gelöscht werden.
  • Um mehrere Netze hinter der pfSense über eine WireGuard Verbindung für das FritzBox LAN erreichbar zu machen genügt die Anpassung der „AllowedIPs“ in der Datei (in der pfSense sollte bis auf eine eventuelle Anpassung der Firewall nichts weiter nötig, falls sich an die Schritte der Einfachen Methode gehalten wurde) . Zum Beispiel:
[Peer]
PublicKey = „pfsense.wg.public.key“
PresharedKey = „presharedkey.fritzbox1.wg.pfsense“
AllowedIPs = 192.168.0.0/24,192.168.10.0/24
Endpoint = pfsense.lab.com:51820
PersistentKeepalive = 25

Mehrere Netze werden anschließend in Übersicht der FritzBox entsprechend auch angezeigt [1]

  1. Das Hochladen der Datei erfolgt einfach über Verbindung hinzufügen.
    4.1. Anschließend wieder "Netzwerke koppeln oder spezielle Verbindungen herstellen“ [1] auswählen und auf „Weiter“ [2] klicken

    4.2. diesmal bei „Wurde diese WireGuard®-Verbindung bereits auf der Gegenstelle erstellt?“ [1] ja wählen und auf „Weiter“ [2] klicken

    4.3. Der Verbindung wieder einen Namen geben [1], die erstellte Datei auswählen [2], gegebenenfalls „NetBIOS über diese Verbindung zulassen“ [3] wieder anhaken und Abschließend auf „Fertigstellen“ [4] klicken.

In der „Kernel IP routing table“ der FritzBox sind folgende IPs/Netze bereits eingetragen und könnten Konflikte verursachen:
169.254.0.0 / 255.255.0.0
192.168.178.0 / 255.255.255.0 (Standard LAN Netz, lässt sich ändern)
192.168.180.1 / 255.255.255.255
192.168.180.2 / 255.255.255.255
192.168.189.0 / 255.255.255.0 (Gäste Netz, der Bereich könnte variieren)

https://v64.tech/t/fritzbox-ds-lite-wireguard-s2s-usw-laeuft/457/2

Vielen Dank für die Anleitung, fuktioniert super!

Ist es netzwerktechnisch grundsätzlich machbar, dass ich mehrer Fritzboxen aus unterschiedlichen Netzwerken über ein Interface / Gateway mit der pfSence verbinde und über das eine Gateway verschiedene Routen in der pfSence anlege, oder braucht jede Fritte ihr eigenes Gateway samt Route?

Guten Tag,
ich hoffe, es passt zu diesem Thema, ich habe es nach Dennis Anleitungsvideos hier ähnlich aufgebaut. Siehe gerne: https://www.youtube.com/watch?v=El7NK3Ox72I

Aufbau:

Folgende Problematik:
Ich kann aus meinem privaten Netz alle Server bei Hetzner über die private ip (Netz: 10.100.0.0/16) erreichen. Lediglich von meinen Hetzner Servern nicht in das Netz zu Hause (192.168.178.0/24).

Wenn ich die Pakete in pfSense via Packet Capture mitschneide, sehe ich auch, dass die Pakete (ICMP) hier ankommen. Aber die pfSense hier das nicht weiterleitet.

Ich hoffe, Ihr könnt mir helfen :smiley:. Ich wollte gern weitere Bilder anhängen, leider bin ich aufgrund der begrenzung hier limitiert, reiche die aber gerne auf Wunsch nach.
Grüße

Hier eine wichtige Anmerkung zur Konfiguration des Wireguard-Tunnels (hier WG0 genannt). Die MTU darf nicht auf dem Vorgabewert von 1500 belassen werden, der genutzt wird wenn kein Wert eingetragen wird.
Die MTU sollte deutlich niedriger sein, bei mir habe ich 1420 gewählt.
Wird der Wert auf der Vorgabe 1500 belassen kommen sonst keine SSH-Verbindungen zustande. Im logfile der ssh-Server finden sich dann Meldungen wie diese: „fatal: Timeout before authentication for [192.168.XXX.XXX]“.
Ich hatte natülich zunächst eine falsche Konfigurtaion bei den Firewall-Regeln vermutet, Aber die sind es nicht gewesen.
Mit dem Wert 1420 klappen die SSH-Verbindungen zu SSH-Servern auf beiden Seiten des Wireguard-Tunnels nun. Den Hinweis MTU 1420 zu nutzen fand ich auf einer englischspachigen Hilfeseite.

Meiner Meinung nach gibt es die DS-Lite-Problematik bei Netz zu Netz-Verbindungen zwischen einer FritzBox und einer pfsense nicht. Ich habe zwar auch (noch) keinen DS-Lite-Anschluss, sondern bekomme von o2 noch immer eine öffentlich IPv4-Adresse zugewiesen, aber dennoch Wireguard so konfiguriert, dass die Netz zu Netz-Verbindungen zwischen der FritzBox und der pfsense (beide mit o2-Anschluss mit täglich neu zugewiesener öffentlicher IPv4) nur via IPv6 hergestellt werden.
Seitens der FritzBox nutze ich die MyFritz DYN-DNS-Adresse und seitens der pfsense eine IPv6-only subdomain-Adresse (wie z.B. pfsense.xxxx.home64.de) bei ipv64 [Service Custom (v6)]. Somit lösen die DNS-Server die dynamisch zugewiesen Adressen für pfsense.xxxx.home64.de nur nach ipv6 auf, nicht nach ipv4 (in ipv4-only Netzen meldet ping dann „ping: connect: Cannot assign requested address“.
Für die Auflösung der ipv4-Adresse habe ich auf eine Subdomain verzichtet. Sie wird nur als xxxx.home64.de aufgelöst. Bei der Konfiguration der DynDNS-Adressen bei ipv64.net muss man dann nur dringend darauf achten dass das Hächlen bei „Wildcard (*.) automatisch setzen“ nicht gesetzt ist. Sonst klappt das mit den Subdomains aber eh nicht richtig.
Somit verbinden sich die FritzBox und die pfsense stets und immer nur via IPv6 miteinander. Dennoch werden durch den per ipv6 aufgebauten Tunnel auch IPv4-Pakete geroutet. Ich kann also per IPv4 dennoch die Systeme auf beiden Seiten des Tunnels erreichen und z.B. via ssh Username@192.168.xxx.xxx erreichen.
Das kann man hier so machen, denn die Problematik, dass mitunter keine ipv6-Verbindung zur pfsense hergestellt werden kann, tritt ja nur bei mobilen Endgeräten, wie Smartphones auf, wenn die sich in ipv4-only Netzen (wlan, manche Mobilfunknetze im den Reiseländern) befinden. Aber dann kann man zu einer pfsense oder FritzBox an DS-Lite-Anschlüssen sowieso keine direkte Verbindung mehr aufbauen.
Man muss dann zu Krücken wie einem V-Server mit einem Reverse-SSH-Tunnel greifen oder ähnlichem.
In meinem Fall habe ich also einfach die Wireguard-Roadwarrior Verbindung so konfiguriert, dass diese zur Hautdomain (xxxx.home64.de) hin aufgebaut werden, die von FritzBoxen, aber immer zur ipv6-only Subdomain. Dann muss ich diesbezüglich nichts mehr ändern, sollte o2 mal auf DS-Lite umstellen oder dies als Folge eines Providerwechsels passieren.

Hallo, vielen Dank für die Anleitung.

Hat soweit auch geklappt! Ich habe hier aber nun das Problem, dass mein Server VLAN 172.16.0 auf die andere Seite zugreifen kann. Ich aber mit meinem Desktop VLAN 172.16.1.0 keine Verbindung hinbekomme…

Ich habe bei Peers schon die Allowd IPs auf 172.16.0 und 172.16.1 geändert, hat aber leider nicht geklappt, woran kann es noch liegen?

LG
Daniel

Keine Ahnung warum, aber heute klappten die ssh-Verbindungen durch den Wireguard-Tunnel plötzlich nicht mehr. Erst ein Absenken der MTU von 1420 auf 1410 ermöglicht nun wieder eine Verbindung durch den Tunnel.

Hallo, tolle Anleitung aber leider habe ich folgendes Problem.
Ich möchte aus dem Internet auf mein Netzwerk hinter der pfsense zugreifen aber leider habe ich ein Problem mit meiner Wireguard Verbindung bzw. mit der Statischen Route und hoffe das mir hier jemand helfen kann.
Ich bekomme keine Route eingetragen da meine FritzBox und die pfsense im selben Netzwerk liegen 192.168.178.1FB----192.168.178.243pfS da ich die FB als Internetzugang nutze. Könnte mir jemand erklären, wie ich das ganze Konfigurieren muss? Würde mich über eine Hilfestellung freuen.
Gruß Rolf

Diese Anleitung bezieht sich darauf, eine Wireguard Netz zu Netz Verbindung zwischen einem Standort A, an dem einen pfsense steht und einem Standort B herzustellen an dem eine Fritte steht. Also zwei Netze an zwei unterschiedlichen Standorten zu verbinden.

So wie du das Problem schilderst hast du jedoch eine Fritte und dahinter eine pfsense an einem Standort (z.B. Standort A) und über den zweiten Standort gibst du uns keine Infos.

Insofern weiß ich gerade nicht was du willst, bezweckst. Wenn du z.B. mit deinem Smartphone oder einem Notebook von einem Hotel-WLAN oder aus dem Mobilfunknetz auf die Geräte hinter deiner pfsense zugreufen willst, ist das hier ohnehin nicht die richtige Anleitung für deine Zwecke.

Also schreib mal was du eigentlich genau erreichen willst, sonst ist alles weite hier nur reine Vermutung

Danke für die Antwort.
Eigentlich möchte ich nur ganz einfach von extern (z.B. Telefon) auf mein NAS und HA zugreifen. Über die Fritte komme ich mit Wireguard aber dann bekomme ich es nicht hin über die pfsense in mein Netz auf mein NAS zuzugreifen.

Dafür ist diese Anleitung nicht die richtige. Wie ich bereits zuvor schrieb.
Deinen bisherigen Ausführungen entnehme ich, dass du (ich drücke es mal vorsichtig aus) auf dem vollkommen falschen Kurs bist. Wenn du von Greetsiel (Ostfriesland) aus mit deinem Segelboot nach Las Palmas segeln willst, dann musste auch nach Südwesten segeln und nicht nach Nordwesten. Im letzten Fall kommst du sonnst irgendwann in Island oder Grönland an.
Das zweite aber machst du gerade (im übertragenen Sinn) hier.

Was du willst ist ein Wireguard-VPN-Tunnel, der dir den Zugriff auf Devices hinter deiner pfsense erlaubt. Dann vergiss mal ganz schnell diese Anleitung. Die hilft dir dabei nicht. Lösch auch die Wiregurad-Tunnel auf der Fritte, die nützen dir da auch nichts. Das ist nämlich das falsche Ziel (Island statt Las Palmas).

Was du brauchst ist nur eine Wireguard-Verbindung vom mobilen Gerät zur pfsense. Die Fritte muss da einfach nur per Portforwarding (IPv4 und IPv6) und NAT (IPV4) die Verbindungsanfragen an die passenden Ports der pfsense weiterleiten.

Wie du dafür Wireguard konfigurieren muss findest du aber nicht in dieser Anleitung, denn Fritte sind bezüglich Wireguard etwas speziell und diese Anleitung geht genau auf diese Besonderheiten ein, ist eben nicht für das geeignet was du eigentlich willst.

Eine sehr gute (Video)-Anleitung für das was du willst ist diese hier:
https://www.youtube.com/watch?v=IvGjWndvTk0 (englischsprachig)

Und da ich den Eindruck habe, dass es dir an Grundkenntissen hinsichtlich IP-Networking fehlt, empfehle ich dir auch noch das hier zu lesen:
https://docs.opnsense.org/manual/how-tos/ipv6_fb.html
Das bezieht sich zwar auf die Konfiguration einer Fritte hinter der sich eine OPNsense befindet, aber da pfsense und OPNsense diesbezüglich identisch arbeiten, gilt das alles 1 zu 1 auch für die Konfiguration einer Fritte und einer pfsense hinter der Fritte.

Solltest du nachdem du das durchgearbeitet und verstanden hast noch weitere Fragen haben, mach bitte ein neues Thema mit den Schlagworten pfsense und wireguard auf, hier in dieser Anleitung ist dein Problem falsch.