Mijn vraag
Ik probeer al een tijdje een IPsec verbinding goed werkend te krijgen tussen twee pfSense firewalls waarvan één zich achter een andere pfSense firewall bevind. Het opzetten van de verbinding geeft eigenlijk geen problemen en is bijna gelijk actief wanneer ik handmatig de VPN verbind. Pingen van en naar pc's aan beide kanten van de VPN gaat zonder problemen.
Het probleem wat ik met de VPN heb is dat een bestand kopieren één kant op met 50MB/s+ snelheid gaat en de andere kant op met ongeveer 1-2MB/s. Hieronder staat welke kant op welke snelheid heeft:
50MB/s+: pc -> pfSense (achter een andere pfSense) -> IPsec -> pfSense -> pc (kopie actie geïnitieerd vanaf deze kant)
1-2MB/s: (kopie actie geïnitieerd vanaf deze kant) pc -> pfSense -> IPsec -> pfSense (achter een andere pfSense) -> pc
Deze snelheden zijn tijdens het kopieren van een bestand van ongeveer 200MB van en naar Windows met SMB.
Relevante software en hardware die ik gebruik
Beide firewalls hebben de volgende pfSense versie: 2.4.5-RELEASE-p1
Config pfSense die niet achter een andere pfSense zit:
WAN IP: vast IP, direct aangesloten op een Tweak glasvezel met SFP module
CPU: Intel(R) Xeon(R) CPU D-1518
AES-NI: AES-NI CPU Crypto: Yes (active)
Hardware crypto: AES-CBC,AES-XTS,AES-GCM,AES-ICM
Firewall regels: Allow: UDP 500 (ISAKMP) | UDP 4500 (IPsec NAT-T) | IPv4 ESP - Source: WAN IP andere kant - Destination: This Firewall
VPN config:
P1:
IKE: V2
Remote Gateway: WAN IP andere kant
Authentication Method: Mutual PSK
My identifier: IP address -> eigen WAN IP
Peer identifier: IP adress -> extern WAN IP
P1 protocol: AES128-GCM (128 bits)
P1 transforms: AES-XCBC
P1 DH-Group: 16 (4096 bit)
NAT Traversal: Auto
Dead Peer Detection: Enabled
P2:
Mode: tunnel
Local Network: Network - lokaal 192.168.32.0/24 subnet
NAT/BINAT translation: None
Remote Network: Network - extern 192.168.14.0/24 subnet
P2 protocol: ESP
P2 transforms: AES128-GCM (128 bits)
Config pfSense die wel achter een andere pfSense zit:
WAN IP: een intern /24 IP adres met een 1:1 NAT ingesteld op een Virtual IP op de voorliggende pfSense naar dit IP (zie verdere config voorliggende pfSense verderop)
CPU: Intel(R) Xeon(R) CPU E5-2609 v2
AES-NI: AES-NI CPU Crypto: Yes (active)
Hardware crypto: AES-CBC,AES-XTS,AES-GCM,AES-ICM
Firewall regels: Allow: UDP 500 (ISAKMP) | UDP 4500 (IPsec NAT-T) | IPv4 ESP - Source: WAN IP andere kant - Destination: This Firewall
VPN config:
P1:
IKE: V2
Remote Gateway: WAN IP andere kant
Authentication Method: Mutual PSK
My identifier: IP address -> eigen WAN IP
Peer identifier: IP adress -> extern WAN IP
P1 protocol: AES128-GCM (128 bits)
P1 transforms: AES-XCBC
P1 DH-Group: 16 (4096 bit)
NAT Traversal: Auto
Dead Peer Detection: Enabled
P2:
Mode: tunnel
Local Network: Network - lokaal 192.168.14.0/24 subnet
NAT/BINAT translation: None
Remote Network: Network - extern 192.168.32.0/24 subnet
P2 protocol: ESP
P2 transforms: AES128-GCM (128 bits)
Config voorliggende pfSense:
NAT 1:1: No BINAT (NOT): niet enabled | Interface: WAN (Trined glasvezel met PPPoE) | External subnet IP: een van de IP's verkregen via Trined, ook ingesteld als Virtual IP | Internal IP: Single host - intern /24 IP van de achterliggende pfSense | Destination: Any | NAT Reflection: Use system default
Firewall regels: Allow: UDP 500 (ISAKMP) | UDP 4500 (IPsec NAT-T) | IPv4 ESP - Source: WAN IP andere kant - Destination: intern /24 IP van de achterliggende pfSense
Wat ik al gevonden of geprobeerd heb
Op internet kwam ik tegen dat met een PPPoE verbinding (wat Trined in dit geval is) de MTU soms naar beneden ingesteld moet worden. Ik heb dit met meerdere waardes aan beide kanten geprobeerd met MSS clamping, onder andere 1300/1400/1480. Dit maakte helaas geen verschil, het leek zelfs slechter te worden.
Ook heb ik geprobeerd in plaats van alleen Allow regels op de tussenliggende pfSense, port forwarding naar de achterliggende pfSense geprobeerd. Dit maakte ook geen verschil, de verbinding kon wel opgezet worden maar de snelheden bleven een kant op laag.
Verder kwam ik tegen dat IPsec tussen twee pfSense instanties met "double NAT", wat dit is volgens mij, normaal gesproken zou moeten werken.
Wat misschien ook van belang is, is dat er tussen de pfSense en de voorliggende pfSense aan de andere kant al een IPsec verbinding bestaat. Deze is op de voorliggende pfSense gekoppeld aan een ander WAN IP op de Trined verbinding. Op de andere pfSense is deze gekoppeld aan de Tweak verbinding. De firewall regels zijn daar nu ingesteld met een alias waarin beide IP adressen van de andere kant zijn opgenomen. Deze bestaande IPsec verbinding werkt wel zonder problemen, beide kanten op ongeveer 100MB/s.
Heeft iemand een idee wat dit kan zijn? Het zal waarschijnlijk een kleine instelling zijn maar ik kom er even niet meer uit
Mocht er iets niet duidelijk zijn of er is meer info nodig, let me know
PS: deze vraag staat ook al een tijdje op het Netgate forum met op dit moment (3 dec) 0 reacties.
Ik probeer al een tijdje een IPsec verbinding goed werkend te krijgen tussen twee pfSense firewalls waarvan één zich achter een andere pfSense firewall bevind. Het opzetten van de verbinding geeft eigenlijk geen problemen en is bijna gelijk actief wanneer ik handmatig de VPN verbind. Pingen van en naar pc's aan beide kanten van de VPN gaat zonder problemen.
Het probleem wat ik met de VPN heb is dat een bestand kopieren één kant op met 50MB/s+ snelheid gaat en de andere kant op met ongeveer 1-2MB/s. Hieronder staat welke kant op welke snelheid heeft:
50MB/s+: pc -> pfSense (achter een andere pfSense) -> IPsec -> pfSense -> pc (kopie actie geïnitieerd vanaf deze kant)
1-2MB/s: (kopie actie geïnitieerd vanaf deze kant) pc -> pfSense -> IPsec -> pfSense (achter een andere pfSense) -> pc
Deze snelheden zijn tijdens het kopieren van een bestand van ongeveer 200MB van en naar Windows met SMB.
Relevante software en hardware die ik gebruik
Beide firewalls hebben de volgende pfSense versie: 2.4.5-RELEASE-p1
Config pfSense die niet achter een andere pfSense zit:
WAN IP: vast IP, direct aangesloten op een Tweak glasvezel met SFP module
CPU: Intel(R) Xeon(R) CPU D-1518
AES-NI: AES-NI CPU Crypto: Yes (active)
Hardware crypto: AES-CBC,AES-XTS,AES-GCM,AES-ICM
Firewall regels: Allow: UDP 500 (ISAKMP) | UDP 4500 (IPsec NAT-T) | IPv4 ESP - Source: WAN IP andere kant - Destination: This Firewall
VPN config:
P1:
IKE: V2
Remote Gateway: WAN IP andere kant
Authentication Method: Mutual PSK
My identifier: IP address -> eigen WAN IP
Peer identifier: IP adress -> extern WAN IP
P1 protocol: AES128-GCM (128 bits)
P1 transforms: AES-XCBC
P1 DH-Group: 16 (4096 bit)
NAT Traversal: Auto
Dead Peer Detection: Enabled
P2:
Mode: tunnel
Local Network: Network - lokaal 192.168.32.0/24 subnet
NAT/BINAT translation: None
Remote Network: Network - extern 192.168.14.0/24 subnet
P2 protocol: ESP
P2 transforms: AES128-GCM (128 bits)
Config pfSense die wel achter een andere pfSense zit:
WAN IP: een intern /24 IP adres met een 1:1 NAT ingesteld op een Virtual IP op de voorliggende pfSense naar dit IP (zie verdere config voorliggende pfSense verderop)
CPU: Intel(R) Xeon(R) CPU E5-2609 v2
AES-NI: AES-NI CPU Crypto: Yes (active)
Hardware crypto: AES-CBC,AES-XTS,AES-GCM,AES-ICM
Firewall regels: Allow: UDP 500 (ISAKMP) | UDP 4500 (IPsec NAT-T) | IPv4 ESP - Source: WAN IP andere kant - Destination: This Firewall
VPN config:
P1:
IKE: V2
Remote Gateway: WAN IP andere kant
Authentication Method: Mutual PSK
My identifier: IP address -> eigen WAN IP
Peer identifier: IP adress -> extern WAN IP
P1 protocol: AES128-GCM (128 bits)
P1 transforms: AES-XCBC
P1 DH-Group: 16 (4096 bit)
NAT Traversal: Auto
Dead Peer Detection: Enabled
P2:
Mode: tunnel
Local Network: Network - lokaal 192.168.14.0/24 subnet
NAT/BINAT translation: None
Remote Network: Network - extern 192.168.32.0/24 subnet
P2 protocol: ESP
P2 transforms: AES128-GCM (128 bits)
Config voorliggende pfSense:
NAT 1:1: No BINAT (NOT): niet enabled | Interface: WAN (Trined glasvezel met PPPoE) | External subnet IP: een van de IP's verkregen via Trined, ook ingesteld als Virtual IP | Internal IP: Single host - intern /24 IP van de achterliggende pfSense | Destination: Any | NAT Reflection: Use system default
Firewall regels: Allow: UDP 500 (ISAKMP) | UDP 4500 (IPsec NAT-T) | IPv4 ESP - Source: WAN IP andere kant - Destination: intern /24 IP van de achterliggende pfSense
Wat ik al gevonden of geprobeerd heb
Op internet kwam ik tegen dat met een PPPoE verbinding (wat Trined in dit geval is) de MTU soms naar beneden ingesteld moet worden. Ik heb dit met meerdere waardes aan beide kanten geprobeerd met MSS clamping, onder andere 1300/1400/1480. Dit maakte helaas geen verschil, het leek zelfs slechter te worden.
Ook heb ik geprobeerd in plaats van alleen Allow regels op de tussenliggende pfSense, port forwarding naar de achterliggende pfSense geprobeerd. Dit maakte ook geen verschil, de verbinding kon wel opgezet worden maar de snelheden bleven een kant op laag.
Verder kwam ik tegen dat IPsec tussen twee pfSense instanties met "double NAT", wat dit is volgens mij, normaal gesproken zou moeten werken.
Wat misschien ook van belang is, is dat er tussen de pfSense en de voorliggende pfSense aan de andere kant al een IPsec verbinding bestaat. Deze is op de voorliggende pfSense gekoppeld aan een ander WAN IP op de Trined verbinding. Op de andere pfSense is deze gekoppeld aan de Tweak verbinding. De firewall regels zijn daar nu ingesteld met een alias waarin beide IP adressen van de andere kant zijn opgenomen. Deze bestaande IPsec verbinding werkt wel zonder problemen, beide kanten op ongeveer 100MB/s.
Heeft iemand een idee wat dit kan zijn? Het zal waarschijnlijk een kleine instelling zijn maar ik kom er even niet meer uit

Mocht er iets niet duidelijk zijn of er is meer info nodig, let me know
PS: deze vraag staat ook al een tijdje op het Netgate forum met op dit moment (3 dec) 0 reacties.