Sicher und werbefrei surfen für weniger als 5 Euro im Monat – OpenVPN und Pi-hole im praktischen Einsatz

Mit einer Kombination aus einem DNS-Resolver/-Filter und einem VPN kann man relativ einfach werbefrei, aber auch sicherer, im Internet unterwegs sein. Dabei wird der Datenverkehr bis zu einem vertrauenswürdigen Endpunkt verschlüsselt und ungewollte Verbindungen verworfen. Die Kosten dafür liegen unter 5 Euro im Monat.

Besonders interessant ist das für Smartphones. Dort können in aller Regel keine AdBlocker im Browser installiert werden und manipulierte Seiten können ohne Probleme schädliche Werbung oder ähnliches an die Geräte ausliefern.

Durch das Blocken von Werbung auf seinem Smartphone kann man zusätzlich auch Datenvolumen sparen, denn Werbung wird schlicht nicht mehr geladen. Auf den vergleichsweise kleinen Displays nimmt diese ja auch gerne viel Platz ein, so dass das Surferlebnis allgemein besser und schneller wird.

Bevor der „How to“-Teil beginnt, erkläre ich kurz wie DNS und VPN grundsätzlich funktionieren. Dann geht es darum wie wir uns das in unserem Interesse zu Eigen machen können, bevor schließlich eine Kurzanleitung für die Installation von Pi-hole und PiVPN folgt.

Für all diese Schritte finden sich auch weitere Anleitungen im Internet. Wer also mehr wissen möchte, sollte einfach nach den entsprechenden Begriffen suchen.

Einleitung

DNS und seine Funktionsweise

DNS steht für „Domain Name System“ und ist eine der treibenden Infrastrukturen hinter dem Internet. Da Rechner/Server über ihre IP-Adressen eindeutig identifiziert werden, benötigen wir ein System, dass uns eine leicht merkbare Version von IPs zur Verfügung stellt. Das kennen wir als Domainnamen, also zum Beispiel flomei.de. Bei der Eingabe im Browser wird der Domainname durch DNS-Server auf eine IP aufgelöst und unter der IP antwortet dann dementsprechend der richtige Server.

Die DNS-Server werden dabei auch fortlaufend aktualisiert, so dass man sich auch bei wechselnden IP-Adressen immer nur einen Domainnamen merken muss und nicht die ggf. wechselnden IP-Adressen. Dieser Prozess der Adressauflösung funktioniert dabei für Benutzer unsichtbar. Das Betriebssystem nutzt einen DNS-Resolver um, meist auf Servern des Internetproviders, die Auflösung der Domain, d.h. die Wandlung von Domain zu IP durchzuführen.

Hier besteht eine Manipulationsmöglichkeit, denn der Nutzer kann quasi nicht prüfen, ob die ihm vom DNS-Server zur Verfügung gestellten Informationen korrekt sind. Wer also die Kontrolle über einen DNS-Server hat, kann diesen theoretisch gefälschte Informationen ausliefern lassen und so Besucher auf falsche Webseiten weiterleiten oder den Besuch von Seiten auch komplett verweigern, indem er die Verbindungen auf ungültige Ziele weiterleitet.

Diese Manipulationsmöglichkeit wurde und wird genutzt, um „Jugendschutzfilter“ einzusetzen oder sonstwie Benutzer von Webseiten fernzuhalten. Auch Deutschland hat hier im Rahmen von „Netzsperren“ bereits Provider dazu gezwungen, derartige Mechanismen gegen seine Nutzer einzusetzen.

In weniger demokratisch gefestigten Ländern, werden schonmal die sozialen Medien gesperrt, damit die Leute sich nicht austauschen können, aus anderen als den von staatlicher Seite gewollten Medien informieren oder schlicht Bilder von Protesten oder Übergriffen jeglicher Art verbreiten können.

VPN und seine Funktionsweise

Ein VPN, ein „Virtual Private Network“ bezeichnet eine verschlüsselte Verbindung zwischen zwei Rechnern. Üblicherweise, das ist zumindest einer der Hauptanwendungszwecke, ist ein VPN dabei ein „Tunnel“ in ein sonst nach außen abgeschlossenes Netzwerk. Über VPN-Server bzw. -Verbindungen wählt man sich beispielsweise häufig von außen in das Firmennetzwerk ein, um auf interne Server und ähnliches zuzugreifen.

