Raspberry Pi als Werbefilter

pi-hole LogoIm Video-/Audio-Blog c’t uplink #22.3 von heise.de wird kurz das Thema Content/Werbung filtern mit dem Raspberry Pi angesprochen.

Da ich Raspberry Pi-Themen generell sehr interessant finde und keinen Bock hatte zu warten bis ich mir morgen auf dem Weg auf Arbeit erst die Zeitung holen kann, hab ich selbst mal nen bisschen recherchiert und geschaut wie man das auch ohne den Beitrag aus der Zeitung hinbekommt.

Die Idee

Die Idee ist verblüffend einfach! 😀

Man nehme sich die Logik mit der z.B. Browserplugins wie µBlock & Co. Werbung blocken, kombiniere diese mit einem DNS Server und betreibe es auf einem Kleinstrechner wie den Pi.

Das zusammen, genutzt als DNS Server in Kombi mit einer sehr umfangreichen Blacklist die sich automatisch aus den Daten von vielen öffentlich bekannten Black-List Anbietern zusammensetzt, ist eine wesentlich bessere Filterwahl wie ein Browser Plugin.

Voraussetzungen

Hardware-technisch gibt es 2 Voraussetzungen, wenn Du Dir sowas bauen willst.

1. Raspberry Pi

Welche Version des Pi’s es am Ende wird hat nur eine kleinere Bedeutung.

Ein Pi der 1./2./3. Modellreihe ist genauso dafür brauchbar wie ein Nano-Pi.

Beim Pi Modell 1 und beim Nano-Pi sollte man lediglich darauf verzichten die Webschnittstelle zu installieren da diese auf einem Apache + PHP7 aufbaut , was zumindest im Mehr-Benutzer Betrieb den Pi an die Grenzen bringen kann.

Da sollte natürlich auch ein brauchbares Betriebssystem wie Raspian installiert sein und der Raspberry sollte ins Netzwerk (WLAN oder Kabel, je nach Model und Geschmack)

Ferner ist es sinnvoll den Raspberry eine feste IP-Adresse zu geben (Routereinstellungen)

2. Router

Es wird ein Router benötigt, bei dem man den DNS Server ändern kann. (Die meisten Fritzbox Modelle können das)

Das ist allerdings nicht zwingend nötig, aber sehr Vorteilhaft. Man kann den DNS Server auch am Rechner/PC einstellen. Aber ich erkläre die Router Variante da es in dem Fall auch gleich alle anderen Geräte wie Mobilgeräte und TVs, etc.  die im Netzwerk hängen, frei von unerwünschten Inhalten hält.

3. Software

Das Herzstück bzgl. Software ist pi-hole. Sozusamen das Schwarze Loch für unerwünschte Inhalte.

Das funktioniert wie folgt:

Der Client (also der Webbrowser) fordert eine Resource an.  Die dafür nötige DNS-Anfrage wird vom Router (nach dessen Konfiguration) an der Raspi weitergeleitet.

Auf dem Raspi übernimmt pi-hole die Arbeit des erweiterten DNS-Servers.

Der pi-hole schaut nach ob der Host in einer sehr umfangreichen Black-List steht. Ist das der Fall, wird von DNS Server geantwortet das der angegebene Host nicht aufgelöst werden kann und die Anfrage ist beendet.

Wenn der Host nicht in der Black-List ist wird die DNS Abfrage an den eigentlichen DNS Server im Internet weitergegeben und dessen Antwort an den Client weiter gegeben.

Der dadurch entstehende Overhead ist absolut vernachlässigbar. Wenn man das mit dem Overhead vergleicht den ein Browserplugin oder eine App mit sich bringt die auf jedem Client gebraucht wird, ist es einfach mal nix.

Der Pi wird damit locker fertig. Wenn ich die Webschnittstelle mitlaufen lasse (Live-Anzeige) liegt die Auslastung für einen 4 Personen-Haushalt vom Prozessor (Pi 3) bei ~15%, und RAM bei ~15%

Also alles im enspannten Bereich beim Pi.

Der Erzeuger der Software verspricht auf seiner Webseite auch eine Netzwerk Beschleunigung.

Installation

Dazu verbindest Du dich am Besten in der Konsole per ssh mit Deinem Pi

ssh pi@192.168.200.20

wobei Du die IP-Adresse mit der Deines PI’s ersetzen must. 🙂

Falls Du Windows auf Deinem Rechner nutzt da kann ich nur raten das Du dort ssh für die Konsole bekommst wenn Du CygWin oder was vergleichbares nutzt.

