OpenVPN Verbindung funktioniert nicht

Hinweis: In dem Thema OpenVPN Verbindung funktioniert nicht gibt es 27 Antworten auf 3 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • alexdall@localhost:~> sudo su

    doppelt gemoppelt hält besser?


    Benutze nur su und das am besten mit dem Strich:

    Code
    su -

    Das eröffnet eine Loginshell, siehe man su

    Für den Inhalt des Beitrages 283290 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Du musst natürlich in der Zeichenkette "systemctl enable openvpn@<clientCfgFileName>" den 'Namen deiner .opvn Datei angeben anstelle von <clientCfgFileName>

    (und alle benötigten Certs müssen natürlich lesbar und erreichbar sein.)


    Und nein: der Inhalt der Config- Datei ist weder geheim, noch ermöglicht er irgendjemanden sich auf deinen VPN Server zu connecten. Das geht nur und ausschließlich falls man dazu noch das Server Cert und das Clientcert samt Key hat. Oft auch noch ein File mit den DH Parametern.

    Die Konfig Datei alleine, hilft dir Nullkommagarnix.


    Es ist dennoch nicht sonderlich geschickt, openvpn von irgendwoher zu installieren, wenn es offizielle,fertige openSUSE Pakete gibt. openVPN läuft entweder als Server, oder als Client. Du hast halt jetzt ein "Fremdpaket'" auf deinem Rechner, das mit Sicherheit nicht so gut integriert ist, wie das offizielle openSUSE Paket. Is also nix mit Ich-Server und Ich-nur-Client.

    Genau deshalb steht in der zugehörigen Conf eine Zeile die bei einem VPN-Client lediglich "client" enthält.


    Es scheint wohl hier ein eklatantes Wissensdefizit bei VPNs vorzuherrschen.

    Die Basics: Ein VPN tunnelt eine Verbindung zwischen zwei Hosts, wobei moderne, asymetrische Verschlüsselung verwendet wird.

    Je nach Konfiguration des Servers, kann damit eine verschlüsselte Verbindung zweier LANs entstehen (die wohl häufigste Variante), oder eben eine Verbindung alleine für die beiden Hosts. Und natürlich kann man sich alle möglichen anderen spezifischen Zwecke einrichten.


    Dabei kann VPN entweder via UDP kommunizieren. (auch die am häufgisten verwendete Konfig), so dass zwischen den beiden logischen Teil- LANs der gesamte Netzwerkverkehr für dieses Netz via UDP getunnelt übertragen wird. Also eine "normale" TCP- Verbindung zweier Rechner wird über eine verschlüsselte UDP Strecke getunnelt.

    Und natürlich kann man auch TCP oder beides verwenden. Je nach root, Gusto und den daraus folgenden Konfigs.

    Bei uns läuft es via UDP und ist insgesamt wesentlich schneller, als ohne diese Tunnelung via VPN.


    Damit nun eine solcher VPN- Client sich mit einem Server verbinden kann, was deinem Szenario entpricht, muss der Server erst einmal (zumeist) die DH- Paramter (DiffieHellman Key Exchange Algorithmus) festlegen.

    Sodann muss eine CA (==CertificateAuthority) erstellen. Dazu gehört ein Schlüsselpaar für den Server selbst.

    Und für jeden Client muss dann ebenfalls ein Clientzertifikat samt Key erstellt werden.

    Der Client erhält sodann vom Server (auf welche Weise auch immer) mindestens die folgenden Dateien:

    Ein CA.crt (== CertificateAuthority.CeRTificate)

    Eine client.conf (== die Konfiguration der Verbindung für den Client-Host)

    Ein client.crt (== das 'CLIENT.CeRTificate)

    Und eine client.key (==die zum client.crt gehörige geheime "Key"- Datei. (tatsächlich sind es ganz normale PKI (==PublicKeyInfrastructure) Schlüsselpaare)

    Da heute viele dazu den DiffieHellman Keyexchange verwenden, gibt es oft noch eine Datei DH.pem (==DiffieHellmankeyexchange.

    PrivacyEnhancedMail)


    Auch wenn ich hier generische Dateinamen verwende, ist das keinesfalls nötig. Eine CA.crt könnte auch den Namen MeineSpezialopenVPN.configuration.zum.erstmaligen.Gucken tragen. Namen sind Schall und Rauch.


    Bei dir wurden alle diese Dateien zusammen in eine .openvpn Datei geballert.

    Das kenne ich eigentlich nur von Windowskisten. (Und da kenne ich mich schon seit 20Jahren nicht mehr aus).

    Wie auch immer.

    Du könntest einfach deine openvpn Datei entsprechend splitten in die einzelnen Files.

    Und damit könntest du dann einfach testen, ob das Client- Zert und sein zugehöriges "private.key" eine Verbindung mit dem Server aufbauen kann. (Das meinte ich; Leider ist dir der Gebrauch von systemd Units ebenso neu, wie VPNs.)


    Da asymetrische Verschlüsselung schon seit einiger Zeit heftig entwickelt wird, haben sich natürlich auch sehr viele Fileformate angesammelt. Zueigen ist allen, dass man sie leicht ineineinander konvertieren kann.

    Falls man es kann.

    Denn jedes Format ist sehr genau spezifiziert. Von PKCS Files (PublicKeyCryptographicStandards) gibt es (derzeit) 11 verschiedene Formate. Von<EinName>.pkcs1 bis <EinName>.pkcs11


    Das ganze Gequarke um irgendwelche Versionen hilft dir nicht weiter.

    Das Installieren von diesem und jenem, ist Try and Error, aber nicht sonderlich zielführend.

    Es ist IMMER besser, ein natives Paket seiner Distribution zu verwenden, statt unter falschen Annahmen irgendetwas zu installieren.

    Auch für den Raspi findet sich openVP'N in den Repos. Einfach zu installieren und einfach zu verwenden. Ohne an potentiellen, kleineren Inkompatibilitäten zu verzweifeln. Es gibt zahllose Implementierungen von VPN. Auch SecIP und dergleichen, die allesamt sehr ähnlich, aber eben für eine spezifische Netz- topologie und Zweck programmiert, und von daher nicht so ganz leicht miteinander verheiratbar..


    Jedenfalls ist der Fehler von Anfang an klar.

    Die Frage vonmir dazu hast du ignoriert:


    zum Laufen zu bringen?

    Das hast du gechecked?

    Dann erkläre ich dir mal einfach, was da steht:

    OpenVPN 2.4.3 x86_64-suse-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jun 20 2017
    Sep 02 21:01:11 localhost.localdomain nm-openvpn[13777]: library versions: OpenSSL 1.1.1d 10 Sep 2019, LZO 2.10
    Sep 02 21:01:11 localhost.localdomain nm-openvpn[13777]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.

    Und das ist ganz alleine ein normales Konfigurationsproblem.

    Das muss auf dem Server erfolgen. (Und würde sich dann eben auch natürlich in der Client.conf finden)

    Du gibst aber weder Client noch Server.conf heraus.

    (Aus den Fragmenten lässt sich nicht zurückschliessen, was du wirklich auf dem Server konfiguriert hast.)


    Ich habe keine Lust mir die Finger wund zu schreiben und fragwürdige und immer unvollständige Antworten zu erhalten.

    Wenn du jetzt nicht Client und Server die Konfig postest, kannst du alle weiteren Irrwege alleine beschreiten.

    Es genügt in deiner .openvpn einfach in jeder Zeile die Hexzahlenreihen durch ein "xy...." zu ersetzen.


    Und beschränke dich bitte künftig auf ausreichend klar formulierte UND VOLLSTÄNDIGE Antworten.

    Ob du der Meinung bist, du bräuchtest diese oder jene Version, ist irrelevant.

    Oder glaubst du im Ernst, dass es Sinn macht, deinem Werkstattmeister erst zu erklären, wie dein Wagen funktioniert, wenn du von ihm verlangst, dass er dein totgerittenes Blechpferd wieder zum Leben erwecken soll?

  • Die Client Config die du gepostet hast, ist das der Inhalt der .ovpn Datei, die vom Server generiert wurde, oder einer Datei die vom Netzwerkmanager generiert wird?

    vom Server.

    Für den Inhalt des Beitrages 283293 haftet ausdrücklich der jeweilige Autor: r3z5

  • Ich habe das so verstanden, dass es hier um eine vom VPN-Server generierte Client-Konfigurations-Datei geht, die über den Networkmanager auf eine Opensuse-Installation (15.2) erfolgreich importiert wurde aber der Verbindungsaufbau fehlschlägt.

    Der Server selbst befindet sich auf einem Raspberry (Disto ist mir nicht klar).

    Weiterhin habe ich es so verstanden, dass mittels der gleichen Datei auf einer Win10-Installation und android-Installtion erfolgreich eine Verbindung aufgebaut wurde. Ist das korrekt? Wenn ja scheinen im ersten Schritt der Server und die dazugehörige Datei nicht das Problem zu sein.


    aledal : Wenn ich das alles richtig verstanden haben sollte: Nur um den Networkmanager auszuschließen: Kannst Du den Verbindungsaufbau noch mal ohne Networkmanager probieren, so wie es im Link von Sauerland beschrieben ist? D.h. auf deinem 15.2 Laptop nicht über den Networkmanager die Datei importieren, sondern die Datei ablegen und dann in einer Konsole:

    Code
    sudo openvpn --config /pfad/zur/client.opvn

    Was kommt dann raus?

    Für den Inhalt des Beitrages 283295 haftet ausdrücklich der jeweilige Autor: r3z5

  • Theoretisch sollte es so funktionieren.

    Habe aber gerade gelesen, dass der NetworkManager-openvpn 1.8.10 selbst Probleme haben KANN, bestimmte Informationen aus der vom Server erstellten *.ovpn zu extrahieren. Aus diesen Grund soll man die *.ovpn mit einem Editor öffnen und durch Kopieren der bestimmten Textpassagen extra Files erstellen. Und genau diese existieren in der geposteten *.ovpn von aledal - ca - cert - key (einfach die betreffenden Texte kopieren und als ca.cert - client.cert - client.key - ta.key abspeichern).


    Beispiel:


    OpenVPN .ovpn manipulation.


    This is how you can take an OpenVPN .ovpn config file and extract the certificates/keys required to import the profile into NetworkManager.


    Download the .ovpn file. Save it somewhere you can store it permanently (I use ~/.vpn).

    Copy from between <ca> tags into ca.crt, remove <ca> tags.

    Copy from between <cert> tags into client.crt, remove <cert> tags.

    Copy from between <key> tags into client.key, remove <key> tags.

    Copy from between <tls-auth> tags into ta.key, remove <tls-auth> tags.

    Remove the line "key-direction 1"

    Above "# -----BEGIN RSA SIGNATURE-----" insert the following lines.

    ca ca.crt

    cert client.crt

    key client.key

    tls-auth ta.key 1

    Import the .ovpn file into NetworkManager and save the profile.

    5 Mal editiert, zuletzt von sterun ()

    Für den Inhalt des Beitrages 283296 haftet ausdrücklich der jeweilige Autor: sterun

  • Das versuchte ich dir von Anfang an zu schreiben.


    Splitten der .ovpn Datei in die einzelnen Conf-, Crt und Key- Files.

    Danach schlicht den ganzen Krempel in /etc/openvpn ablegen.


    Und mit dem Systemdctl Befehl einschalten. Als root.

    Dann gibt es ein neues TUN- Device, was mit ip a anzeigt werden kann.


    Alternativ kann man die Verbindung testen mit

    openssl s_client -connect <deinServer:deinPort> -cert /Pfad/zu/<client>.crt -key <client>.key -state -debug


    (Die Zeichenketten zwischen den größerals- und kleinerals- Zeichen ist natürlich an deine Verhältnisse anzupassen.)