Netzwerkweiter Adblocker mit PiHole und dem Raspberry Pi

Ein Freund kam neulich auf mich zu und fragte mich was er gegen diese ganzen nervigen Werbebanner machen könne. Ich riet ihm spontan dazu einen Adblocker wie UBlock Orgin zu nutzen, nicht weil ich den so super finde, sondern weil der sich leicht installieren lässt.

Er sagte mir dass er den sehr wohl bei sich im Browser am PC installiert hätte, ihm ginge es aber eher um all die anderen Geräte im Netzwerk mit denen sich Webseiten darstellen lassen. Also so etwas wie Tablets, Smartphones und Smart TVs, aber auch sein Kühlschrank weil er sich neben der Bestellung von Lebensmitteln auch Webseiten darstellen lassen kann, beispielsweise Rezepte zum Kochen.

Mir fiel zwar die Möglichkeit ein einen alternativen Browser wie den Firefox zu nutzen. Dort ist es im Gegensatz zu dem Mobilen Chrome-Browser durchaus möglich extensions zu nutzen, aber es würde bei dem besagten Kühlschrank nichts nützen. Also blieb nur ein Netzwerkweiter Adblocker.

Da nicht nur er das Problem hat, sondern mit großer Sicherheit auch andere, habe ich mir gedacht dass hier die richtige Stelle ist eine kleine Anleitung zu schreiben. Ich werde euch versuchen zu erklären was ein Adblocker macht, was ihr für Komponenten braucht, was sie in etwa kosten und wie ihr den PiHole einrichtet.

Was ist ein Adblocker und wie funktioniert dieser?

Jeder Adblocker funktioniert derzeit dadurch dass er die Verbindung eines Webaufrufes scannt und bei erkennen einer Werbedomain diese nicht weiterleitet an die Ausgabe wie dem Browser. Dies funktioniert in dem er sich selbst als ein DNS Server dazwischenschaltet.

Ein DNS-Server ist in Grunde genommen einfach ein Übersetzer. Wenn jemand in seinem Browser www.irgendeinedomain.de eintippt, erfolgt nicht der direkte Aufruf sondern der DNS-Server hat eine Liste von anderen DNS-Servern die solange ihre Listen abfragen bis irgendein Server sagt: „Die Domain www.irgendeinedomain.de hat die IP 123.456.789.123:1234“. Dies wird dem eigenen DNS-Server wieder mitgeteilt, der wiederrum dem eigenen Endgerät sagt wo es hingeht und die Verbindung wird aufgebaut. Das passiert allerdings im Millisekunden-Bereich und wird in den allermeisten Fällen gar nicht wahrgenommen. Der heimische Router hat im Übrigen so ein DNS-Server installiert, aber auch die Hostlist in dem eigenen Betriebssystem übernimmt eine ähnliche Funktion.

Im Gegensatz zu der weit verbreiteten Meinung baut euer Browser nicht nur eine Verbindung, sondern eine Vielzahl von Verbindungen auf. Ein Beispiel: Die Website irgendeinedomain.de hat ein YouTube Video eingebettet, dann noch ein Bild von einer anderen Website und in einem Banner läuft Werbung. Dann wird nicht nur eine Verbindung zu irgendeinedomain.de aufgebaut, sondern auch zu YouTube, der Website wo das Bild liegt und dem Server wo die Werbung ausgegeben wird. Also insgesamt 4 Verbindungen. Hat die betreffende Seite nun noch Analyse-Tools und sonstige Einbettungen kommen schnell 10-40 Verbindungen zu Stande. Das ist auch unteranderem ein Grund warum einige Webseiten so lange brauchen bis diese sich aufbauen. Es gibt einfach Betreiber, die es etwas arg übertreiben nur damit sich die Seite finanziert.

Genau hier setzt ein Adblocker ein. Er leitet die DNS Anfragen über sich selbst um. Erkennt der Adblocker nun, egal ob sich um einen eigenen Server irgendwo im Netzwerk handelt oder als kleines Plugin im Browser, eine Werbedomain, leitet er dessen Antwort einfach nicht weiter und im Browser des Benutzers wird dieser Platzhalter nicht befüllt beziehungsweise gar nicht erst angezeigt.

