PiVPN: Raspberry Pi mit OpenVPN – Raspberry Pi Teil3

1. OpenVPNPiVPN

Oftmals wollen wir Dienste in unserem Hausnetzwerk erreichen oder in einer »unsicheren« WiFi-Umgebung, wie bspw. am Flughafen, einfach einen sicheren Tunnel nach Hause aufbauen. Dazu eignet sich insbesondere ein Virtuelles Privates Netzwerk (VPN). Wenn wir dieses VPN dann noch mit einem Pi-hole kombinieren, profitieren mobile Endgeräte auch unterwegs vom Adblock- und Tracking-Schutz.

Der vorliegende Beitrag aus der Reihe »Raspberry Pi« widmet sich der Installation eines VPNs auf Basis von OpenVPN. Der Quellcode von OpenVPN ist für jeden frei einsehbar und initiiert ein VPN über das TLS-Protokoll. Im Hintergrund arbeitet die OpenSSL-Bibliothek. Dank dem Raspberry Pi Projekt PiVPN lässt sich ein OpenVPN mit wenigen Handgriffen in Betrieb nehmen.

Dieser Beitrag ist Teil einer Artikelserie:

Update

08.03.2019: Anleitung auf aktuellen Stand gebracht.

2. Warum ein VPN?

Es gibt unterschiedliche Szenarien, weshalb ein VPN sinnvoll sein kann. Das »anonyme Surfen« über einen VPN-Anbieter zählt gewiss nicht dazu. Der Wunsch nach Anonymität und Privatsphäre im Internet ist ein berechtigter Wunsch vieler Anwender, der sich allerdings kaum oder nur mit sehr hohem Aufwand realisieren lässt. Daher kann ich mich an dieser Stelle nur wiederholen: Anonymität beim Surfen erreicht man nicht, nur weil der Netzwerkverkehr über einen VPN-Provider getunnelt wird. Dieses Werbeversprechen zählt zur Kategorie moderne Internet-Märchen.

Im Rahmen des vorliegenden Beitrags möchte ich kurz auf zwei Einsatzszenarien eingehen, die mir persönlich in Verbindung mit einem Raspberry Pi auf Basis von PiVPN sinnvoll erscheinen.

Der Kuketz-Blog ist spendenfinanziert!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

2.1 Dienste erreichen

Im privaten Netzwerk des hauseigenen IT-Dschungels tummeln sich bei vielen Anwendern irgendwelche Dienste, auf die man hin und wieder auch gerne von unterwegs zugreifen möchte. Die Frage lautet dann: Wie kann ich meine zu Hause gehosteten Services wie bspw. Baikal oder den Pi-hole aus dem Internet erreichbar machen? Bei dieser Frage leuten bei mir immer die Alarmglocken, denn wir sollten zwischen »direkter« und »indirekter« Erreichbarkeit unterscheiden.

Bei der direkten Erreichbarkeit wird der Router so konfiguriert, dass er Dienste bzw. Ports mittels Port-Forwarding von außen erreichbar macht. Wenn Netzwerkpakete an einem Port eintreffen, werden sie an eine bestimmte IP-Adresse bzw. Port im internen / privaten Netzwerk weitergeleitet. Ein Dienst ist somit direkt aus dem Internet erreichbar und damit auch angreifbar, was man eher vermeiden sollte.

Die indirekte Erreichbarkeit löst das anders. Wer auf einen Service im hauseigenen LAN zugreifen möchte, der muss sich zunächst per VPN über den Router oder bspw. den PiVPN einwählen. Erst danach ist ein Zugriff möglich. Der Vorteil liegt auf der Hand: Eure internen Services sind nicht direkt über Port-Forwarding ständig von außen erreichbar, sondern erst dann, wenn ihr über VPN eine Verbindung hergestellt habt. Über das VPN wird euer mobiles Endgerät dann sozusagen Teil eures internen Netzwerks, gerade so, als würdet ihr mittendrin sitzen.

2.2 Sicheres Netzwerk

