FritzBox - Site to Site VPN zu pfSense 2.1.5
Aus znilwiki
Als Grundlage habe ich diesen Artikel hier genommen: http://www.networkmonkey.de/ipsec-vpn-zwischen-pfsense-20-und-avm-routern/
Aber wie schon so oft passte es mal wieder nicht ganz genau, ich hatte eine neuere pfSense Version usw.
Hat einige Versuche gebraucht - doch nun läuft der Tunnel Stabil - auch nach einer Zwangstrennung etc.
Es gibt eine aktuellere Anleitung: FritzBox - Site to Site VPN zu pfSense 2.5
Ausgangslage
Ich habe folgende "Geräte":
- pfSense 2.1.5 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.20
- 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.1
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.1 | <--> | Maske 255.255.255.0 | | Gateway 192.168.200.1 | +---------------+------------------+ +---------------------+-------------+ | Gateway 192.168.1.1 | +-----------------------+ +-----------------------+
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
- Internet Protocol
IPv4
- Interface
WAN
- Remote gateway
DynDNS-Name eurer FritzBox
- Description
Beschreibung der Verbindung
- Internet Protocol
- 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
- 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
Enable
<- WICHTIG!!! - 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
AES
->auto
3DES
- Hash algorithms
MD5
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 durchzulassen, das hier ist eine Regel die in beide Richtungen alles zulässt:
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;
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: