Adblocker fürs komplette Heimnetz: Pi-Hole

Online-Werbung und -Tracking sind eine Qual. Das muss ich niemandem erzählen, jeder, der viel im Internet unterwegs ist, weiß das.

Technisch affine Personen haben vielfach einen Adblocker im Browser auf ihren Geräten installiert.

Diese Browser-Plugins gibt es seit über 10 Jahren und die Erkennungsquote ist dank vieler ausgefeilter Regeln auch wirklich nahezu 100%. Mit ein bisschen Mühe kann man sogar auch die Hardcode Anti-Adblock-Seiten wie sueddeutsche.de oder bild.de werbefrei machen, wenn man es denn möchte. Ob man Bild lesen sollte, sei dahin gestellt, für die SZ kann man sicherlich auch einfach den Adblocker deaktivieren.

Adblocker dienen nicht nur dem Filtern von Werbung, sondern dienen auch dem Schutz vor Tracking und Malware. Es sind dutzende Fälle bekannt, bei denen über »verseuchte« Werbung Schadsoftware auf PCs installiert wurde. Ich sehe deshalb Werbeblocker als digitale Notwehr und Selbstverteidigung an. Viele Websites sind im ungefilterten Modus überhaupt nicht mehr zu ertragen oder zu benutzen und neben nerviger Werbung landen auch allerlei Telemetrie- und Trackingdaten auf dem eigenen Rechner. Werbeblocker sind also ein effektiver Weg, die eigene Datenleitung zu schonen, nervige Werbung kalt zu stellen und Tracking zu verhindern.

Das kann man anders sehen und dazu gibt es sicherlich auch gute Argumente. Wenn aber selbst Google, das seinen Umsatz zum aller größten Teil aus Werbung bezieht, einen Adblocker vorstellt, sollte klar sein, dass es hier ein echtes Problem gibt.


Nun gibt es in normalen Haushalten nicht mehr nur traditionelle PCs, sondern auch mobile Geräte und auch Internet-of-Things-Geräte oder »smarte« TVs. Auch Smartphones oder Tablets sind oft außerhalb des Browsers werbeverseucht, gerade viele kostenlose Spiele blenden viel Werbung ein.

Auf diesen Geräten ist es meist schwer / unmöglich, einen Adblocker oder Filter zu installieren. Hier greift eine traditionelle Adblocking-Software nicht mehr.

Seit einiger Zeit gibt es mit Pi-Hole ein sehr cleveres Projekt, mit dem man der lästigen Werbung und dem neugierigen Tracking im gesamten Heimnetzwerk den Garaus machen kann.

Allgemeines

Pi-Hole setzt dabei, im Gegensatz zu klassischen Werbeblockern in Browsern, auf Host-Listen, blockt also komplette (Sub)Domains wie beispielsweise googleadservices.com. Google nutzt diese (und viele andere Domains), um Werbung an Clients auszuspielen.

Die Open-Source-Software setzt hier beim DNS an, der Hostnamen in IP-Adressen umsetzt. Wer nicht weiss, was das ist, kann sich das als eine Art Telefonbuch vorstellen. Menschen können sich Namen und Buchstaben sehr einfach merken, Zahlen und Ziffern eher schwer. Bei Computern ist es genau anders herum.
Der DNS schlägt nun also die zu einem Domainnamen passende IP-Adresse (ähnlich einer Telefonnummer) nach. Und Pi-Hole funkt hier eben dazwischen, wenn erkannt wird, dass gerade die »Telefonnummer« von »Werbebude« nachgeschlagen werden soll, normale Domains werden durchgelassen. Pi-Hole ist quasi ein netzwerkweiter Türsteher: Wann immer eine Website Werbung und Tracking von bekannten bösen Domains nachladen will, wird dies verhindert.

Dieser Ansatz ist sehr clever, weil er sehr transparent funktioniert und im Gegensatz zu einem Proxy sehr leicht via DHCP automatisch auf alle im Netzwerk verbundenen Geräte gepusht werden kann und auch ansonsten völlig konfigurationslose oder völlig dumme Geräte wie bspw ein Amazon-Dash-Button mit einbezogen werden können. DNS muss jedes internetfähige Gerät können, ohne Ausnahme. 1.

Dies ist auch besonders interessant für Smart-TVs, die in der Vergangenheit dadurch aufgefallen sind, dass sie sehr viel und häufig mit dem Server des Herstellers kommunizieren. Ebenfalls äußerst lästig ist per HbbTV ins Live-Bild eingestreute Werbung, die aus dem Internet nachgeladen wird. Kostenlose Handyspiele finanzieren sich ebenfalls oft über Werbung, die direkt in die Apps eingebettet ist. All dies lässt sich mit einem zentralen, konfigurierbaren DNS bekämpfen, indem man erwünschte Services passieren lässt, während man alles nervige aussperrt.

