Mit dem Pi-hole einen Werbeblocker für das gesamte lokale Netz einrichten

Pi-hole – Das Schwarze Loch für Werbung im Internet
Pi-hole – Das Schwarze Loch für Werbung im Internet

Ich habe mal wieder ein neues Tool in das lokale Netzwerk eingebunden. Im letzten Jahr hatte ich ja das gesamte lokale Netz auf UniFi umgestellt und dadurch unter anderem einen viel besseren Überblick bekommen was im Netzwerk so los. Die Anzahl der Geräte, die mit dem Internet verbunden sind, steigt ja ständig und so sind hier inzwischen ca. 35 bis 40 Geräte ständig mit dem Internet verbunden. Diese habe ich je nach Anwendung gruppiert und eigene VLANs definiert. Neben dem ohnehin getrennten Gastnetz gibt es also VLANs für VoIP-Telefonie, für die Büro-Rechner, Smarthome-Geräte, etc. Über Firewall-Regeln ist dann definiert ob und in welcher Richtung sich die Geräte sehen dürfen – oder eben nicht. Ein feine Sache.

Weitere Filter, z.B. für Werbung oder als Kindersicherung gab es bisher nicht, oder wenn dann nur direkt auf den jeweiligen Geräten. Entsprechende Werbeblocker-Plugins wie Adblock Plus oder uBlock Origin nutzen ja sicher viele von Euch. Diese verrichten sehr zuverlässig ihren Job und machen insbesondere Websites mit vielen Werbebannern und Trackern nutzbarer und sicherer. Der Nachteil: Sie funktionieren nur in dem Browser oder auf dem Gerät, in dem das Plugin installiert ist.

Werbung und Tracker finden sich aber nicht nur auf Websites, sondern beispielsweise auch in vielen Smartphone-Apps. Auch Software auf dem PC oder auf Smart-TVs sowie Streaming-Boxen wie Apple TV oder Fire TV spielen Werbung aus oder setzen Tracker ein. Hier ist aber der Einsatz von Werbeblockern in der Regel gar nicht möglich. Und an dieser Stelle setzt nun der Pi-hole an. Auf den bin ich erst kürzlich in einem UniFi-Forum aufmerksam geworden und habe mir das Ding mal näher angesehen – Und kurzerhand eingerichtet.

Was ist der Pi-hole?

Die Pi-hole Webadmin-ConsoleDer Pi-hole ist ein Filter, der Werbung oder Tracker direkt im lokalen Netzwerk blockt. Umgesetzt wird das über die DNS-Auflösung. Hinter jeder Domain-Adresse verbirgt sich ja eine IP-Adresse und im Domain Name System (DNS) sind diese Verknüpfungen hinterlegt. Beim Aufruf einer Website fragt der Router also zunächst diese Informationen bei einem öffentlichen DNS-Server ab und gibt diese an den Browser zurück, damit dieser dann den Webserver kontaktieren kann. Meist ist das der DNS-Server des Zugangsproviders, sehr gerne wird aber auch der Google-DNS 8.8.8.8 verwendet. Genauso funktioniert die DNS-Auflösung natürlich bei allen anderen Domain-/IP-Basierten Internet-Anwendungen.

Der Pi-hole übernimmt nun die Aufgabe der DNS-Auflösung und gleicht vor der Weitergabe an die öffentlichen DNS-Server die anforderte Domain-Adresse mit den internen Filterlisten ab. Aktuell sind in den Filterlisten über 120.000 Domainnamen eingetragen, die Werbung ausliefern oder den User/das Gerät tracken. Steht eine Domain auf einer der Filterlisten, dann gibt der Pi-hole einfach seine eigene lokale IP-Adresse zurück. Und der im Pi-hole integrierte kleine Webserver liefert dann auf Anfrage eine leere Antwort. Anstelle eines Werbebanners erscheint somit auf der Website einfach gar nichts.

Der Pi-hole ist also ein kleiner DNS-Server, der einfach auf einem Raspberry Pi installiert wird und mittels Filterlisten Werbung und Tracker blockiert. Im Router muss man dazu einfach nur die lokalen IP-Adresse vom Pi-hole als DNS-Server eintragen. Fertig. Klingt einfach und ist es eigentlich auch.

Der größte Vorteil des Pi-hole ist, dass dieser Werbung und Tracker für alle Devices im gesamten lokalen Netz blockieren kann. Und zwar ohne, dass man dafür auf den einzelnen Geräten irgendetwas installieren oder konfigurieren muss.

Der Name Pi-hole setzt sich übrigens aus „Raspberry Pi“ und „Black hole“ zusammen. Sozusagen das Schwarze Loch für Online-Werbung. Den Namen mag ich übrigens.

Was benötigt man?

