OpenVPN für Clients



  • Hallo zusammen,

    ich habe ein VPN für Clients mit OpenVPN eingerichtet. Die Einwahl usw. funktioniert soweit. Derzeit ist die Konfig so das die Clients sich mit dem Standardport 1194 verbinden. Bei den meisten Clients funktioniert das sofern diese hinter einer Firewall hängen die alles durchlässt. In vielen Situationen ist es aber so das der Port 1194 nicht geöffnet ist.
    Was gabe es den für Möglichkeiten das etwas offener für die Clients zu gestalten? Oft haben Clients ja nur Internetzugriff über einen Proxy (80, 443) kann man das nicht auch dafür nutzen um nach draußen zu kommen?



  • @johndo said in OpenVPN für Clients:

    Was gabe es den für Möglichkeiten das etwas offener für die Clients zu gestalten? Oft haben Clients ja nur Internetzugriff über einen Proxy (80, 443) kann man das nicht auch dafür nutzen um nach draußen zu kommen?

    Da ich jetzt (die APU1D ist in Rente) leistungsfähige Hardware für pfSense einsetze, habe ich mich für folgende
    Lösung des hier angesprochenen Problems in einem Roadwarrior Szenarium mit OpenVPN entschieden.

    OpenVPN wird über SSL (Port 443) getunnelt. Clientseitig nutzen ich stunnel, serverseitig das Paket HAProxy
    auf pfSense. Alternativ kann man auch das Paket stunnel auf pfSense nutzen.
    Der OpenVPN-Server (device mode TUN, Protocol TCP, local Port 1195) ist ein Backend für HAProxy.
    HAProxy macht im Frontend "SSL offloading" und läßt per ACL auch nur Paket für OpenVPN zum
    OpenVPN Backend durch.

    Diese etwas anspruchsvollere Lösung in Bezug auf Hardware für pfSense funktioniert zufriedenstellend.
    Die Konfiguration der Clients beruht somit nur noch auf stunnel, wobei der TCP/Port1195 auch zum
    Aufbau des Tunnels geeignet wäre. Aus den oben genannten Gründen verzichte ich auf diesen Fall.

    LG



  • Warum so kompliziert? Den UDP Port lässt du auf Standard. Dann erstellst du einfach eine zweite OpenVPN Serverinstanz und wählst als Protokoll TCP4 und als Port 443 aus. In die Clientconfig schreibst du einfach einen zweiten remote Eintrag mit TCP und 443. Wenn sich der Client mit dem erste Eintrag (UDP) verbinden will und das fehlschlägt, geht er auf den zweiten Eintrag (TCP).

    Da UDP Verbindungen in der Regel schneller sind, würde ich diesen Eintrag auch immer an erster Stelle stehen lassen.



  • Ich würde auch die Lösung mit 2 Server auf UDP u. TCP 443 vorschlagen.
    Es sollte aber dazu erwähnt werden, dass man den 2. Server selbst in die Client-Konfig einfügen muss, das Client Export Tool macht das nicht automatisch.
    Offenbar hat John ja mehrere oder viele Clients, da muss dann jede Konfig bearbeitet werden, ist zwar nur eine Zeile, aber unerlässlicher Aufwand.

    @Gladius
    Was ist an dieser Lösung so Hardware-fordernd? Der HA-Proxy?
    Ich frage dies, weil ich selbst plane, einen solchen, eventeull auch auf schwächerer Hardware, einzurichten.



  • Naja, wenn man das ganze Setup ohne Clientzertifikat macht, dann braucht man nur eine Datei ändern und verteilt diese dann an die Benutzer.
    Vielleicht sinds ja auch nur 5 Benutzer ;-). Wer weiß?



  • @viragomann said in OpenVPN für Clients:

    Was ist an dieser Lösung so Hardware-fordernd? Der HA-Proxy?

    Ich hole mal etwas weiter aus. Als ich vor der Entscheidung stand die APU1D abzulösen, habe ich mich nicht
    für eine APU2 enschieden, da ich für die Zukunft noch Leistungsreserven bzgl. OpenVPN vorhalten wollte.
    Möglicherweise ist z. B. eine APU2C4 an einem VDSL100 Anschluß völlig ausreichend für die von mir
    jetzt gewählte Lösung OpenVPN über SSL zu tunneln. Vier Kerne sind ja vorhanden, AES-NI auch, einzig
    die Taktfrequenz könnnte für OpenVPN höher sein. Die Last würde auf die Kerne verteilt werden,
    aber den Löwenanteil fordert OpenVPN.

    Leider kann ich keine Fakten liefern. Ich habe keine APU2 im Einsatz. Auf einem Erfahrungsbericht
    mit einer APU2 in Bezug auf die von mir genutzte Konfiguration würde ich mich freuen.

    LG



  • @bahsig said in OpenVPN für Clients:

    Warum so kompliziert?

    Okay, der Einrichtungsaufwand ist etwas höher und steht wohl für einen Einsteiger in pfSense/OpenVPN nicht
    an erster Stelle. Unter den von mir genannten Randbedingungen hat man aber eine passfähige Lösung zum
    Problem des bzgl. OpenVPN restriktiven Proxy.



  • Hi,

    das mit der zweiten Instanz klingt gut, das werde ich so machen. Danke!


  • Moderator

    @viragomann said in OpenVPN für Clients:

    Es sollte aber dazu erwähnt werden, dass man den 2. Server selbst in die Client-Konfig einfügen muss, das Client Export Tool macht das nicht automatisch.

    Jein. Man kann das im Advanced Block des Client Export Tools reinschreiben und speichern. Dann bleibt es drin :)
    Und mehrere remote Einträge funktionieren da blendend. Setzen wir bei Kunden auch gern ein als Fallback von schlechten Hotels o.ä.

    @Gladius vielleicht hast du Lust ein wenig mehr über deine Konfig zu schreiben - warum so komplex? Ich verstehe da ganz ehrlich den Aufriss mit stunnel nicht so ganz, was dir das an Mehrwert bringt. Ganz zu schweigen, dass auf der Gegenseite dann mit stunnel oder haproxy noch zusätzlich zum VPN Dienste gebraucht werden. Wo ist der Vorteil bzw. Use Case, der damit besser funktioniert? Würde mich schon interessieren, denn so ohne Grund baut man das ja nicht einfach so ;)



  • @jegr said in OpenVPN für Clients:

    Man kann das im Advanced Block des Client Export Tools reinschreiben und speichern.

    ☺
    Gute Idee. Da genügt es dann aber nur den zusäztlichen Host reinzuschreiben, oder?


  • Moderator

    @viragomann said in OpenVPN für Clients:

    @jegr said in OpenVPN für Clients:

    Man kann das im Advanced Block des Client Export Tools reinschreiben und speichern.

    ☺
    Gute Idee. Da genügt es dann aber nur den zusäztlichen Host reinzuschreiben, oder?

    Genau so sollte es sein. Wenn es gegen eine dynamische IP geht, dann ggf. oben noch das Feld manuell mit dem DynDNS Domainnamen bespaßen damit der erste remote Eintrag auch sauber passt.

    Genauso übrigens auch die Möglichkeit für "Lastverteilung" wenn man 2 halbwegs gleiche Leitungen hat. Einfach den Clients in die Konfiguration beide Endpunkte für VPN auf Leitung 1 und 2 eintragen und zusätzlich bei Wunsch noch nach dem 2. Remote Statement ein remote-random mit reinpacken, schon wird zufällig mal mit Line1 oder 2 die Verbindung aufgebaut. Bei Abbruch von einer sollten diese Clients dann durch beide Einträge automatisch auf der noch verbliebenen sammeln.



  • @jegr said in OpenVPN für Clients:

    Ich verstehe da ganz ehrlich den Aufriss mit stunnel nicht so ganz

    Ich hole mal etwas weiter aus. Grundgedanke war die Nutzung eines OpenVPN-Tunnels auch in einem Roadwarrior
    Szenarium in einer Client-Umgebung mit Filterung gängiger OpenVPN-Ports. Für Site2Site Szenarien würde ich das
    erst einmal nicht in Betracht ziehen.

    Nun, der TCP-Port 443 bot sich für den Tunnel OpenVPN über SSL an. Er wird wohl kaum geblockt werden.
    HAProxy, gegebenenfalls stunnel, ist ja als Paket bei pfSense vorhanden und auch für Clients verfügbar.

    Frisch ans Werk und den Tunnel gebaut. Ging nicht auf Anhieb, mußte erst im Netz Informationen sammeln.
    Er läuft aber ohne zu mucken auf meiner etwas großzügiger dimensionierten Hardware.

    Okay, wie schon gesagt: viele Wege führen nach Rom.


  • Moderator

    Nun, der TCP-Port 443 bot sich für den Tunnel OpenVPN über SSL an. Er wird wohl kaum geblockt werden.
    HAProxy, gegebenenfalls stunnel, ist ja als Paket bei pfSense vorhanden und auch für Clients verfügbar.

    OK da kann ich dir folgen, aber was mich dann rauswirft ;)

    Warum nicht simpel OpenVPN selbst via tcp/443 betreiben mit den transparent Optionen und Möglichkeit das sogar an einen Webservice durchzureichen (quasi als Alibi *g) und damit die Komplexität von HAproxy und stunnel zu sparen? Das ist meine eigentliche Frage gewesen :) Dass man tcp/443 ggf. vorzieht wenn udp/1194 nicht funktioniert kann ich verstehen. Kein Problem. Nur warum das komplexe Drumherum, wenn es doch OVPN selbst bietet? Denn du nutzt ja keine zusätzlichen Optionen - zumindest habe ich nichts rausgelesen - was jetzt explizit stunnel oder haproxy betrifft (sowas wie clientseitiges Zertifikat bei SSL für Auth gg. haproxy o.ä. - was eh doppelt gemoppelt wäre, da man sich dann nochmal mit user/pw/cert bei OVPN anmeldet)



  • @jegr said in OpenVPN für Clients:

    Nur warum das komplexe Drumherum, wenn es doch OVPN selbst bietet?

    Ich habe meine Entscheidung OpenVPN über SSL zu tunneln nicht in Unkenntnis anderer Möglichkeiten getroffen.
    Nein, das war eine ganz gezielte Aktion in meinem Umfeld und ich würde es wieder so machen, selbst wenn ich
    weltweit der Einzige wäre.

    Die Lösung funktioniert zufriedenstellend. Falls es mal Probleme damit geben sollte, werde ich nach
    Alternativen suchen. Nach meiner Meinung bringt eine Fortführung der Diskussion über meine Motive
    keine brauchbaren Ergebnisse. Jeder sollte nach seinen Kenntnissen, Vorlieben, was auch immer,
    das im Thema angesprochene Problem angehen.

    LG


  • Moderator

    @gladius said in OpenVPN für Clients:

    Nein, das war eine ganz gezielte Aktion in meinem Umfeld und ich würde es wieder so machen, selbst wenn ich
    weltweit der Einzige wäre.

    Das habe ich ja nicht in Abrede gestellt, sondern frage mich nur, was der Vorteil deiner Methodik gegenüber dem nativen OpenVPN via TCP ist? 😃

    Vielleicht hast du meine Nachfrage mißverstanden, aber es geht mir da wirklich eher darum, was deine Intention ist bzw. wo du denkst, dass deine Variante ggf. besser funktioniert? Man lernt ja gerne was dazu, darum versuche ich da überhaupt nicht dagegen zu argumentieren, sondern hinterfrage lediglich den Vorteil. Wenn du sagst, es gibt da keinen großen Vorteil oder das gibt sich nix, du wolltest es aber so bauen - auch gut -> basteln bringt immer was, und sei es nur, dass man was dazu gelernt hat. Aber genau deshalb frage ich nach - berufliche Neugier 😄

    Gruß Jens



  • @jegr said in OpenVPN für Clients:

    sondern frage mich nur, was der Vorteil deiner Methodik gegenüber dem nativen OpenVPN via TCP ist?

    Ich kann keine Vorteile erkennen. Die Anforderungen an die Hardware sind zwar für mich beherrschbar, aber höher
    als bei der hier vorgeschlagenen Lösung mit zwei Instanzen. Weiterhin muß man einmalig serverseitig mehr
    installieren, konfigurieren und ein Anfänger hat mit OpenVPN wohl erst einmal wichtigere Aufgaben zu lösen.

    Damit sind wir doch wieder bei den Motiven gelandet. Was hat mich zu dieser sehr speziellen Lösung geführt?
    Der Reiz sich abseits von bekannten Wegen eine Lösung zu erarbeiten sage ich mal.
    Ich bin so ein Typ, der auch nicht unbedingt Hardware von der Stange kauft, sondern Spaß am "Basteln" hat.
    Liegt es in den Genen?

    LG

    Nachtrag:
    pfSense nutze ich seit vielen Jahren. Anfangs hatte ich eine ALIX-Kiste. An die damalige Version
    von pfSense kann ich mich gar nicht mehr erinnern. Da müßte ich nachgraben.


  • Moderator

    Uh die damalige Version hab ich noch gut vor Augen... bisschen gruselig und nicht anders als ein Re-Skin von Monowall damals.

    0_1533805792973_58c13725-5ec2-49f2-bab8-4c7df61e978c-image.png

    Manchmal ein bisschen gruselig aber hey... für 2008 war das schon echt gut :) Und das mit dem Basteln kenne ich, aber man wird irgendwann auch älter und kommt in die Kategorie "muss einfach ruhig laufen" ;)

    Die Anforderungen an die Hardware sind zwar für mich beherrschbar, aber höher
    als bei der hier vorgeschlagenen Lösung mit zwei Instanzen.

    Kurze Frage dazu: Deine Lösung läuft aber (nur) mit TCP? Oder mit udp & tcp?



  • @jegr said in OpenVPN für Clients:

    Kurze Frage dazu: Deine Lösung läuft aber (nur) mit TCP? Oder mit udp & tcp?

    Läuft nur mit OpenVPN/TCP. Clientseitig verwende ich ja OpenVPN in Kombination mit stunnel und
    UDP-Pakete von OpenVPN will stunnel nicht haben. So war es als ich die Lösung getestet habe.
    Ich bin dann bei OPenVPN/TCP geblieben und habe nicht weiter über UDP nachgedacht.


  • Moderator

    Dann danke für die Ausführung :) Immer schön verschiedene Ansätze zu lesen. Auch wenn ich (rein subjektiv) denke, dass es für einen Anfänger an der Stelle einfacher ist, sich mit dem Assistenten dann ggf. einen OVPN mit tcp/443 einrichten zu lassen, hat die Lösung ja durchaus ihren ganz eigenen Charme :)

    Allerdings sollte man auch nicht unerwähnt lassen, dass es durchaus schon Gründe für stunnel gab (allerdings dann ggf OpenVPN und UDP innendrin für Performance) um bspw. strenge IPS o.ä. auszuhebeln, die VPNs blocken. Trotz der neuen Crypto Settings in OpenVPN 2.4 gibts da wohl durchaus noch Systeme die das VPN blocken können.



  • Eine kurze Ergänzung zu meiner Lösung.

    In einer weniger restriktiven Umgebung bzgl. Blockierung von OpenVPN kann clientseitig auf stunnel und
    serverseitig auf HAProxy beim Aufbau des Tunnels verzichtet werde, denn OpenVPN serverseitig
    verbindet ja auf einem TCP-Port.

    Mit anderen Worten:
    Der Weg über stunnel kann clientseitig in Abhängigkeit von der jeweiligen Umgebung genutzt werden.
    Zwingend erforderlich ist er nicht.



  • Hallo zusammen,

    ich habe nun eine zweite OpenVPN Instanz erstellt. Die Einstellungen sowie der TSL Key sind der gleiche. Einzigster unterschied das Protokoll habe ich auf TCP und Port 443 umgestellt.

    In meiner Client Konfig habe ich den Eintrag hinzugefügt. Wenn ich mich per VPN Einwähle kommt die Passwortabfrage und danach kommt immer:

    Sat Aug 11 12:43:51 2018 Connection reset, restarting [0]
    Sat Aug 11 12:43:51 2018 SIGUSR1[soft,connection-reset] received, process restarting

    Wenn ich per UDP über den Port 1194 einwähle dann geht es nach wie vor. Muss ich sonst etwas beachten?



  • Du musst natürlich noch den TCP Port auf der Sense freigeben. 😉