OpenVPN Road-Warrior mit Instance, DNS-Thema

Started by cklahn, December 24, 2024, 09:19:36 AM

Previous topic - Next topic
Hallo Forum,
ich habe nun mal eine OPNsense neu aufgesetzt und u.a. OpenVPN per "Instances" eingerichtet.

Wenn ich auf meinem Notebook, welches in irgendeinem anderen Netz ist, den Tunnel aufbaue, kann ich auf sämtliche Ressourcen zugreifen. Wenn ich auf dem Notebook lokal, bei stehendem Tunnel, eine Webseite aufrufen will, dann funktioniert das nicht.

Ich denke, dass das ein DNS-Thema sein wird. Nun gibt es ja zwei Ansätze:

a) Sämtlicher Verkehr geht durch den Tunnel. D.h. die DNS-Anfragen und die Informationen, die die Webseite anzeigen soll
b) Lediglich die Anfragen in das entfernte Netz werden durch den Tunnel geschoben und alles andere funktioniert weiterhin im lokalen Netz.

Mit fehlt hier der Überblick. Mag mir jemand kurz die Einstellungen zu den beiden o.g. Varianten erläutern?

Vielen Dank im Voraus.

Gruß
Christoph

... ich habe nun in den OpenVPN-Server-Einstellungen bei "Gateway Redirect" von "local" auf "not IPv4 (default)" umgestellt. Nun klappt die Auflödung zwar, ich weiß aber nicht, ob es die richtige Einstellung für das ist, was ich oben beschrieben habe.

Ich habe noch das Problem, dass sich mein OpenVPN-CLient ständig neu verbindet (alle 30 - 60s). Im Log steht lediglich drin, dass die Verbindung neu aufgebaut
wurde, aber nicht warum. Weiß jemand, wo ich nachschauen kann, woran das liegt?

Gruß
Christoph

... ich antworte mal selbst. Wenn ich einen Dauerping an das entfernte Netz sende, dann bleibt der Tunnel aufgebaut. Ich las, dass bei UDP der Traffic geprüft wird. Wenn nichts kommt, dann wird die Verbindung nach 30-40s abgebaut. Der Ping erzeugt traffic und lässt die Verbindung aufgebaut.

Nun habe ich mal das Protokoll auf TCP umgestellt, die FW-Regel angepasst und das OpenVPN-Profil neu heruntergeladen und in den Client eingespielt. Das Verhalten ist leider immer noch das Gleiche. Nach ca. 30-40s wird die Verbindung getrennt und gleich wieder aufgebaut.

Kennt jemand das Problem und weiß ggfs. wo noch ein Haken hin muß oder ggfs. umkonfiguriert werden müsste? Bin, wie gesagt, nach der "Standardinstallation" für Instances vorgegangen.

Wenn du Instances benutzt, was hast du als Keepalive eingetragen? Der Wert ist leider einer der Einstellungen, die per default ausgeblendet und erst durch den kleinen Advanced Toggle sichtbar werden.

Ich bin mir da unschlüssig, was der aktuelle Server als default nutzt, der Client hat IMHO 120s wenn nicht definiert. Für normale Zwecke nutzt man da gern 10/60 als Interval / Timeout. Ansonsten würde ich auch gezielt die Crypto festsetzen. Mit "nichts" den default auszuwählen (was hier gemacht wird) und dann GCM256, GCM128 und CHACHA20 als Mischmasch Angebot zu haben, ist oft wenig zielführend. Bei den wenigsten Clients bringt CHACHA irgendeinen Mehrwert und ansonsten wählt man nur AES-GCM-256 oder -128 - und bei der meisten HW ist der Unterschied marginal. Wenn man also nicht gerade die kleinste HW hat oder wenig User, ist AES-GCM-256 eine sichere Wahl, sonst kann man auch mal testweise auf 128 runter. Das dann als Cipher und Fallback auswählen. Da du selbst die Clients managest musst du dich hier um niemand anderen kümmern, was die Settings angeht, also brauchst du da auch kein Fallback mit kleinerem anderem Cipher wählen. Auth noch auf SHA256 und gut. DH Parameter lassen sich leider nicht setzen.

Ansonsten wäre noch wichtig, was du an Optionen oder wie die Client Config aussieht. Zudem im OpenVPN Log reinschauen, das klingt bei den schnellen Disconnects nach einem Problem, was im Log stehen sollte. Entweder beim Client ODER beim Server. Das Client Log kannst du mit einem "verb 3" in der Config des Clients auch etwas gesprächiger machen, dann solltest du schneller herausfinden, warum sich dein Client neu verbindet. Meist ist das irgendein Setting das auf einer Seite falsch ist. Oder er bekommt keine korrekte Verbindung hin.

Vielleicht kannst du noch was aus dem Log posten!

Cheers :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.

Hi,

bin gestern Abend dann darüber gestolpert, mal den Advanced Mode einzuschalten. Da waren beim Keepalive/Timeout nichts hinterlegt. Habe da mal 9 fürs Ping-Intervall und 1200 für Keepalive eingetragen und schon habe ich keine Aussetzer mehr :-).

