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.
/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
Danach erstellen wir eine neue IPSec-Verbindung mit einem Klick auf das "+" Symbol rechts
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
- Key Exchange version
- 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
- Authentication method
- Advanced Options
- NAT TRaversal
Auto
- Dead Peer Detection
Enable DPD
10
seconds5
retries
- NAT TRaversal
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:
und im Anschluss einen neuen Einrag mit dem "+" in der Mitte hinzufügen:
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
- Type:
- Remote Network
- Type:
Network
- Address:
Internes Netzwerk Fritzbox
/24
- Die 24 steht für eine 24er Maske, also Subnetmask 255.255.255.0
- Type:
- Mode
- Phase 2 proposal (SA/Key Exchange)
- Protocol
ESP
- Encryption algorithms
3DES
- Hash algorithms
SHA1
- PFS key group
1 (768 bit)
- Lifetime
3600
- Protocol
- Advanced Options
- Automatically ping host
Interne IP eurer Fritz!Box
- Automatically ping host
Wieder auf Save und danach auf Apply changes
Rules
Geht auf
Firewall -> Rules -> IPSec
und baut eine neue Regel um den Datenverkehr aus dem Fritz!Box Netzwerk durchzulassen:
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!)
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:
Dann wird die Datei Importiert und der Tunnel aufgebaut:
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