Wer kennt das nicht: Man ist mit seinem Smartphone in einem fremden WiFi-Netzwerk eingeloggt (bspw. Kaffee, Hotel oder Flughafen) und fühlt sich irgendwie »unsicher« und beobachtet. Wird mein Surfverhalten aufgezeichnet? Werden Usernamen und Passwörter mitgeschnitten? Da der Internetverkehr seit den letzten Jahren vermehrt über TLS verschlüsselt wird, ist die Bedrohungslage vielleicht nicht mehr ganz so schlimm wie früher. Doch dabei vergisst man allzu gerne neue »Sicherheitstechniken« wie TLS-Interception bzw. TLS-Middleboxen oder die Aufzeichnung des Surfverhaltens durch die Analyse der DNS-Anfragen. Kurz: Es gibt noch immer gute Gründe, fremden WiFi-Netzwerken nicht zu trauen. Schützen kann man sich, indem man eine VPN-Verbindung zu seinem PiVPN aufbaut und jegliche Daten im Tunnel verschwinden. Neugierige Hoteliers sehen dann nichts anderes als einen verschlüsselten Datenstrom zwischen zwei IP-Adressen – eurem mobilen Endgerät und der Gegenstelle (meist die öffentliche IP-Adresse eures Internetanschlusses). Nach dem erfolgreichen Aufbau des VPN-Tunnels surft ihr dann sozusagen über den Internetanschluss von zu Hause.

3. PiVPN

Das Projekt PiVPN hat eine offizielle Webseite und ebenfalls eine GitHub-Seite, über die sich der Quellcode einsehen lässt. Im Grunde ist PiVPN nichts anderes als eine Sammlung von Shell-Scripts, die die Installation und Konfiguration von OpenVPN stark vereinfachen und einen Installationsguide nahezu überflüssig machen. PiVPN nimmt einem die meiste Arbeit ab und verbessert die Sicherheit von OpenVPN durch die Anpassung einiger Einstellungen.

3.1 Vorarbeiten

Die Basisinstallation ist identisch zu jener, die ich bereits im Pi-hole Artikel unter Ziffer 3 beschrieben habe. Folgt also bitte den dort dargestellten Schritten. Wenn ihr damit fertig seid, solltet ihr euch per SSH auf den Raspberry Pi einloggen können.

Ihr solltet dem Raspberry Pi eine feste IP-Adresse vergeben und euch einen DynDNS-Anbieter aussuchen, der eure dynamische, öffentliche IP-Adresse in einen DNS-Namen umwandelt. Als Anbieter nutze ich dynv6, ihr könnt aber auch einen anderen wählen, der mit eurem Router zusammenarbeitet.

Idealerweise verwendet ihr in eurem privaten Netzwerk nicht das Subnetz 192.168.0.x/24 oder 192.168.1.x/24. Diese sind meist sehr verbreitet und es könnten Routing-Konflikte auftreten, falls ihr euch von außerhalb verbindet. Siehe dazu ein Hinweis aus dem OpenVPN-Log:

NOTE: Your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.

Erst wenn diese beiden (idealerweise drei) Schritte erledigt sind, startet ihr die Installation von PiVPN.

3.2 Installation

Ähnlich zum Pi-hole ist die Installation denkbar einfach und mit einem Einzeiler über die Shell erledigt:

curl -L https://raw.githubusercontent.com/pivpn/pivpn/master/auto_install/install.sh | bash

Zunächst wird das Skript die APT-Paketquellen aktualisieren, Pakete upgraden und anschließend OpenVPN installieren.

4. Konfiguration

Die Installation bzw. Konfiguration von OpenVPN lässt sich während dem Setup-Prozess an die eigenen Bedürfnisse anpassen. Auf einige der Abfragen möchte ich im Folgenden eingehen:

Statische IP

Die IP-Adresse des PiVPN sollte statisch sein und sich nicht dauerhaft verändern. Das ist wichtig, da wir den PiVPN später von außen für die VPN-Clients erreichbar machen. Die Gateway-Adresse ist im Normalfall die interne IP-Adresse eures Routers.

