Client VPN Zugriff in IPSec Site to Site Netze unter pfSense

Client VPN Zugriff auf Site to Site VPN

Nachdem ich eine Weile gebraucht habe, um aus meinem Client VPN (OpenVPN und IKEv2 Mobile VPN) auf Ressourcen zuzugreifen, welche über ein IPSec Site to Site VPN angebunden sind, möchte ich euch gerne ein kleines How-To dazu bereitstellen. Client VPN Zugriff in IPSec Site to Site Netze sind so auch auf pfSense möglich. Ich gehe davon aus, dass euer Site to Site sowie Client VPN funktionieren und Firewall Regeln für den gewünschten Traffic eingerichtet sind.

Situation

Genutzt wird pfSense 2.4.3p1. Es ist ein Client VPN mit IPSec eingerichtet (das Thema betrifft aber auch OpenVPN oder einfach zusätzliche Netze an OPT Interfaces). Außerdem gibt es ein Site to Site VPN, in dem einige Webserver erreicht werden sollen. Wenn nun aus dem Client VPN auf das Site to Site VPN zugegriffen werden soll, erhält man keine Antwort auf die Netzwerkpakete.

Folgende Netze sind konfiguriert:

Beschreibung Netz
LAN 10.5.5.0/24
Mobile Client Pool (IPSec IKEv2) 10.7.7.0/24
Site to Site Remote Netz (IPSec IKEv2) 10.0.1.0/24

VPN Konfiguration

Client VPN SA:
10.7.7.0/24 <> 0.0.0.0/0 | Das Client VPN ist so konfiguriert, dass sämtlicher Traffic von den Clients in Richtung pfSense geschickt wird.

Site to Site VPN SA:
10.5.5.0/24 <> 10.0.1.0/24 | Das Site to Site VPN ist so konfiguriert, dass der Traffic aus dem LAN Netz zum VPN Netz kommunizieren kann.

Problem

Das Routing im IPSec VPN wird über die SA (Phase 2 Tunnel) geregelt. Kommt ein Paket aus dem Client VPN mit einem Ziel im Site to Site VPN auf der pfSense an, verwirft die pfSense das Paket, solange es dafür keine SA (Phase 2) gibt. Normales Routing via Eintrag in der Routing Tabelle funktioniert mit klassischem IPSec Tunnel unter pfSense 2.4.3p1 nicht. Das Routing im IPSec VPN wird im Kernel anders behandelt als normales Routing.

Client VPN Zugriff in IPSec Site to Site Netze

Lösung

Um die Erreichbarkeit aus dem Client VPN zu ermöglichen, gibt es mehrere Möglichkeiten.

Möglichkeit 1 (Zugriff auf beide Seiten des VPN Tunnels)

Im Site to Site VPN auf beiden Seiten eine zusätzliche Phase 2 einrichten.

Site to Site VPN SA (Auf der lokalen pfSense):
10.5.5.0/24 <> 10.0.1.0/24
10.7.7.0/24 <> 10.0.1.0/24

Auf der Remote Seite des VPN müssen auch beide SA Einträge eingerichtet sein.
Dadurch wird erreicht, dass pfSense das Routing im VPN sauber durchführen kann. Außerdem kennt die Gegenseite dann das Client VPN Netz und schickt den Traffic ins VPN zurück.

Möglichkeit 2 (Ihr habt nur Zugriff auf eure pfSense oder wollt die Gegenseite nicht mit einer Umstellung beauftragen)

Es ist möglich den Traffic von an der pfSense ankommenden Netzen so in das VPN zu schicken, dass er für die Gegenseite wie Traffic aus dem LAN Netz aussieht. Das ermöglicht es euch auch zusätzliche Netze wie ein Client VPN oder OPT Interfaces in das Site to Site VPN zu schicken.

Dazu wird auf der Quell-Seite ein zusätzlicher Phase 2 Tunnel mit NAT eingerichtet. In meinem Beispiel hier nutze ich die IP 10.5.5.20 als NAT IP. Der komplette Traffic aus meinem Client VPN Netz wird in die IP 10.5.5.20 übersetzt, ins VPN geschickt und die Antwort wieder zurück übersetzt.

Edit Phase 2

Site to Site VPN SA:
10.5.5.0/24 <> 10.0.1.0/24
10.0.1.0/24 > 10.5.5.20

Auf der Seite Status / IPSec / SPDs sieht es dann folgendermaßen aus:

SPDs

Test

Wenn man nun sein Endgerät mit dem Client VPN verbindet, ist es möglich auf Ressourcen im Site to Site VPN zuzugreifen.

Ping Test

Abschluss

Das beschriebene Szenario bezieht sich zwar auf pfSense, die Routing Thematik mit IPSec ist aber bei anderen Firewall Herstellern identisch. Nur die Lösung muss bei anderen Herstellern entsprechend anders eingerichtet werden.