FritzBox - Site to Site VPN zu pfSense 2.2

Aus Znilwiki
Wechseln zu: Navigation, Suche

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


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 |
+-----------------------+                                                                                                              +-----------------------+




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



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 Enable <- WICHTIG!!!
    • 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



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



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!



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.



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




Kommentare

Kommentare


ConnorXXL

678 Tage zuvor
Punkte 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

678 Tage zuvor
Punkte 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

602 Tage zuvor
Punkte 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

602 Tage zuvor
Punkte 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

601 Tage zuvor
Punkte 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

599 Tage zuvor
Punkte 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

559 Tage zuvor
Punkte 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

369 Tage zuvor
Punkte 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

369 Tage zuvor
Punkte 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
Kommentar hinzufügen:
Gebe hier einen Kommentar ein. Du kannst einen beliebigen Namen oder eine Email-Adresse als Namen angeben.

Wenn du dich einloggst wird automatisch dein Benutzername genommen.
Du kannst KEINE Links hier posten - das wurde wegen anhaltender Werbung deaktiviert. Sobald ein '''http://''' im Text vorkommt wird der Kommentar verworfen Alle anderen Steuerzeichen oder Funktionen wie < br > werden ausgefiltert - zum Posten von Quelltexten ist diese Funktion hier nicht geeignet.

Falls du dringendere Fragen hast kannst du auch das Support-System von znil.net nutzen unter support.znil.net