Zunächst benötigt man natürlich den kleinen Bastel-Computer Raspberry Pi, am besten mit einem passenden Gehäuse. Dazu eine 16GB Micro-SD-Karte und ein USB-Netzteil, dass mindestens 2,4A liefert. Es gibt auch komplette Starter-Kits, die alles Notwendige enthalten. Vorteil an den Starter-Kits ist, dass auf der Micro-SD bereits das RasPi Installations-Programm NOOBS vorinstalliert ist. Also einfach zusammenbauen und loslegen.

Naja fast. Zumindest für die Erstinstallation benötigt man noch einen Monitor oder Fernseher mit HDMI-Anschluss und eine USB-Tastatur. Wenn der der RasPi einmal eingerichtet ist, benötigt man Monitor und Tastatur nicht mehr. Man verbindet sich einfach von einem beliebigen PC per SSH auf die Konsole. Am einfachsten geht das mit PuTTY (Bitte nicht erschrecken – Ja, das ist die offizielle Website..!).

Auf der Raspberry-Pi-Website gibt es viele Anleitungen was genau zu tun ist, ich will jetzt hier nicht näher darauf eingehen. Es ist aber wirklich einfacher als es sich anhört. Und es macht Spaß. Installieren sollte man übrigens die aktuellste Version von Raspbian ohne Desktop auch Raspbian Stretch Lite genannt. Diese steht auch bei der Installation über NOOBS zur Auswahl.

Ich habe übrigens das ganz neue Modell 3B+ gewählt, das Vorgänger-Modell reicht aber auch völlig. Ein Gehäuse und alles andere hatte ich noch hier noch in der Schublade liegen.

Natürlich kann man auf auch auf einem bereits vorhandenen RasPi zusätzlich Pi-hole installieren. Ratsam ist aber, einen RasPi ausschließlich für diese neue Aufgabe zu verwenden. Der Pi-hole soll ja nicht durch andere Anwendungen oder Dienste versehentlich zur Bremse für das gesamte lokale Netz werden, weil dieser die DNS-Auflösung nicht schnell genug ausführen kann.

Pi-hole installieren

Wenn der RasPi eingerichtet ist und optimalerweise bereits eine feste IP-Adresse hat (entweder über den Router zugewiesen oder direkt auf dem RasPi konfiguriert) dann muss man nur einen Befehl auf der Konsole eingeben, um die Installation auszuführen:

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

Während der Installation muss man noch ein paar Dinge festlegen, aber in der Regel kann man die vorausgewählten Optionen einfach bestätigten. Nach Abschluss der Installation bekommt man die Adresse des Web-Interfaces sowie das zugehörige Passwort angezeigt. Wenn alles geklappt hat dann, dann sollte man den Pi-hole über die Adresse

http://pi.hole/admin

aufrufen können. Das was man dort einsehen kann bzw. einstellen kann, sollte zum größten Teil selbsterklärend sein. Damit wäre der erste Teil erledigt und der Pi-hole sollte einsetzbar sein.

Pi-hole verwenden

Konfiguration in der FRITZ!BoxNachdem die Installation abgeschlossen ist, müssen die Geräte im Netzwerk – bzw. im einfachsten Fall nur der Router – natürlich wissen, dass ab jetzt nur noch der Pi-hole als DNS-Server verwendet werden soll. Falls Ihr also bei Euren Geräten bisher keine gesonderte DNS-Konfiguration vorgenommen habt (wovon ich ausgehe), dann genügt es in der Tat, nur im Router diese Einstellung vorzunehmen. Als primären/bevorzugten DNS-Server gebt Ihr dann also die IP-Adresse Eures Pi-holes an. Der sekundäre/alternative DNS-Server kann leer bleiben oder man trägt dort als Backup einen öffentlichen DNS-Server wie den Google DNS 8.8.8.8 oder den ganz neuen Cloudflare DNS 1.1.1.1 ein.

Konfiguration eines Netzwerks im UniFi ControllerIn meiner UniFi-Umgebung hatte ich diese Einstellung für den ersten Test zunächst nur für einzelne VLANs vorgenommen, dann aber doch recht schnell komplett umgestellt. Also nicht nur für die einzelnen Netzwerke/VLANs, sondern auch bei den WAN-Einstellungen des USG, sodass wirklich die gesamten DNS-Abfragen über den Pi-hole laufen. Bisher konnte ich noch keine Probleme feststellen. Der Pi-hole läuft zuverlässig und stabil.

Einblicke und Statistiken

Auf dem Dashboard des Web-Interfaces sieht man eine Zusammenfassung der letzten 24 Stunden. Interessant sind vor allem die Gesamtzahl der DNS-Abfragen (hier aktuell ca. 45.000 - 50.000) und die Anzahl der geblockten Abfragen (ca. 10.000) aus der sich eine Blockquote von aktuell ca. 20% ergibt.