Die Verbindung zwischen Client und VPN-Server ist dabei in aller Regel verschlüsselt, eben weil es meist um die Übertragung von sensiblen Daten geht, die in ansonsten gesicherten Netzwerken liegen. Anders herum lassen sich VPN aber auch nutzen, um aus einem „unsicheren“ Netzwerk heraus zu kommunizieren.

So sind während des Arabischen Frühlings und anderer Revolutionen VPN genutzt worden, um an Internetsperren oder Abhörmaßnahmen vorbei zu gelangen. Verbindungen zum VPN-Server können wie harmloser Internetverkehr aussehen und sind zudem verschlüsselt, so dass man nicht sehen kann, welche Art von Inhalten verbreitet werden. Der neue öffentliche Endpunkt, also der VPN-Server, sollte dabei natürlich in einem Land stehen, das nicht von den eventuellen Maßnahmen gegen die IT-Infrastruktur betroffen ist.

So funktionieren grundlegend übrigens auch diverse Softwarelösungen, die YouTube-Ländersperren oder Netflix-Länderbegrenzungen und ähnliches umgehen. Die Aufrufe erfolgen dabei von Adressen, die im entsprechenden Land registriert sind und damit nicht gesperrt werden.

Was wir an Infrastruktur schaffen wollen

Wir wollen uns die oben erklärten Vor- und Nachteile der beiden Technologien zu Nutze machen.

Zum einen verschlüsseln wir am Ende unsere Kommunikation komplett bis zum VPN. Das sorgt dafür, dass wir in offenen WLANs oder irgendwelchen Hotspots beruhigt(er) surfen können. Alles was unser Smartphone verlässt, ist direkt verschlüsselt und kann dementsprechend nicht von jemandem mitgelesen werden, der Kontrolle über das WLAN oder den Hotspot hat. Damit schützen wir uns auch vor Angriffen, bei denen sich jemand als ein uns eigentlich bekanntes und vertrauenswürdiges WLAN ausgibt.

Zum anderen werden wir einen eigenen DNS-Resolver bzw. „Filter“ betreiben. Dieser blockiert Verbindungen, die zu Werbenetzwerken oder Seiten mit Malware oder anderer Schadsoftware führen. Wir zensieren also unseren eigenen Datenverkehr, um uns vor potentiellen Gefahren zu schützen.

Umsetzung

Die Technik

Für unser Projekt werden wir auf einen VPS setzen, der einen OpenVPN-Server und einen DNS-Resolver betreibt. VPS steht für „Virtual Private Server“ und bezeichnet, dass man einen kleinen Anteil an einem großen Server in einem Rechenzentrum hat. Dieser Anteil ist physisch nicht greif- oder messbar und man hat auch nicht alle Rechenleistung des Servers zur Verfügung, aber immerhin ist das ein von anderen Nutzern abgetrennter Teil. Daher die beiden Namensbestandteile „Virtual“ und „Private“.

VPS-Anbieter gibt es quasi wie Sand am Meer, jeder Webhoster hat eigentlich VPS-Tarife im Angebot, am Ende ist es also etwas Geschmackssache für welchen Anbieter man sich entscheidet. Wer sein System später nutzen will um auch Ländersperren zu umgehen, sollte vorab einen Blick darauf werfen, wo der Serverstandpunkt angegeben ist oder ob man diesen ggf. frei wählen kann.

Ich habe mich dafür entschieden meinen VPS bei Vultr aufzusetzen. Die bieten aktuell VPS in den Niederlanden, Frankreich, Deutschland, Großbritannien, Japan, Singapur, Australien und den USA an. Wer Geoblocking umgehen will, ist bei Vultr also auch ganz gut aufgehoben.

Für unseren VPN reicht uns eine kleine Instanz von „Vultr Cloud Compute“. 20 GB Speicher, 500 GB Traffic und eine IP v4 sollten für unsere Ansprüche genügen, so dass wir preislich mit 3,50 Euro/Monat dabei sind. Die verwendete Software ist Open Source und kostenfrei, so dass hier keine weiteren Kosten auf uns zukommen.

Die Software