4.1 Automatische Updates

Upgrades

Eigentlich bin ich kein Freund von automatischen Updates bzw. Upgrades, da ich gerne die Kontrolle behalte und im Fehlerfall gleich einschreiten kann. Beim PiVPN mache ich eine Ausnahme, denn hier erscheint mir die Aktivierung von automatischen Security-Updates als sinnvoll – gerade dann, wenn die Lösung als »Install and Forget« gedacht ist. Sprich: Einmal installieren und selten darum kümmern müssen. Selten darum kümmern solltet ihr allerdings nicht als »niemals darum kümmern« auffassen. Die automatischen Security-Updates nehmen euch lediglich etwas Arbeit ab.

4.2 UDP-Protokoll

Default Port

Als Protokoll wählen wir UDP und lassen den Standard Port 1194 unverändert. Auf die Vor- und Nachteile von OpenVPN via UDP oder TCP werde ich an dieser Stelle nicht eingehen, hier nur die Kurzfassung: UDP ist schneller und TCP ist verlässlich. Hier noch ein Auszug aus der OpenVPN Manpage:

OpenVPN is designed to operate optimally over UDP, but TCP capability is provided for situations where UDP cannot be used. In comparison with UDP, TCP will usually be somewhat less efficient and less robust when used over unreliable or congested networks.

4.3 Verschlüsselungsalgorithmen

Ab OpenVPN 2.4:

ECDSA-Verschlüsselung

Seit OpenVPN Version 2.4 kann die Authentifizierung und der Schlüsselaustausch über elliptische Kurven erfolgen. PiVPN generiert wahlweise ein 256-, 384- oder 521-Bit-ECDSA-Schlüsselpärchen, bestehend aus öffentlichem und privaten Teil. Als Schlüssellänge ist 256-Bit voreingestellt – das ist in Ordnung und entspricht einem 3072-Bit-RSA-Schlüssel.

Der Vorgang der Schlüsselerzeugung nimmt auf einem Raspberry Pi 3 nur wenige Sekunden in Anspruch.

Vor OpenVPN 2.4 (alt):

Sollten eure Clients OpenVPN 2.4 (und höher) noch nicht unterstützen, so könnt ihr ebenfalls RSA-Schlüssel generieren:

Verschlüsselung

PiVPN generiert wahlweise einen 1024-, 2048- oder 4096-RSA– / Diffie-Hellman-Schlüssel, mit dem sich anschließend Schlüsselpaare (bestehend aus privatem und öffentlichen Schlüssel) erzeugen lassen. Mit diesem Schritt wird ebenfalls eine minimale Zertifizierungsstelle (CA) erstellt. Die Authentifizierung von Clients erfolgt bei PiVPN Zertifikatsbasiert mittels X.509 Zertifikaten. Welche Schlüsselstärke sollte man wählen?

For asymmetric keys, general wisdom is that 1024-bit keys are no longer sufficient to protect against well-equipped adversaries. Use of 2048-bit is a good minimum. It is wise to ensure all keys across your active PKI (including the CA root keypair) are using at least 2048-bit keys.

Up to 4096-bit is accepted by nearly all RSA systems (including OpenVPN,) but use of keys this large will dramatically increase generation time, TLS handshake delays, and CPU usage for TLS operations; the benefit beyond 2048-bit keys is small enough not to be of great use at the current time. It is often a larger benefit to consider lower validity times than more bits past 2048, but that is for you to decide.

Daher belassen wir den Wert für den Schlüssel auf 2048 Bit. Der Vorgang der Schlüsselerzeugung nimmt auf einem Raspberry Pi 3 ca. 20 Minuten in Anspruch.

4.4 DynDNS

Öffentliche IP-Adresse