Werbung auf DNS-Ebene zu blocken, hat leider auch seine Grenzen: Denn werden Werbung und Content von der gleichen Domain ausgespielt, gibt es für Pi-Hole keine Möglichkeit, dies zu unterscheiden. Rein technisch ist es auch nicht möglich, einzelne Teile von Seiten zu blockieren, wie dies Werbeblocker im Browser tun. Dies ist der Fall, weil der eigentlich Content überhaupt nicht über Pi-Hole geleitet wird, sondern Pi-Hole lediglich IP-Adressen auflöst 2.

Deshalb empfehle ich auch, Pi-Hole als erste Stufe einer mehrstufigen Abwehrstrategie zu verwenden und zusätzlich noch einen Werbeblocker im Browser 3 zu aktivieren. Pi-Hole kümmert sich darum, dass der gröbste Dreck überhaupt nicht über die Hausschwelle kommt, der Blocker im Browser erledigt den Rest und ist für die Feinheiten zuständig.

Damit Pi-Hole Werbung für das ganze Network blocken kann, muss man die Software logischerweise installieren. Pi-Hole läuft, wie der Namen vermuten lässt, natürlich auf einem Raspberry Pi, darüber hinaus aber auch in ähnlichen Debian-Umgebungen. Es gibt auch Docker-Container, so dass man Pi-Hole flexibel installieren kann, wie es am besten passt.

Installation

Ich habe einen alten Raspberry Pi 1 aus dem Schrank genommen, für den ich momentan keine andere Verwendung hatte. Für Pi-Hole eignet er sich ideal, auch wenn er etwas schwach auf der Brust ist. Der Load liegt normalerweise bei ca 20-30%, bloß beim Einspielen / Updaten von Filterlisten ackert der kleine ganz schön, was aber nur einmal am Tag passiert. Von daher alles im grünen Bereich und die alte Hardware wird einem sinnvollen Zweck zugeführt. :-)

Die Installation von Pi-Hole v3 auf einem Raspberry Pi ist sehr simpel. Der Pi muss dabei über keine grafische Oberfläche verfügen, denn Pi-Hole bringt ein eigenes Web-Interface mit. Es reicht also völlig, sich per SSH mit dem Pi zu verbinden und das Installationsskript auszuführen. Alternativ geht es natürlich auch via Monitor, Tastatur und Shell. Es ist wichtig zu wissen, dass Pi-Hole für die effektive Unterdrückung einen freien Port 80 braucht. Dort (auf eine leere Seite) werden die geblockten Hosts weiter geleitet. Möchte man Pi-Hole also auf einem Gerät installieren, dass schon ein Webinterface auf dem Standard-Port 80 laufen hat, muss man dies umkonfigurierten.

Wie die Installation funktioniert, ist auf der Homepage gut erklärt 4, im Prinzip einfach curl -sSL https://install.pi-hole.net | bash eingeben und warten.

Anschließend führt ein grafischer Installer durch den Prozess, einige Parameter werden abgefragt. Bei der Installation ist es wichtig, die gewünschte / korrekte Netzwerkschnittstelle des Pi auszuwählen und dieser auch eine feste IP im Heimnetz zu geben, sonst wird man später im Betrieb Probleme bekommen.
Ich empfehle dringend, die Weboberfläche und das Logging mit zu installieren, denn sonst ist die Konfiguration nur per Shell möglich. Machbar, aber kompliziert.

Nachdem die Installation durchgelaufen ist, wird das Admin-Passwort des Web-Interfaces angezeigt. Dieses Passwort kann man per SSH ändern, indem man pihole -a -p neues-passwort eingibt. Das Passwort kann auch per pihole -a -p deaktiviert werden. Es empfiehlt sich ebenfalls, nun per pihole -g die installierten Filterlisten zu aktualisieren.

Die Oberfläche des Pi-Hole erreicht man über die IP, die man vergeben hat, bspw. http://10.10.10.123/admin bzw. http://pi.hole/admin (falls der DNS schon funktioniert).

Konfiguration fürs komplette Netzwerk

Damit das komplette Netzwerk nun Pi-Hole nutzen kann, mann man in seinem Router nun den DNS auf die Pi-Hole IP-Adresse ändern und idealerweise zusätzlich auch noch die DHCP-Konfiguration so ändern, dass die Clients den Pi-Hole direkt als DNS-Server befragen und gar nicht erst über den Router gehen5. Nur so ist sicher gestellt, dass wirklich aller Traffic durch den Blocker geleitet wird. Theoretisch oder zum Testen kann man den DNS auch händisch auch auf einzelnen Geräten ändern, das ist aber nicht empfehlenswert bzw. schlicht unbequem.

Wie man genau den DNS und die DHCP-Einstellungen im Router ändert, ist von Fall zu Fall unterschiedlich, in der Regel ist es aber sehr einfach. Ist die Änderung durchgeführt, kann man bei den verbundenen Clients nun noch den DHCP-Lease erneuern, damit der Client die neuen Informationen / den neuen DNS sofort serviert bekommt. Früher oder später passiert dies aber ohnehin automatisch.

Sollte der eigene Router es nicht erlauben, den DNS zu setzen / ändern, kann man auch den im Pi-Hole eingebauten DHCP-Server aktivieren (nachdem man den Standard-DHCP-Server im Router deaktiviert hat!), dann vergibt der Pi-Hole fortan die internen IP-Adressen des Netzwerks und stellt auch sicher, dass die DNS-Anfragen an ihn und nicht mehr an den Router gestellt werden.

Welche Konfiguration man hier wählt, kommt sicher auf den eigenen Geschmack und die Bedürfnisse im Netzwerk an, Pi-Hole ist mit dem eingebauten DHCP jedoch äußerst flexibel.

Ist nun alles eingerichtet und die Clients kennen den neuen DNS, kann man eine Runde auf seinen Lieblings-Websites drehen und in der Weboberfläche des Pi-Hole nachsehen, ob die Requests eingegangen sind, was und wie viel geblockt wurde. Die Oberfläche ist hier sehr aufgeräumt und selbsterklärend. Das gilt überhaupt für das komplette Projekt, das sehr gut gepflegt und durchdacht ist. So aktualisieren sich die Filterlisten beispielsweise automatisch und man muss sich um sehr wenig kümmern.

Wichtig zu erwähnen sind die eingebauten Black- und Whitelists, in die man Domains eintragen kann, die auf jeden Fall immer oder nie geblockt werden sollen. Diese Einträge überstimmen die Listen, in denen tausende von Domains enthalten sind.

In der Konfiguration kann man sich nun auch noch überlegen, statt der standardmässig angebotenen Google-DNS-Server andere, zensur- und logfreie Server einzurichten. Das geht ganz einfach, indem man die IPs dieser Server einträgt.

Wem die eingebauten Blocklisten noch nicht umfangreich genug sind, findet im Internet noch viele weitere Listen. Eine gute Übersicht gibt es bei Wally3k. Das Aktualisieren der Listen kann etwas dauern und man sollte nicht unbedingt nach dem Motto mehr ist mehr vorgehen, denn alle Listen müssen im RAM gehalten werden. Außerdem steigt mit vielen Listen die Gefahr für Duplikate oder falsche Hosts an. Glücklicherweise lässt sich dies aber auch sehr gut steuern, denn in der Pi-Hole-Weboberfläche gibt es die Möglichkeit, herauszufinden, warum eine bestimmte Domain geblockt wurde.

Wem Pi-Hole gefällt, sollte über eine Spende an die Entwickler nachdenken.

Happy Surfing!

  1. Eine ähnliche Konfiguration ist auch mit Proxies wie Squid möglich, die Installation als „transparenter“ Proxy ohne Konfigurations-URL (denn die kann man bei „dummen“ Geräten oft gar nicht eingeben), Konfiguration und Pflege ist aber durchaus schwieriger.
  2. Glücklicherweise haben die meisten großen Website Ihre Vermarktungs- und Werbeaktivitäten aber auf externe Dienstleister ausgelagert, und die werden recht zuverlässig erkannt / gefiltert.
  3. Für Chrome und Firefox kann ich AdGuard empfehlen. Sehr Ressourcen schonend und effektiv.
  4. Dort steht auch, dass es potentiell gefährlich ist, irgend welchen Code als root in die bash zu pipen (was logischerweise stimmt). Führt rt man diese jedoch auf einem frischen Pi ohne sonstige Software aus, ist die Gefahr sehr klein. Wer möchte, kann sich selbstverständlich das Installationsskript vorher anschauen, bevor es läuft.
  5. Das hat auch den Vorteil, dass man im Pi dann sieht, woher die Requests kommen, ansonsten steht immer der Router als Quelle dort.

Ein Gedanke zu „Adblocker fürs komplette Heimnetz: Pi-Hole

  1. Ich bin auf deinen Beitrag gestoßen, da du im Text „googleadservices.com“ erwähnst. Leider treibt mich genau die Adresse in den Wahnsinn. Denn Google zu umgehen hat seine Grenzen. So switche ich immer, wenn ich wirklich genaue Treffer haben will, auf google um. Duck-Duck und Co sind mir einfach zu wischiwaschi, obschon ich sie meist ernst nehme.
    In Verbindung mit dem PiHole kommt nun googleadservices.com ins Spiel. Fast alle Shopping-Verlinkungen aus der Google Warensuche werden vom PiHole geblockt. Das ich googleadservices.com auf die Whitelist packe, macht keinen Unterschied.
    Hast du eine Idee?
    Ansonsten ist PiHole einfach geil. Obwohl, *hüstl hüstl*, auch „Motherless“ wird leider im VaVoo komplett lahm gelegt seit kurzem ;-)

Schreibe einen Kommentar

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