Bastelrechner als Adblocker im LAN – HowTo & Erfahrungen

First things first

Vor einer Weile bin ich zufällig über das Projekt Pi-Hole gestolpert.
Grob umrissen geht es darum sich einen Bastelrechner, etwa einen Raspberri-Pi oder ein Äquivalent anzuschaffen und diesen im Heimnetzwerk die Namensauflösung zu überlassen.
Anfragen an in Webseiten eingebettete Werbeträger führen dann ins nichts und werden erst gar nicht geladen.
Jeder, der sich per WiFi oder LAN mit dem Netzwerk verbindet genießt automatisch Werbefreiheit.

Bestellt

Ich hatte es ja schon angedroht, dass ich das Projekt realisieren will und mir bei Aliexpress als momentan einzigen Zulieferer so ein Teil bestellt.

Mit diesen Bastelrechnern hatte ich vorher noch nichts zu tun und musste erst einmal herausfinden wie man diese anspricht. Schließlich gibt es keine Anschlussmöglichkeit für eine grafische Schnittstelle (sprich Bildschirm).

Die Anschlüsse sind überschaubar. Neben dem USB2.0-Port sowie MicroSD-Slot gibt es noch einen MicroUSB-Anschluss zur Stromversorgung und eine RJ45-Buchse für Netzwerk. Die restlichen Stifte sind für nardwarenahe Kommunikation gedacht, beispielsweise wenn man mehrere PI kombinieren möchte und sind für mich nicht relevant.
Zum Schluss fällt noch ein baumelndes schwarzes Kabel mit Schrumpfschlauch über dem Ende auf. Dies stellt die WLAN-Antenne dar.

Installation

Eine auf Debian aufbauende und für eine Vielzahl dieser Minicomputer verfügbare Distribution nennt sich DietPi. Sie eignet sich für Linux-Neulinge gleichermaßen wie für erfahrene Administratoren. Erstere verwenden das ncurses-basierende Menü um verschiedenste Software automatisch und vorkonfiguriert zu installieren und einzurichten. Letztere nutzen einfach apt.

Die Installation ist simpel. Man läd sich das passende Image für den eigenen Pi, in meinem Fall OrangePi Zero,sowie ein Programm namens Win32Diskimager herunter. Kombiniert man beides wird das Image auf die am PC angeschlossene SD-Karte geschrieben.

Zu dem Zeitpunkt wusste ich noch nicht, dass zum Boot eine SD-Karte zwingend erforderlich ist, da das Model nicht von einem USB-Stick starten kann. Somit bin ich beim Versuch einem alten USB-Stick eine Daseinsberechtigung zu geben gescheitert. Also ein altes Smartphone geöffnet, SD-Karte raus und die Prozedur wiederholt. 

Möchte man, dass sich der PI nach dem ersten Start im eigenen WLAN anmeldet muss auf der SD-Karte noch eine Datei mit der SSID und Passwort gefüttert werden. Ich habe von dieser Möglichkeit keinen Gebrauch gemacht, denn ich schwöre auf Kupfer :-).

Zugriff

Ab diesem Zeitpunkt kann es für den Laien durchaus anfangen etwas kompliziert zu werden.
Der wahlweise kabelgebunden oder drahtlos ins Netzwerk integrierte PI verfügt über einen eingebauten DHCP-Client, welcher sich eine IP-Adresse vom Router zuweisen lässt. Das hat den Nachteil, dass man erstmal nicht weiß unter welcher Adresse der PI jetzt im Netzwerk hängt, denn ein grafisches Interface o.ä. gibt es nicht.
Ich habe es mir einfach gemacht und einen Blick in die Heimnetzübersicht meiner Fritzbox geworfen. Schließlich konnte ich dann auch per SSH auf die – in meinem Fall – 192.168.178.20 zugreifen. Das root-Passwort lautet dietpi.

Nach dem ersten Verbinden spult das Betriebsystem zunächst eine Erstinstallationsroutine ab bei der es sich selbst auf den neuesten Stand bringt. Das eingebaute Tool dietpi-config startet nach einem Reboot und erneutem Verbinden automatisch und erlaubt es verschiedene Dinge, wie etwa Einstellung der Netzwerkparameter, Sicherheit oder Softwareinstallation usw. vorzunehmen. Da ein DNS-Server im Idealfall durchgehend eine feste IP-Adresse haben sollte wurde diese kurzerhand auf STATIC und 192.168.178.252 festgesetzt. Schade, IPv6 kann nicht individuell konfiguriert werden, lediglich die Möglichkeit zum deaktivieren steht zur Verfügung.

Aus dem Tool heraus habe ich dann noch das Root-Passwort geändert und ein paar andere Programme einschließlich Pi-Hole installiert. Dietpi-config kümmert sich mit apt im Hintergrund um sämtliche Abhängigkeiten der einzelnen Pakete und installiert diese sukzessive.
Nach einem Reboot war schon alles erledigt und ich konnte in meiner Fritzbox den automatisch zugewiesenen DNS-Server in sowohl den IPv4- als auch IPv6-Einstellungen auf die Adresse des PI ändern.

Erster Test

Zunächst habe ich alle anderen Werbeblocker, etwa BlockThis! auf dem Smartphone und uBlock Origin auf dem Desktop deaktiviert und begonnen ziellos Webseiten aufzurufen. Das Ergebnis kann sich sehen lassen.

Die Verwaltung erfolgt über ein integriertes Webinterface, welches wahlweise über http://pi.hole/admin bzw http:///admin aufrufen lässt.
Dort kann man einen Blick in das Protokoll der getätigten DNS-Abfragen werfen, die Blocklisten aktualisieren sowie Domains zur Black- und Whitelist hinzufügen bzw. entfernen. Außerdem errechnet die Übersicht den Schnitt an blockierten Abfragen. Nach zwei Stunden wurde von gut 1000 Abfragen 20% blockiert gemeldet.

Verschiedene Werbung ist eng mit Unternehmen wie Microsoft oder Google verzahnt. Dadurch kann es durchaus zu so genannten false positives kommen kann. Zu gut Deutsch: Es wird zuviel blockiert. Abhilfe schafft die Whitelist. Dort können Domains eingetragen werden welche explizit zugelassen werden sollen. Häufig verwendete Einträge für verschiedene Dienste wurde in einem Forenbeitrag zusammengefasst. Spotify, Skype oder Google Maps zählen dazu.

Zu den den vorkonfigurierten Blocklisten habe ich noch EasyList Germany, EasyList, EasyPrivacy und Anti-Adblockfilters hinzugefügt. Google.de und twitter.com mussten danach auf die Whitelist gesetzt werden.
Update: Diese Listen sind nicht direkt kompatibel und bedürfen Umbauarbeiten, daher fürs erste wieder entfernt.

Fazit

Das Projekt gestaltete sich einfacher als erwartet. Die verfügbaren Anleitungen sowie die gute Vorkonfiguration der Programme trugen dazu bei.
Beim Langzeittest wird sich zeigen wie gut der Spaß wirklich funktioniert und ob sich die Mühe gelohnt hat. Selbst wenn nicht: Mit neun US-Dollar wurde nicht viel Geld kaputt gemacht.

Bei Fragen und Anregungen hinterlasst mir einfach eine Nachricht unter diesem Tweet: