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:

    1. OpenVPN Client in pfsense einrichten
    2. Interface für den Tunnel herstellen
    3. NAT für das Interface aktivieren
    4. 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:

    https://support.hidemyass.com/hc/en-us/articles/202720876-pfSense-configuration-for-routing-all-traffic-via-VPN



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


  • LAYER 8 Moderator

    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 changes

    FW 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 changes

    Eine 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 umbenannt

    3. 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ändert

    5. 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_VPN4

    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 =)


  • LAYER 8 Moderator

    –---> 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 - OPENVPN

    WAN sollte also weiterhin default sein.



  • Vielleicht liegt hier der Fehler:
    VPN -> OPENVPN

    Interface: 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.



  • @benjsing:

    Vielleicht liegt hier der Fehler:
    VPN -> OPENVPN

    Interface: WAN; das sollte vermutlich VPN bzw. OPT1 sein, oder?

    Nein, das ist das Interface, an dem der OpenVPN-Server lauscht.

    @benjsing:

    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.

    @benjsing:

    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ändert

    Warum 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.



  • @benjsing:

    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.



  • @l4k3k3m4n:

    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!


Log in to reply