Es gibt allerdings auch Werbebanner, die eine Antwort zurückgeben ob diese geladen wurden, bleibt diese Antwort aus kann es sein das man vor einer PayWall steht, wie es einige der großen Zeitschriftenverlage bereits umsetzen. Man wird so vor die Option gestellt zu zahlen, zu gehen oder die Werbung zuzulassen. Zwar gibt es durchaus Mittel und Wege dies zu umgehen, aber dies wird hier nicht gezeigt.

Eines soll an dieser Stelle aber noch gesagt werden: Es kann vorkommen das trotz Adblocker auf einigen wenigen Seiten trotzdem Werbung angezeigt wird. Das liegt aber nicht daran, dass der Adblocker an dieser Stelle versagt hat. Sondern daran das bei selbst gehosteter Werbung diese als solche nicht erkannt wird, da die Domain dieselbe ist zu der man wirklich wollte.

Welche Komponenten benötige ich?

  • Einen Raspberry Pi 1 bis 3, ein schwaches Model reicht völlig aus. Beispielsweise ein rumliegendes 1er Modell oder man kauft sich ein Raspberry Pi Zero W. Wichtig ist nur ein Modell mit mindestens 512 MB RAM.
    • Kosten ca. 10-35 €
  • Ein Gehäuse für den Raspberry Pi
    • Kosten ca. 5-15 €
  • (micro)SD-Karte mit 4 GB oder mehr.
    • Kosten ca. 5 €
  • Ggf. RJ45 Netzwerkkabel um den Pi ins Netzwerk zu bringen.
    • Kosten ca. 1-5 €
  • 5 Volt Netzteil mit Micro-USB, alternativ reicht auch ein Netzteil was man noch hat. Beispielsweise vom vorherigen Smartphone. Wichtig ist nur das dies mindestens 1,2 Ampere haben sollte, um einen stabilen Betrieb zu gewährleisten. 1,2 A reicht auch nur wenn außer dem Netzwerkkabel nichts anderes angeschlossen ist.
    • Kosten ca. 0-13 €
  • USB A auf Micro USB Kabel
    • Kosten ca. 1-5 €
  • Kartenlesegerät für (micro)SD-Karten.
    • Kosten ca. 2-7 €
  • Die Software Raspbian, als Betriebssystem.
    • Kosten 0 €
  • Die  Software PiHole, zu laden im Betriebssystem selbst.
    • Kosten 0 €
  • Die Software Win32DiskImager (Windows), um ein Image auf die SD-Karte zu schreiben.
    • Kosten 0 €
  • Die Software PuTTY, um mit dem Raspberry Pi per SSH zu kommunizieren.
    • Kosten 0 €

Einen PC mit Windows habe ich einfach mal als gegeben vorausgesetzt, da ich mich damit am besten auskenne.

Man sieht nun das in der Spitze mit 85,- € gerechnet werden darf. In den meisten Fällen wird es sich aber nur auf den Raspberry Pi und das Gehäuse beschränken, da man das meiste oft noch irgendwo rumliegen hat.

Wie installiere ich den PiHole?

Da der Zusammenbau der Hardware weitestes selbsterklärend ist gehe ich nicht weiter auf die Installation ein. Daher werden wir nun an dieser Stelle anfangen wie die Software installiert wird und wie sie im Anschluss eingerichtet wird.

Zunächst benötigt man das Betriebssystem Raspbian, diese ist am einfachsten über die offizielle Seite https://www.raspberrypi.org/ zu bekommen. In dem Download ist eine Zip-Datei enthalten, welche mit dem Bordmitteln entpackt wird. Im Anschluss sollte man eine .IMG Datei haben. Diese wird einfach mit dem Programm Win32 Disk Imager auf die SD Karte gespielt.