Als Betriebssystem habe ich Debian gewählt, aber die meisten, wenn nicht alle, linuxbasierten Betriebssysteme sollten funktionieren. VPN-Server und DNS-Resolver/-Filter werden uns durch Projekte bereitgestellt, die eigentlich für den Raspberry Pi geschaffen wurden. Namentlich sind das Pi-hole als DNS-Filter und PiVPN als einfacher Weg einen OpenVPN-Server zu konfigurieren und zu betreiben.

Installation

Nachdem man sich bei Vultr eine Instanz erzeugt hat, kann man sich mittels SSH einloggen, ausreichend Rechte besorgen und zunächst das Betriebssystem aktualisieren:

sudo su
apt update && apt upgrade -y

Wenn das erledigt ist, lässt sich zunächst Pi-hole ganz einfach über die Kommandozeile installieren:

curl -sSL https://install.pi-hole.net | bash

Nach dem Download von Pi-hole startet gleich ein Konfigurationsassistent. Hier kann man die Standardeinstellungen eigentlich überall beibehalten, im Netz wird allerdings übereinstimmend empfohlen das Blocken von IPv6-Adressen zu deaktivieren. Das entsprechende Sternchen muss man also im Rahmen des Konfigurationsprozesses abwählen.

Nach vollständiger Installation/Konfiguration sollte man noch ein sicheres Passwort für die Adminstrationsoberfläche von Pi-hole vergeben. Auch das lässt sich über die Konsole starten:

pihole -a -p

Unter http://IP-DER-VULTR-INSTANZ/admin/settings.php?tab=dns (hier wird man sich erst mit dem gerade vergebenen Passwort einloggen müssen) muss nun noch eingestellt werden, dass Pi-hole auf allen Netzwerkschnittstellen auf Verbindungen lauscht bzw. diese managed. Dazu einen Haken bei “Listen on all interfaces” setzen und weiter unten mit “Save” bestätigen.

Einstellen, dass Pi-hole auf allen Netzwerkinterfaces lauscht

Damit ist die Installation und Konfiguration von Pi-hole bereits erledigt. Standardmäßig lädt Pi-hole bereits viele Blacklisten und blockiert damit aktuell etwas mehr als 110.000 “gefährliche” Verbindungen. Trotz der schnellen Installation lohnt sich ein ausführlicher Blick auf den bereits verlinkten Admin-Bereich der auch viele Statistiken bereithält. Dort lassen sich aber auch noch gezielt Domains blockieren oder auch whitelisten, also unabhängig von Filterregeln freigeben.

Die Installation von PiVPN gestaltet sich ähnlich unkompliziert. Auch hier startet wieder ein geführter Konfigurator, wenn man folgenden Befehl mit ausreichend Rechten ausführt:

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

Wichtig ist, dass man bei der Auswahl des “Upstream Providers” nicht den Standardwert Google beibehält, sondern runterscrollt und “Custom” auswählt:

Custom Upstream Provider auswählen

Im folgenden ist als IP die 10.8.0.1 einzutragen. Das führt dazu, dass DNS-Anfragen die durch den VPN eintreffen auf das lokale Netzwerkinterface weitergeleitet werden. Dort sitzt dann Pi-hole und gleicht die Anfragen mit seinen Blocklisten ab.

Wählt man hier etwas anderes als “Custom” aus, wird keine Werbung geblockt. Dann profitiert man zwar immer noch von der verschlüsselten Verbindung, aber das ist eben nur die halbe Miete in dieser Sache.

Nach Abschluss der Konfiguration möchte das Script den Server gerne neustarten, das kann aber zunächst noch verneint werden.

Ausgehend davon, dass als Kommunikationskanal UDP auf Port 1194 gewählt wurde (Standardeinstellungen, TCP auf Port 443 kann helfen aus gut gesicherten Netzwerken heraus zu kommunizieren bzw. seinen VPN-Datenverkehr zu tarnen), müssen nun noch ein paar Änderungen in der server.conf von OpenVPN vorgenommen werden. Die Datei liegt in /etc/openvpn/ und steuert die Konfiguration des OpenVPN-Servers.

Hilfreich kann es sein, folgende Werte zu setzen:

push "redirect-gateway def1"
Diese Einstellung zwingt sämtlichen Netzwerkverkehr der verbundenen Geräte durch den VPN-Tunnel und damit durch Pi-hole. Das ist insofern praktisch, als dass damit auch der Netzwerkverkehr von Apps gesichert werden kann.

