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

Gespeichert von Michael Kirgus am Do., 03.06.2021 - 16:11

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 initiert 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).

Benutzername benutzername@domain.tld
Kennwort SehrGeheimMitSonderzeichen!
PSK 7fh270sncbvz1036dbaoync73704udhfo2635djf027

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 LCOS 10.96.0.2
IP Tunnel Endpunkt pfSense 19.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":

pfSense WebGUI

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

pfSense WebGUI

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

pfSense WebGUI

pfSense WebGUI

pfSense WebGUI

pfSense WebGUI

pfSense WebGUI

Remote Gateway IP-Adresse des LCOS-Gerätes oder alternativ der DNS-Name
My identifier benutzername@domain.tld
Peer identifier benutzername@domain.tld
Pre-Shared Key 7fh270sncbvz1036dbaoync73704udhfo2635djf027

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:

pfSense WebGUI

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":

pfSense WebGUI

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:

pfSense WebGUI

pfSense WebGUI

pfSense WebGUI

pfSense WebGUI

Local Network Address 10.96.0.1
Remote Network Address 10.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:

pfSense WebGUI

Nun sollte die Verbindung ungefähr so aussehen:

pfSense WebGUI

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":

pfSense WebGUI

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:

pfSense WebGUI

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

pfSense WebGUI

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":

'pfSense WebGUI

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

pfSense WebGUI

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

pfSense WebGUI

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":

pfSense WebGUI

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

pfSense WebGUI

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":

LCOS WebGUI

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":

LCOS WebGUI

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:

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

Nun füllen wir die Felder wie folgt aus:

LCOS WebGUI

Lokale Identität benutzername@domain.tld
Lokales Passwort SehrGeheimMitSonderzeichen!
Entfernte Identität benutzername@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":

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

Nun setzen wir dort die folgenden Einstellungen:

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

Hier setzen wir die folgenden Einstellungen:

LCOS WebGUI

Entfernte Identität benutzername@domain.tld
Entferntes Passwort 7fh270sncbvz1036dbaoync73704udhfo2635djf027

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":

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

Hier legen wir nun die folgenden Einstellungen fest:

LCOS WebGUI

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":

LCOS WebGUI

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

LCOS WebGUI

Dort klicken wir unten auf "Hinzufügen":

LCOS WebGUI

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

LCOS WebGUI

Entferntes Gateway Statische 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":

LCOS WebGUI

Da es aktuell für die VPN-Gegenstelle noch kein Eintarg 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":

LCOS WebGUI

Dort klicken wir unten auf "Hinzufügen":

LCOS WebGUI

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

LCOS WebGUI

IP-Adresse 10.96.0.2
Netzmaske 255.255.0.0
Standard-Gateway 10.96.0.1

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

LCOS WebGUI

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":

LCOS WebGUI

Dort klicken wir unten auf "Hinzufügen":

LCOS WebGUI

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

LCOS WebGUI

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

LCOS WebGUI

Dann klicken wir nochmals auf "Hinzufügen":

LCOS WebGUI

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

LCOS WebGUI

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":

LCOS WebGUI

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:

pfSense WebGUI

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:

pfSense WebGUI

Eine korrekte Verbindung sollte dann ungefähr so aussehen:

pfSense WebGUI

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

LANmonitor VPN

Im WEBconfig findet sich der Status am einfachsten im Dashboard:

LCOS WebGUI

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.

Neuen Kommentar hinzufügen

Sind Sie ein Mensch? Schlimm, aber leider notwendig:

Bild-CAPTCHA
Geben Sie die Zeichen ein, die im Bild gezeigt werden.