Raspberry Pi VPN – Teil 4: VPN-Server unter IPv4

Raspberry Pi VPN

Dieser Artikel beschreibt wie wir einen VPN-Tunnel auf Basis von IPv4 einrichten. Das geht natürlich nur, wenn man am eigenen Internet Router auch eine öffentliche IPv4 Adresse anliegen hat. Wer hier Zweifel hat, der lese bitte nochmal den vorangegangenen Artikel IPv4 versus IPv6. Wessen Router vom Internet Service Provider lediglich eine IPv6 Adresse als DS-Lite Anschluss zugewiesen bekommt, der braucht hier nicht weiter zu lesen. Um IPv6 kümmere ich mich in den nachfolgenden Artikeln. Also nochmal ganz deutlich: Hier bauen wir mit Hilfe eines Raspberry Pi einen VPN-Server auf, der IPv4 Daten durch einen IPv4 Tunnel transportiert. Warum man das zur Verbesserung der Datensicherheit seines Smartphones machen sollte und wie ein Virtual Private Network funktioniert, kann man in den ersten beiden Artikeln nachlesen.

Was wird benötigt

Nach drei eher theoretischen Artikeln, wird nun richtig installiert und konfiguriert. Aber schauen wir erstmal, was wir dazu brauchen:

  • Einen Raspberry Pi 3 oder neuer. Es geht sicher auch mit einem Raspi 2, aber der hat kein WLAN on board.
  • Einen LAN oder WLAN Anschluss für den Raspberry Pi im eigenen Heimnetzwerk.
  • Eine öffentliche IPv4 Adresse am Internet Router, die aber wechseln darf.
  • Einen DDNS-Provider (das wird in diesem Artikel weiter unten erklärt)
  • Ein Andriod Smartphone als äußeren Tunnelendpunkt. Die Konfiguration erfolgt in einem späteren Artikel.

Vorarbeiten

Raspberry Pi Grundkonfiguration