Beachtet werden sollte dabei, dass dies keine Normale Installation ist wie man es von Windows kennt. Vielmehr ist es ein System Image, welches eine Kopie eins fertig installierten Betriebssystems darstellt. Dadurch ist es mit dem kleinen Programm Win32 Disk Imager auch möglich nach einer erfolgreichen Einrichtung einfach ein vollständiges Systembackup zu machen, welches bei Bedarf einfach aufgespielt werden kann.

Nach der Erfolgsmeldung das, dass Image aufgespielt wurde und dem ablehnen das Windows den Datenträger gleich wieder formatieren will, muss noch die SSH Funktion eingeschaltet werden. Diese ist von Haus auch deaktiviert, um einen unbeabsichtigten Zugriff von außen zu vermeiden.

Hierzu öffnet man den Datei-Explorer und geht in das Laufwerk „boot“ rein. Dort legt man eine Datei mit dem Namen „ssh“ an. Wichtig ist das die Datei wirklich einfach nur ssh heißt und nicht ssh.txt. Dazu kurz die Dateinamenerweiterung einschalten und danach die Endung löschen. Durch das Anlegen der Datei wird dem Betriebssystem gesagt, das SSH sofort genutzt werden kann. Dies wird benötigt um mit dem Programm PuTTY auf den Raspberry Pi ohne Anschluss eines Monitors und Eingabegeräte zuzugreifen. Nachdem die SD Karte in den Raspberry Pi eingelegt und dieser mit Strom versorgt wurde, sollte man noch etwas gewartet werden damit das Betriebssystem starten kann.

Nach dem Start des Programms PuTTY muss man nun noch die IP des Raspberry Pi rausbekommen. Dazu schaut man am besten in seinen Router rein, dort sieht man beispielsweise im Netzwerkbereich welche Adresse via DHCP vergeben wurde. Diese wird nun in PuTTY eingetragen und verbindet sich mit dem Raspberry Pi.

Wenn nun alles funktioniert, sollte die Frage nach einen Benutzernamen kommen. Standartmäßig ist der Benutzername „pi“ und das Passwort „raspberry“.

Nun sollte man eingeloggt sein und es kann mit dem konfigurieren des Raspberry Pi beginnen.

Als erstes wird das Standard Passwort geändert, dazu wird

passwd

eingegeben. Im Anschluss wird ein neues Passwort vergeben. Danach sollten die Datenbanken erneuert werden und allgemein alles auf den neuesten Stand gebracht werden. Hierzu wird der Befehl

sudo apt-get update

und im Anschluss

sudo apt-get upgrade

verwendet. Das dauert erfahrungsgemäß etwas. Sind beide Befehle durchgelaufen, wird nun mit der eigentlichen Installation des PiHole begonnen. Diese ist aber wirklich einfach indem einfach der Befehl

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

eingegeben wird. Die Macher des PiHole haben mit diesem Befehl eine Installationsroutine geschaffen wo alle benötigten Komponenten installiert werden. Es ist dadurch auch verständlich das die Installation von System zu System durchaus länger dauern kann.

Ist alles Installiert startet auch schon die Konfiguration, wobei zunächst eine feste IP für den Pi vergeben wird. Dies ist wichtig damit der Pi immer erreicht werden kann und nicht versehentlich durch den DHCP Server eine neue IP erhält. Klassischerweise wird bei Linux über die Konsole nicht mit der Maus gearbeitet, sondern ausschließlich über die Tastatur. Tab, die Pfeiltasten und Enter reichen bei vielen der Schritte aber aus.

