Aktive und revidierte OpenVPN / PiVPN-Profile

OpenVPN/PiVPN Benutzer anlegen und verwalten auf dem Raspberry Pi

Die Artikelserie zum Raspberry Pi
Teil 1 (Link): Der Raspberry Pi 3 – der Alleskönner im Scheckkartenformat
Teil 2 (Link): Installation und Konfiguration von Raspbian Stretch auf Raspberry Pi 3
Teil 3 (Link): Fernzugriff per SSH und VNC auf den Raspberry Pi
Teil 4 (Link): Installation PiVPN – Den Raspberry Pi einfach zum VPN-Server ausbauen
Teil 5: Dieser Artikel
Teil 6 (Link): Installation und Konfiguration von Raspbian Stretch Lite auf Raspberry Pi 3 (ohne Desktop)
Teil 7 (Link): etherwake – Der Raspberry Pi als Wake On LAN-Server
Teil 8 (Link): Adblocker mit Pi-hole: Das schwarze Loch für Werbung im Internet
Teil 9 (Link): Die private Cloud auf dem Raspberry Pi – Seafile Server auf Raspian Stretch Lite installieren

Ihr habt PiVPN wie im Artikel hier beschrieben installiert und konfiguriert?

Perfekt, dann fügen wir nun unsere Benutzer hinzu, die externen Zugriff auf’s interne Netzwerk bekommen sollen.

Über SSH loggen wir uns auf unserem Raspberry Pi ein und landen dann auf der Shell.

OpenVPN / PiVPN-Benutzer hinzufügen

Der Fehler zum Hinzufügen eines Benutzers lautet:

Diesen Befehl gebt ihr auf der SSH-Konsole ein und bestätigt ihn mit Enter. Danach gebt ihr den Benutzernamen ein, mit dem man sich später anmelden soll, gefolgt vom Passwort, das doppelt eingegeben werden muss, um Vertipper auszuschließen. Das Kennwort wird übrigens nicht angezeigt, auch keine Sternchen oder so! Das Kennwort sollte selbstverständlich zufällig gewählt sein und möglichst nicht zu erraten! Um zufällige Kennwörter zu erstellen könnt ihr die Seite passwort-generator.com (Link) nutzen.

Zur Info: Den Befehl „pivpn add“ könnt ihr auch mit der Option nopass, also „pivpn add nopass“ verwenden. Danach gebt ihr ebenfalls einen Benutzernamen ein, aber das Kennwort entfällt. Heißt also, dass sich jeder, der in Besitz der Profil-Datei kommt, ohne Eingabe eines Kennwortes einloggen kann. Meiner Meinung nach solltet ihr das also tunlichst unterlassen und immer einen Benutzer mit Kennwort erstellen!

Im Anschluss wird eine Schlüsseldatei generiert und die Konfiguration des PiVPN-Servers automatisch angepasst. Außerdem wird eine Datei mit der Endung .ovpn erzeugt, die das VPN-Profil für den eben erstellen Benutzer enthält. Diese Datei wird auf unserem Raspberry Pi unter „/home/pi/ovpns“ abgelegt und wir benötigen sie später für den Verbindungsaufbau.

Tipp: Legt für jedes eurer Geräte, mit dem ihr von extern auf das Netzwerk zugreifen wollt, ein eigenes Profil an! So müsst ihr das Profil auch nur in einem Gerät löschen und neu hinzufügen, falls beispielsweise euer PC gehackt wurde oder verloren gegangen ist.

Das VPN-Profil mit WinSCP auf den PC oder Mac übertragen und importieren

Um die eben erstellte Datei „TESTUSER.ovpn“ auf unseren PC oder Mac zu übertragen, nutzen wir die Software WinSCP. Die gibt es, wie unser Putty ja auch, als portable Version, die wir nur entpacken und nicht installieren müssen (Link).

Nach dem Start von WinSCP loggen wir uns mit den uns bekannten Daten auf unserem PiVPN-Server ein. Hierfür wählen wir das Protokoll SFTP mit Port 22 und benötigen den Benutzernamen „pi“ und das dazugehörige Kennwort.

Nachdem wir unsere OpenVPN-Profildatei erstellt und auf unserem Computer übertragen haben, können wir sie in unseren OpenVPN-Client einfügen.

Nachdem ihr den OpenVPN-Client auf eurem Computer installiert habt, klickt ihr mit der rechten Maustaste auf das Icon unten bei der Uhr und wählt aus dem Kontextmenü „Import file…“. Dann wählt ihr eure ovpn-Datei aus und lasst sie vom Client importieren.

Import einer ovpn-Datei in den OpenVPN-Client.

Mehr zur den Profilen, verschiedenen Clients usw. gibt es ein einem weiteren Artikel.

OpenVPN / PiVPN-Benutzer verwalten

Anzeigen der aktiven OpenVPN / PiVPN-Profile

Wir möchten uns einen Überblick verschaffen, welche Profile und damit Benutzer Zugriff auf unseren OpenVPN-Server bzw. unser PiVPN haben. Hierfür loggen wir uns zuerst wieder über Putty auf dem PiVPN-Server ein.

Auf der Shell des PiVPN-Servers angekommen tippen wir das folgende Kommando ein und bestätigen es mit Enter:

Daraufhin zeigt euch der PiVPN-Server alle im System hinterlegten Profile an.

Aktive und revidierte OpenVPN / PiVPN-Profile

Der oberste Eintrag ist immer euer Server selbst, danach folgen die Profile für den externen Zugriff. In der ersten Spalte (Status) seht ihr die Information, ob das Profil noch gültig ist (Valid), sich also noch einwählen darf, oder widerrufen wurde (Revoked). Zum Widerruf von Profilen kommen wir im nächsten Absatz. In der zweiten Spalte (Name) seht ihr den Benutzernamen des OpenVPN-Profils. Im Screenshot könnt ihr erkennen, dass ich zwei Profile für den Benutzer TESTUSER erstellt habe. Das erste habe ich widerrufen und ein neues erstellt. Das alte Profil bleibt also im System erhalten, aber als widerrufen markiert. Die dazugehörige ovpns-Datei wird gelöscht und der User kann sich mit dieser Datei, sollte er sich schon besitzen, auch nicht mehr einloggen. Für das neu erstellte Profil TESTUSER wurde eine neue Datei „TESTUSER.ovpn“ erstellt, mit der der Login fortan möglich ist (Status Valid).

OpenVPN / PiVPN-Benutzer löschen / widerrufen

Unsere Tests waren erfolgreich, der PiVPN-Server läuft. Jetzt möchten wir gerne den TESTUSER wieder löschen. Oder ihr habt einem Freund temporären Zugang zu eurem Netz gegeben und möchtet ihm diesen nun wieder entziehen.

Auch das geht schnell und einfach.

Wir verbinden uns, wie immer, per SSH auf unseren PiVPN-Server. Den aktiven Benutzer TESTUSER möchten wir löschen, also führen wir das Kommando

aus. Daraufhin müssen wir den Benutzernamen des Users eingeben, den wir widerrufen möchten, also TESTUSER, gefolgt von Enter. Der Server passt die Konfiguration an, revidiert das Profil des Benutzers und löscht die dazugehörigen Dateien.

Prüfen, welche Benutzer an OpenVPN / PiVPN angemeldet sind

Wenn ihr wissen wollt, welche der aktiven Clients auch wirklich am PiVPN-Server angemeldet sind, also auf euer Netzwerk zugreifen, dann gebt ihr auf der Konsole einfach

ein. Danach erscheint eine Liste mit allen in diesem Moment angemeldeten Benutzern. In meinem Fall, da kein User eingeloggt ist, steht dort einfach nur „No Clients Connected!“.

"pivpn clients" gibt euch eine Liste der eingeloggten Benutzer aus.

Ein paar weitere PiVPN-Befehle

Hier noch eine Liste der wichtigsten PiVPN-Befehle, die ihr im Alltag gebrauchen könntet. Statt dem ausgeschriebenen Befehl wie z. B. „clients“ könnt ihr übrigens auch die Abkürzung „-c“ verwenden, das kommt auf’s Gleiche raus.

-a, add [nopass] Ein neues Client ovpn-Profil erstellen, optional mit „nopass“ ohne Kennwort für den Benutzer
-c, clients Listet alle am Server angemeldeten Benutzer auf
-d, debug Startet im Falle von Problemen eine Debugging-Session
-l, list Listet alle gültigen und revidierten Client-Zertifikate auf
-r, revoke Revidiert ein Cllient ovpn-Profil
-h, help Zeigt den Hilfe-Dialog mit dieser Liste an Kommandos
-u, uninstall Deinstalliert PiVPN vom System

"pivpn help" gibt die Liste mit möglichen Befehlen aus.

