VPN Tunnel zwischen pfSense und Fritzbox

Seit einigen Jahren ist es mit Fritzboxen möglich, VPN Tunnel aufzubauen. Die Konfiguration ist auf der Box bewusst einsteigerfreundlich belassen, die Tunnelparameter sind größtenteils vorgegeben und können nicht verändert werden. Daher muss die Seite der pfSense Firwall sich anpassen.

Mit pfSense 2.2.3 gab es ein Problem mit IPsec. Tunnel zu Fritzboxen haben damit nicht funktioniert. Es gab zunächst einen Workaround, inzwischen (ab 2.2.4) ist das Problem behoben (vgl. https://forum.pfsense.org/index.php?topic=87579.0)

Sofern die Fritzbox keine feste, öffentliche IP Adresse hat, empfehle ich, sie bei MyFritz zu registrieren. Dadurch bekommt sie einen DynDNS-Namen. Dieser ist zwar relativ lang und nicht einfach zu merken, er muss aber in der Konfiguration nur zwei Mal eingetragen werden. Für den Zweck reicht das allemal. Das folgende Beispiel geht davon aus, dass die Fritzbox-Seite eine dynamische und die pfSense-Seite eine feste IP Adresse hat.

pfSense

Die Konfiguration liegt unter VPN -> IPsec.

Phase 1

Key-Exchange version: V1
Internet Protocol: IPv4
Interface: WAN
Remote gateway: <DynDNS-Name der Fritzbox>
Description: <Freitextfeld zur Beschriftung>

Authentication method: Mutual PSK
Negotiation mode: Aggressive
My identifiert: My IP address
Peer identifier: Distinguished name <DynDNS-Name der Fritzbox>
Pre-Shared Key: <möglichst langer und komplizierter gemeinsamer Schlüssel>

Encrytion algorithm: 3DES
Hash algorithm: SHA1
DH key group: 1 (768 bit)
Lifetime: 28800s

Phase 2

Mode: Tunnel IPv4
Local Network: Type: Network, Address: <lokales Netzwerk der pfSense>
Remote Network: Type: Network, Address: <lokales Netzwerk der Fritzbox>
Description: <Freitextfeld zur Beschriftung>

Protocol: ESP
Encryption algorithms: AES (128 bits), 3DES
Hash algorithms: MD5, SHA1
PFS key group: 1 (768 bit)
Lifetime: 3600s

 

Unter Status -> IPsec lässt sich dann die Statusseite für die VPNs aufrufen. Von dort können Tunnel auch händisch gestartet und gestoppt werden. Wichtig ist natürlich, dass man auch daran denkt, entsprechende Firewallregeln zu definieren, die den Verkehr in und aus dem Tunnel erlauben.

Fritzbox

Für die Fritzbox wird eine Konfigurationsdatei benötigt, die über das Webinterface der Box eingespielt wird. Eine Beispielkonfig liegt hier zum Download. Sie muss an den entsprechenden Stellen natürlich angepasst werden (IP der Gegenstelle, Lokale- und Remotenetzwerke, Pre-Shared Key und ACL).

Fritzbox-Konfig

Update – neue Verschlüsselungsparameter

Mittlerweile habe ich mein Setup mit moderneren Verschlüsselungsparameter stabil laufen. Die pfSense läuft aktuell in Version 2.3.4, die Fritzbox (7390) in der Version 06.83. Folgende Parameter werden verwendet:

Phase 1:

  • AES-256
  • SHA-1
  • DH-Group 14
  • Lifetime 3600s

Phase 2:

  • AES-256
  • SHA-1
  • PFS Group 14
  • Lifetime 3600s

Außerdem läuft der Tunnel jetzt im Main-Mode und nicht mehr im unsicheren Aggressive-Mode.

Natürlich muss dazu auch die Fritzbox-Konfig angepasst werden. Drei Variablen sind im Konfigfile zu ändern:

  • mode = phase1_mode_idp;
  • phase1ss = "dh14/aes/sha";
  • phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs";

 

Update: 03.02.17 – Screenshots aktualisiert
Update: 11.09.17 – Aktualisierung bzgl. Verschlüsselungsparameter
Update: 05.11.17 – Fritzbox-Beispielkonfig aktualisiert

19 Gedanken zu “VPN Tunnel zwischen pfSense und Fritzbox

  1. Hi,

    ich habe auch das Problem das ich von meinem lokalen Netzt nicht auf das Netz hinter der Firewall komme, auch nicht aus Sie selber.
    Andere Richtung geht aber…
    Von dem internen Netz hinter der Pfsense kann ich aber in mein (hinter der Fritzbox) Netz pingen.

    Any idea?

    1. Klingt für mich so, als ob noch die entsprechende Firewallfreischaltung auf der pfSense fehlt (von Fritzbox-LAN zu pfSense-LAN). Ansonsten kann ich nur empfehlen den Paketsniffer anzuwerfen und nachzuschauen, ob Pakete rausehen (an der Fritzbox) bzw. ankommen (an der pfSense). Den Paketsniffer an der Fritzbox erreichst du unter http://fritz.box/html/capture.html, den der pfSense unter Diagnostics –> Packet Capture.

        1. Ja genau. Der Traffic vom Fritzbox-Netz zum pfSense-Netz muss im IPSEC Tab eingetragen werden mit Source = Fritzboxnetz und Destination = pfSense Netz.

          Der umgekehrte Weg muss bei den Regeln der entsprechenden LAN Schnittstelle eingetragen werden. Das LAN Interface hat aber glaube ich standardmäßig sowieso eine “alles erlaubt”-Regel.

          1. Das ist die Ipsec Rule :
            v4 TCP/UDP * * * * * none IPsec

            Die default Lan rule ist diese:
            IPv4 * LAN net * * * * none Default allow LAN to any rule

            Er will einfach nicht… routen… ;-(

          2. Wie testest du die Verbindung? Wenn du das mit Ping machts musst die statt TCP/UDP ICMP einstellen. Oder gleich ANY, falls alles erlaubt sein soll.

          3. Es “routet”, die ganze Zeit schon…

            Nur doof das ping halt icmp ist und man nur tcp erlaubt.
            Das mir noch so was passiert ;-()

            Danke Dir!
            VG

      1. Unter “Firewall Einstellungen für pfSense Subnetz” muss doch auch das Lan hinter der Pfsense eingetragen werden, oder täusche ich mich?

  2. Moin, netter beitrag, nur ist die konfig für die fritzbox leider noch nicht mit den aes einstellung oder habe ich mich da was übersehen?

    1. Das stimmt, die Konfig ist noch aus der ursprünglichen Version des Beitrags. Ich werde das bei Gelegenheit korrigieren. Danke fürs Feedback.

  3. Hi,

    läuft soweit außer das der Traffic noch nicht über die VPN Leitung geschickt wird. Irgendeine Idee?

    1. Ist pauschal natürlich schwer zu sagen. Phase 1 scheint dann ja zu gehen. Meine Ansatzpunkte wären dann:

      • falsche Verschlüsselungsparameter in der Phase 2
      • falsches Routing
      1. Soweit wäre ich bei dir, nur wo kann ich der Fritzbox das Routing vorschreiben? Weil der Verkehr von der PFSense zur Fritzbox und der dahinter liegender Rechner läuft.

        Nur von der Firtzbox zur PFSense läuft nicht.

        1. Da bin ich ehrlich gesagt überfragt. Die Fritzbox benötigt eigentlich keine eigenen Routen für das VPN. Sie kennt ihr lokal konfiguriertes Netz im LAN, alles andere wird über die WAN Schnittstelle erreicht, auch die Netze im VPN (s. unter Heimnetz -> Heimnetzübersicht -> IPv4 Routen).
          Es könnte auch noch sein, dass du vergessen hast, in der VPN Konfigurationsdatei für die Fritzbox die IP Adressen anzupassen? Wenn dort die Netze nicht stimmen kommt die Fritzbox nicht auf die Idee, den Traffic in Richtung pfSense zu verschlüsseln und zu tunneln, sondern schickt ihn direkt ins Internet, wo er dann aufgrund der privaten IPs verworfen wird. Die Netze müssen unter phase2localid, phase2remoteid und accesslist stimmen.

  4. Hi,
    danke aber das hab ich schon alles durch das problem ist das er bei der remoteip keinen fqdn (domainnamen) akzeptiert. deswegen dachte ich das du da vielleicht eine idee hättest.

    1. Hm, OK. Idee hab ich zwar keine, aber irgendwie muss es funktionieren. Schließlich lassen sich über den Assistenten ja auch zwei Fritzboxen untereinander per VPN verbinden, wenn beide DynDNS nutzen. Vielleicht hast du da die Möglichkeit, das testweise einzurichten, die Konfig zu exportieren und dann dort nachzuschauen, was der Assistent bei remoteip einträgt.

  5. Hallo,

    ich habe mal eine Frage wie die Konfig von der FritzBox aussehen muss wenn beide Seiten mit dynDns Adressen Arbeiten.

    grüße
    Tom

    1. Hi,
      theoretisch muss dann anstelle der IP-Adresse der DynDNS-Name der pfSense in der vpn-fritzbox.cfg eingetragen werden. Und zwar an zwei Stellen: einmal bei remoteip, und einmal unter remoteid.
      Allerdings weiß ich nicht, ob es auch tatsächlich klappt.

Kommentarfunktion ist geschlossen.