Bzgl. der Verschlüsselung schaue ich dann mal heute Abend.

Ich habe mich schon gewundert, wo all die Parameter hin sind, die es bei Legacy noch gab. Da ja irgendwann Legacy ausgebaut wird, stelle ich nach und nach alle Kundengeräte auf Instances um.

Grund (auch) meiner anderen Fragen hier im Forum:

Wir betreuen neben unserer eigenen OPNsense noch fünf Kundengeräte. Ich möchte mir ein Best Practise schreiben, wo die gängisten Dinge, die bei jedem gleich sind, notiert sind. Wenn dann mal ein sechster dazukommt, wird der genauso aufgebaut. Hierbei geht es um die folgenden Funktionen:

- korrektes Einrichten von DNS (System und Unbound)
- LAN, WLAN auf eigener Schnittstelle (Unify)
- DHCP (wenn kein MS Server vorhanden ist, der das sonst machen sollte)
- OpenVPN für die Road Warrior
- IPSec für Standortvernetzung
- HAProxy für internen Exchange-Server und als Reverse-Proxy für selbsgehostete Nextclouds
- PPPoE für direkte Telekom-Einwahl (entweder am ONT bei Glas oder am Draytek-Modem bei VDSL)
- Backups aller Kundengeräte direkt auf unsere Nextcloud
- Fernadministration per OPNcentral

Das soll es auch schon sein. Mag sein, dass zu diesen Themen noch Fragen folgen werden :-)

Quote from: cklahn on December 30, 2024, 10:47:32 AMbin gestern Abend dann darüber gestolpert, mal den Advanced Mode einzuschalten. Da waren beim Keepalive/Timeout nichts hinterlegt. Habe da mal 9 fürs Ping-Intervall und 1200 für Keepalive eingetragen und schon habe ich keine Aussetzer mehr :-).

Die Werte machen keinen Sinn ;) Nimm mal 10/60 wie oben beschrieben, das sind/waren zumindest die alten Defaults und die taten immer gut. 10 ist der Ping, Timeout gibts nach 60s wenn KEIN Ping zurückkommt, also versucht mans 6x und dann erst gibts nen Disconnect Event. 1200 draufzufeuern bringt da wenig, denn dann erkennt er gar nichts mehr und denkt die ganze Zeit er wäre noch verbunden obwohl die Gegenseite vllt die Verbindung abgebaut hat (UDP ist ja nicht stateful per se und die Gegenstelle weiß nur durch die Keepalives ob du noch da bist oder nicht).

Was die sonstige Konfiguration angeht, die ist leider bei den Instances sehr begrenzt, weil die Cipherlisten fehlen. Ist mir tatsächlich unklar, warum da nur die 3 Default Cipher in der Liste sind, wenn das eh diejenigen sind, die bei "keiner" Auswahl automatisch genommen werden. Sinnvoll wäre da natürlich für Kompatibilität die anderen Cipher aufzulisten wie AES-128/256-CBC und Co. Sonst kommt da kein altes VPN mit klar.

Beim Roadwarrior Setup gibts dazu noch solche Punkte wie Gerätekompatibilitäten zu berücksichtigen. Wenn du Mix-Betrieb von Geräten hast (Apple, Microsoft, Android) solltest/kannst du nicht alle OVPN Optionen auf Serverseite nutzen, da dann Apple Husten bekommt (nervig aber ist leider so). Und gerade beim Thema DNS Push via VPN backt Apple wieder eigene Brötchen und verhält sich anders als alle anderen. Daher sollte man die OVPN Konfig auf Serverseite so generisch wie möglich halten, dass zwar alle Sachen am Start sind (DCO wenn möglich, Cipher, Hash, Encryption static key etc.) aber Dinge zu pushen wie "DNS overide" o.ä. vermeiden, da man ansonsten in Probleme mit den Clients läuft. Apple iOS und Mac reagieren z.B. mit "NÖ" auf push register-dns - kommen die Kisten einfach nicht drauf klar. Linux und Android ignorieren sie einfach, Apple sagt nö. Also auf Serverseite ausbauen und statt dessen im Client reinpacken und dort nur in die Configs von Windosen rein. Genauso mit block-outside-dns als Parameter. Wirkt nur auf Windows. Also in den Client rein. Solche kleine Fußangel gibt es ein zwei, wenn man aber bspw. nur Windows Clients (und Androiden) hat, ist es einfacher oder man kennt die Pappenheimer und bereitet sich drauf vor :)

Leider fehlt da noch das ein oder andere in den Instances oder auch im Client Export um das sinnvoll automatisch abzuwickeln.

Cheers :)
"It doesn't work!" is no valid error description! - Don't forget to [applaud] those offering time & brainpower to help you!
Better have some *sense as no(n)sense! ;)

If you're interested in german-speaking business support, feel free to reach out via PM.