27 Antworten auf „OpenVPN/PiVPN Benutzer anlegen und verwalten auf dem Raspberry Pi“

  1. Hi Dennis,

    super Erklärung 🙂 Ich hätte allerdings eine Frage. Anfangs zu deinem Artikel sagst du, dass man mit einem VPN ein NAS im Heimnetzwerk accessen kann und z. B. auf dem Urlaub über seine E-Mails durch einen Tunnel aufrufen.

    Für den Zugriff auf ein NAS wird ja ein TUN-„Zugriff/Treiber“ benötigt. Für den Tunnel zum Heimnetzwerk durch den Router ins Internet wird doch ein TAP-„Zugriff/Treiber“ benötigt. Sozusagen eine Bridge. Hast du dafür auch eine Anleitung?

    So wie ich das sehe muss ich wohl zwei Instanzen von OpenVPN laufen lassen. Eine für TUN (NAS) und eine für TAP (Internet), denn den OpenVPN Server kann ich wohl nur mit einem Parameter starten.

    Grüße Jonny

    1. Hey Johny,
      ich hoffe, ich verstehe dich richtig…
      Du kannst in deiner OpenVPN Client-Config einstellen, dass (falls gewünscht) der komplette Traffic durch dein VPN geleitet werden soll. Das hat den Vorteil, dass du sowohl auf deine VPN-internen Ressourcen zugreifen kannst, als auch über deinen heimischen Internet-Anschluss sicher surfen, weil der komplette, von einem extern genutzten Gerät ausgehende Traffic durch deinen PiVPN-Server geroutet wird.
      Dafür gibt es den folgenden Befehl, den du in deine Client-Config einfügen musst: push „redirect-gateway def1“
      In der offiziellen Doku zu OpenVPN kannst du das noch mal nachlesen: https://openvpn.net/index.php/open-source/documentation/howto.html#redirect

      Ich persönlich habe es so gemacht: Ich habe mir zwei Profile angelegt für den Zugriff auf/über mein VPN daheim. Eines, mit dem der nur der Traffic in mein heimisches LAN durch das VPN geht, der restliche Traffic (Internet) geht ganz normal über den jeweils genutzten Anschluss. Das hat den Vorteil, dass die normale Internetnutzung auch normal schnell ist, eben so schnell, wie der Anschluss, an dem du dich befindest.
      Davon abgesehen habe ich noch ein zweites Profil, mit dem ich (mit besagtem Befehl von oben) meinen kompletten Traffic durch meinen PiVPN-Server route. Das hat dann den Vorteil, dass ich sowohl auf meine Ressourcen daheim zugreifen, als auch komplett getunnelt surfen kann. Ich kann mich also in unsicheren Netzwerken bewegen und brauche mir keine Gedanken zu machen, dass jemand mit liest. Der Nachteil dieser Variante ist, dass mein heimischer Upload die Geschwindigkeit des Surfens begrenzt, weil natürlich sämtlicher Traffic erst mal zu mir nach hause und von dort aus ins Internet verschickt und dann zurück an mich „hochgeladen“ wird. Für reguläres Surfen und Mailen reicht das allemal aus, aber große Dateien würde ich so nicht unbedingt downloaden wollen.

      Testen kannst du das übrigens auch ganz einfach, indem du dir deine öffentliche IP-Adresse anzeigen lässt. Seiten dafür gibt’s ja wie Sand am Meer.
      Ohne das push „redirect-gateway def1“ hast du immer die IP-Adresse des Anschlusses, an dem du gerade surfst. Mit dem Befehl bekommst du dann die IP-Adresse deines Anschlusses daheim angezeigt.

      So, ich hoffe, ich konnte dir helfen. Melde dich gerne noch mal, wenn noch Fragen offen sein sollten.

      VG,
      Dennis

  2. Hallo Dennis,
    diese Anleitung ist der Knaller. Ich hab sehr lange nach eine Lösung für die Installation eines OpenVPN Servers gesucht, wo man nicht gleich mit Linux erschlagen wird.
    Das Teil habe ich innerhalb von 2 Stunden auf einem Raspberry EINS installiert.
    Wenn ich mich jetzt einwähle läuft alles rasend schnell durch.
    Problem ist aber: Der DHCP des OpenVPNs gibt mir eine 10.8.0.x als IP für meine Endgeräte.
    Ich möchte aber auf meine internen Geräte zugreifen, die auf 192.168.1.0/24 liegen.
    Gibt es die Möglichkeit, die Daten auf den OPENVPN so anzupassen, dass IPs im Bereich 192.168.1.220-230 verteilt werden?

    Habe folgende Config
    Raspberry 192.168.1.9
    DynDNS Name vorhanden
    Unify USG Firewall 192.168.1.1 (DHCP Vergabe 192.168.1.100-200)
    Portweiterleitung 11194 auf 192.168.1.9
    DNS 192.168.1.10 / 8.8.8.8

    Würde mich über eine Antwort freuen

    1. Hallo Markus,
      hehe, danke dir für das Lob! Freut mich wirklich, dass meine Anleitungen so gut ankommen.
      Was dein Problem angeht, da bin ich, um ehrlich zu sein, im Moment überfragt. Da ich von extern nur mit MAC- und IP-Adressen arbeite habe ich die DNS-Auflösung noch nie genutzt.
      Trotz der IP-Adresse im Netz 10.8.0.x kannst du über die IP-Adressen auf deine anderen Geräte zugreifen, probier’s einfach mal aus.
      Ich werde mir das mit dem DNS aber bei Gelegenheit auch noch mal angucken und schauen, ob ich das irgendwie gelöst bekomme.

      Viele Grüße,
      Dennis

      1. Hi Dennis,
        die Geschichte mit der DNS brauchst du nicht machen.
        Ich hab von aussen einfach mal versucht über openvpn auf meinen Server zuzugreifen.
        Und schon fast widererwartend ging das. Somit kann man sich also ohne Probleme von einem 192.168.2.x/24 in ein 192.168.1.x/24 Netz „einwählen“.
        Gestern hab ich an meiner Unify USG den eingebauten RADIUS-Server und einen L2TP-Zugang eingerichtet.
        Hier auch das gleiche. „Falscher“ Nummernkreis, trotzdem kommt man rein und ich kann mich dann von dort per RDP auf meine Rechner direkt einwählen. K.A. wie, aber es geht. Rest interessiert ja nicht 🙂

        1. Hi Markus,

          schön, dass es klappt und du auf deine Geräte zugreifen kannst.
          Ich hab schon ein paar Ideen für weitere Tutorials, vielleicht ist ja auch für dich wieder was Interessantes dabei 🙂

          Viele Grüße,
          Dennis

  3. Hallo Dennis

    mit hilfe dieses tollen Artikes habe ich meinen Pi nun zu einem VPN Server gemacht.
    kannst du mir helfen, wie ich nun mit zwei solcher Pi´s zwei Standorte dauerhaft per VPN verbinde?

    Danke und grüße

    1. Hallo Gerald,
      danke für dein Lob!
      Zwei Standorte per PiVPN/OpenVPN miteinander zu verbinden, das habe ich bisher noch nicht gemacht. Schau am besten mal in die OpenVPN Dokumentation, da steht sicherlich was dazu drin.
      Viel Erfolg und wenn du weißt, wie’s geht, würde ich mich über einen kurzen Hinweis freuen 🙂
      Viele Grüße, Dennis

  4. Hallo Dennis,

    vielen Dank erst einmal für Deine geniale Seite. Es gibt zwar viele Tutorials im Netz, aber Deines hier, war das einzige, mit dem ich als Noob vernünftig arbeiten konnte.

    Soweit lief die ganze Einrichtung recht gut, ein paar Schritte waren anders bei mir, aber das war nicht weiter gravierend.

    Mein Problem ist nun, dass ich das VPN nicht nutzen kann.

    Mit dem OpenVPN Client für Windows kann ich die TAP Treiber nicht installieren. Ein bekanntes Problem, aber bei mir hat noch keine der vorgeschlagenen Lösungen funktioniert.

    Ich habe den Portablen Client versucht, mit dem komme ich einen Schritt weiter und erhalte beim Verbindungsversuch zumindes schon mal eine Fehlermeldung:

    „Options error: Unrecognized option or missing parameter(s) in MTM.ovpn:10: tls-version-min (2.2.2)
    Use –help for more information.“ und noch „Connecting to MTM has failed“

    Die Datei sieht so aus:

    client
    dev tun
    proto udp
    remote *******.ddns.net 11945
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    remote-cert-tls server
    tls-version-min 1.2
    verify-x509-name server_MDJLB2BeAgDdWu6D name
    cipher AES-256-CBC
    auth SHA256
    auth-nocache
    verb 3

    —–BEGIN CERTIFICATE—–
    MIIBnzCCAUWgAwIBAgIJAN250fIA/q8rMAoGCCqGSM49BAMCMBMxETAPBgNVBAMM
    CENoYW5nZU1lMB4XDTE5MDEwNjEwMjkwMloXDTI5MDEwMzEwMjkwMlowEzERMA8G
    A1UEAwwIQ2hhbmdlTWUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ83ut8zNRi
    Pc+Mz6jU1wIXAn6intolFYqW7VDCe1zy9dZFINMSRkPldf8SxNc+gdr8NS6Z7ZKa
    BLPt2HsFOgcyo4GBMH8wHQYDVR0OBBYEFJVY3FuUYD/wcasRUBQLIinr+pFbMEMG
    A1UdIwQ8MDqAFJVY3FuUYD/wcasRUBQLIinr+pFboRekFTATMREwDwYDVQQDDAhD
    aGFuZ2VNZYIJAN250fIA/q8rMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoG
    CCqGSM49BAMCA0gAMEUCIQCUzCVRGC4th7inO3IsVf1QF1EbIaXdq+eJQj3c77Cc
    fgIgbM/0bozVHhcWN3/D5Xq7bqv1wjDWKa3wqrNHwK/MXUE=
    —–END CERTIFICATE—–

    —–BEGIN CERTIFICATE—–
    MIIBtTCCAVugAwIBAgIRAJAyLk5Jw2f6lxUmOokgxvIwCgYIKoZIzj0EAwIwEzER
    MA8GA1UEAwwIQ2hhbmdlTWUwHhcNMTkwMTA2MTE0MDEyWhcNMjkwMTAzMTE0MDEy
    WjAOMQwwCgYDVQQDDANNVE0wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASGwkPp
    uTyhS++d49Jaut0St4vhOZeptYj46eAFzDsicp6lTMAoZ5259TQXZLoHTAUqhedm
    e1KJb53GV6Lqa1Cno4GUMIGRMAkGA1UdEwQCMAAwHQYDVR0OBBYEFHgAKAcF23Ro
    t9LBRYqVa6llfmEjMEMGA1UdIwQ8MDqAFJVY3FuUYD/wcasRUBQLIinr+pFboRek
    FTATMREwDwYDVQQDDAhDaGFuZ2VNZYIJAN250fIA/q8rMBMGA1UdJQQMMAoGCCsG
    AQUFBwMCMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBY6yvg5hx70z7O
    AGb7VpYhT5YgBiATJTnddH6Snf4NCQIhAJ5VwEyx0ZFVhpw7nwvncEC/k4wJFowv
    yLVVWKcVquaf
    —–END CERTIFICATE—–

    —–BEGIN ENCRYPTED PRIVATE KEY—–
    MIHjME4GCSqGSIb3DQEFDTBBMCkGCSqGSIb3DQEFDDAcBAh2DhBZiDNbbgICCAAw
    DAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIPuoNeTgfhf8EgZBz4HLux02lrMbu
    NQwrK362BE9Y31p4HsQAupFutfFwKr1R4xrYJORgszGMLTaxoM4vuzAkjwPsW80q
    ZUDzMndyx7NUw1KcGc6vFalYjQQ1EM5pq/RI8atwFHldgB/deRuBSLH1BT81Mb31
    C7p2BhW2TWoxM5U8l7qBBjo1vNSEVMd6r7d9jhWgOl9b/iuRTdQ=
    —–END ENCRYPTED PRIVATE KEY—–

    #
    # 2048 bit OpenVPN static key
    #
    —–BEGIN OpenVPN Static key V1—–
    fc5e9e5159f0d543818e6e92fd20867c
    5dfa65f039c2c3ba0b04338f1bb3dcc9
    6a1dafea1e979005f47bb666b0b36668
    56e9e23a16d1e75563d7001e0203f3ce
    b58b814c50f3677ad863d0eea3d5601c
    23a10b6387125a997dfc576ded72563b
    8a8762bf97d50e8cf982b627b611f9ca
    009cb715408c786b2dab984705779938
    65f2be4a09be84d3f970691ce84f44c4
    4d411aa5a8fe4a7fb4790e04058981a6
    35217c225ad30d99d6eaf75a19962134
    8303cd38d4b7e3a3ce2b1348b1870b0a
    d04a2fce7089c6ec9c15b8895acf3eaf
    c4b39a4ea32af3d777a5f039a597f626
    6616523d8104c478277819ec66a422e0
    e175354ee93f9151c7aa2918f2ab886c
    —–END OpenVPN Static key V1—–

    Auch mit der Android-Version von OpenVPN bekomme ich eine Fehlermeldung:

    „Failed to import profile Connection error“

    Ich weiß nun nicht, ob es an OpenVPN liegt, oder an meiner Portweiterleitung, oder etwas anderem.

    Bei Portscans bekomme ich je nach verwendetem Scanner unterschiedliche Ergebnisse. Allerdings ist allen gemein, dass ich den Port den ich für den Raspberry geöffnet habe nicht finden kann bzw. dieser als blockiert angezeigt wird. Ich kann den Fehler aber nicht finden und kenne mich zu wenig aus, um vom Raspberry aus zu testen, ob der Port frei ist.

    Kannst Du mir hier einen Tip geben?

    Vielen Dank, Marek

    Hier noch die Debug-Datei von OpenVPN:

    ::: Generating Debug Output
    ::: :::
    :: PiVPN Debug ::
    ::: :::
    :: Latest Commit ::
    ::: :::
    commit 95f78aa861761bfe9faa6e34e4b7965266e48ef3
    Merge: 375faa6 0b4464b
    Author: redfast00
    Date: Sat Oct 20 16:13:34 2018 +0100

    Merge pull request #632 from pivpn/test

    Merge test branch
    ::: :::
    :: Recursive list of files in ::
    :: /etc/openvpn/easy-rsa/pki ::
    ::: :::
    /etc/openvpn/easy-rsa/pki/:
    ca.crt
    crl.pem
    Default.txt
    ecparams
    HandyMTM.ovpn
    index.txt
    index.txt.attr
    index.txt.attr.old
    index.txt.old
    issued
    MTM.ovpn
    private
    serial
    serial.old
    ta.key

    /etc/openvpn/easy-rsa/pki/ecparams:
    prime256v1.pem

    /etc/openvpn/easy-rsa/pki/issued:
    HandyMTM.crt
    MTM.crt
    server_MDJLB2BeAgDdWu6D.crt

    /etc/openvpn/easy-rsa/pki/private:
    ca.key
    HandyMTM.key
    MTM.key
    server_MDJLB2BeAgDdWu6D.key
    ::: :::
    :: Output of /etc/pivpn/* ::
    ::: :::
    :: START /etc/pivpn/DET_PLATFORM ::
    Raspbian
    :: END /etc/pivpn/DET_PLATFORM ::
    :: START /etc/pivpn/INSTALL_PORT ::
    11945
    :: END /etc/pivpn/INSTALL_PORT ::
    :: START /etc/pivpn/INSTALL_PROTO ::
    udp
    :: END /etc/pivpn/INSTALL_PROTO ::
    :: START /etc/pivpn/INSTALL_USER ::
    pi
    :: END /etc/pivpn/INSTALL_USER ::
    :: START /etc/pivpn/NO_UFW ::
    1
    :: END /etc/pivpn/NO_UFW ::
    :: START /etc/pivpn/pivpnINTERFACE ::
    eth0
    :: END /etc/pivpn/pivpnINTERFACE ::
    :: START /etc/pivpn/setupVars.conf ::
    pivpnUser=pi
    UNATTUPG=unattended-upgrades
    pivpnInterface=eth0
    IPv4dns=192.168.1.1
    IPv4addr=192.168.1.121
    IPv4gw=192.168.1.1
    pivpnProto=udp
    PORT=11945
    ENCRYPT=256
    APPLY_TWO_POINT_FOUR=true
    DOWNLOAD_DH_PARAM=false
    PUBLICDNS=***********.ddns.net
    OVPNDNS1=46.182.19.48
    OVPNDNS2=213.73.91.35
    :: END /etc/pivpn/setupVars.conf ::
    :: START /etc/pivpn/TWO_POINT_FOUR ::
    :: END /etc/pivpn/TWO_POINT_FOUR ::
    ::: :::
    :: /etc/openvpn/easy-rsa/pki/Default.txt ::
    ::: :::
    client
    dev tun
    proto udp
    remote marekmayer.ddns.net 11945
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    remote-cert-tls server
    tls-version-min 1.2
    verify-x509-name server_MDJLB2BeAgDdWu6D name
    cipher AES-256-CBC
    auth SHA256
    auth-nocache
    verb 3
    ::: :::
    :: Debug Output Complete ::
    ::: :::
    :::
    ::: Debug output completed above.
    ::: Copy saved to /tmp/debug.txt
    :::

    1. Es funktioniert jetzt, ohne dass ich was geändert habe. Vielleicht hat das DynDNS noch nicht richtig gearbeitet.
      Vom PC aus geht es leider nicht, liegt aber am TAP-Treiber. Der lässt sich nicht installieren unter Windows 10 und alles was es an Lösungsansätzen gibt funktioniert bei mir nicht.

      1. Hey Marek,
        schönn, dass es bei dir noch geklappt hat!
        Ich habe den Client jetzt schon auf mindestens 15 verschiedenen Windows 7 und Windows 10 Clients installiert und hatte noch nie Probleme.
        Geht’s bei dir auch unter Android? Die originale App hatte da nämlich zuletzt Probleme, weshalb ich auf eine andere App umgestiegen bin.
        Viele Grüße,
        Dennis

        1. Hallo Dennis,

          heute habe ich den Client noch mal neu auf dem PC installiert und plötzlich hat er auch den TAP richtig installiert. Keine Ahnung, warum das vorher nicht ging.

          Mit Android habe ich keine Probleme, da läuft auch alles.

          Wie kann ich eigentlich testen, ob mein VPN funktioniert?
          Und brauche ich auf dem Raspberry noch eine Firewall oder anderes, außer dem VPN server?

          Vielen Dank und Grüße,

          Marek

          1. Hi Marek,
            prima, das freut mich!
            Auf dem Pi brauchst du keine Firewall mehr installieren, die hast du ja normalerweise im Router und nur den benötigten Port geöffnet.
            Testen kannst du dein Setup ganz einfach, indem du mit deinem Smartphone, Notebook oder was auch immer von extern eine Verbindung aufbaust und versuchst, auf die Ressourcen in deinem Netzwerk zuzugreifen, also den Router aufzurufen, den Raspi oder sonst was.
            Grüße, Dennis

          2. Hallo Dennis,

            sorry, habe dazu noch mehr fragen:

            – Wie kann ich denn testen, ob die Verbindung auch wirklich sicher ist?
            – Wie kann ich testen, unter welcher IP ich verbunden bin, wenn ich z.B. über VPN auf Youtube bin und gesperrte Inhalte sehen möchte?

            Danke für Deine Hilfe und viele Grüße,

            Marek

          3. Hallo Marek,

            ich fürchte, du hast da was falsch verstanden.
            – Also OpenVPN (das ja PiVPN zugrunde liegt) gilt derzeit als sicher. Testen musst du da nichts, der Kanal von draußen zu dir nach hause ins Netzwerk ist immer sicher.
            – Du hast immer die IP-Adresse, die dein Netzwerk daheim hat. Du kannst also keine IP-Adresse aus den USA annehmen, um die z. B. Inhalte anzuschauen, die für DE gesperrt sind. Welche IP-Adresse du hast kannst du einfach gucken, indem du auf Webseiten wie http://www.wieistmeineip.de gehst.

            Das VPN ist eher dafür da, dass du von unterwegs aus auf deine Daten zugreifen kannst oder von mir aus einen sicheren Kanal aufbaust, um in öffentlichen WLANs sicher zu surfen.

            Viele Grüße,
            Dennis

  5. Hallo Dennis

    Top Artikel.
    Jedoch habe ich ein Problem wenn ich nun versuche meinen pc mit der vpn zu verbinden bekomme ich jedes mal eine TLC error habe schon viel gesucht doch leider bis jetzt noch nichts hilfreiches gefunden. hast du vielleicht eine Lösung?

    1. Hi Marcel,
      du kannst mir gerne mal die genaue Fehlermeldung schicken, dann kann ich dir vielleicht mehr sagen. So ist das leider zu unspezifisch.
      Viele Grüße, Dennis

      1. Oh mein fehler meinte TLS.

        Hier die Openvpn Verbindung
        Mon Jan 28 18:38:28 2019 OpenVPN 2.4.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Apr 26 2018
        Mon Jan 28 18:38:28 2019
        Mon Jan 28 18:38:28 2019 library versions: OpenSSL 1.1.0h 27 Mar 2018, LZO 2.10
        Mon Jan 28 18:38:28 2019 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
        Mon Jan 28 18:38:28 2019 Need hold release from management interface, waiting…
        Mon Jan 28 18:38:28 2019 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
        Mon Jan 28 18:38:28 2019 MANAGEMENT: CMD ’state on‘
        Mon Jan 28 18:38:28 2019 MANAGEMENT: CMD ‚log all on‘
        Mon Jan 28 18:38:28 2019 MANAGEMENT: CMD ‚echo all on‘
        Mon Jan 28 18:38:28 2019 MANAGEMENT: CMD ‚bytecount 5‘
        Mon Jan 28 18:38:28 2019 MANAGEMENT: CMD ‚hold off‘
        Mon Jan 28 18:38:28 2019 MANAGEMENT: CMD ‚hold release‘
        Mon Jan 28 18:38:29 2019 MANAGEMENT: CMD ‚password […]‘
        Mon Jan 28 18:38:29 2019 Outgoing Control Channel Authentication: Using 256 bit message hash ‚SHA256‘ for HMAC authentication
        Mon Jan 28 18:38:29 2019 Incoming Control Channel Authentication: Using 256 bit message hash ‚SHA256‘ for HMAC authentication
        Mon Jan 28 18:38:29 2019 MANAGEMENT: >STATE:1548697109,RESOLVE,,,,,,
        Mon Jan 28 18:38:29 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]95.222.27.227:11948
        Mon Jan 28 18:38:29 2019 Socket Buffers: R=[65536->65536] S=[65536->65536]
        Mon Jan 28 18:38:29 2019 UDP link local: (not bound)
        Mon Jan 28 18:38:29 2019 UDP link remote: [AF_INET]95.222.27.227:11948
        Mon Jan 28 18:38:29 2019 MANAGEMENT: >STATE:1548697109,WAIT,,,,,,
        Mon Jan 28 18:39:29 2019 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
        Mon Jan 28 18:39:29 2019 TLS Error: TLS handshake failed

        und hier noch der Debug output
        ::: Generating Debug Output
        sudo: Hostname raspi kann nicht aufgelöst werden
        ::: :::
        :: PiVPN Debug ::
        ::: :::
        :: Latest Commit ::
        ::: :::
        commit 95f78aa861761bfe9faa6e34e4b7965266e48ef3
        Merge: 375faa6 0b4464b
        Author: redfast00
        Date: Sat Oct 20 16:13:34 2018 +0100

        Merge pull request #632 from pivpn/test

        Merge test branch
        ::: :::
        :: Recursive list of files in ::
        :: /etc/openvpn/easy-rsa/pki ::
        ::: :::
        /etc/openvpn/easy-rsa/pki/:
        ca.crt
        CipiHandy.ovpn
        crl.pem
        Default.txt
        dh2048.pem
        index.txt
        index.txt.attr
        index.txt.attr.old
        index.txt.old
        issued
        laptop.ovpn
        MarcelHandy.ovpn
        PC.ovpn
        private
        serial
        serial.old
        ta.key

        /etc/openvpn/easy-rsa/pki/issued:
        CipiHandy.crt
        laptop.crt
        MarcelHandy.crt
        PC.crt
        server_2mWlfmUkxi8uWRoR.crt

        /etc/openvpn/easy-rsa/pki/private:
        ca.key
        CipiHandy.key
        laptop.key
        MarcelHandy.key
        PC.key
        server_2mWlfmUkxi8uWRoR.key
        ::: :::
        :: Output of /etc/pivpn/* ::
        ::: :::
        :: START /etc/pivpn/DET_PLATFORM ::
        Raspbian
        :: END /etc/pivpn/DET_PLATFORM ::
        :: START /etc/pivpn/INSTALL_PORT ::
        11948
        :: END /etc/pivpn/INSTALL_PORT ::
        :: START /etc/pivpn/INSTALL_PROTO ::
        udp
        :: END /etc/pivpn/INSTALL_PROTO ::
        :: START /etc/pivpn/INSTALL_USER ::
        pi
        :: END /etc/pivpn/INSTALL_USER ::
        :: START /etc/pivpn/NO_UFW ::
        1
        :: END /etc/pivpn/NO_UFW ::
        :: START /etc/pivpn/pivpnINTERFACE ::
        eth0
        :: END /etc/pivpn/pivpnINTERFACE ::
        :: START /etc/pivpn/setupVars.conf ::
        pivpnUser=pi
        UNATTUPG=unattended-upgrades
        pivpnInterface=eth0
        IPv4dns=192.168.1.1
        IPv4addr=192.168.1.19
        IPv4gw=192.168.1.1
        pivpnProto=udp
        PORT=11948
        ENCRYPT=2048
        APPLY_TWO_POINT_FOUR=false
        DOWNLOAD_DH_PARAM=false
        PUBLICDNS=safeplace.ddnss.de
        OVPNDNS1=1.1.1.1
        OVPNDNS2=1.0.0.1
        :: END /etc/pivpn/setupVars.conf ::
        ::: :::
        :: /etc/openvpn/easy-rsa/pki/Default.txt ::
        ::: :::
        client
        dev tun
        proto udp
        remote safeplace.ddnss.de 11948
        resolv-retry infinite
        nobind
        persist-key
        persist-tun
        key-direction 1
        remote-cert-tls server
        tls-version-min 1.2
        verify-x509-name server_2mWlfmUkxi8uWRoR name
        cipher AES-256-CBC
        auth SHA256
        auth-nocache
        verb 3
        ::: :::
        :: Debug Output Complete ::
        ::: :::
        :::
        ::: Debug output completed above.
        ::: Copy saved to /tmp/debug.txt
        :::

        und danke für die Hilfe.
        Grüße Marcel

          1. das heist ich müsste nur mein pi in einem anderen netzwerk anschließen also z.b ein hub vor meinem router ?
            bin noch nicht so hundert prozent in der Materie ^^.

          2. Du hast da einen Denkfehler, Marcel!
            Natürlich kannst du in deinem eigenen Netzwerk viele spannende Dinge mit dem Pi machen (paar davon hab ich ja auch schon beschrieben), aber ein VPN-Server dient dazu, dass du von z. B. unterwegs auf die Geräte zugreifen kannst, die in deinem Netzwerk daheim sind.
            Also stell dir einfach vor, du hast ein NAS daheim stehen oder sonstwas und du willst von der Uni, der Arbeit oder einem Hotel aus auf die Daten auf diesem NAS zugreifen. Genau dafür installierst du dir eben auf dem Pi PiVPN und stellst dein Netzwerk entsprechend ein. Von außen wählst du dich also ein und der Pi kümmert sich darum, dass du auf dein NAS zugreifen kannst.
            Wenn du daheim bist, brauchst du also kein VPN 😉

            Viele Grüße,
            Dennis

  6. Hallo Dennis,
    aufgrund Deiner super Beschreibung habe ich mir immer Sommer einen PI zugelegt und PIVPN darauf installiert.
    Dies lief bis vor kurzem auch problemlos.
    Jetzt wollte ich aus dem Urlaub auf meinen Rechner zugreifen und siehe da, ich komme weder per OpenVPN App (IPad) noch über meinen PC in mein Netzwerk, obwohl weder am PIVPN, den OpenVPN Einstellungen noch an den Freigaben in der Fritzbox 6490 etwas geändert wurde – einziges Problem, ich habe den PI länger nicht runtergefahren und dies war heute nur mittels Stromunterbrechung möglich.
    Kann es sein, dass PIVPN auch beim Stromabschalten etwas nicht gelöscht hat und somit der Zugriff nicht mehr möglich ist?
    Die gesammelten Angaben werden gem. Log richtig aufgelöst und es scheint auch eine Verbindung zum PI (oder doch nur zur Fritzbox) zu geben aber danach kommt der Hinweis – EVENT: CONNECTION_TIMEOUT
    Hast Du evtl. einen Tipp für mich oder muss ich PIVPN komplett neu aufsetzen?
    Danke und Gruß
    Manfred

    1. Hi Manfred,

      das liest sich für mich eher, als wäre dein Pi einfach abgestürzt. Das sollte bei Linux zwar eher selten vorkommen, passieren kann es aber natürlich trotzdem mal. Eigentlich solltest du ja den Pi über den Desktop oder die Console korrekt runterfahren. Wenn das nicht möglich war, weil ein Login auch lokal z. B. nicht mehr geklappt hat, dann spricht das für meine Theorie oben.
      Geht es denn wieder, seitdem du den Pi mal neu gebootet hast?

      Viele Grüße,
      Dennis

      1. Hallo Dennis,

        Danke für Deine Antwort.
        Nein, leider hat das booten, mittlerweile mehrfach, nicht geholfen. Ich habe auch neue User angelegt – ebenfalls keine Änderung.
        Werde jetzt den Server neu aufsetzen und hoffen, dass danach alles wieder funktioniert.
        Hast Du evtl. eine Scriptfolge, den den Pi automatisch einmal am Tag durchstartet, über VNC habe ich keine Einstellungsmöglichkeiten gefunden.
        Gruß Manred

  7. Hallo Dennis,

    vielen Dank für die tolle Anleitung.

    Eine Frage habe ich hierzu allerdings. Ich habe nirgends gelesen, ob es sich bei PiVPN um eine PKI (Public Key Infrastruktur) oder um eine PSK (Pre Shared Key) handelt. Letztere soll ja angeblich unsicher und relativ einfach zu knacken sein?!? Beinhaltet die .OVPN Datei, welche auf den Clients importiert werden muss, den öffentlichen Schlüssel für eine PKI, oder ist da der eine Teil des Schlüsselpaars für die PSK Variante enthalten? Wenn es eine PKI ist, wo ist dann die CA dafür?

    Achso und zu 2048 oder 4096 Bit. Wann macht sich das in der Performance bemerkbar ob ich 2048 oder 4096 Bit verwende? Nur bei der Erstellung des Schlüssels (also einmalig ein paar Stunden mehr bis er erstellt ist), oder geht auch die Performance in die Knie bei der täglichen Nutzung des VPN auf einem Raspi 3 wenn man 4096 nutzt? Hast Du oder jemand hier im Forum da Erfahrung?

    Danke und Grüße, Michael

  8. HI,

    deine Seite finde ich super! Ich habe eine Frage ich habe OMV (openmediavault) installiert und dann OPENVPN danach hat auch alles geklapt bis auf mit dem Benutzer. Einerseits sagte erder Beutzer Exestiert schon tut er auch, aber r konnte nicht angelegt werden da der Pfad nicht exestiert ? wie geht das ? was mache ich dagegen? Ich habe mich auf dem PI als root benutzer angemldet um es mit Putty zu verwalten. Aber wenn ich mich damit bei Filezilla anmelde gibt es eine Hone directory… Also finde ich auch da kein OpenVPn config datei für den User. Also was tun?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.