Jetzt machst Du dich erst mal zum root-Nutzer

sudo -i

Über den folgenden Befehl lädst Du pi-hole herunter und startest die Installation:

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

Warten bis die ersten interaktiven „Dialoge“ erscheinen…

Die Meldungen die nur eine OK Schaltfläche haben einfach bestätigen.

Netzwerkschnittstelle wählen

Wenn der Raspi mehrere Netzwerkschnittstellen hat (z.B. WLAN + Kabel) dann must Du irgendwann in einem Dialog auswählen, welche Netzwerkschnittstelle genutzt werden soll. Wenn nur wenige Clients gleichzeitig im Netzwerk sind, reicht WLAN locker aus. Wenn viele Clients im Netzwerk sind und diese auch gleichzeitig, ist es evtl. besser den Pi per Kabel ins Netzwerk zu hängen. Bei uns im Heimnetz hängen 5-6 Mobile Geräte und 6-7 PCs, TVs, Laptops, etc. Keine Probleme mit WLAN bei einem Gleichzeitigkeitsfaktor von ~0.25. (1.0 bedeutet alle immer gleichzeitig)

Externer DNS-Server

Als nächstes muss im Dialog Select upstream Provider ausgewählt werden welche externen DNS-Server genutzt werden sollen. Es wird eine Liste der verfügbaren DNS-Server wie z.B. Google (meine Wahl) angezeigt. Da kann auch über custom manuell einer gesetzt werden.

Protokolle auswählen

Im nächsten Dialog Select protocols sollten beide Protokolle (IPv4 und IPv6) ausgewählt werden.

Statische IP-Adresse

Dannach wird die statische IP Adresse im nächsten Dialog einfach mit der Schaltfläche Yes bestätigt.

Hier gilt die Voraussetzung das dem PI im Router eine immer gleich bleibende IP adresse zugewiesen wird. Das geht in der Fritzbox recht einfach:

Logge Dich am Webinterface der Fritzbox ein (http://fritz.box) und wähle links im Menu Heimnetz > Heimnetzübersicht. Scrolle runter zu Aktive Verbindungen im Heimnetz und suche dort den Pi. Klicke in der Zeile wo der Pi steht rechts auf Details. Mache ein Häcken bei Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen und mit OK die Änderungen speichern.

Jetzt wieder zurück zur pi-hole Installation…

Logging

Der nächste Dialog wird wieder mit OK bestätigt. Dann soll ausgewählt werden ob Log-Dateien erstellt werden sollen. Diese sind prinzipiell erst mal nur dann nötig wenn Du auch das Webinterface (nachfolgend) aktivierst.

Jetzt wird alles installiert und konfiguriert, Das dauer ein klein wenig.

Fertig

Wenn das alles Fertig ist bekommst Du als abschließende Meldung

Fertigmeldung

Die beiden IP-Adressen (IPV4 + IPV6), die Webadresse (wenn aktiviert) und das Passwort zum Login an der Webadresse solltest Du Dir notieren.

Falls Dir das Passwort nicht gefällt kannst Du nach Ende der Installation einfach mit:

pihole -a -p new_password

ein Neues vergeben…

Router einrichten

Dem Router muss jetzt mitgeteilt werden das er den Pi als DNS Server nutzt.

Ich nutze eine FritzBox 7490. Aber jede andere halbwegs aktuelle Fritzbox sollte es genauso gut tun.

Nach dem Login gehst Du über Internet > Zugangsdaten und dann oben den Reiter DNS-Server auswählen:

Es kann sein das der Reiter DNS-Server nicht existiert. Wenn das so ist, klicke rechts oben auf die 3 vertikalen Punkte und aktiviere im erscheinenden Dialog die erweiterte Ansicht.

Die Standardeinstellung bei DNSv4 und DNSv6 ist Vom Internetanbieter… Das muss bei Beiden auf Andere DNSvX Server verwenden geändert werden.

In die jeweils erste Zeile kommt die IPv4 bzw. IPv6 Adresse des Raspberry und in die 2. eine alternative falls der Pi mal nicht geht. 8.8.8.8 ist z.B. Googles freier DNS Server.

Die Web-Schnittstelle

pi-hole bietet Dir eine Webschnittstelle mit der Du pi-hole konfigurieren kannst und Du kannst Dir hier auch einfach die Statistik über geblockte Zugriffe ansehen

Screenshot pi-hole Web-Interface

Und das wars auch schon! 🙂

Schreibe einen Kommentar

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