Damit die VPN-Clients eine Verbindung zum PiVPN aufbauen können, benötigen sie eine Gegenstelle bzw. IP-Adresse. Bei den meisten von euch wird sich die IP-Adresse vermutlich häufig mal ändern, weshalb die erste Wahl »Use this public IP« keine langfristige Lösung darstellt. Spätestens wenn eine Zwangstrennung von Providerseite erfolgt oder eine Neueinwahl ansteht, wird sich eure IP-Adresse wieder ändern. Daher wählen wir den zweiten Eintrag »Use a public DNS« und tragen dann im nächsten Fenster den DNS-Namen ein, den ihr bei eurem DynDNS Anbieter registriert habt.

DynDNS

Der DynDNS Eintrag wird eure IP-Adresse anschließend in die öffentliche IP-Adresse von eurem Internetanschluss umwandeln, damit sich die VPN-Clients verbinden können bzw. immer die öffentliche IP-Adresse eures Anschlusses erreichen.

4.5 DNS-Server

DNS Anbieter

Damit die Auflösung von DNS-Namen in die jeweilige IP-Adressen für die eingewählten Clients funktioniert benötigen wir einen DNS-Server. Aus Datenschutzgründen solltet ihr besser nicht Google auswählen, es sei denn, ihr legt Wert darauf, dass Google weiß welche Seiten ihr aufruft. Selektiert »Custom« und legt eigene DNS-Server fest.

DNS Auswahl

Ihr könnt hier auch die IP-Adresse eures Routers eintragen, dann wird dieser die Namensauflösung übernehmen bzw. die Anfragen weiterreichen. Im Screenshot habe ich die DNS-Server von dismail.de und von Digitalcourage hinterlegt. In der Empfehlungsecke findet ihr weitere Vorschläge für unzensierte und freie DNS-Server ohne Protokollierung.

Glückwunsch – danach ist die Installation und Konfiguration von PiVPN abgeschlossen. Startet den Pi bitte einmal neu.

4.6 Profile anlegen

Für die VPN-Einwahl auf den PiVPN müsst ihr Profile anlegen, die ihr dann auf euren Clients installiert. Angenommen ihr wollt ein Android Smartphone einbinden, dann geht wie folgt auf dem PiVPN vor:

pivpn add
Enter a Name for the Client: Android
Enter the password for the client: EuerPasswort

Anschließend wird das Profil mit allen notwendigen Informationen (Zertifikat, Gegenstelle, Verschlüsselungsdetails, etc.) generiert und unter »/home/pi/ovpns« abgelegt. Verbindet euch mittels FileZilla (Windows, Linux und Mac OS kompatibel) mit dem PiVPN und kopiert aus dem Ordner »/home/pi/ovpns« die Datei »Android.ovpn« auf euren Rechner. Diese Datei übertragt ihr anschließend auf euer Android Smartphone und importiert das Profil in die App OpenVPN for Android. Das war es auch schon – anschließend könnt ihr euch mit dem PiVPN verbinden.

Mit dem Befehl

pivpn list

könnt ihr anschließend prüfen, ob sich der Client erfolgreich angemeldet hat. Mit

pivpn help

könnt ihr euch alle Optionen ausgeben lassen, die PiVPN bzw. das Kommando pipvpn unterstützt.

5. PiVPN aus dem Internet erreichbar machen

Damit die Datenpakete von außen beim PiVPN ankommen, muss am Router eine Portweiterleitung (engl. Port-Forwarding) für den UDP-Port 1194 eingerichtet werden. Je nach Routermodell unterscheidet sich die Einrichtung. Im Folgenden beschreibe ich kurz den Vorgang auf einer FRITZ!Box über die GUI:

Internet -> Freigaben -> Portfreigaben -> Neue Portfreigabe

Portweiterleitung

Die IP-Adresse ist jene, die ihr dem PiVPN während der Installation fest zugewiesen habt. Möchte sich ein Client per OpenVPN anmelden, wird das UDP-Paket zunächst auf dem Port 1194 des Routers ankommen. Anhand der Portweiterleitung wird der eingehende Verkehr auf diesem Port anschließend an den PiVPN mit der internen IP-Adresse 192.168.200.10 weitergeleitet – die Verbindung zwischen Client und Server (PiVPN) kann initiiert werden.

Unter Ziffer 2.1 habe ich euch noch erklärt, dass es keine gute Idee ist Dienste direkt von außen (bzw. dem Internet) erreichbar zu machen. Das gilt auch weiterhin, allerdings mit der Ausnahme für Services wie bspw. VPN oder SSH, die sich dafür eignen. Weitere Dienste in eurem Netzwerk müsst ihr dann nicht explizit nach außen über Port-Forwarding öffnen bzw. erreichbar machen, sondern könnt nach erfolgreicher Einwahl auf den PiVPN dann darauf zugreifen, gerade so, als würdet ihr mittendrin sitzen. Ihr müsst also nicht alle möglichen Ports von euren Diensten nach außen weiterreichen, sondern öffnet nur den Port für die Einwahl über OpenVPN. Das reduziert die Angriffsfläche erheblich.

6. Bonus: PiVPN und Kombination mit dem Pi-hole

Wäre es nicht wunderbar, wenn mobile Endgeräte auch unterwegs von den Vorteilen eines Pi-hole profitieren könnten? Keine Werbung und keine Tracker die euch auf Schritt und Tritt im Internet verfolgen? Der Clou ist: Wir können den PiVPN einfach mit dem Pi-hole kombinieren – alles auf einem Raspberry Pi.

Dazu sind folgende Schritte notwendig:

Zunächst passen wir die OpenVPN Server-Konfiguration an:

nano /etc/openvpn/server.conf

Während der Installation des PiVPN habt ihr einen oder mehrere Upstream DNS-Server definiert. Wenn ihr ebenfalls die DNS-Server von dismail.de und von Digitalcourage eingestellt habt, sucht folgende zwei Zeilen:

push "dhcp-option DNS 116.203.32.217"
push "dhcp-option DNS 46.182.19.48"

Diese werden gelöscht bzw. angepasst auf:

push "dhcp-option DNS 10.8.0.1"

Als DNS-Server für die VPN-Clients definieren wir also die IP-Adresse des VPN-Interfaces (tun0) unseres Raspberry Pis und leiten somit alle DNS-Anfragen auf den lokalen DNS-Server (dnsmasq) des Pi-holes um.

Damit der Pi-hole die DNS-Namensauflösung für die IP-Adresse des VPN-Interfaces gestattet, muss noch die Konfiguration von dnsmasq des Pi-holes erweitert werden. Wir legen ein neue Konfigurationsdatei an:

nano /etc/dnsmasq.d/02-pivpn.conf

Wir fügen dort die Zeile mit dem VPN-Interface (tun0), welches standardmäßig auf der IP-Adresse 10.8.0.1 lauscht, hinzu:

interface=tun0

Anschließend müssen beide Dienste (OpenVPN und Pi-hole) neu gestartet werden:

/etc/init.d/openvpn restart
/etc/init.d/pihole-FTL restart

Alternativ könnt ihr auch einfach einen Neustart des Raspberry Pis durchführen.

7. Fazit

Mit einem PiVPN schlagt ihr zwei Fliegen mit einer Klappe. Ihr könnt eure internen Dienste auch für eure mobilen Endgeräte erreichbar machen und habt in fremden WiFi-Netzwerken die Möglichkeit, alle Daten in einem nicht einsehbaren VPN-Tunnel verschwinden zu lassen. Wenn ihr PiVPN dann noch mit einem Pi-hole kombiniert, dann profitieren Geräte auch unterwegs vom Adblock- und Tracking-Schutz. Werbung und Tracker verschwinden dann in einem schwarzen Loch – da wo das Zeug auch hingehört.

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

