Aktionen

FritzBox - Site to Site VPN zu pfSense 2.5

Aus znilwiki

Changelog:

  • 06.03.2021 erste Version mit pfSense 2.5 und FritzBox 6591 mit Firmware 7.13 (Kabel Deutschland)

1 Vorwort

Nach dem Upgrade meiner pfSense auf 2.5 funktionierte zunächst alles, nach einem Neustart baute sich aber der IPSec-Tunnel zur FritzBox nicht mehr auf.
Während des Upgrades hatte ich in der Ausgabe gesehen das 3DES demnächst nicht mehr unterstützt werden soll - also Grund genug diesen Artikel zu überarbeiten!

Die Screenshots der FritzBox sind noch aus der alten Version, bis auf das Design der Buttons ist das aber noch identisch mit heute.


2 Ausgangslage

Ich habe folgende "Geräte":

  • pfSense 2.5 Firewall als virtuelle Maschine (VM) auf ESXi 6.7
    • WAN Schnittstelle hat die feste, öffentliche IP 198.100.144.136
    • LAN Schnittstelle hat die private IP 192.168.200.1
  • FritzBox 6591 mit Firmware Fritz!OS 7.13
    • WAN Schnittstelle hat dynamische, öffentliche IP
    • Öffentliche IP wird über DynDNS.org registriert und ist somit über testlinz.dyndns.org erreichbar
    • LAN-Schnittstelle hat die feste IP 192.168.1.200


Ich will hier also die Netzwerke 192.168.200.0/24 und 192.168.1.0/24 miteinander verbinden.

+-----------------------+       +----------------------------------+                      +-------------------------------------+      +-----------------------+
|  Netzwerk "Irgendwo"  |       |       Firewall pfSense           |                      |         Fritz!Box 7390              |      |   Netzwerk "Daheim"   |
+-----------------------+       +---------------+------------------+                      +---------------------+---------------+      +-----------------------+
| IP      192.168.200.0 |       |    Intern     |      Extern      |                      |       Extern        |   Intern      |      | IP      192.168.1.0   |
| Maske   255.255.255.0 | <-->  | 192.168.200.1 |  198.100.144.136 | <---- Internet ----> | testlinz.dyndns.org | 192.168.1.200 | <--> | Maske   255.255.255.0 |
| Gateway 192.168.200.1 |       +---------------+------------------+                      +---------------------+---------------+      | Gateway 192.168.1.200 |
+-----------------------+                                                                                                              +-----------------------+




3 Konfiguration pfSense

Wir melden und an der pfSense an und gehen auf

VPN - IPSec

Zunächst erstellen wir eine neue IPSec-Verbindung mit einem Klick auf das + Add P1 Symbol rechts unten

ClipCapIt-210306-134627.PNG


Der neue Dialog ist die Konfiguration für die "Phase 1".



3.1 Phase 1

Die 3 Abschnitte füllt Ihr wie folgt aus (in Bildern etwas tiefer zu sehen):

  • Genernal Information
    • Key Exchange version V1
    • Internet Protocol IPv4
    • Interface WAN
    • Remote gateway DynDNS-Name eurer FritzBox
    • Description Beschreibung der Verbindung


  • Phase 1 proposal (Authentication)
    • Authentication method Mutal PSK
    • Negotiation mode Aggressive
    • My identifier My IP address
    • Peer identifier Distinguished name --> DynDNS-Name eurer FritzBox
    • Pre-Shared Key ein Passwort aus Buchstaben und Zahlen oder klickt auf Generate new Pre-Shared Key
    • Encryption algorithm AES
    • Key length 256 bits
    • Hash algorithm SHA512
    • DH key group 14 (2048 bit)
    • Lifetime 28800


  • Advanced Options
    • NAT TRaversal Auto
    • Dead Peer Detection Enable DPD
      • 10 seconds
      • 5 retries



ClipCapIt-210306-135239.PNG
ClipCapIt-210306-135304.PNG
ClipCapIt-210306-135329.PNG

Im Anschluss einmal unten auf Save und danach oben wieder auf Apply changes

ClipCapIt-210306-135507.PNG



3.2 Phase 2

Zur Konfiguration der Phase 2 müsst zunächst links unten auf das + Show Phase 2 Entries klicken:

ClipCapIt-210306-135633.PNG

und dann auf + Add P2:

ClipCapIt-210306-135735.PNG


Die Abschnitte füllt Ihr wie folgt aus (in Bildern etwas tiefer zu sehen):

  • Tunnels
    • Mode Tunnel IPv4
    • Local Network
      • Type: LAN subnet
      • Type: None
    • Remote Network
      • Type: Network
      • Address: Internes Netzwerk Fritzbox / 24
      • Die 24 steht für eine 24er Maske, also Subnetmask 255.255.255.0


  • Phase 2 proposal (SA/Key Exchange)
    • Protocol ESP
    • Encryption algorithms
      • AES
      • 256 bits
    • Hash algorithms
      • SHA512
    • PFS key group 14 (2048 bit)
    • Lifetime 3600


  • Advanced Options
    • Automatically ping host Interne IP eurer Fritz!Box