keepalive 10 60
Hiermit werden kürzere Keep-Alive- aber auch Wiederverbindungs-Intervalle für den VPN-Tunnel erreicht. Da bei einem Smartphone öfters mal die Verbindung wegbricht, werden “tote” Verbindungen schneller abgebrochen und neu aufgebaut. Wer immer in sehr stabilen Netzen unterwegs ist, kann diese Zeiten vielleicht auch länger setzen, um Neuaufbauten des VPN-Tunnels zu reduzieren.

Nach Speichern der server.conf ist jetzt ein guter Zeitpunkt das System neu zu starten.

Anschließend muss man sich erneut per SSH einloggen und mittels

pivpn add nopass

ein erstes Nutzerprofil zur Nutzung des VPN-Tunnels anlegen.

Achtung! Durch die Option nopass wird dieser Zugang nicht durch ein Passwort geschützt! Wer also im Besitz des Client-Profils ist kann sich ohne Weiteres mit dem VPN verbinden und auf eventuell geschützte Infrastruktur zugreifen. Das Nutzerprofil sollte also sicher verwahrt oder durch ein Passwort geschützt werden.

Die .ovpn-Datei muss jetzt auf das Smartphone kopiert werden, zudem empfiehlt sich die Installation der OpenVPN-Client-App aus dem jeweiligen App-Store. Dort lässt sich das erstellte Nutzerprofil dann importieren und komfortabel aktivieren.

Zum Testen des VPN-Tunnels und des AdBlockers empfehlen sich zwei Seiten: Der DNS leak test sollte die statische IP der Vultr-Instanz zeigen und bei einem “Extended Test” auch DNS-Resolver zeigen, die nicht zum Internetprovider gehören. Über fivefilters.org lässt sich prüfen, ob Pi-hole ebenfalls korrekt funktioniert. Die verlinkte Seite sollte “Ad blocking enabled!” zeigen. Und auf Seiten mit Werbung sollten künftig die unsicheren Elemente einfach entfernt werden.

Fazit

Ich habe mein Smartphone so konfiguriert, dass für alle Internetverbindungen die VPN-Verbindung zu meinem Server genutzt wird. Wenn die nicht besteht, kann ich auch nicht surfen. Das lässt sich in der OpenVPN-App auch wieder deaktivieren, ist im Alltag aber eine kleine Hilfe, um die Vorteile dieses Systems wirklich immer zu nutzen und nicht aus Versehen doch wieder Spuren zu hinterlassen.

Neben dem Smartphone oder Tablet kann man natürlich auch seinen normalen Computer/Laptop so einrichten, dass er permanent diese VPN-Verbindung nutzt und damit auch dort von der Blockierung mittels Pi-hole profitieren. Dafür bietet es sich an, direkt im Router selbst den Pi-hole als Proxy bzw. DNS-Server einzurichten. Dazu finden sich im Internet etliche Anleitungen für alle möglichen Router.

Kommen wir der Fairness halber noch zu den Nachteilen dieser Lösung.

Infrastruktur die man selbst betreibt, muss man natürlich pflegen und schützen. Im Falle eines VPS sollte also mindestens noch eine Firewall aktiviert werden, ebenso müssen regelmäßig Updates für das Betriebssystem installiert werden etc. pp.

Zudem können weitere Kosten anfallen, wenn man den enthaltenen Traffic der VPS-Instanz verbraucht hat. Für die hier im Beispiel gewählte Instanz sind das allerdings schon 500 GB pro Monat was jetzt auch nicht wenig ist. Wer allerdings mehrere Smartphones und Rechner vollständig über den Tunnel laufen lässt, muss vielleicht mit Kosten für zusätzlichen Traffic rechnen oder von Beginn an eine größere Instanz wählen.

Da aber jetzt die ganze Werbung gar nicht mehr übertragen wird, spart man auch einiges an Traffic ein, also geht sich das vielleicht auch zu Null aus. ;-)

Wenn dieser Beitrag im Job oder Alltag geholfen hat, dann freue ich mich sehr über ein Dankeschön. Entweder per E-Mail, in Form eines Euros für die Aufstockung der koffeinhaltigen Getränke oder auch über ein Geschenk von meiner Amazon Wunschliste. Weitersagen, dass es hier hilfreiche Inhalte gibt, ist natürlich auch immer prima. Viel Spaß weiterhin!