Eine Beispielhafte Konfiguration kann so aussehen:

  • Wählen Sie Upstream DNS Provider aus
    • Google oder Custom wo der Router als Ziel genommen wird
  • Listen auswählen
    • Alle Listen Check
  • Wählen Sie Protokolle aus
    • IPv4: Überprüfen Sie
    • IPv6: Überprüfen Sie
  • Möchten Sie Ihre aktuellen Netzwerkeinstellungen als statische Adresse verwenden?
    • IP address: 192.168.1.250 (Pi Adresse)
    • Gateway: 192.168.1.1 (der Router)
  • Möchten Sie die Webadmin-Oberfläche installieren?
    • Ein: Check
  • Möchten Sie den Webserver (lighttpd) installieren?
    • Ein: Check
  • Möchten Sie Abfragen protokollieren?
    • Ein: Check
  • Wählen Sie einen Datenschutzmodus für FTL
    • 0 Show everything: Check, wichtig bei Netzwerken in eigenen Unternehmen ist eine weniger neugierige Option zu nehmen um keinen Vorwurf der Mitarbeiterüberwachung zu erhalten.

Danach ist alles fertig eingerichtet und der PiHole kann über das Netzwerk erreicht werden. Um PiHole im Nachgang noch zu konfigurieren kann man dies über einen Browser unter der Adresse http://pi.hole/admin oder http://192.168.1.250/admin erledigen. Das Passwort dazu erhält man am Ende der Installation welches gut aufbewahrt werden sollte.

Wie setze ich den PiHole als DNS-Server im eigenen Netz ein?

Abschließend muss der PiHole noch als DNS-Server im eigenen Netzwerk eingesetzt werden. Hierzu gibt es grundsätzlich drei Methoden.

Methode 1 – Manuelle Einrichtung:
Hierbei wird für jeden Client eine eigene, feste IP vergeben und stellt den DNS-Server auf den Raspberry Pi ein. Dies ist sehr aufwendig und dadurch auch fehleranfällig. Allerdings ist das für erste Tests ideal geeignet.

Methode 2 – Den DNS-Server des Routers ersetzen:
In den meisten Fällen wird der eigene Router als Gateway auch den DNS Dienst im Netzwerk übernehmen. Normalerweise ist der eigene Internetanbieter dort eingetragen, kann aber auch geändert werden um dort beispielsweise 8.8.8.8 einzutragen und den DNS Dienst von Google zu nutzen. Dies kann man sich nun zu Nutze machen und die IP des Raspberry Pi eintragen. Es kann aber sein das danach gar nichts mehr geht, weil durch die Umleitung des Internetverkehrs in das eigene Netz dies als Angriff gewertet werden kann. Daher ist das eine Möglichkeit, aber eine unsaubere Lösung.

Methode 3 – Den DNS-Server bei dem DHCP-Server ändern:
Folglich ist die sauberste Möglichkeit den Raspberry Pi im eigenen Netzwerk einzusetzen ist bei dem DHCP-Server des Routers die DNS Zieladresse die des Raspberry Pi einzusetzen. Dadurch wird bei allen Clients, welche sich mit dem Netz verbinden und eine Automatische Adresse beziehen eine Filterung vorgenommen. Clients die außerhalb des DHCP IP-Bereich liegen und statisch vergeben werden, können aber weiterhin den Router als DNS verwenden. Denn dieser verbindet sich grundsätzlich zu dem DNS welcher vorgegeben wurde. Zudem funktioniert dieser auch weiterhin, wenn der Raspberry Pi ausfallen sollte, da als alternative DNS Adresse des Routers vergeben werden kann.

Kommentar von Silberbär

Ich hoffe ich konnte dem einen oder anderen helfen, um sein eigenes Netz etwas zu verbessern. Es wird sicherlich noch mehr zu dem Raspberry Pi folgen, da sich dieser wirklich gut als kleiner Server im eigenen Netz einsetzen lässt. Wenn ihr Fragen oder Anregungen habt könnt ihr diese gerne auf unseren Discord oder in den Kommentaren stellen.

Bildquellen

  • IMG_20190216_174459.jpg: Silberbaer
Über Silberbaer 7 Artikel
Geboren im Jahre 1981, Norddeutscher Eigenbrötler, leidenschaftlicher Zocker und Bastler.  Seit ich klein bin beschäftige ich mich mit Computern und Spiele, besonders haben mir es Serveranwendungen angetan, aber auch der Hardwarebereich ist für mich sehr interessant.