Aktionen

FritzBox - Site to Site VPN zu pfSense 2.2

Aus znilwiki

Ich hatte ja schon einen Artikel über die Verbindung von pfSense 2.1.5 zur Fritz!Box geschrieben: FritzBox - Site to Site VPN zu pfSense 2.1.5
Nach dem Update auf pfSense 2.2, Fritz!OS 6.23 und einer Email von Herrn Hoffmann mit den Hinweis auf überflüssige Einstellungen war ein neuerer Artikel dann gerechtfertigt.
Insbesondere hatte ich nach dem Update Probleme mit dem Tunnelaufbau nach der nächtlichen Zwangstrennung der Fritz!Box - was eine Umstellung des Modus von "Agressiv" auf "Main" scheinbar behoben hat.

Warning.png
Warnung: Achtung: Nach Update auf pfSense Version 2.2.3 ist keine Verbindung zur Fritz!Box möglich! Der Fehler ist in pfSense Version 2.2.4 wieder behoben! Diese Version ist aber noch nicht veröffentlicht und gibt es nur als Beta: https://snapshots.pfsense.org/ Alternativ müsst Ihr in der 2.2.3 die Datei /etc/inc/vpn.inc gegen die Version vom GitHub austauschen ( https://github.com/pfsense/pfsense/blob/master/etc/inc/vpn.inc ) austauschen.
Bei allen nachfolgenden Versionen bis zur 2.2.3 hatte ich das Problem nicht mehr


1 Ausgangslage

Ich habe folgende "Geräte":

  • pfSense 2.2 Firewall als virtuelle Maschine (VM) auf ESXi 5.5
    • WAN Schnittstelle hat die feste, öffentliche IP 198.100.144.136
    • LAN Schnittstelle hat die private IP 192.168.200.1
  • FritzBox 7390 mit Firmware Fritz!OS 6.23
    • 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 |
+-----------------------+                                                                                                              +-----------------------+




2 Konfiguration pfSense

Wir melden und an der pfSense an und gehen auf

VPN - IPSec

Zunächst setzen wir oben den Haken bei Enable IPSec und klicken danach auf Save

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


Danach erstellen wir eine neue IPSec-Verbindung mit einem Klick auf das "+" Symbol rechts

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


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



2.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 Main
    • My identifier My IP address
    • Peer identifier Distinguished name --> DynDNS-Name eurer FritzBox
    • Pre-Shared Key ein Passwort aus Buchstaben und Zahlen
    • Policy Generation Default
    • Proposal Checking Default
    • Encryption algorithm 3DES
    • Hash algorithm SHA1
    • DH key group 1 (768 bit) <- WICHTIG!!!
    • Lifetime 28800


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



FritzBox-pfSense-Site-to-Site-VPN-IPSec-003.png
FritzBox-pfSense-Site-to-Site-VPN-IPSec-004-neu.png
FritzBox-pfSense-Site-to-Site-VPN-IPSec-005-neu.png



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



2.2 Phase 2

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

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

und im Anschluss einen neuen Einrag mit dem "+" in der Mitte hinzufügen:

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


Die 3 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
      • 3DES
    • Hash algorithms
      • SHA1
    • PFS key group 1 (768 bit)
    • Lifetime 3600


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



FritzBox-pfSense-Site-to-Site-VPN-IPSec-008-neu.png



Wieder auf Save und danach auf Apply changes



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

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


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


Damit sind wir auf der Seite der pfSense fertig!



3 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; Alt, machte Probleme mit pfSense 2.2
  mode = phase1_mode_idp;
  phase1ss = "def/3des/sha";
  keytype = connkeytype_pre_shared;
  key = "einelangebuchstabenund1234567890";
  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-3des-sha/ah-no/comp-no/pfs"; // wichtig, da sonst kein Datenaustausch
  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.



4 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




5 Kommentare


ConnorXXL

28 Monaten zuvor
Punktzahl 0++
Ich bekomme die Verbindung leider nicht hin... welche Änderungen an Deinen Einstellungen muss ich denn vornehmen, wenn auf pfsense-Seite auch DynDNS eingestellt ist, also keine feste IPV4 Adresse? Danke!

BLinz

28 Monaten zuvor
Punktzahl 0++

Vermutlich müsstest du in der Textdatei der Fritzbox die IP-Adresse der pfSense "ipaddr = 198.100.144.136" durch einen FQDN Eintrag wie für die Fritzbox selbst ersetzen.

In der Phase 1 musst du ebenfalls den "My Identifier" zum "Distinguished Name" ändern.

Flo

25 Monaten zuvor
Punktzahl 0++

Danke für das schöne Tutorial!

Leider bekomme ich den Tunnel nicht stabil zum Laufen. Nach dem nächtlichen Reconnect ist er immer weg IKE Error 2027 (Timeout). Ich kann ihn reaktivieren (Haken in der Fritzbox Internet->Freigaben->VPN->aktiv raus -> Übernehmen -> Haken wieder rein -> Übernehmen). Beim nächsten Reconnect ist er wieder weg, trotz Main statt Aggressive. Hast Du eine Idee, woran das liegen könnte? Geht es stabil bei Dir?

Mein Setup FB 7490 mit Fritz OS 6.30 mit DynDNS über myfritz.net, pfSense 2.2.4 mit fester IP (im Multiwan mit DSL + Kabelanschluss).

huzun@ndoc.de

25 Monaten zuvor
Punktzahl 0++
Ist das Geil. Hab das selbe Problem. Schon eine Lösung? Bei mir ist der Tunnel aufgebaut. Gegenseite (Fritxbox) kann ich über den Browser öffnen - aber ein Ping funktioniert nicht.

