Es gibt da draußen ein Vielzahl an VPN Anbietern, die es einem erlauben den lokalen Internetverkehr erstmal durch einen VPN Tunnel in z.B. in ein anderes Land zu schicken um eine andere IP Adresse zu nutzen. Dafür gibt es verschiedenste private und berufliche Gründe; ihr habt da sicherlich den ein oder anderen Anwendungsfall im Hinterkopf. Ich brauche es um GEO Blocker, VPN Zugriffe und Standortvernetzungen reel vorab testen oder Problemlösungen nachgehen zu können.
WICHTIG: Dieser Artikel ist archiviert und erfährt keine Neuerungen mehr, da wir mit OPNsense eine Alternative nutzen. Er kann aber gut als Inspiration weiterhin dienlich sein.
Wenn man das Tunneln ernst nimmt, ist unbedingt darauf zu achten, das der getunnelte und ungetunnelte Verkehr nicht vermischt oder sogar unbemerkt nicht getunnelt wurde, weil z.B. im „unpassenden“ Moment das VPN inaktiv war. Dieses „VPN Leaking“ ist je nach Anwendungsfall ein Problem, bzw. verfälscht das eigentliche beabsichtigte Ziel. Auch die korrekte Lenkung der DNS Abfragen spielt ein Rolle, da diese sonst eine empfindliche Lücke darstellen können.
Die pfSense® ist hier an zentraler Stelle der ideale Ort um das zu gewährleisten und vor allem, das alles zu kontrollieren.
pfSense® ist eine kostenlose Firewall Software, die man selber in eine virtuelle Maschine, auf einem PC oder einer kleinen Hardware Appliance installieren kann.
Wie man preisgünstig eine solide pfSense® aufbaut und installiert, habe ich hier beschrieben
Wichtig! Wer die wirkliche Anonymität sucht: Ein VPN ist nur eine kleiner Baustein. Um wirklich anonym unterwegs sein zu können, ist weit mehr nötig und NICHT Anspruch dieser Artikelserie. Dazu empfehle ich die Lektüre der folgenden beiden Links zweier sehr empfehlenswerten Seiten:
- https://www.privacy-handbuch.de/handbuch_97.htm
- https://www.kuketz-blog.de/anonymitaet-die-haltlosen-werbeversprechen-der-vpn-anbieter
Eine schöne Erklärung zum Thema VPN im allgemein ist hier zu finden: https://tarnkappe.info/tarnkappe-guide-was-ist-ein-vpn/
Diese Guide Reihe beschreibt, wie man einen OpenVPN Tunnel von der pfSense® in Richtung VPN Anbieter (hier ExpressVPN) aufbaut und dafür sorgt das:
- der VPN Tunnel zu ExpressVPN aktiviert wird,
- nur einzelne Rechner oder bestimmte Sub-Netze das VPN nutzen dürfen (z.B. für Testrechner, Versuchsaufbauten),
- der Verkehr eines bestimmten Ports im lokalen Netz über den aktiven VPN Tunnel läuft,
- der gesamte Internetverkehr über den aktiven VPN Tunnel läuft oder
- sogar mehrere VPN Tunnel gleichzeitig aktiv sind um die Anfragen ins Internet auf mehrere Rechenzentren zu verstreuen und
damit über das „Load Balancing“ eine gewisse Redundanz bereitstellt.
Wer den Tunnel schon aktiv hat, kann hier direkt zu den anderen Beiträgen springen:
- pfSense® mit ExpressVPN TEIL2: Selektives Routing (IP oder Ports
- pfSense® mit ExpressVPN TEIL3: Komplettes Routing
- pfSense® mit ExpressVPN TEIL4: Load Balancing / Redundanz / GEO Routing
Viel Spass!
ExpressVPN
Als allererstes wird ein VPN Provider benötigt. Davon gibt es eine Reihe gute sowie schlechte. Ich nutze einfach ExpressVPN.
Die sind relativ günstig, wurden mir von einer vertrauenswürdigen Quelle empfohlen, haben eine exzellente Anbindung in vielen Ländern und die technischen freien Vorraussetzungen für alle möglichen Plattformen.
Ideal um es auf der pfSense® zu integrieren und nicht in einem speziellen VPN Client gefangen zu sein.
Die ExpressVPN eigene Anleitung ist leider etwas angestaubt, daher der Artikel hier. Er war aber eine große Hilfe für Details zum Tunnel.
Sobald die Anmeldung durch ist, bekommt man diverse Zugangsdaten, die für späteren Verlauf wichtig sind.
Öffnet hierzu: https://www.expressvpn.com/de/setup
wählt mittig unten „Manuelle Konfiguration“
Rechts davon erscheinen dann als 1. Benutzername und Kennwort für die OpenVPN Verbindung. Beide kopieren und sicher verwahren!
Als 2. darunter geht es zur Auswahl des Einwählpunktes, hier erstmal den nächstgelegen wählen (z.b. Germany Frankfurt-1) und draufklicken.
pfSense®
Zertifikate
Jeder OpenVPN tunnel basiert nicht nur auf Benutzername/Kennwort, sondern auch auf Zertifikaten.
Alle vier finden wir in der OPVN Datei die oben heruntergeladen wurde.
Öffnet die mal mit dem Texteditor eurer Wahl und ihr werdet etwas weiter unten sinngemäß folgende Tags vorfinden (Bitte nicht über die Lorem ipsum Texte wundern, das sind natürlich Fake Zertifikate auf dem Bild):
-
das Benutzerzertifikat (cert): Der private Teile des Schlüsselpaares
-
der private Teil für das obige Benutzerzertifikat (key)
-
das öffentliche Zertifikat der Zertifizierungsstelle (ca). Das hat das obige Schlüsselpaar herausgegeben, signiert und „für gut“ befunden. Diese Zertifizierungsstelle muss der pfSense®bekannt sein, damit dem Schlüsselapaar auch vertraut werden kann.und als letztes (ist aber nicht wirklich ein Zertifikat, eher ein laaaaanges Passwort)
-
der statische OpenVPN Schlüssel (tls-auth). Das sichert den Tunnel zusätzlich ab.
Hinweis: Der VPN Standort ist der „Ausgang“. An dem kommt euer Paket aus dem VPN Tunnel wieder raus. Was hier zur Vereinfachung der Deutsche Standort ist (auch weil am schnellsten), muss für andere Szenarien ggf. ein anderer Standort gewählt werden, um z.B. den Ausgang in den USA zu nutzen.
Zertifikate installieren
Die obersten drei Zertifikate müssen nun in die pfSense® rein und das ist schnell erledigt.
Öffnet dazu eure pfSense® Oberfläche und geht im Menü auf System – Cert Manager (ich benutze meine pfSense® immer auf Englisch)
Klickt nun im Reiter CAs unten Links auf Add.
- Im neuen Dialog kommt erst mal da ein schöner Name rein: z.B. „ExpressVPN CA“.
- Method ist Import an existing Certificate Authority.
- Kopiert aus der OPVN Datei ALLES zwischen
und in die Zwischenablage.
Den Text aus der Zwischenablage kommt in das Feld Certificate data.
- Dann beherzt mit Save abspeichern und der neue Eintrag taucht dann in der Certificates Authorities Liste auf
Nun wechselt in den Reiter Certificates und wieder ganz unten auf Add/Sign drücken.
- Im neuen Dialog wählt als Method – Import an existing Certificate.
- Descriptive Name ist dann z.B. „ExpressVPN Cert“.
- In das Textfeld Certificate data kommt der Teil aus der OVPN-Datei zwischen
und
- und bei _P_rivate key data der Teil zwischen
und
- Dann wieder beherzt mit Save“ abspeichern und der neue Eintrag taucht dann in der Zertifikatsliste auf.
Damit sind alle Zertifikate durch!
OpenVPN Tunnel
Jetzt kommen wir zum spannenden Teil und erstellen den Tunnel zu ExpressVPN.
Dazu geht ihr oben im Menü auf VPN, dem Unterpunkt OpenVPN und auf der neuen Seite in dem Reiter Client auf Add.
Im Prinzip müssen wir nun nur die Vorgaben aus der OVPN Datei in die pfSense® Oberfläche bringen.
Server mode: Peer to Peer (SSL/TLS)
Protocol: UDP on IPv4 only
Device mode: tun – Layer 3 Tunnel Mode
Server host or address: germany-frankfurt-1-ca-version-2.expressnetw.com
Server port: 1195
Description: ExpressVPN germany-frankfurt-1
Username: Hier kommt der Benutzername von oben rein
Password: _Hier kommt der Kennwort von oben rein
Authentication Retry: Aktivert
TLS Configuration: Use a TLS Key
Automatically generate a TLS Key: Deaktiviert
TLS Key: Hier kommt der Teil aus der OVPN-Datei zwischen
Peer Certificate Authority: Das importiere „ExpressVPN CA“ Zertifikat
Client Certificate: Das importiere „ExpressVPN Cert“ Zertifikat
Encryption Algorithm: AES-256-CBC
Enable NCP: Deaktiviert
NCP Algorithms: Ignorieren
Auth digest algorithm: SHA512
Hardware Crypto: _Ja, wenn möglich verwenden (Bei APU2 ist das möglich)
_Compression: Adaptive LZO Compression
Don’t pull routes: Aktiviert
Custom options: persist-key;persist-tun;remote-random;pull;verify-x509-name Server name-prefix;key-direction 1;route-method exe;route-delay 2;tun-mtu 1500;fragment 1300;mssfix 1450UDP Fast I/O: Aktivieren
Send/Receive Buffer: 512 KiB
Gateway creation: IPv4 only
Verbosity level: 3
Dann mit Save abspeichern
OpenVPN Tunnel Status
Unter dem Menüpunkt Status – OpenVPN können wir nachgucken, ob der Tunnel bereits erfolgreich verbunden wurde.
Routing
Aber das reicht noch nicht. Nur weil der Tunnel steht, heisst es noch nicht das der Verkehr auch automatisch durch den Tunnel geht. Es fehlt das Routing.
Die pfSense® kann Filtern/Routen und NAT’en wie der Teufel, aber was sie dafür braucht ist ein eigenes Interface auf dem die Regeln und Gateways zugewiesen werden können. Noch weiß sie quasi nicht WAS genau sie durch den Tunnel schicken soll.
Interface hinzufügen
Dazu fügen wir nun den neuen OpenVPN Client als eigenes Interface hinzu.
- Wählt dazu im Menü Interfaces – Assignments aus.
- Ganz unten bei Available network ports den oben neu erstellten OpenVPN Client auswählen und rechts daneben auf Add und danach auf Save klicken.
Das neue Interface erscheint als „OPTx“ (bei mir Opt2) in der Interface Liste.
Um das zu konfigurieren klickt dazu wieder im Menü auf Interfaces und Opt2.
- Dort das Interface aktivieren und einen schöneren Namen vergeben.
- Ich nehme hier wieder den des OpenVPN Clients „germanyfrankfurt1“ (ohne Leerzeichen) und speichern.
Apropo: Alles was mit Interfaces, NAT, Routings und Firewall Reglen zu tun hat, möchte die pfSense® mit „Apply Changes“ anwenden damit es aktiv wird.
Und immer unter dem Menü Diagnostic – States, Reiterkarte Reset States alle aktuellen Einträge entfernen (killen)!
Denn nur neu aufgebaute Verbindungen suchen sich den neuen Weg. Existierende Verbindungen bleiben auf dem alten Pfad!
Auch die Webgui muss danach neu geladen werden, also nicht wundern das die hängt. F5!
Damit haben wir nun erreicht:
- Die Zertifikate wurden importiert
- Der Tunnel zu ExpressVPN ist aktiv
- Routing und Regeln könnten nun im neuen Interface gesetzt werden
Kleine Hintergrundinfo: Diese Reihe ist unter Zuhilfenahme von zwei VirtualBox VMs entstanden. Die pfSense® und Windows 10 liefen dazu in einem eigenen virtuellen Netz (Internes Netz) und nur die pfSense® hatte per WAN Interface (DHCP) eine Verbindung ins lokale Netz (per Netzwerkbrücke). Damit konnte sehr gut kontrolliert und nachvollzogen werden, was genau wohin geschickt wurde.
Damit sind alle Voraussetzungen geschaffen und wir können anfangen die benötigten Szenarien aufzubauen.