24 Ergänzungen zu “PiVPN: Raspberry Pi mit OpenVPN – Raspberry Pi Teil3”

  1. Comment Avatar Thomas M. sagt:

    Hallo Mike,

    vielen Dank für die sehr Informative Raspberry Pi Reihe!
    Bei diesem Projekt frage ich mich allerdings wo der Unterschied zu einer VPN Verbindung direkt auf einer FritzBox besteht. Ist die dort zur Verfügung stehende Technik nicht gleichwertig der in diesem Arktikel vorgestellten?
    Für Besitzer anderer Router ist dies sicher sehr hilfreich, aber wo ist der Mehrwert für Fritzbox Besitzer?

    Evtl. habe ich hier aber einen Punkt übersehen.
    Ich würde mcih freuen wenn du dies kurz erklären könntest.

    Gruß, Thomas

    • Comment Avatar Mike Kuketz sagt:

      Die FRITZ!Box kann von Haus aus kein OpenVPN, sondern unterstützt nur IPSec. Gerade in Zusammenspiel mit Android finde ich das nicht die beste Wahl. Das mal ausgeklammert, kannst du natürlich auch die FRITZ!Box als VPN-Zugangspunkt nutzen.

      Die Kombination aus PiVPN und Pi-Hole auf einem Rasperry Pi ist der eigentliche Clou.

  2. Comment Avatar Daniel sagt:

    Vielen Dank für die Anleitung, wird so umgesetzt! :)

  3. Comment Avatar Mike Kuketz sagt:

    If your server is visible to the world, you will want prevent port 53/80 from being accessible from the global Internet.

    Weder Port 53, noch Port 80 ist direkt aus dem Internet erreichbar. Daher ist das in diesem Setup -hinter einem Router- eher eine optionale Sicherheitsmaßnahme. Würde der Pi hingegen direkt aus dem Internet erreichbar sein (alle Ports), dann sind die iptables Regeln durchaus sinnvoll und sollten ergänzt werden.

  4. Comment Avatar Frank sagt:

    Hallo Mike,

    danke für die ausführliche Anleitung! Ich bin allerdings gleich kurz hinter der Startlinie hängengeblieben und zwar beim DynDNS Service.

    Bei mir erscheint tatsächlich die Meldung „Status: Account temporär deaktiviert“. Ich betreibe eine Fritz Box und nutze 1&1 DSL.
    In der Übersicht steht aber nichts von „IPv4 über DS-Lite“ oder ähnlichem. Übersehe ich etwas oder funktioniert das Ganze einfach nicht mit meinem Setup?

    Beste Grüße

  5. Comment Avatar Karl sagt:

    Ist ein VPN-Server zu Hause wirklich sicher, wenn man als Client z.B. ein Android-Gerät nutzt?
    Da ein Android-Gerät als standardmäßig unsicher gelten muss, solange man es nicht komplett von Google befreit und gerootet hat, stellt sich mir die Frage, ob eine einfache Open Source VPN-App ausreicht, um „sicher nach Hause zu telefonieren“. Ich gehe eher davon aus, dass einer der ständig laufenden Google-Dienste meine Passwörter abgreift und an Google schickt, als dass sie das nicht machen. Gut, wenn man seiner VPN-Client-Software vertrauen kann. Schlecht, wenn diese auf einem „NSA-Unterbau“ läuft. – Meiner Meinung nach gibt es auf Smartphones nur das Fairphone mit dem „offenen“ OS als – relativ – sichere Alternative. Kann man sein Android-Handy auch ohne Root so absichern, dass man es als „NSA-sicher“ bezeichnen könnte? Ich denke nicht, da „rotten from the core“ dank proprietärer Google-Software.

    • Comment Avatar Mike Kuketz sagt:

      Wir bewegen uns ins Offtopic. Android ist nicht Themenschwerpunkt in diesem Beitrag. Aber mal noch ein Hinweis:

      Ein Smartphone besteht aus einer Vielzahl von proprietären Hardware-Komponenten, wie dem Prozessor oder dem Baseband. Ich kann ein Android Smartphone softwareseitig komplett Open-Source betreiben – die Hardware hingegen bleibt »verschlossen«. Das bedeutet überspitzt formuliert: Der Hardware, die wir tagtäglich einsetzen, können wir eigentlich nicht über den Weg trauen. Das gilt auch für iOS, Windows Phone und alle weiteren Systeme bzw. Geräte.

      Die Frage ist doch immer: Gegen wen oder was wollen wir uns eigentlich schützen?

      • Comment Avatar Karl sagt:

        Mir ging es nicht direkt um Android sondern speziell um den/einen OpenVPN-Client, der auf Android installiert ist. Der Client hat Zugang zu meinem privaten Netz zu Hause. Warum sollte ich ihm mein Passwort / meinen Schlüssel anvertrauen, wenn es/er vielleicht im Hintergrund von Android ausspioniert wird? So gesehen wäre nur ein OpenVPN-Client auf einem komplett offenen Betriebssystem und idealerweise noch Libreboot-Hardware „ziemlich“ vertrauenswürdig. – Andererseits: Der Raspberry-PI, als OpenVPN-Server, ist auch voll mit Binären Blobs und keinesfalls vertrauenswürdig. Es wird aber wohl schon daran gearbeitet, die Blobs entfernen zu können. Immerhin. Nur offene Software auf (so weit wie möglich) offener Hardware ist vertrauenswürdig.

        • Comment Avatar Mike Kuketz sagt:

          Stimme ich dir ja zu. Aber nochmal die Frage, gegen wen oder was willst du dich schützen?

          Gegen das schnüffelnde Google? Dann »entgoogle« Android.
          Gegen die Massenüberwachung? Auch das ist noch halbwegs machbar. Bspw. über Messenger wie Conversations bzw. generell offene Soft- und Hardware und einem angespassten Verhalten bzw. Nutzung von IT.
          Gegen die gezielte Ausspähung, wenn du in das Visier eines Geheimdienstes gelangst? Da hilft dir keine offene Soft- und Hardware, sondern nur der dauerhafte Aufenthalt abseits der Zivilisation. ;-)

  6. Comment Avatar Uwe sagt:

    Hi,
    geht es nur mir so, aber die apt-Paket-Quelle enthält keine armhf-Pakete die für einen RasperryPi oder in meinem Fall BannanaPi, notwendig sind.
    Wie habt Ihr das gelöst?

    Vielen Dank für die Tipps

  7. Comment Avatar Markus sagt:

    Hallo Mike,

    am Ende von 3.4 ist noch ein kleiner Vertipper:
    Anstatt „pipvpn list“ müsste es „pivpn list“ heißen.

    Danke für die vielen Projektvorschläge,
    Markus

  8. Comment Avatar Tom sagt:

    OSTIF und Quarkslab haben das Ergebnis des Audits von OpenVPN 2.4.0 veröffentlicht :

    https://ostif.org/the-openvpn-2-4-0-audit-by-ostif-and-quarkslab-results/

  9. Comment Avatar Corneille sagt:

    Vielen herzlichen Dank für diese ausführliche und gut durchdachte Artikel-Reihe! Pi-Hole war schon eine großartige Entschlackung insbesondere auf unseren iOS-Geräten und mit PiVPN+Pi-Hole-Kombi wird einem der fade Beigeschmack vom Browsing in öffentlichen Netzwerken doch ein wenig mehr genommen.

  10. Comment Avatar Chris sagt:

    Hallo, danke für die Anleitung, leider bekommt mein Android Gerät keine Verbindungen mehr zustande, sobald ich mich mit OpenVPN (erfolgreich) verbinde.
    Bin 1 zu 1 nach deiner Anleitung vorgegangen, auch alles ein zweites mal kontrolliert, es klappt leider nicht.

  11. Comment Avatar Jörg sagt:

    Hallo, vielen Dank für die Anleitung.
    Ich habe Pi-Hole und PiVPN nach den Anleitungen hier installiert und die IPs der FB und des Pi ausgetauscht.

    Mein Problem ist, ähnlich wie bei Chris, dass ich bei einer VPN-Verbindung nicht aus meinem lokalen Netzwerk raus komme. Mein iPhone verbindet sich mit dem Pi, fritz.box und ip.hole sind problemlos aufrufbar, jedoch gehen Anfragen nach draußen nicht -> z.B. bei google.de keine Reaktion. Ich komme hier nicht weiter.

    Sind die Angaben hier in der dnsmasq.conf richtig?

    listen-address=127.0.0.1, 192.168.178.42, 10.8.0.1

    FB: 192.168.178.1
    Pi: 192.168.178.42
    VPN: 10.8.0.1

    Und in der server.conf?

    server 10.8.0.0 255.255.255.0
    # server and remote endpoints
    ifconfig 10.8.0.1 10.8.0.2
    # Add route to Client routing table for the OpenVPN Server
    push "route 10.8.0.1 255.255.255.255"
    # Add route to Client routing table for the OpenVPN Subnet
    push "route 10.8.0.0 255.255.255.0"
    # your local subnet
    push "route 192.168.178.0 255.255.255.0"
    # Set your primary domain name server address for clients
    push "dhcp-option DNS 192.168.178.42"
    • Comment Avatar Mike Kuketz sagt:

      Das kann diverse Gründe haben, eventuell auch ein Bug. Schaut mal in das Issue 151 auf der GitHub-Seite vom PiVPN. Dort sind einige Lösungsvorschläge zusammengetragen.

      • Comment Avatar Jörg sagt:

        Vielen Dank für den Hinweis. Ich habe schon diverse Lösungsvorschläge aus dem Netz – ohne Erfolg – ausprobiert, die verlinkte GitHub-Seite habe ich aber nicht gefunden.

        Ich habe es zunächst mit pivpn debug ausprobiert und erhielt

        ...
        ::: We detected some potential issues with your iptables.
        ::: Would you like us to try to fix this? [y/n]: y
        ::: Attempt at fix completed.
        ::: Run 'pivpn debug' again to see if we detect issues.

        Ein neuer Durchlauf von Debug gab keine Fehlermeldung mehr. Auch nach einem reboot konnte ich mich mit den Geräten über VPN verbinden. Das Problem ist jetzt gelöst. Es lag wohl an einem Fehler in den iptables!

  12. Comment Avatar Anonymous sagt:

    Hallo,

    zunächst einmal vielen Dank für die durchdachten Anregungen und Anleitungen! Ich habe eine grundsätzliche Frage zu VPN (vielleicht auch speziell zu VPN unter Android). Kann ich denn überhaupt sicherstellen, dass der _gesamte_ Traffic bei bestehender VPN-Verbindung auch über diese gerouted wird ? Immerhin stehen einem Smartphone ja mehrere Schnittstellen zur Verfügung. Eine softwareseitige Überwachung wäre ja durchaus machbar, aber mich interessiert der grundsätzliche Charckter eines VPN und deren Implementierung in Android.

    Viele Grüße und immer weiter so!

  13. Comment Avatar Horst Horstmann sagt:

    Du nutzt für das LAN 192.168.200.x. Viele Leute werden im LAN wohl 192.168.0.x oder 192.168.1.x. nutzen. Im Artikel sollte vielleicht darauf hingewiesen werden, dass das zu einem nicht ganz unwichtigen Hinweis im openvpn.log führt:
    „NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.“
    Für OpenVPN-Server ist es „best practice“, diese nie in einem 192.168.0.x und 192.168.1.x. Netz zu betreiben. So gesehen wäre der allgemeine Hinweis angebracht: wenn ihr ein LAN einrichtet, nehmt irgendwas, aber nicht 192.168.0.x oder 192.168.1.x.!

  14. Comment Avatar Niclas sagt:

    Hallo Mike,

    vielen Dank erst einmal für deine Anleitung.

    Ich hätte noch eine kleiner Ergänzung, die für diejenigen interessant sein könnte, die vorher mit dem FRITZ!Fernzugang gearbeitet haben oder auch noch arbeiten.

    Mit meinem Win7-PC mit einer eingerichteten VPN-Verbindung zu meiner FB habe ich nach kurzer Zeit immer einen Bluescreen erhalten.
    Ich habe dann gelesen, dass OpenVPN sich nicht mit dem AVM-VPN-Treiber verträgt. Durch die Deinstallation des entsprechenden Treibers funktioniert die Verbindung auch unter Win7 (Android und Linux funktionierten direkt).

    LG

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.