Client OpenVPN "aufzwingen"
-
Hallo,
ich kämpfe ungelogen seit heute Vormittag mit verschiedenen OpenVPN-Ansätzen und frage nun einfach mal, ob mein (Laien-)Vorgehen überhaupt richtig ist.
Was ich möchte:
Einem einzigen Gerät in meinem Netzwerk soll vorgeschrieben werden, dass alle seine Verbindungen über einen VPN Tunnel laufen. Sämtliche anderen Devices im Netzwerk sollen weiterhin ganz normal ohne VPN online gehen.
Wie kann ich das bewerkstelligen? Zuerst hatte ich VPN direkt auf dem Gerät (Ubuntu) implementiert. Das gefällt mir nun aber doch nicht, ich würde es gerne über pfSense lösen. Per Suche habe ich keine Möglichkeit gefunden, einem Client vorzuschreiben, dass es sich via pfSense, welches nur für diesen Client ebenfalls als Client auf dem VPN Server verbunden ist, verbindet.
Danke im Voraus für Eure Hilfe.
-
Kurz:
- OpenVPN Client in pfsense einrichten
- Interface für den Tunnel herstellen
- NAT für das Interface aktivieren
- FW Regel erstellen für den Client mit dem Gateway des Tunnels
Lang:
Eine der zahlreichen Anleitungen im Netz verwenden. Fast alle großen VPN Anbieter bieten sowas an.
Kurz google benutzt: -
Danke! Punkt 1. war kein Problem. An Punkt 2. hatte ich vorhin schon gar nicht gedacht. Auch das hat problemlos funktioniert.
Bei NAT und Firewall Regel weiß ich aber nicht, was ich genau eintragen soll. (ich plane seit geraumer Zeit, endlich mal eine VM mit pfSense einzurichten, auf der ich rumprobieren kann… in diesem Fall wäre es dringend. FAlls das nur ein paar kurze Zeilen sind würde ich mich sehr über Hilfe freuen).
-
Nunja ganz einfach muss für das abgehende Gerät oder Netz natürlich ein Outbound NAT Eintrag angelegt werden, damit das Gerät sauber mit der Adresse des Tunnels umgeschrieben ins Netz geht. Ansonsten würde es ja nicht gehen, dass mehrere Geräte abgehend das VPN nutzen und du müsstest das VPN auf dem Endgerät machen. Ergo einfach eine Regel wie fürs WAN konfigurieren, nur eben mit OVPN als Interface und der Interface Adresse.
Firewall Regel ist dann recht simpel, wenn du nach einer der Anleitungen vorgegangen bist, wurde ja ein dummy-Interface fürs VPN erstellt und dazu ein Gateway mit dynamischer Gegenstelle. Dieses Gateway kann bei Firewall Regeln ausgewählt werden unter Advances Options der Regel (statt default dann einfach GW_VPN oder wie immer das heißt bei dir). Damit wird bei einem Match der Regel das Gateway auf den VPN Tunnel gesetzt und zwingt das Gerät via VPN ins Netz. Siehe den Link oben bei "Interfaces" und "Gateway".
Grüße
-
Nein, nein, nicht so kompliziert. Der OT möchte das Thema möglichst gründlich vorgekaut haben. ;)
Also versuch ich das mal simpel darzustellen:Outbound NAT:
Gehe nach Firewall > NAT > Outbound, wähle "Hybrid Outbound NAT rule generation" und klick Save.
Füge mit dem + darunter eine neue Regel hinzu:
Interface: <das vpn="" interface,="" das="" du="" zuvor="" erstellt="" hast="">Source: Network, Address: dein LAN Netz oder auch nur die IP des betroffenen Client /32
Den Rest auf den Defaultwerten lassen, einen Namen vergeben und speichern.
Apply changesFW Regel:
Firewall > Rules > LAN
Standardmäßig hast du da eine IPv4 any to any allow-rule.
Kopiere diese mit einem Klick auf das + rechts davon. Unter Source wähle "Single host" und trage die IP des betroffenen Client ein.
Ändere die Beschreibung, gehe runter zu Gateway und wähle das VPN Gateway aus und speichere die Regel.
Verschiebe die Regel nach oben, so dass sie als erstes zutrifft.
Apply changesEine bebilderte Anleitung gibt es auch hier: https://forum.pfsense.org/index.php?topic=76015.0</das>
-
Vielen Dank, Ihr habt mir schon sehr weitergeholfen.
Nein, nein, nicht so kompliziert. Der OT möchte das Thema möglichst gründlich vorgekaut haben. ;)
Ja :-\ Sorry, ich bin in meinem Umfeld selbst go-to-guy bei diverses Problemen und weiß, wie frustrierend es ist, Dinge so simpel wie möglich erklären zu müssen. In diesem Fall hätte (habe) ich es ohne Schritt-für-Schritt Anleitung nicht geschafft und mir vermutlich die Konfiguration so sehr zerschossen, dass ich sie hätte neu aufsetzen können.
JeGr hat es ja wirklich in der Theorie super zusammengefasst. Für mich als "Neuling" (nutze pfSense nun auch schon etwas länger, aber hatte nie die Zeit, mich wirklich einzuarbeiten) war es trotzdem zu hoch.
Jetzt ist es so, dass trotz der Outbount NAT Rule alle Devices im Netzwerk über den VPN laufen. Ich schildere mal genau, wie ich vorgegangen bin.
1. VPN nach Providerangaben eingerichtet.
-> das muss ich offensichtlich noch richtig gemacht haben, denn alle Devices haben jetzt die public IP des VPN Netzwerkes.2. Interfaces -> Interface assignment
Neues Interface anhand ovpnn (Mein Zugang) aus Dropdown Menü erstellt (OPT1); entsprechend umbenannt3. Firewall -> NAT
Automatic outbound NAT rule generation (IPsec passthrough included) geändert in Hybrid Outbound NAT rule generation
(Automatic Outbound NAT + rules below)4. Neues Mapping erstellt
Interace: OPENVPN
Protocol: any
Source: Network or single host: 10.0.13.71/24
–--> 1. nach dem Abspeichern wird aus Network or single host automatisch Network: 10.0.13.0/24
----> 2. Wenn ich statt /24 /32 nehme, habe ich gar keinen Internetzugang auf meinem Rechner mehr. Das muss an den vorherigen Netzwerkeinstellungen liegen
Alle anderen Werte: nicht verändert5. Firewall - Rules - LAN - IPv4 to any Regel kopiert, sieht insgesamt so aus
Action: Pass
Disable this rule: nein
Interface: LAN
TCP/IP: IPv4 (IPv4 UND IPv6 gleichzeitig geht nicht)
Source: Single Host or alias: 10.0.13.71/31
-----> Egal, welchen Subnet-Wert ich eingebe, nach dem Speichern wird /31 daraus
Gateway: OPENVPN_VPN4Ergebnis:
10.0.13.71 hat die öffentliche IP des VPN Providers. Andere Geräte im Netzwerk allerdings auch. Getestet an zwei Devices, die eigentlich weiterhin über das normale Netzwerk laufen sollten.Die einzige Möglichkeit, den Fehler zu finden wäre jetzt (von meiner Seite aus), mit den Settings herumzuprobieren. Was im worst case damit endet, dass ich pfSense neu aufsetzen kann. Ich setze mich parallel mal an ein Virtualisierung, aber vielleicht könnt Ihr mir ja auch hier weiterhelfen =)
-
–---> Egal, welchen Subnet-Wert ich eingebe, nach dem Speichern wird /31 daraus
Wenn da SINGLE Host or Alias steht, dann wird auch nur ein Single Host eingetragen und nicht ein Subnetz. Dass dann irgendwas anderes beim Speichern daraus wird ist verständlich. Single sollte ja selbsterklärend sein, ergo trägt man da auch nur die eine IP ein. Ansonsten wäre es die Einstellung Network mit /32.
Allerdings wird wohl nicht diese Regel das Problem sein, sondern eher dein:
-> das muss ich offensichtlich noch richtig gemacht haben, denn alle Devices haben jetzt die public IP des VPN Netzwerkes.
Nein, wenn es richtig wäre, wäre nach dem Einrichten des VPN Netzwerkes gar nichts passiert, denn das Gateway sollte nicht automatisch für alles gesetzt sein. Anscheinend überschreibt dein VPN aber das bisherige Default Gateway, so entnehme ich das zumindest aus deiner Schilderung. Was sagt denn unter System/Routing/Gateways das alte WAN Gateway? Ist das noch default oder ist nun das neue OpenVPN Gateway default?
-
System -> Routing -> Gateways sieht folgendermaßen aus
Name - Interface
WAN_DHCP (default) - WAN
OPENVPN_VPN4 - OPENVPN
WAN_DHCP6 (default) - WAN
OPENVPN_VPN6 - OPENVPNWAN sollte also weiterhin default sein.
-
Vielleicht liegt hier der Fehler:
VPN -> OPENVPNInterface: WAN; das sollte vermutlich VPN bzw. OPT1 sein, oder?
Wenn ich es auswähle, bekomme ich die Fehlermeldung
The following input errors were detected: An IPv4 protocol was selected, but the selected interface has no IPv4 address.Unter INTERFACES - OPT1
IPv4 Configuration: Static IPv4
-> Static IPv4 configuration
habe ich eine feste IP vergeben.
IPv4 standard gateway: jeweils leer gelassen und neu erstellt, macht keinen Unterschied. -
Vielleicht liegt hier der Fehler:
VPN -> OPENVPNInterface: WAN; das sollte vermutlich VPN bzw. OPT1 sein, oder?
Nein, das ist das Interface, an dem der OpenVPN-Server lauscht.
Unter INTERFACES - OPT1
IPv4 Configuration: Static IPv4
-> Static IPv4 configuration
habe ich eine feste IP vergeben.
IPv4 standard gateway: jeweils leer gelassen und neu erstellt, macht keinen Unterschied.Du hast dem VPN-Interface eine feste IP verpasst? Die bekommst du doch von VPN-Server zugewiesen, oder ist das bei deinem Provider anders?
Ich hätte den gleichen Verdacht wie Jens mit dem Default Gateway. Aber laut Angaben ist ja das WAN-GW default. Um es zu testen brauchst du nur die neu hinzugefügte FW-Regel am LAN deaktivieren. Dann müsste alles über WAN laufen.
Und poste doch bitte mal den LAN-Regelsatz.
4. Neues Mapping erstellt
Interace: OPENVPN
Protocol: any
Source: Network or single host: 10.0.13.71/24
–--> 1. nach dem Abspeichern wird aus Network or single host automatisch Network: 10.0.13.0/24
----> 2. Wenn ich statt /24 /32 nehme, habe ich gar keinen Internetzugang auf meinem Rechner mehr. Das muss an den vorherigen Netzwerkeinstellungen liegen
Alle anderen Werte: nicht verändertWarum es mit 10.0.13.71/32 nicht funktioniert, kann ich mir nicht erklären. An welcher vorigen Netzwerkeinstellung meinst du?
Wenn du /24 zum Host angibst, ändert pfSense das einfach auch die Netzadresse, das ist okay. Es kann auch das LAN-Netz da eingetragen sein, die Regel wirkt sich ohnehin nur für das OPENVPN Interface aus und da sollte nur der eine spezielle Host hingeroutet werden. -
Ergebnis:
10.0.13.71 hat die öffentliche IP des VPN Providers. Andere Geräte im Netzwerk allerdings auch. Getestet an zwei Devices, die eigentlich weiterhin über das normale Netzwerk laufen sollten.Die einzige Möglichkeit, den Fehler zu finden wäre jetzt (von meiner Seite aus), mit den Settings herumzuprobieren. Was im worst case damit endet, dass ich pfSense neu aufsetzen kann. Ich setze mich parallel mal an ein Virtualisierung, aber vielleicht könnt Ihr mir ja auch hier weiterhelfen =)
Ich vermute mal dass dein VPN Anbieter dir da eine default Route 0.0.0.0 über das VPN GW reinwürgt.
Geh mal in die OpenVPN Client Konfiguration und setz einen Haken bei "Don't pull routes".Dann den Tunnel stoppen und neu starten. Dann sollten deine anderen Geräte auch wieder das "normale" GW benutzen können.
-
Ich vermute mal dass dein VPN Anbieter dir da eine default Route 0.0.0.0 über das VPN GW reinwürgt.
Geh mal in die OpenVPN Client Konfiguration und setz einen Haken bei "Don't pull routes".Das würde auch erklären, dass es zuvor ohne NAT Regel gar keine Verbindung mehr nach draußen gab.
-
"don't pull routes" war das Rätsels Lösung :) Daaanke!