Diese hohe Quote hätte ich ehrlich gesagt so nicht erwartet. Vor allem wenn man bedenkt, dass immer noch alles funktioniert. Kein Gerät hat bisher seinen Dienst verweigert, keine App meckert und natürlich funktionieren auch alle Websites noch immer wie bisher. In Firefox und Chrome habe ich übrigens weiterhin uBlock Origin im Einsatz. Hier wird immer noch Einiges zusätzlich gefiltert. Die Algorithmen eines AdBlocker-Plugins erkennen ja noch ganz andere Muster, als nur einen reinen Domainnamen auf einer Blacklist.

Im Query Log erhält man dann noch weitere Einblicke die DNS-Abfragen. Wirklich interessant, welche Geräte da im Hintergrund so nach draußen kommunizieren wollen. Und natürlich kann man aus dem Query Log einzelne Einträge direkt in eine eigene Blacklist oder Whitelist übernehmen.

Filterlisten

Derzeit verwende ich nur die mitgelieferten Filterlisten, die übrigens einmal pro Woche automatisch aktualisiert werden. Darin sind aktuell gut 120.000 Domains eingetragen. Weitere Filterlisten kann man einfach im Web-Interface eintragen. Quellen dafür gibt es viele. Auf GitHub wurde eine umfangreiche Sammlung von Filterlisten zusammengetragen.

Upstream DNS-Server

Der Pi-hole hat natürlich selber keine vollständige Datenbank aller weltweit existieren Domains, sondern benötigt die Angabe von sogenannten Upstream DNS-Servern, also DNS-Server an die er die DNS-Abfragen weiterleitet, wenn die abzufragende Domain nicht auf einer der Filterlisten steht.

Im Web-Interface kann man dazu eine Reihe von vordefinierten öffentlichen DNS-Servern (Google, OpenDNS, Quad9, und noch ein paar andere) auswählen oder auch zwei eigene DNS-Server (z.B. die vom Zugangsprovider) eintragen. Ich habe aktuell alle ausgewählt und zusätzlich die beiden neuen Cloudflare DNS-Server eingetragen, da diese aktuell noch nicht in der Liste der vordefinierten Server stehen.

Die neuen Cloudflare-DNS-Server legen laut eigener Aussage sehr viel Wert auf Privacy und sollen die beste Performance haben. Beim Blick in die 24h-Statistik kann ich das bis jetzt sogar bestätigen. Die Cloudflare-Server verarbeiten die meisten Anfragen meines Pi-holes. Eine interessante Alternative also zum beliebten Google Public DNS. Ich werde das jetzt mal eine Weile beobachten und dann vermutlich nur noch die Cloudflare-Server nutzen.

Welche Möglichkeiten gibt es noch?

Der Pi-hole fungiert nun also als DNS-Server im gesamten lokalen Netz für alle angeschlossenen Geräte gleichwertig. Ein getrennte Zuweisung von Filterlisten für einzelne IP-Bereiche oder MAC-Adressen ist aktuell leider (noch?) nicht möglich.

Prinzipiell ließe sich der Pi-hole durch weitere Filterlisten ja auch als Kindersicherung oder Ähnliches einsetzen. Hierzu wäre dann aber nach aktuellem Stand ein weiterer Pi-hole notwendig, den man dann mit den entsprechenden Filterlisten ausstattet. In meinem UniFi-System wäre es damit z.B. möglich, für eines der Netzwerke/VLANs einen weiteren Pi-hole einzusetzen, der dann andere bzw. zusätzliche Filterlisten verwendet. Mal sehen, was die Zukunft bringt...

Die Pi-hole Webadmin-Console
Die Pi-hole Webadmin-Console
Konfiguration in der FRITZ!Box
Konfiguration in der FRITZ!Box
Konfiguration eines Netzwerks im UniFi Controller
Konfiguration eines Netzwerks im UniFi Controller

Bisher 1 Kommentare

  1. bruno jennrich

    bruno jennrich

     

    13. April 2018, 10:17 Uhr

    nice!

Dein Kommentar?

Menschlich? Dann gib bitte die 5 Zeichen genau so ein, wie Du sie in der Grafik lesen kannst. Keine 5 Zeichen? Erzeuge einfach einen neuen Code.

Gravatar:

Wenn Du möchtest, dass Dein Bild neben Deinem Kommentar erscheint, dann melde Dich einfach bei Gravatar an.

Nutzungshinweise:

Dein Kommentar erscheint nicht automatisch, sondern wird erst nach einer Prüfung manuell freigeschaltet. Ich behalte mir vor alle Kommentare zu löschen, die

  • rassistische, sexistische oder gewaltverherrlichende Inhalte haben,
  • zu kriminellen Aktionen aufrufen oder diese verteidigen,
  • beleidigende Inhalte besitzen,
  • Werbung für Dritte darstellen oder deren Inhalte einem Link auf fremde Angebote gleichkommt.