Werbeblocker für das Heimnetz

Herzlich willkommen auf meinem Blog!

Heute möchte ich euch ein Projekt vorstellen, auf das ich erst kürzlich aufmerksam wurde:

Das Pi-Hole. (https://pi-hole.net)

PI-Hole versteht sich als das „schwarze Loch für Internet-Webung“ und fungiert vereinfacht gesagt als Heimnetz-Adblocker.

Praktisch ist dies vor allem für Geräte, welche sich nicht einfach mit einem Browser-Adblocker ausstatten lassen. (Man denke gerade an geschlossene Systeme wie iOS)

Da die Anfragen an Werbeserver durch die Verwendung des Pi-Hole gar nicht erst verarbeitet werden, spart man auch so einiges an Internettraffic und Performance auf den Geräten, welche die Werbung nicht darstellen müssen.

Außerdem minimiert man damit das Risiko, dass die Kinder über blinkende Werbebanner in teure Abofallen stolpern.

Nachfolgend möchte ich euch zeigen, wie ich das System in meinem Heimnetz installiert habe.

Wie der Name es schon vermuten lässt, ist das System für den Betrieb auf dem populären Einplatinencomputer Raspberry Pi ausgelegt. Es kann jedoch auch auf fast jeder anderen Linux-Umgebung installiert werden. Sollte die eigene Blockliste (später mehr dazu) oder das zu schützende Netzwerk einen gewissen Umfang überschreiten, wäre die Nutzung auf leistungsfähigerer Hardware sogar vorzuziehen.

Das System in Einzelteilen

Ich habe mich vorerst für die Nutzung auf dem Raspberry entschieden und einen Raspberry Pi 3 B+ geordert.

Passend dazu wählte ich ein Set aus Gehäuse und Kühlkörpern mit Lüfter, da das System im Dauerbetrieb laufen soll.

Darüber hinaus braucht es nur noch ein Netzteil (Micro-USB) und eine Speicherkarte. Eine 8GB SanDisk MicroSD Karte hatte ich gerade noch zur Hand.

In meinem Aufbau wagte ich den Versuch, den Raspberry über den USB-Port meiner Fritzbox mit Strom zu versorgen, da das System ohnehin nur von Nutzen sein kann, wenn eine Internetverbindung besteht. Zu beachten ist dabei jedoch, dass es zu Datenverlusten kommen kann, wenn die Fritzbox vom Strom genommen oder neugestartet wird, ohne dass der Raspberry vorher heruntergefahren wird.

Zuerst habe ich natürlich den Raspberry zusammengebaut und einen schönen Platz in der Nähe der Fritzbox für ihn ausgesucht. Wer schon einmal Lego-Steine zusammengesteckt hat, braucht sich vor dem Zusammenbau nicht zu fürchten. Die mitgelieferten Kühlkörper werden einfach auf die passenden Chips geklebt (sinnfällig erkennbar anhand deren Größe).

Raspberry mit aufgeklebten Kühlkörpern

Einen vorhanden Lüfter kann man auf der GPIO an Pin1 (3V+) mit rot und Pin 14 (Masse) mit schwarz anschließen.

Pin 1 (rot) und Pin 14 (schwarz)

Um im Netzwerk etwas anrichten zu können, muss der Raspberry natürlich auch über ein Netzwerkkabel an den Router oder einen Switch im Netzwerk angeschlossen werden. Eine Verwendung über WLAN ist zwar ebenfalls möglich, aber aufgrund der Störanfälligkeit nicht zu empfehlen.

Fertig montiert

Es folgt die Installation des eigentlichen Systems. Da ich den Raspberry „headless“, also ohne Eingabegeräte wie Maus und Tastatur und ohne Monitor betreiben möchte, entschied ich mich für das schlanke Image „Raspbian Stretch Lite“ (zu finden unter: https://www.raspberrypi.org/downloads/raspbian/) Dieses kommt ohne grafische Benutzeroberfläche aus, was im System wieder Ressourcen spart.

Die heruntergeladene Zip Datei wird an einen beliebigen Ort entpackt und das enthaltene Image unter Windows mit der Software Win32DiskImager auf die MicroSD Karte geschrieben.

Unter Linux wäre das Beschreiben mittels „dd“ Befehl über das Terminal möglich.

Sobald das Programm vermeldet, dass der Vorgang erfolgreich abgeschlossen wurde, belassen wir die Karte noch kurz im PC und rufen die erstellte „boot“-Partition auf, welche auch unter Windows erreichbar ist. Dort erstellen wir noch eine leere Datei, welche schlicht „ssh“ benannt wird. Wichtig ist dabei, dass diese Datei keine Dateiendung erhält. (Eventuell ist es nötig, in den Ordneroptionen den Punkt „Erweiterungen bei bekannten Dateitypen ausblenden“ abzuwählen.)

Diese Datei macht sich notwendig, da neuere Raspbian-Versionen standardmäßig SSH deaktiviert belassen. Genau darüber wollen wir aber im Anschluss auf das Gerät zugreifen.

Alternativ kann man den Raspberry natürlich an einen Monitor anschließen und in der raspi-config SSH aktivieren.

Die MicroSD Karte kann nun im vorgesehenen Port im Raspberry Pi verstaut werden. Das System startet unmittelbar, nachdem es mit Strom versorgt wird, welcher in meinem Fall über ein MicroUSB-Kabel von der Fritzbox gestellt wird.

Um nun auf den künftigen Werbeblocker zuzugreifen, benötige ich ersteinmal dessen IP. Diese verrät mir meine Fritzbox. Schließlich hat sie dem neuen Gerät per DHCP gerade erst eine IP zugewiesen. In meinem Fall also: 192.168.178.108

Bei dieser Gelegenheit weisen wir die Fritzbox auch gleich an, dem Pi-Hole stets die selbe IP-Adresse zuzuweisen.

Um einen SSH-Zugriff unter Windows herzustellen, eignet sich die Freeware „putty“ (https://putty.org)

Dort tragen wir unter „Host Name“ die IP unseres Raspberry ein und bestätigen mit „Open“.

Eine eventuell auftauchende Warnmeldung können wir getrost ignorieren

Im folgenden Terminalfenster wird man zunächst aufgefordert, sich anzumelden.

Der Benutzername lautet dabei „pi“ und das Passwort „raspberry“. Anschließend ändern wir das Passwort mit dem Befehl „passwd“, um eventuellen Angreifern nicht die Tür offen stehen zu lassen.

Zur Konfiguration des Raspberry gelangt man über den Befehl

sudo raspi-config

Dort wählen wir den Menüpunkt „advanced options“ und erweitern das Dateisystem über „expand filesystem“. Somit stellen wir sicher, dass die gesamte Größe der Speicherkarte für unser Vorhaben genutzt wird.

Vor der Installation von Pi-Hole habe ich noch ein paar kleine „Tweaks“ eingesetzt um den Strombedarf des Raspberry etwas zu senken. Schließlich liefert der USB 2.0 Port der Fritzbox nur 500 mA.

Dazu habe ich den HDMI-Port der Platine deaktiviert:

sudo tvservice –off

das WLAN deaktiviert:

sudo ifconfig wlan0 down

und die LAN-Verbindung des Raspberry auf 100 Mbit gedrosselt:

ethtool -s eth0 speed 100 duplex full

Um diese Befehle dauerhaft bei jedem Neustart zu aktivieren, empfiehlt es sich, sie in ein Startscript einzutragen. Die Datei „rc.local“ unter /etc/ bietet sich dafür an. Ich habe dafür den Terminaleditor „nano“ genutzt. Der Befehl lautet in diesem Fall:

sudo nano /etc/rc.local

Dort werden die Befehle dann untereinander eingetragen. Auf das anführende „sudo“ kann hier verzichtet werden, da Einträge in rc.local immer mit root-Rechten ausgeführt werden.

Wichtig ist, dass der letzte Eintrag der Datei „Exit 0“ bleibt . Über STRG + X verlässt man den Editor wieder und bestätigt die Änderungen an der Datei mit „Y“.

Auf gleiche Weise habe ich noch die Zeile:

dtoverlay=pi3-disable-wifi,pi3-disable-bt

in der Datei: /boot/config.txt eingefügt um den WLAN- und Bluetooth-Chip zu deaktivieren.

Nun kann es aber mit der Installation von Pi-Hole losgehen. Über den Befehl:

wget -O ph.sh https://install.pi-hole.net

wird ein Installationsscript heruntergeladen, welches anschließend über:

bash ph.sh

ausgeführt wird.

Dieses Script lädt automatisch die nötigen Dateien herunter und passt die Einstellungen entsprechend eurer Eingaben an. Ich habe mich erst einmal größtenteils für die Standardeinstellungen entschieden. Als DNS-Server wählte ich jedoch Open-DNS.

Nachdem die Installation abgeschlossen wurde, werden uns noch die Zugangsdaten für das Pi-Hole Webinterface genannt.

Das Passwort können wir vorher noch im Terminal ändern:

pihole -a -p (beliebiges Passwort)

Wird der Befehl ohne Passwort eingegeben, entfernt auch die Passwortabfrage im Web-Interface.

Damit der Pi-Hole mit der Arbeit beginnen kann, muss er dem Router (in meinem Fall also der Fritzbox) als neuer DNS-Server benannt werden. Dazu tragen wir einfach die IP des Raspberry im Feld „Bevorzugter DNSv4 Server“ ein. (Bei anderen Routern kann die Bezeichnung abweichen)

Als Rückfallebene habe ich mit 8.8.8.8 einen Google-DNS Server eingetragen, sollte PI-Hole einmal den Dienst verweigern.

Möglich ist es natürlich auch, das Pi-Hole nur mit einzelnen Geräten zu nutzen.

Dazu muss in den jeweiligen Netzwerkeinstellungen des Geräts lediglich die IP-Adresse des Pi-Hole als DNS-Server eingetragen werden.

Von nun an werden alle DNS-Anfragen (also z.B. die Eingabe einer URL wie it-dad.de in einen Browser) über das Pi-Hole abgewickelt. Sollte eine Anfrage in einer der installierten „Blocklists“ auftauchen, wird die Anfrage schlicht nicht verarbeitet.

Das Ausmaß an angezeigter Werbung sollte nun schon spürbar reduziert sein. Über das Webinterface lassen sich nun Statistiken einsehen, neue Blocklisten einpflegen, eine Blacklist und eine Whitelist pflegen und vieles mehr.

Nützlich ist auch die Funktion, den Werbeblocker für einen gewissen Zeitraum zu deaktivieren. Einige Betreiber reagieren recht „empfindlich“ auf den Einsatz von Werbeblockern und verweigern dann gänzlich den Zugang zu ihren Diensten.

Ich werde wohl noch eine Weile mit dem Finetuning beschäftigt sein, um Pi-Hole meinen Ansprüchen und denen meiner Familie anzupassen … So ist das System derzeit nicht wirklich dazu geeignet, Werbung auf Youtube zu blocken. Hier ist es noch immer hilfreich, einen Browser Adblocker wie Adblock Plus oder uBlock einzusetzen.

Für Android kann ich dazu noch die kostenlose App Youtube Vanced empfehlen, welche keine root-Rechte benötigt und zuverlässig Werbeanzeigen blockt.

(Headerbild: Copyright by Pi-hole® LLC)

Schreibe einen Kommentar

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