ClipCapIt-210306-140209.PNG
ClipCapIt-210306-140227.PNG
ClipCapIt-210306-140252.PNG



Wieder auf Save und danach auf Apply changes



3.3 Rules

Warning.png
Warnung: Wenn Ihr die Regel so baut wie diese hier Beschrieben ist lasst Ihr den Netzwerkverkehr für ALLE IPSec-VPN-Tunnel zu, nicht nur für diesen. Wollt Ihr das pro Tunnel verwalten so solltet Ihr bei der Regel als Quelle das Netzwerk der Fritz!Box angeben und als Ziel das lokale Netzwerk der pfSense


Geht auf

Firewall -> Rules -> IPSec

und baut eine neue Regel um den Datenverkehr aus dem Fritz!Box Netzwerk durchzulassen:

ClipCapIt-210306-140911.PNG


ClipCapIt-210306-141117.PNG
ClipCapIt-210306-141016.PNG

WICHTIG: Erstellt die gleich Regel noch einmal - mit ICMP. Sonst klappt zwar der Zugriff, aber es geht kein Ping durch die Leitung (fand ich sehr nervig!)

ClipCapIt-210306-140949.PNG
ClipCapIt-210306-141016.PNG


Damit sind wir auf der Seite der pfSense fertig!



4 Fritz!Box

Zunächst müsst eine neue Textdatei erstellen mit folgendem Inhalt:

vpncfg {
connections {
  enabled = yes;
  conn_type = conntype_lan;
  name = "VPN nach Irgendwo"; // NAME der Verbindung
  always_renew = yes; // Verbindung immer herstellen
  reject_not_encrypted = no;
  dont_filter_netbios = yes;
  localip = 0.0.0.0;
  local_virtualip = 0.0.0.0;
  remoteip = 198.100.144.136; // Feste oeffentliche IP der pfSense Firewall
  remote_virtualip = 0.0.0.0;
  localid {
    fqdn = "testlinz.dyndns.org"; // dyndns name der FritzBox
    }
  remoteid {
    ipaddr = 198.100.144.136; // Feste oeffentliche IP der pfSense Firewall
    }
  mode = phase1_mode_aggressive;
  phase1ss = "dh14/aes/sha";
  keytype = connkeytype_pre_shared;
  key = "e24556bcfc49bb1129872bd5c3fa6dbb34011b4715320c0a0f88243b"; // Der gleiche wie in der pfSense Phase 1
  cert_do_server_auth = no;
  use_nat_t = no;
  use_xauth = no;
  use_cfgmode = no;
  phase2localid {
    ipnet {
      ipaddr = 192.168.1.0;
      mask = 255.255.255.0;
      }
    }
  phase2remoteid {
    ipnet {
      ipaddr = 192.168.200.0; // Das interne Netzwerk LAN hinter der pfSense
      mask = 255.255.255.0; // inklusive Subnetmask
      }
    }
  phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs";
  accesslist = "permit ip any 192.168.200.0 255.255.255.0"; // Firewall Einstellungen für pfSense Subnetz
  }
  ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
                      "udp 0.0.0.0:4500 0.0.0.0:4500";
}

Kopiert euch das obige in eine Textdatei (.txt) und passt die Namen und IP-Adressen an:

  • alle 198.100.144.136 durch die öffentliche IP eurer pfSense
  • alle 192.168.200.0 durch das interne Netzwerk eurer pfSense
  • alle 192.168.1.0 durch das interne Netzwerk eurer Fritz!Box



Dann Importiert Ihr die Datei in eure Fritz!Box:

FritzBox-pfSense-Site-to-Site-VPN-IPSec-012.png


FritzBox-pfSense-Site-to-Site-VPN-IPSec-013.png


FritzBox-pfSense-Site-to-Site-VPN-IPSec-014.png


Dann wird die Datei Importiert und der Tunnel aufgebaut:

FritzBox-pfSense-Site-to-Site-VPN-IPSec-015.png


FritzBox-pfSense-Site-to-Site-VPN-IPSec-016.png



Das war schon alles!
Per Ping können wir nun die Verbindung testen.



5 Fehler mit IPv6 Protokoll

Falls der Verbindungsaufbau immer mal wieder nicht klappt und Ihr sowohl auf der Fritz!Box als auch auf der pfSense das IPv6 Protokoll aktiv habt schaut doch mal hier:

pfSense - IPSec mit IPv4 Remote IP wird aber IPv6 genommen




6 Quellen

Dieser Artikel basiert auf:


7 Kommentare


Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung