Site-to-Site VPN-Tunnel (VTI) zwischen LCOS und pfSense

06.01.2024
Dieser Inhalt ist bereits etwas älter.
This content is already a bit old.
Bild

Nach längerer Testphase und einigen Anläufen konnte ich mit LCOS 10.42 sowie pfSense eine saubere Site-to-Site-Verbindung konfigurieren. In meinem Fall initiiert das Gerät mit LCOS die Verbindung und pfSense arbeitet als "Responder".

Die Anleitung wurde mit folgenden Systemen getestet:

  • LCOS 10.42.0473RU3
  • pfSense 2.5.1-RELEASE (amd64) virtualisiert auf KVM-Basis

Die pfSense-Installation läuft auf einer VM bei einem Hoster meines Vertrauens und hat eine statische IPv4-Adresse.

Für die Verschlüsselung sowie die Identifikation der Gegenstellen benötigen wir einen Benutzernamen, ein dazu passenden Kennwort sowie ein PSK. Der Pre-Shared-Key wird zusätzlich für die Verbindung benötigt.

In meinem Beispiel wird die Verbindung über IPSec IKEv2 aufgebaut und wir verwenden einen gerouteten VPN-Tunnel (VTI).

Benutzernamebenutzername@domain.tld
KennwortSehrGeheimMitSonderzeichen!
PSK7fh270sncbvz1036dbaoync73704udhfo2635djf027

Zusätzlich sollte man bereits im Vorfeld das Transfernetzwerk (in meinem Beispiel hier 10.96.0.0/16) definieren sowie die IP-Adressen der Gegenstellen im späteren VPN-Tunnel:

IP Tunnel Endpunkt LCOS10.96.0.2
IP Tunnel Endpunkt pfSense19.96.0.1

Die WAN-Adresse des LCOS-Gerätes sollte entweder statisch sein oder mit einem DynDNS-Dienst zuverlässig aktualisiert werden. Aktuell gibt es einen Bug in pfSense welcher bei VTI-Interfaces ein setzen des "Remote Gateway" notwendig macht, obwohl laut Dokumentation hier auch 0.0.0.0 funktionieren müsste, mit welchem es allerdings aktuell nicht funktionieren will.

Starten wir nun also mit der Konfiguration des "Responders" bzw. der pfSense auf der virtuellen Maschine. Auf der Weboberfläche von pfSense klicken wir hierzu oben im Menü auf "VPN" und dann im Untermenü auf "IPsec":

Bild

Nun erstellen wir eine neue Phase-1-Verbindung über "Add P1":

Bild

Hier tragen wir nun die Werte von oben wie unter dem Screenshot beschrieben ein:

Bild
Bild
Bild
Bild
Bild
Remote GatewayIP-Adresse des LCOS-Gerätes oder alternativ der DNS-Name
My identifierbenutzername@domain.tld
Peer identifierbenutzername@domain.tld
Pre-Shared Key7fh270sncbvz1036dbaoync73704udhfo2635djf027

Für die Erstellung des PSKs kann entweder die Schaltfläche "Generate new Pre-Shared-Key" genutzt werden oder die Zeichenfolge wird an anderer Stelle zufällig generiert. Die Zeichenfolge wird später bei der Konfiguration des LANCOM-Gerätes nochmals benötigt.

Nun klicken wir unten auf "Save" um die Konfiguration zu speichern:

Bild

Danach legen wir für die Phase-1 nun eine Phase-2 an, in welchen wir z.B. dann die Tunnel-Endpunkte definieren. Dazu klicken wir unter dem angelegten Phase-1-Eintrag auf "Add P2":

Bild

Hinweis: Auf dem Screenshot ist die P2-Phase bereits angelegt, bei der Neuanlage ist der P2-Eintrag nicht vorhanden!

Nun füllen wir die Daten wie folgt aus:

Bild
Bild
Bild
Bild
Local Network Address10.96.0.1
Remote Network Address10.96.0.2

Optional kann für "Automatically ping host" noch eine Adresse angegeben werden, welche für die Dead-Peer-Detection verwendet werden soll. Die Adresse sollte dauerhaft erreichbar sein und auf ICMP reagieren. Wenn das Feld nicht ausgefüllt wird, wird nur die Erreichbarkeit der Gegenstelle geprüft.

Nun klicken wir unter auf "Save", um die Konfiguration zu speichern:

Bild

Nun sollte die Verbindung ungefähr so aussehen:

Bild

Nun müssen wir noch das VTI-Interface in der pfSense-Konfiguration aktivieren und einer Bezeichnung zuordnen. Dazu klicken wir oben im Menü auf der Weboberfläche auf "Interfaces" und dann im Untermenü auf "Assignments":

Bild

Dort taucht nun unsere Verbindung als Interface auf und kann nun in pfSense zugeordnet werden. Die 2. Verbindung nach der WAN-Verbindung ist standardmäßig LAN, was an sich ganz gut passt. Also klicken wir in der Weboberfläche unter "Available network ports" auf "Add". Nun wird das Interface als LAN-Interface gelistet:

Bild

Nun klicken wir auf "Save", um die Zuordnung zu übernehmen und die Änderungen zu speichern:

Bild

Jetzt müssen wir das Interface noch aktivieren, damit es auch genutzt werden kann. Dazu klicken wir oben im Menü auf "Interfaces" und dann auf unser neu gebackenes Interface "LAN":

Bild

Dort aktivieren wir nun das Interface und könnten optional noch die Bezeichnung anpassen, falls dies gewünscht ist.

Die weiterführenden Einstellungen verbleiben auf den Standardwerten. Um die Änderung zu übernehmen, klicken wir unten auf "Save":

Bild

Nun prüfen wir, ob der IPSec-Dienst auf pfSense läuft. Dazu klicken wir oben im Menü auf "Status" und dann im Untermenü auf "Services":

Bild

Nun sollte der Eintrag "ipsec" mit einem grünen Haken versehen sein. Falls nicht, kann hier der Dienst auch gestartet werden:

Bild

Ist hier alles soweit in Ordnung geht es nun am LCOS-Gerät weiter. Hier führen wir die Schritte nun anhand des WEBconfig aus. Wir navigieren auf dem LCOS-Gerät links im Konfigurationsmenü auf "VPN" und dort auf "Allgemein":

Bild

Hier müssen wir sicherstellen, das die VPN-Funktion generell aktiviert ist und die vereinfachte Einwahl mit Zertifikaten deaktiviert ist. Nun klicken wir etwas weiter unten auf den Link "IPv4-Regeln":

Bild

Hier müssen wir sicherstellen, das zumindest der Eintrag "RAS-WITH-NETWORK-SELECTION" vorhanden ist. Diesen werden wir später die die Zuweisung sowie für das Routing benötigen. Der Eintrag ist normalerweise bei LCOS-Geräten standardmäßig angelegt:

Bild

Falls wir hier Änderungen vornehmen mussten, diese mit der Schaltfläche "Setzen" speichern:

Bild

Nun müssen wir die passenden Verbindungs-Parameter (Benutzername/Kennwort sowie Verschlüsselungs-Richtlinien) erstellen. Dazu klicken wir auf "Authentifizierung":

Bild

Nun erstellen wir mit einem Klick auf "Hinzufügen" einen neuen Eintrag:

Bild

Nun füllen wir die Felder wie folgt aus:

Bild
Lokale Identitätbenutzername@domain.tld
Lokales PasswortSehrGeheimMitSonderzeichen!
Entfernte Identitätbenutzername@domain.tld
Entferntes Passwort SehrGeheimMitSonderzeichen!

Bitte auch die anderen Felder prüfen, die Authentifizierung wird mittels Key-ID durchgeführt. Nun speichern wir die Konfiguration mit "Setzen":

Bild

Danach klicken wir auf den Link "Verschlüsselung":

Bild

Hier erstellen wir einen neuen Eintrag mit einem Klick auf "Hinzufügen":

Bild

Nun setzen wir dort die folgenden Einstellungen:

Bild

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Nun klicken wir auf den Link "Identitäten":

Bild

Hier erstellen wir einen neuen Eintrag mit einem Klick auf "Hinzufügen":

Bild

Hier setzen wir die folgenden Einstellungen:

Bild
Entfernte Identitätbenutzername@domain.tld
Entferntes Passwort7fh270sncbvz1036dbaoync73704udhfo2635djf027

Hier ist zu beachten: Für "Entferntes Passwort" wird der Pre-Shared-Key eingetragen, NICHT das dem Benutzer zugehörige Kennwort!

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Nun klicken wir auf den Link "IPv4-Routing":

Bild

Hier erstellen wir einen neuen Eintrag mit einem Klick auf "Hinzufügen":

Bild

Hier legen wir nun die folgenden Einstellungen fest:

Bild

In meinem Beispiel sollen Clients im Netzwerk INTRANET durch den Tunnel mit der Gegenstelle kommunizieren können. Falls hier ein anderes Netzwerk gewünscht wird, muss dieses an dieser Stelle ausgewählt werden.

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Nun sind alle Vorbereitungen getroffen, um die Gegenstelle an sich zu konfigurieren. Dazu klicken wir auf "Verbindungs-Liste":

Bild

Dort klicken wir unten auf "Hinzufügen":

Bild

Nun legen wir eine neue Verbindung mit den folgenden Werten an:

Bild
Entferntes GatewayStatische IPv4-Adresse der pfSense oder DNS-Name

Hinweis: In der Regel kann das Feld "Routing-Tag" auf "0" belassen werden. Da das Gerät im Beispiel mehrere WAN-Leitungen hat definiere ich somit die Verbindungsherstellung über den Routing-Eintrag mit dem Routing-Tag "1". Wenn nur eine WAN-Verbindung existiert wird automatisch die Default-Route genutzt.

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Da es aktuell für die VPN-Gegenstelle noch kein Eintrag in der Routing-Tabelle gibt, wird das Gerät noch keinen Verbindungsaufbau durchführen. Die Verbindung ist aktuell allerdings noch immer nicht komplett, es fehlen noch die IP-Adressen für die Endpunkte in dem VPN-Tunnel.

Nun klicken wir auf der linken Seite im Menü auf "Kommunikation" > "Protokolle" > "IP-Parameter":

Bild

Dort klicken wir unten auf "Hinzufügen":

Bild

Nun tragen wir die IP-Parameter für die Phase-2-Verbindung ein:

Bild
IP-Adresse10.96.0.2
Netzmaske255.255.0.0
Standard-Gateway10.96.0.1

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Nun müssen wir 2 Routing-Einträge erstellen. Dazu wechseln wir auf der linken Seite im Menü auf "IP-Router" > "Routing" > "IPv4-Routing-Tabelle":

Bild

Dort klicken wir unten auf "Hinzufügen":

Bild

Nun legen folgende Einstellungen für die 1. Route fest:

Bild

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Dann klicken wir nochmals auf "Hinzufügen":

Bild

Nun legen folgende Einstellungen für die 2. Route fest:

Bild

Hinweis: Für eine spätere Trennung in der Firewall habe ich hier als Routing-Tag "2" gesetzt. Dies ist optional und kann in der Regel auf "0" belassen werden.

Wir speichern die Einstellungen mit einem Klick auf "Setzen":

Bild

Nun wird das LANCOM-Gerät durch die Routing-Einträge die VPN-Verbindung herstellen. Für das Debugging empfiehlt sich im LANconfig in der Trace-Ausgabe "VPN-IKE" sowie "VPN-Debug", falls die Verbindung nicht korrekt hergestellt werden kann.

Auf pfSense-Seite kann im Hauptmenü unter "VPN" > "IPSec" mit dem Log-Symbol rechts die aktuellen Log-Einträge  angezeigt werden:

Bild

Eine schnelle Übersicht bietet das Graphen-Symbol, welches etwas übersichtlicher den Status der Verbindungen anzeigt. Hier kann auch eine VPN-Verbindung manuell abgebaut werden und so auch ein automatischer Neuaufbau nach Änderung der WAN-Adresse simuliert werden:

Bild

Eine korrekte Verbindung sollte dann ungefähr so aussehen:

Bild

Auf LANCOM-Seite wird eine korrekt hergestellte Verbindung entweder im WEBconfig oder im LANmonitor angezeigt. Im LANmonitor sieht das dann z.B. so aus:

Bild

Im WEBconfig findet sich der Status am einfachsten im Dashboard:

Bild

Falls auf der Seite des LANCOM-Gerätes mit einer DENY-ALL-Strategie gefahren wird, müssen ggf. noch Firewall-Regeln für die Kommunikation zwischen dem lokalen Netzwerk (in meinem Beispiel INTRANET) und dem Transfer-Netzwerk erstellt werden.


 

Feedback, suggestions for improvement, further ideas?

Simply use the contact form or send an email directly to info@kirgus.net.