BLinz

25 Monaten zuvor
Punktzahl 0++
Ich hatte das Problem das er imme rzunächst es mit der IPv6 Adresse versucht habe. ich habe dann auf der PfSense als Default das IPv4 Protokoll eingestellt (also als bevorzugtes Protokoll)

Flo

25 Monaten zuvor
Punktzahl 0++

@huzun@ndoc.de: Das hört sich aber nach einem Firewallproblem an. Schau mal, ob die IPSec Regel aus dem Titorial richtig ist und ob die Fritzbox-FW über accesslist richtig konfiguriert ist.

@BLinz: Meinst Du "Prefer IPv4 over IPv6" unter System->Advanced->Networking? Das habe ich aktiviert. Allow IPv& ist deaktivert, da im pfSense Netz kein IPv6 verwendet wird. In der Fritzbox habe ich es ebenfalls testweise deaktiviert, gab keine Verbesserung. Im Tutorial steht "NAT TRaversal Enable". In Version 2.2.4 gibt es kein Enable, sondern "Force" und "Auto". Was verwendest Du dort? Ich habe beides probiert, konnte dem aber keine Verbesserung zuordnen.


Mittlerweile funktioniert es soweit, dass der Tunnel durch einen Verbindungsaufbau (z.B. Ping) aus dem Fritzbox-Netz in des PfSense Netz aufgebaut wird. Andersrum leider nicht.

Ich habe den Eindruck, dass es damit etwas zu tun hat, dass der DNS Cache die DynDNS Adresse meiner Fritzbox ziemlich lange cachet. Ich verwende myfritz.net. Die Upstream DNS Server liefern aber bereits die neue Adresse, während der dnsmasqd auf der pfSense noch ~10 Minuten die alte Adresse liefert.

Un noch etwas: Weiss jemand, wie man der Fritzbox sagt, dass sich hinter der pfSense mehrere Netze verbergen? Asl z.B. 10.10.0.0/24 und 192.168.1.0/24?

Schöne Grüße, Florian

Julian

24 Monaten zuvor
Punktzahl 0++

Danke für das Tutorial! Hat super funktioniert. Ich habe PFSense an einer dynamischen IP, heißt ich muss in der Config auf einen dyndns-Namen anstatt auf eine IP zugreifen. Hab ich leider noch nicht hinbekommen. Hast du eine Idee dazu? Viele Grüße,

Julian

t.voma73@gmail.com

18 Monaten zuvor
Punktzahl 0++

Funktioniert das auch, wenn die Fritzbox im meinem Fall eine 6840LTE mit OS6.5 (beta) keine öffentliche sondern eine private externe IP hat?

Mit OVPN geht das, bei IPFire mit IPSec hatte ich da öfters, das der Tunnel sich nicht mehr aufbaute. Ich würde gerne aber wieder eine Verbindung direkt über die Fritze machen und dabei auch auf pfsense umsteigen...

BLinz

18 Monaten zuvor
Punktzahl 0++

Nun, wenn du so wie oben vorgeschlagen konfigurierst vermutlich nicht. Grund ist das die pfSense die IP-Adresse zum DNS-Namen der Fritzbox Auflösen will und nur einen Tunnel mit der dazu gehörigen IP Aufnehmen wird.

Du müsstest also bei "Peer identifier" eine andere Methode wählen - welche musst du mal probieren. Es wird darauf hinaus laufen das du keine Gegenkontrolle in dieser Art machen kannst. Der Verbindungsaufbau kann dann immer nur von der Fritz!BOx zu pfSense sein. Aber wenn dein Provider sonst alles durchlässt spricht prinzipiell nichts dagegen

markus@die-kuglers.com

5 Monaten zuvor
Punktzahl 0++

Hallo Herr Linz,

Frage: Laut Tutorial ist auf der Pfsense Nat Traversal auf enabled zu stellen, in der Fritzbox-Konfigurationsdatei steht use_nat_t jedoch auf =no können Sie mir das erklären? müsste nicht in der Fritz!Box auch use_nat_t=yes stehen?

herzlichen Dank für Ihre Rückmeldung

mfg Markus Kugler

BLinz

5 Monaten zuvor
Punktzahl 0++

Also NAT Traversal brauchen wir in diesem Fall nicht - siehe auch https://de.w…AT-Traversal Laut meinen eigenen Screenshots steht die Funktion auf pfSense-Seite auf "Auto", laut Text "Enabled". Und auf meinen 2 pfSense Firewalls steht es auch auf Auto.

Danke für den Hinweis, ich habe den Text oben nun angepasst

Frank

4 Monaten zuvor
Punktzahl 0++

Hallo Herr Linz, wir benutzen die Verbindung Fritzbox->pfsense schon seit 2 Jahren. Bislang war dies eine On-Demand Verbindung. Die Fritzbox hat zu der pfsense eine Verbindung aufgebaut und Daten konnten übertragen werden.

Jetzt haben wir eine VOIP Nummer in der Fritzbox hinterlegt, welche durch den Tunnel (pfsense) zu einer Voip Anlage geschaltet ist. Jedoch baut sich der Tunnel immer wieder automatisch ab. Gibt es eine Möglichkeit den Tunnel so einzurichten, das er immer offen bleibt?

BLinz

4 Monaten zuvor
Punktzahl 0++

Also wenn es wie zuvor eingerichtet ist sollte die Verbindung immer bestehen bleiben ... ist zumindest bei mir so. Da ist diese Funktion "Automatically ping host", die sorgt schon dafür denke ich.

Eingerichtet ist bei mir ein gegenseitiger Verbindungsaufbau, also beide Seiten können das Initiieren
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.