Einfache Methode
Aufbau:
- 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.
- 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.
- 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.
- 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.