Kümmern wir uns zuerst um den Raspberry Pi. Wie man dessen Betriebssystem Raspbian aufspielt und grundsätzlich einrichtet, habe ich bereits öfter in meinem Blog beschrieben, so dass ich hier auf einen früheren Artikel verweise und nur kurz die Schritte dazu aufzähle.

  • Raspbian downloaden, und zwar die aktuelle Lite-Version. Wir werden den RasPi per SSH administrieren und brauchen keinen grafischen Desktop. Ich verwende Raspbian Stretch Lite in der Version vom 13.11.2018, aber jede neuere Version dürfte ebenso gut funktionieren.
  • Raspbian entpacken und auf die SD-Karte schreiben.
  • SSH aktivieren
  • WLAN konfigurieren (nur falls WLAN verwendet werden soll, wer den RasPi per Kabel ans LAN anschließt, kann diesen Schritt überspringen.
  • SD-Karte in den Raspberry Pi stecken und Raspi hochfahren.
  • Per SSH am RasPi anmelden. (Rechnername: raspberrypi, Username: pi, Passwort: raspberry)
  • In raspi-config das Passwort ändern, einen anderen Hostnamen vergeben und die Localisation Options an deutsche Verhältnisse anpassen.
  • Raspberry Pi neu booten.

Software richten wir jetzt noch nicht ein – zuerst braucht es ein paar weitere Vorarbeiten.

Dynamisches DNS einrichten

Dynamischem DNS habe ich mich ausführlich im vorhergegangenen Artikel gewidmet. Deshalb hier nur kurz:
Privatkunden erhalten von Ihren Internet Service Providern in der Regel keine feste IP-Adresse, sondern Adressen, die täglich wechseln. Wenn wir nun vom Smartphone aus einen VPN-Tunnel ins heimische Netz aufbauen wollen, müssen wir am Smartphone Kenntnis über die gerade aktuelle Adresse haben. Deshalb bedienen wir uns der Hilfe eines DDNS-Dienstleisters im Internet, der uns jederzeit Auskunft über die aktuell am Heimrouter anliegende IP-Adresse geben kann.

Account bei einem DDNS-Dienstleister einrichten

Solche DDNS-Services können beispielsweise sein:

  • MyFRITZ! für alle Nutzer einer Fritz!Box. Wer über eine Fritz!Box mit dem Internet verbunden ist, der hat einen DDNS-Dienst quasi schon mit dabei. In der Konfigurationsoberfläche der Fritz!Box kann ein My!FRITZ-Konto eingerichtet werden mit Mailadresse, Nutzernamen und Passwort um damit die Fritz!Box aus dem Internet administrieren zu können. Darüber können wir aber auch die IP-Adresse der Fritz!Box erfahren. My!FRITZ ist kostenfrei.
  • Wer eigene Webseiten bei einem entsprechenden Provider hosten lässt, der kann dort mal nachsehen, ob nicht etwa ein DDNS-Dienst mit zum Dienstleistungsumfang gehört. Wenn ja, dann hat das den Vorteil, dass es nichts zusätzlich kostet, dass wir eine Subdomäne unserer eigenen Domäne nutzen können und dass keine regelmäßigen Aktivierungen nötig sind. All-Inkl kann das zum Beispiel.
  • Für diejenigen, die keinen der beiden vorgenannten Varianten nutzen können oder wollen, finden sich zahlreiche Anbieter im Internet. einfach mal googeln nach „DDNS Anbieter„. Im Internet finden sich auch entsprechende Vergleichslisten. Die einzelnen Anbieter unterscheiden sich in folgenden Punkten: Manche sind kostenpflichtig, andere fordern statt dessen, dass man sich in regelmäßigen Abständen online in seinem DDNS Account einloggen muss. Es gibt auch DDNS Dienstleister, die neben IPv4 auch IPv6 anbieten, was für diesen Anwendungsfall aber nicht erforderlich ist.

Allen dynamischen DNS Services ist gemein, dass man als Nutzer dort eine Subdomäne registriert – manchmal kann man dabei sogar zwischen verschiedenen Hauptdomänen wählen. Der eigene Internet Router meldet dann bei jedem Wechsel die aktuelle IP-Adresse an den Dienst und wir können diese dann unter dem Namen der Subdomäne jederzeit abfragen.

Wir melden uns also zuerst beim DDNS-Dienstleister unserer Wahl an, legen eine Subdomäne an und erhalten für unseren Account einen Nutzernamen und ein Passwort.

So sieht das zum Beispiel bei All-Inkl aus

Internet Router für DDNS konfigurieren

Nun können wir unseren Router so konfigurieren, dass er die eigene IP-Adresse bei jeder Änderung hochladen kann. Bei einer Fritz!Box erfolgt das über die Menüpunkte Internet – Freigaben – Dynamic DNS. Hier können wir die Zugangsdaten zum oben eingerichteten DDNS-Dienst eintragen. Andere Router bieten ähnliche Konfigurationsmöglichkeiten für DDNS.

Beispiel DDNS Konfiguration für All-Inkl auf einer Fritz!Box

Portfreigabe einrichten

Es genügt nicht, den Subdomänen-Namen unseres Routers zu kennen oder dessen IP-Adresse, um aus dem Internet in unser internes Heimnetz gelangen zu können. Damit das möglich wird, müssen wir am Router dafür eine Freigabe einrichten. Die kann bei einer Fritz!Box wie folgt aussehen:

Die Eingabemaske erreichen wir auf einer Fritz!Box unter Internet – Freigaben – Portfreigaben – Neue Portfreigabe. Dort wählen wir Andere Anwendungen und geben der Freigabe einen Namen. Wichtig sind die folgenden Eingaben. Wir verwenden UDP und nicht die Vorgabe TCP und tragen bei allen Port-Feldern 1194 ein, denn das ist der Port, den OpenVPN üblicherweise verwendet. Und als Computer wird unser Raspberry Pi eingetragen. Der Router wird also künftig ankommende Pakete auf Port 1194 direkt an den VPN-Server weiterleiten. Alle anderen Ports bleiben weiterhin blockiert.

Zu kompliziert? Zu trockene Materie? Zu viel schwierige Netzwerk-Technik? Dann hier vielleicht mal kurz unterbrechen und vorab einen Blick in Artikel 11 werfen! Dort gibts zur Wiederholung und Vertiefung ein paar übersichtliche Netzwerkdiagramme.

PiVPN Server installieren

PiVPN ist eine Scriptsammlung, die es wesentlich vereinfacht, OpenVPN auf einem Raspberry Pi zu installieren. Und OpenVPN ist die Software, die unseren Raspberry Pi zum VPN-Server macht.
Wir verbinden uns per SSH mit dem Raspberry Pi und aktualisieren zuerst einmal die vorhandene Installation:

sudo apt update
sudo apt upgrade

Dann wird mit folgendem Kommando PiVPN heruntergeladen und die Installation gestartet.

curl -L https://install.pivpn.io | bash

Die Bildergalerie zeigt die einzelnen Abfragen im Installationsvorgang. Die meisten davon können wir einfach mit Ok bestätigen, die Besonderheiten spreche ich nochmal explizit an:

PiVPN übernimmt die aktuellen Netzwerkeinstellungen und macht aus der IP-Adresse, auch wenn diese per DHCP zugeordnet wurde, eine statische Adresse. Das können wir einfach so bestätigen. In den Einstellungen am DHCP-Server (unser Internet Router) müssen wir nur Vorsorge tragen, dass der diese Adresse nicht einem anderen Gerät zusätzlich zuordnen möchte. Das können wir auf zwei Arten erreichen: einmal, in dem DHCP diese IP-Adresse fest dem Raspberry Pi zuordnet oder alternativ, in dem diese IP-Adresse aus dem Pool der zu vergebenden Adressen ausgenommen wird. Ich bevorzuge die erste Variante, alle meine Raspberry Pis bekommen per DHCP eine feste IP-Adresse.

Beim Netzwerkprotokoll bleiben wir bei UDP und der Port bleibt auf 1194. Das entspricht auch unseren Einstellungen am Router. Auch den Verschlüsselungsgrad können wir übernehmen. Interessant wird es bei der folgenden Abfrage:

Hier geht es um die öffentliche IP-Adresse. Die ändert sich bekanntlich täglich, deshalb können wir hier keine feste IP-Adresse eintragen, sondern nehmen die untere Variante, einen öffentlichen DNS-Eintrag zu nutzen.

Dessen Namen geben wir dann auf der nächsten Seite ein und das ist natürlich die Subdomäne, die wir von unserem DDNS-Anbieter vergeben bekommen haben. Als nächstes wird abgefragt, welchen DNS Provider (Server) der VPN-Server verwenden soll.

Hier ist es wichtig, nicht die Vorgabe Google zu nehmen. Wir wollen ja durch die Verwendung eines VPN-Tunnels ein Tracking durch Datenkraken wie Google erschweren. Da wäre es kontraproduktiv, wenn wir Google alle unsere DNS Abfragen mitteilen. Hier also Custom auswählen!

Und auf der nächsten Seite können wir dann einen oder mehrere DNS-Server von Hand eintragen. Zu dieser Auswahlmöglichkeit muss ich ein bisschen was erklären: Wir könnten theoretisch alternative freie DNS-Server verwenden, wie zum Beispiel:

  • 146.185.167.43 für SecureDNS und
  • 194.150.168.168 für den Chaos Computer Club

Im Internet findet man noch weitere DNS-Server, die nicht mittracken. Aber das ist nicht die optimale Konfiguration, denn diese externen DNS-Server kennen nicht die Namen unserer internen Geräte im heimischen LAN. Wer also per VPN-Tunnel später auf seinen eigenen Fileserver oder einen anderen Raspberry Pi im Heimnetz zugreifen möchte, der trägt seinen eigenen Router als DNS-Server ein. Der versorgt sich dann seinerseits für externe Domänennamen bei DNS-Servern im Internet. (Hoffentlich nicht bei Google, sondern bei DNS-Servern des Internet Providers. Am besten mal kontrollieren!)

All diejenigen, die zusätzlich zu PiVPN auch noch Pi-Hole installieren werden, was sehr sinnvoll ist, die müssen nochmal umdenken. Pi-Hole – jetzt greife ich etwas vor – soll ja Trackingdienste blockieren und Pi-Hole macht das, in dem es sich in die Namensauflösung des Raspberry Pi einschleift. Also eigentlich müssten wir hier für Pi-Hole die IP-Adresse des Pi-Hole Servers – also die eigene IP-Adresse des Raspberry Pi eintragen. Das werden wir später auch tun, aber damit der VPN-Tunnel bereits vor der Installation von Pi-Hole getestet werden kann, bleiben wir einstweilen dabei jetzt die interne IP-Adresse des Routers einzutragen. Wer die interne IP-Adresse seines Routers nicht kennt, der kann sie abfragen mit:

ip route
default via 192.168.0.1 dev wlan0 src 192.168.0.167 metric 303 
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.167 metric 303

Die IP-Adresse des eigenen Routers steht dann hinter default via.

Damit ist die Installation von PiVPN auch schon abgeschlossen und wir sollten den Raspberry Pi einmal durchbooten.

VPN Client anlegen

Die Installation des eigentlichen OpenVPN Clients erfolgt natürlich als App am Smartphone, die Konfiguration nehmen wir aber in weiten Teilen bereits hier am Server vor. Das hat den Vorteil, dass wir danach eine einzige Konfigurationsdatei auf das Smartphone übertragen und dort keine ellenlangen Schlüssel eintippen müssen.
Für jeden VPN-Client, also jedes Smartphone, legen wir wie folgt mit pivpn add eine VPN-Client-Konfiguration an:

$ pivpn add
Enter a Name for the Client:  SamsungS7
Enter the password for the client: ******* 
Enter the password again to verify: *******
spawn ./easyrsa build-client-full SamsungS7

Note: using Easy-RSA configuration from: ./vars
Generating an EC private key
writing new private key to '/etc/openvpn/easy-rsa/pki/private/SamsungS7.key.PNlzNH3SEk'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/openssl-easyrsa.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'SamsungS7'
Certificate is to be certified until Jan 18 15:43:04 2029 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated
Client's cert found: SamsungS7.crt
Client's Private Key found: SamsungS7.key
CA public Key found: ca.crt
tls-auth Private Key found: ta.key


========================================================
Done! SamsungS7.ovpn successfully created! 
SamsungS7.ovpn was copied to:
  /home/pi/ovpns
for easy transfer. Please use this profile only on one
device and create additional profiles for other devices.
========================================================

Wir brauchen lediglich einen Namen und ein Passwort zu vergeben und PiVPN generiert ein entsprechendes Client-Profil. Die vorhandenen Profile können wir auflisten mit:

$ pivpn list

: NOTE : The first entry should always be your valid server!

::: Certificate Status List :::
 ::  Status  ||   Name   :: 
     Valid   ::   server_75rZ9EcQAbEYDuvV
     Valid   ::   SamsungS7

Neben dem Server gibt es hier im Beispiel einen einzigen Client mit dem Namen SamsungS7 und für den hat PiVPN eine Konfigurationsdatei im Verzeichnis /home/pi/ovpns abgelegt.

$ ls ovpns
SamsungS7.ovpn

Diese Datei müssen wir nun auf unser Smartphone übertragen. Dafür ist es vielleicht erst mal sinnvoll, sie vom Raspberry Pi auf den PC zu übertragen. Dazu braucht am RasPi weder FTP noch Samba eingerichtet werden, von einem Linux-Rechner aus geht das per SFTP, was auf SSH aufbaut. Im Linux-Dateimanager gehen wir auf Mit Server verbinden und tragen folgende Serveradresse ein:

sftp://pi@raspi167/home/pi

Anstelle meines raspi167 muss natürlich der eigene Name des Raspberry Pi eingegeben werden. Dann können wir in gewohnter Weise mit der grafischen Oberfläche auf den Raspberry Pi zugreifen und die Datei kopieren.

Auf das Smartphone bekommen wir die Datei dann in dem wir das Smartphone per USB anstecken. Alternativ können wir die Datei auch per E-Mail aufs Handy schicken. Weiter geht es dann mit der Installation einer VPN-Client-App am Smartphone.

Weitere Artikel in dieser Kategorie:

60 Kommentare

  1. Readley Allahwerdi

    Hallo Herr Karger,
    vielen Dank für den spannenden Artikel, den ich bis zum Start in Teil 4 zu gern umsetzen würde.
    Aber leider habe ich einen IPv4-Kabelanschluss und nutze die FB7590 im Client-Modus, da ich am gestellten KabelModem keine Konfiguration vornehmen kann.
    Dennoch müsste es doch möglich sein auch hier eine VPiN-Hole-Variante einrichten zu können und ich wäre Ihnen sehr dankbar, wenn Sie dies in etwa beschreiben könnten.
    Vielen Dank

    Antworten
    1. Helmut (Beitrag Autor)

      Also IPv4 ist ja schon mal gut. Allerdings ist es von Nöten, dass am Internetrouter konfiguriert wird. Es muss ein Zugang per IPv4 aus dem Internet ins Heimnetz erlaubt werden. Und typischerweise wird das (berechtigterweise) durch den Internetrouter oder die Kabelbox blockiert. Wenn das bei Ihnen aber nur ein Kabelmodem ist, das selbst keine Firewallfunktion hat, dann sollte sich ja so wie im Artikel beschrieben, alles an der Fritzbox konfigurieren lassen.

      Antworten
  2. errut

    hallo, habe auf meiner FB6590 ein MyFritzkonto: was trage ich unter public dns name ein ?

    Antworten
    1. Helmut (Beitrag Autor)

      Da änderst Du nichts. Public DNS hat weder mit MyFritz noch mit VPN was zu tun.

      Antworten
  3. w-man

    Moin!

    Mein PiVPN läuft, ich kann mich über mein Smartphone von außerhalb verbinden und surfen. Auf dem Pi läuft noch ein kleiner Webserver, der das Bild einer Kamera streamt (motion).
    Wie muss ich die ganze Chose konfigurieren, dass ich nur über VPN auf den Webserver zugreifen kann, sprich, ohne Portfreigabe (8081) in der Fritzbox oder ist das nicht möglich? Ich suche mir schon ’nen Wolf…

    Grüße und danke!

    Antworten
    1. Helmut (Beitrag Autor)

      Wenn an der Fritzbox nur der Port für das VPN freigegeben ist, dann erfolgt zwangsweise jeglicher Zugriff von außen ins heimische LAN über das VPN. Also auch der auf den Web-Server. Wenn 8081 der Port des Web-Servers ist, dann braucht der natürlich nicht an der Fritzbox freigegeben werden. Wenn das VPN funktioniert, dann muss nichts weiter konfiguriert werden, Sie können alles im LAN per VPN erreichen. Wo genau liegt denn das Problem?

      Antworten
  4. w-man

    Das Problem ist, dass ich, wenn der Port in der FB nicht freigegeben ist, über das VPN nicht (per Browser) auf den Webserver zugreifen kann. Der Webserver läuft auf dem Raspi, auf dem auch das VPN läuft.

    Antworten
  5. w-man

    Edith:

    Ich nutze für den Zugriff OpenVPN for Android.

    Antworten
    1. Helmut (Beitrag Autor)

      Wenn das VPN steht, dann ist das Smartphone ja bereits am Raspberry Pi drauf – ich sehe also keinen Grund, warum der Webserver dort nicht erreichbar sein sollte.
      Da brauche ich mehr Informationen:
      Welches ist denn der Port für das VPN?
      Und wie adressieren Sie denn den Raspberry Pi im Browser am Smartphone?
      Ist Pi-Hole installiert?

      Antworten
  6. w-man

    Den Port habe ich auf 1200 geändert. Die Adresse im Browser ist der Name der Fritzbox, den ich über die aktivierte, aber nicht genutzte VPN Funktion der Fritzbox habe, also blablubmyfritz.net:8081. PiHole ist nicht installiert…

    Antworten
    1. Helmut (Beitrag Autor)

      Ok 1200 ist der Port für das VPN und 8081 für das Streaming zum Webserver.

      Aber im Browser kann der Webserver jetzt direkt angesprochen werden, weil der Client per VPN ja schon im Netz ist.
      Also IP des Raspberry:8081 oder interner Name des Raspberry:8081

      Antworten
  7. w-man

    Helmut, Du bist ein VPN-Gott!!!!
    (wie blöd kann man eigentlich sein? Ich rege mich auf und es geht! :-) )

    Antworten
    1. Helmut (Beitrag Autor)

      Ja manchmal ist es einfacher, als man denkt. ;-)

      Antworten
  8. Tom

    Vielen Dank für die Super Anleitung – Nachdem jetzt PiHole und OpenHab läuft kommt jetzt die Perfektionierung mit ein VPN, um alles Remote steuern zu können. Top – Dank der ausführlichen Anleitung hat alles im ersten Schritt funktioniert ;-).

    Gruß
    Tom

    Antworten
  9. Tim

    Hallo Helmut, danke für diese Anleitung.
    ich würde dieser gerne folgen und überlege mir gerade, da ich ein Netzwerk-Anfänger bin, ob ich in der „DDNS konfigurieren“ meiner FB7590 die Daten meines MyFRITZ! Konto eintragen muss? Dabei ist der Domain Name dann: ösalkdfjöoie.myfritz.net und was ist dann die Update-URL? z.B. https://ösalkdfjöoie.myfritz.net;84576 für den MyFRITZ!-Internetzugang? Also muss ich zusätzlich noch unter FRITZ!Box-Dienste den Internetzugang freigeben?

    Antworten
    1. Helmut (Beitrag Autor)

      Nein, Du legst über die Fritzbox ein MyFritz Konto an – das hast Du vermutlich schon gemacht. Dann machst Du an der FritzBox eine MyFritz-Freigabe. Um eine Updateadresse brauchst Du Dich nicht kümmern, das macht die FritzBox alleine. Eine Freigabe wird auch angelegt, nur soweit ich es kenne für TCP. Du machst dann einfach eine für UDP dazu.
      Aber prüfe bitte vorher, ob Du wirklich IPv4 an Deiner Fritzbox hast.

      Antworten
  10. tim

    Hallo Helmut,
    diese Fritz Freigabe war mir vorher nicht ersichtlich, danke. Jodoch kann ich nur eine UDP Freigabe unter Portfreigabe einstellen, nicht unter MyFritz!-Freigabe. Ist das dann ok, dass ich eine MyFritz!-Freigabe mit TCP und eine Portfreigabe innerhalb der MyFritz! Freigabe einstelle – so sieht es für mich aus – mit UDP für den Port 1194 habe?

    Und noch eine Frage für mein Projekt:
    für meinen Server habe ich Nextcloud auf meinen Server und Handy installiert. Damit ich eine SSL verbindung habe wollte ich die Ports 80, 443 für Letsencrypt freigeben. kann ich das einfach mit freigeben und es läuft alles OpenVPN mit?
    ich hoffe diese Frage ist ok und du verstehtst was ich meine.

    Antworten
    1. Helmut (Beitrag Autor)

      Genau, unter Portfreigaben solltest Du die TCP-Freigabe sehen, die MyFritz angelegt hat. Und da fügst Du eine für UDP dazu.

      Wenn Dein Handy per OpenVPN-Tunnel Verbindung zum Heimnetz hast, dann brauchst Du für weitere Dienste, die zwischen Handy und Geräten im Heimnetz laufen, keine weiteren Freigaben. Dein Handy ist per Tunnel quasi Teilnehmer in Deinem Heimnetz, hat die FritzBox also bereits passiert, so dass Du nichts Zusätzliches mehr freigeben musst.

      Antworten
  11. Tim

    Ok, das mit dem Port ist mir damit verständlich, danke.
    Und die Verbindung steht mit dem einfachen VPN tool meines Handys.

    wie kann ich: Der versorgt sich dann seinerseits für externe Domänennamen bei DNS-Servern im Internet. (Hoffentlich nicht bei Google, sondern bei DNS-Servern des Internet Providers. Am besten mal kontrollieren!)
    umgehen das mein i-anbieter bei google seine server mietet? ich finde bei d1 keinen hinweis auf diese dns server, also keine bestimmten. Ist der des CCC nicht sinnvoller?

    Antworten
    1. Helmut (Beitrag Autor)

      Große Internet Provider haben eigene DNS-Server, da würde ich mich nicht sorgen. Nur wenn Sie unbedingt selber einen DNS-Server eintragen wollen, dann nehmen Sie besser CCC statt Google. ;-)

      Antworten
  12. Tim

    Hallo Helmut,
    eine etwas sehr einfache Frage: die Datei die du erzeugt hast heßt: SamsungS7?
    Da ich mir keine grafische Oberfläche installierte muss ich die Datei in ein anderes Verzeichnis kopieren.

    Antworten
    1. Helmut (Beitrag Autor)

      Ok, und was ist jetzt die Frage?
      Bei mir heißt die Datei in der Tat so, aber Du kannst sie natürlich nennen, wie Du willst.
      Du brauchst sie auch nicht in ein anderes Verzeichnis kopieren, sondern auf Deinen VPN-Client, also zum Beispiel Dein Smartphone.
      Auf dem Raspberry Pi ist dazu auch keine grafische Oberfläche nötig, das funktioniert von einem anderen Linux- (oder auch Windows) PC aus, so wie oben beschrieben. Der Screenshot ist von einem Ubuntu-Rechner.

      Antworten
  13. Tim

    Hallo Helmut,
    ich kopiere mit die Datei auf den Server damit ich diese auf dem Endgerät habe.
    Aber egal, das klappt schon.

    Ich habe eher das Problem, dass in der Datei nur eine IP steht und nix weiter.
    Auch kann die Client Software die Datei nur erkenne wenn ich: xxxx.opvn den Namen der Datei ändere – ist das so? Ich nutze OpenVPN auf meinem IPhone.
    Auch steh in der Datei nur eine IP Adresse und ich bekomme beim einlesen in OpenVPN eine FEhlermeldung: Failed to Import Profile. option_error: remote option not specifed

    Antworten
    1. Helmut (Beitrag Autor)

      Tim, in der .ovpn Datei steht nur das drin, was Du vorher konfiguriert hast. Wenn das nicht den Erwartungen entspricht, dann mach den Konfigurationsvorgang besser nochmal. Zu IPhones kann ich nichts sagen, aber alle Clients, die mir unter Android unter gekommen sind, lassen es zu, .ovpn mit beliebigem Namen zu importieren.

      Antworten
  14. Marco

    Da jetzt WireGuard standardmäßig bei piVPN empfohlen wird habe ich das genommen. Ändert sich dann was an der Portweiterleitung? D.h. muss man für WireGuard andere Ports weiterleiten als 1194? Bei mir steht was von 51820. Wäre das dann auch UDP?

    Antworten
  15. Marco

    Habs schon rausgefunden. Jetzt geht es. 51820 UDP wenn WireGuard anstatt OpenVPN verwendet wird.

    Antworten
    1. Helmut (Beitrag Autor)

      Das dürfte keine Rolle spielen, solange Server und Client den selben Port benutzen.

      Antworten
  16. tim

    Hallo Helmut,
    danke für die Anleitung. bei mir läuft alles, soweit ich das beurteilen kann.
    Jedoch habe ich beim OpenVPN Connect Client den Fall, dass mir die VPN Verbindung im Mobilenbereich, nicht WLan, nicht als VPN Verbindung angezeigt wird, im Wlan betrieb schon. Liegt das am iOS oder ist dem generell so?
    In dem Log der App steht schon: connect to xxxxxxx.xxx.net (159.159.1321.131) via / UDPv4 on networkextensontun/45.4.4.4/ gw=(/).
    kann ich davon ausgehen das alles läuft?
    oder besser wie kann ich es genau prufen??????

    Antworten
    1. Helmut (Beitrag Autor)

      Ich hab leider kein IOS, dass ich es vergleichen könnte, aber wenn er connect sagt, dann dürfte das sicher stimmen. Du kannst versuchen vom Smartphone ein Gerät in Deinem Heimnetz anzusprechen (per Ping zum Beispiel) – wenn der Tunnel nicht stehen würde, dann dürfte das nicht funktionieren. Wenn Du Pi-Hole aktiv hast, dann siehst Du die DNS-Aktionen Deines Smartphones auch dort im Log.

      Antworten
  17. Tim

    Ok, vom iOS ist das gar nicht so einfach mit dem anpingen, aber es ging. Ich erreiche nur meinen Pi, sonst hatte ich nix an. Zum Pi-Hole kam ich noch nicht.
    Aber eine Frage habe ich: für das Nutzen des Servers habe ich Nextcloud installiert und dieses benötigt bzw. ich wollte es, eine SSL Verbindung. Wofür die Ports 80 und 443 offen sein müssen. Wenn ich nun aber OpenVPN nutze und alles klappt sollte ich diese Ports ja nicht brauchen?

    Antworten
    1. Helmut (Beitrag Autor)

      Genau so ist es, wenn Du bereits durch den VPN-Tunnel ins Heimnetz kommst, brauchst Du keine zusätzlichen Ports an der Fritzbox aufmachen.

      Antworten
  18. Tim

    Nun habe ich den nächsten Client testen wollen, ein Win Laptop, der sehr oft im WLAN ist. Leider bekomme ich keine weitere Webseite geöffnet, als die der Nextclould und die Routerseite.
    Mein Handy ist ohne Probleme im WLAN mit VPN. Was könnte ich machen um den Laptop auch über VPN zum laufen zu bekommen? Ich werde mit diesem ja auch mal außerhalb des Wlans sein.

    Antworten
    1. Helmut (Beitrag Autor)

      Wenn ein VPN-Client geht, dann sollte ein anderer auch funktionieren. Du hast für deinen Windowslaptop ja sicher eine eigene OpenVPN-Client Konfiguration generiert und diese dort geladen?

      Antworten
  19. Tim

    Ja genau., mit List werden das Handy und der Laptop und das Pi angezeigt. Ich frage mich ob es mit der Firewall zusammenhängt. Ich habe diese zwar schon ausgeschaltet und es ändertet Sich nix. Aber sonst gekommen ich nur in der Nextcloud log eine Fehlermeldung (session_start(): A session had already been started – ignoring at /var/www/html/xxxxx/lib/private/Session/Internal.php#209 ) und wie gesagt, komme ich auf die Nextcloud.

    Antworten
  20. tim

    ja das habe ich. wie gesagt, wenn er openvpn connect an ist kann ich die nextcloud übern browser erreichen.
    connected xxxxxxx.xxx.net:1194 (159.159.1321.131) via / UDPv4 on tun_WIN/45.4.4.4/ gw=[45.4.4.1/].

    ich bekomme auch nur in der nextcloud nen Fehler in dem log:
    session_start(): A session had already been started – ignoring at /var/www/html/xxxxx/lib/private/Session/Internal.php#209
    ist aber sicher nix mit dem openvpn, oder?
    Sonst habe ich nirgendwo ne fehlermeldung.
    es wird eine weitere lan verbindung erzeugt diese ist auch aktiv.
    in meiner firewall gibt es auch keine meldung.

    Antworten
  21. Tim

    Ja das habe ich gemacht. Wie gesagt klappt es ja mit der IP der Nextcloud.
    Ich bekomme nur in dem Nextcloud Log: session_start(): A session had already been started – ignoring at /var/www/html/xxxxx/lib/private/Session/Internal.php#209
    ne Fehlermeldung, sonst nirgends. Jedoch wird diese nicht damit zusammenhängen, dass ich keine Seiten aufrufen kann.
    Im Win 10 wird eine öffentliche LAN Verbindung erzeugt und auch meine Firewall scheint nix dagegen zu haben.
    Ich habe so null Ideen woran es liegen kann.
    Oder könnte lets encrypt und die beiden offenen Ports dafür ein Grund sein?

    Antworten
    1. Helmut (Beitrag Autor)

      Jetzt nochmal langsam. Du hast einen Windows OpenVPN-Client, mit dem Du eine Verbindung durch den VPN-Tunnel in Dein Heimnetz aufbauen kannst. Über diesen Tunnel kannst Du auch Dienste in Deinem Heimnetz erreichen, also Deine NextCloud und WEB-Konfiguration Deines Routers.
      Damit sollte Dein VPN doch auch vom Windowsclient aus funktionstüchtig sein, wenn Du über diesen Weg auch ins Internet kommst.
      Was ist jetzt genau das Problem? Dass NextCloud im Log Fehlermeldungen ausgibt? Und was meinst Du damit, dass Du „keine Seiten aufrufen kannst“?

      Antworten
  22. Tim

    Also, wenn ich OpenVPN Connect anschalte ist die Verbindung aktiv und das Log der App sagt: connected ……..
    Ich kann so, über den Browser, meinen Router und die NextCloud ansteuern.
    Aber das war es auch schon. Ich kann keine andere Webseite öffnen, noch meine Mails abrufen, oder irgendeinen Musikstream starten.
    Das Icon der App in der Taskleiste ist auch weiß statt grün. Auch ist ein Lan statt ein Wlan Symbol in der Taskleiste angezeigt.

    Oh…, ich stelle gerade fest, dass ich den Router nur dann konfigurieren kann wenn ich die Seite der FB mit der IP Adresse aufrufe.
    Wenn die Verbindung mittel fritz.box oder auch akjöldfskjladfös.myfritz.net aufrufe, laden beide Seite endlos.

    Antworten
    1. Helmut (Beitrag Autor)

      In welchem Netz befindet sich denn der Windowsrechner? Im Lan, Wlan, fremden, eigenen?
      Du kannst mit Tracroute mal versuchen vom Windowsrechner aus zu verfolgen welchen Weg denn die Pakete gehen. Windows – Eingabeaufforderung und dann
      tracert Ziel-IP/Name
      Dann sollte eine Liste aller Nodes kommen, über die die Datenpakete laufen.
      Vielleicht bringt das Klarheit, ob der VPN-Tunnel überhaupt involviert ist.

      Antworten
  23. Tim

    Im eigenen WLAN ist der Win Laptop. Das mit dem Tracrout probiere ich noch.
    Aber noch so viel: gestern habe ich mal Pi Hole installiert und ich konnte wieder Surfen. Aber ich kam nicht mehr auf die Nextcloud. Irgendwie habe ich etwas sehr komisches gebastelt.

    Antworten
  24. Tim

    OpenVPN Connect aktiv:

    Routenverfolgung zu blog.helmutkarger.de [85.13.134.231]
    über maximal 30 Hops:

    1 3 ms 1 ms 1 ms 10.8.0.1
    2 4 ms 3 ms 3 ms router.klaus [xxx.xxx.xxx.x]
    3 10 ms 6 ms 6 ms iaweöri9e.dip0.t-ipconnect.de [xx.xxx.xxx.xx]
    4 11 ms 9 ms 10 ms i-vb3-u.E.DE.NET.DTAG.DE [xx.xxx.xx.xxx]
    5 13 ms 12 ms 14 ms xx.xxx.xxx.xx
    6 13 ms 11 ms 12 ms dd12706.kasserver.com [xx.xx.xxx.xxx]

    Ablaufverfolgung beendet.

    OpenVPN inaktiv:

    Routenverfolgung zu blog.helmutkarger.de [85.13.134.231]
    über maximal 30 Hops:

    1 2 ms 1 ms 2 ms router.klaus [xxx.xxx.xxx.x]
    2 6 ms 5 ms 4 ms iaweöri9e.dip0.t-ipconnect.de [xx.xxx.xxx.xx]
    3 10 ms 10 ms 9 ms i-vb3-u.E.DE.NET.DTAG.DE [xx.xxx.xx.xxx]
    4 11 ms 10 ms 11 ms xx.xxx.xxx.xx
    5 12 ms 10 ms 10 ms dd12706.kasserver.com [xx.xx.xxx.xxx]

    Ablaufverfolgung beendet.
    na dann ist doch das pi-hole dabei oder?

    Antworten
    1. Helmut (Beitrag Autor)

      Der Traceroute schaut gut aus. Mit OpenVPN aktiv kommt die 10.8.0.1 Adresse, das ist das Tunnelende am Raspberry Pi.
      Das schaut für mich nach einem DNS-Problem aus. Versuch mal mit aktivem Pi-Hole Deine Nextcloud per IP-Adresse anzusprechen und mit xyz.fritz.box, wenn xyz der Name der NextCloud ist. (Siehe Interner Domänenname (bei einer FritzBox)
      Liegt die NextCloud eigentlich auch auf dem Raspberry Pi oder ist das eine eigene Kiste? Im ersten Fall probier 10.8.0.1.

      Antworten
  25. Oli

    Vielen herzlichen Dank für die ausführliche Erklärung!
    Ich hab zum Dank auch ganz viel auf die Werbeanzeigen geklickt. :-)
    Da jetzt neu bei PiVPN „Wireguard“ als Standard ausgewählt ist, habe ich mich getraut, obwohl netzwerkmäßig noch ein Neuling, „Wireguard“ zu installieren.
    An dieser Stelle auch noch Dank an Marco hier aus den Kommentaren. Ohne seinen Kommentar zum richtigen Port hätte ich da wahrscheinlich noch etwas rumdoktern müssen.
    Da Wireguard mit QR-Codes für die Übertragung zu den Clients arbeitet, ist die Übertragung der einzelnen Konfigurationsdateien zu den Smartphones wesentlich einfacher.

    Lediglich die Geschichte mit dem MyFritz-Konto und den dadurch überflüssigen DynDNS-Eintragungen in der FritzBox hat mir zu schaffen gemacht. Ich musste mich erst einlesen, inwiefern das MyFritz-Konto genau DynDNS ersetzt. Geholfen haben mir hierbei die Seiten: https://technikkram.net/blog/2016/08/15/dyndns-und-myfritz-einrichten/ und
    https://www.tutonaut.de/anleitung-myfritz-konto-als-dyndns-ersatz-nutzen/ .
    Dann habe ich einfach versucht, bei der Installation von PiVPN meine xxxxxx.myfritz.de Adresse einzugeben und es hat funktioniert.

    So, und jetzt mach ich mich an das Pi-Hole

    Antworten
    1. Helmut (Beitrag Autor)

      MyFritz ist im Prinzip auch nur ein Dynamischer DNS Dienst, der eben über die FritzBox konfiguriert wird.

      Antworten
  26. Chris

    Hi Helmut, vielen Dank für Deine Mühe hier und vor allem den Support. Ich wollte mein Pi-Hole nun auch mit OpenVPN versorgen, aber leider scheitert es schon am Herunterladen vom Skript für PiVPN. curl -L https://install.pivpn.io | bash
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
    curl: (60) SSL certificate problem: unable to get local issuer certificate
    More details here: https://curl.haxx.se/docs/sslcerts.html

    curl failed to verify the legitimacy of the server and therefore could not
    establish a secure connection to it. To learn more about this situation and
    how to fix it, please visit the web page mentioned above.

    Antworten
    1. Helmut (Beitrag Autor)

      Klingt, als wäre das SSL-Zertifikat des Servers abgelaufen.
      Schau mal auf diese Seite: https://github.com/pivpn/pivpn
      Es gibt drei Methoden zur Installation, vielleicht funktionieren die anderen beiden.

      Antworten
  27. Tim

    Hallo Helmut, ich habe mal wieder zeit.
    mein problem ist immer noch:
    – wenn mein win PC mittels OpenVPN mit dem Server verbunden ist, ich nicht auf andere Webseiten zugreifen kann.
    Mein System sieht wie folgt aus:
    – auf dem Pi sind Nextcloud und OpenVPN installiert. Pi-Hole derzeit nicht.
    – der Pi (Lan), Win Laptop (WLan) und die Fritzbox sind in einem Netzwerk.
    Der Tracert ergibt:

    ohne OpenVPN
    C:\Users\Tom>tracert 85.13.134.231

    Routenverfolgung zu dd12706.kasserver.com [85.13.134.231]
    über maximal 30 Hops:

    1 3 ms 1 ms 2 ms fritz.box [xxx.xxx.xxx.x]
    2 8 ms 5 ms 6 ms p3e9bf038.dip0.t-ipconnect.de [62.155.240.56]
    3 12 ms 9 ms 13 ms l-ea5-i.L.DE.NET.DTAG.DE [217.5.65.42]
    4 13 ms 12 ms 11 ms 62.157.251.90
    5 14 ms 12 ms 12 ms dd12706.kasserver.com [85.13.134.231]

    Ablaufverfolgung beendet.

    mit OpenVPN
    C:\Users\Tom>tracert 85.13.134.231

    Routenverfolgung zu 85.13.134.231 über maximal 30 Hops

    1 4 ms 2 ms 2 ms 10.8.0.1
    2 6 ms 3 ms 3 ms xxx.xxx.xxx.x
    3 12 ms 7 ms 6 ms 62.155.240.56
    4 15 ms 13 ms 11 ms 217.5.65.42
    5 16 ms 13 ms 13 ms 62.157.251.90
    6 17 ms 13 ms 13 ms 85.13.134.231

    Ablaufverfolgung beendet.
    Jedoch dauert es mit OpenVPN bestimmt zwei Minuten und alle Webseiten können den „Server nicht finden“.

    Ich habe bei der Installation unter Subdomäne meine MyFritz Adresse (xxxxxxxxxxxxxxx.myfritz.net – ohne www. oder https…etc) eingegeben. Was sicher richtig war??

    Was noch nicht richtig sein kann: im Funknetz ist die App OpenVPN Connect verbunden, obwohl meine xxxxxxxxxxxxxxx.myfritz.net in der Fritzbox nicht aktiviert ist.

    Ich muss ja irgendwo richtig was eingestellt haben.
    Aber wo ist mir nicht klar

    Antworten
    1. Helmut (Beitrag Autor)

      Hallo Tim,

      das mit MyFritz und Funknetz ignoriere ich mal – der OpenVPN-Tunnel wird ja aufgebaut, damit muss mit MyFritz ja alles in Ordnung sein. Du kannst ja auch durch den Tunnel auf Deinen Nextcloud-Server zugreifen.

      Also:
      – VPN-Tunnel geht
      – Zugriff vom VPN-Client ins Heimnetz geht auch
      – Die Routenverfolgung durch den Tunnel ins Internet zu 85.13.134.231 funktioniert auch, aber es werden keine Namen aufgelöst (kasserver.com zum Beispiel)
      Und das dürfte auch das Problem sein, wenn Du ins Internet willst – Du bekommst keine Namen aufgelöst.
      In diese Richtung würde ich weiter forschen, also welchen DNS-Server hat Du bei OpenVPN eingetragen und funktioniert der auch. Typischerweise verwendet man (ohne Pi-Hole) den eigenen Internetrouter also die Fritzbox als DNS-Server oder einen DNS-Dienst im Internet.

      Viel Erfolg

      Antworten
  28. Tim

    aber der Server war natürlich an.

    Antworten
  29. SK

    Hi zusammen,

    ich hatte bereits PiHole installiert. Während der Installation von PiVPN wurde ich abgefragt, ob ich PiHole als DNS ein setzen möchte und es mit dem PiVPN quasi kombinieren will. So weit so gut, läuft alles super, aber wenn ich den interface=tun0 in der erstellen 02-my.conf datei einfüge, kann ich zuhause im WLAN oder LAN nicht mehr ins internet. Sobald ich ´“interface=tun0″ auskommenteire geht es wieder

    Antworten
    1. Helmut (Beitrag Autor)

      Und funktioniert Pi-Hole über die VPN-Verbindung?

      Antworten
  30. SK

    Ich kann auf die pihole Webinterface ohne Probleme zugreifen, ob es aber die Werbung blockiert keine ahnung :D?

    Antworten
    1. Helmut (Beitrag Autor)

      Geh übers VPN ins Internet um zu sehen, ob das funktioniert und danach siehst Du ja im Pi-Hole Webinterface, ob Pi-Hole was gefiltert hat.

      Antworten
  31. SK

    im mobilen Netz per VPN klappt es. Ich habe geschaut, es wird nichts im WLAN/LAN geblockt

    Antworten
    1. Helmut (Beitrag Autor)

      OK, also die Strecke VPN-Client – VPN-Tunnel – VPN-Server – Pi-Hole – Internet funktioniert.
      Das Problem ist, dass Pi-Hole nicht die Non-VPN-Clients im Heimnetz bedient. Möglicherweise muss das LAN, bzw WLAN-Interface neben dem tun0 für Pi-Hole aktiviert werden. Das geht über den Umfang dieser Artikelserie hinaus, das hab ich selber auch nie probiert. Ich würde deshalb die Doku zu Pi-Hole empfehlen, möglicherweise kann man beim interface-Statement in der Konfigurationsdatei mehrere Interfaces angeben.

      Antworten
  32. SK

    Nachdem ich in der 02-my.conf datei folgendes ergänzt habe -> interface=eth0, interface=lan0

    klappt es wieder…

    Antworten
    1. Helmut (Beitrag Autor)

      Prima, hast Du das tun0 Interface drin gelassen oder raus genommen?

      Antworten
  33. QueryQuest

    Hallo,

    ich nutze bereits 10.8…. für das VPN in der Firma.

    Kann man die das Basisnetzwerk für das Private VPN auch auf Bspw. 10.9 setzen?

    Antworten
    1. Helmut (Beitrag Autor)

      Das kann man sicher, wenn man direkt in die Konfiguration von OpenVPN eingreift, über den einfachen Zugang per PiVPN geht das nicht.

      Antworten
  34. Anonymous

    In der aktuellen Version scheint das Script unverhofft andere IP-Blöcke zu verwenden.

    Antworten

Schreibe einen Kommentar zu Oli Antworten abbrechen

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