Startseite>Pi-hole: Der Raspberry Pi als universeller Adblocker
Aus Raspberry Pi Geek 04/2017

Pi-hole: Der Raspberry Pi als universeller Adblocker

© belchonock, 123RF

Ausgesiebt

Christoph Langner

Adblocker filtern Anzeigen direkt aus dem HTML-Code einer Webseite heraus. Einen anderen Ansatz verfolgt Pi-hole: Auf einem Raspberry Pi installiert und als DNS-Server eingerichtet, biegt der Adblocker Anfragen an Werbe-Domains ins Leere um.

Anzeigen in Webseiten sind ein zweischneidiges Schwert: Auf der einen Seite finanzieren sie die Arbeit von Autoren oder App-Entwicklern, auf der anderen Seite führen schlecht gemachte Werbebanner besonders auf älteren Systemen zu einem langsameren Seitenaufbau, beeinträchtigen mithilfe von Trackern die Privatsphäre oder verursachen gar Sicherheitslecks [1]. Oft haben die Anbieter der Webseiten oder Apps keine Ahnung, dass ihr Angebot Malware verteilt, da Werbenetzwerke nur wenig Kontrolle über die ausgelieferten Inhalte erlauben.

Während sich nun auf ausgewachsenen Computern Anzeigen mit Adblockern in Form eines Browser-Plugins (etwa uBlock Origin [2] oder Adblock Plus [3]) sehr einfach in den Griff bekommen lassen, fällt das auf mobilen Geräten wie Smartphones oder Tablets deutlich schwerer. Für einen umfänglich wirksamen Adblocker müssten Nutzer diese Geräte in der Regel rooten, damit sich der Werbefilter direkt ins System einklinken kann.

Pi-hole als Adblocker

Wer ein Gerät besitzt, bei dem dies nicht klappt, oder Angst hat, beim Rooten Garantieansprüche zu verlieren, dem bleibt nur der Ausweg, einen mobilen Browser mit integriertem Anzeigenfilter zu verwenden – falls es einen solchen auf der gewünschten Plattform überhaupt gibt.

Das Pi-hole-Projekt [4] bietet sich nun als universeller Adblocker an: Auf einem Mini-Rechner wie dem Raspberry Pi installiert, filtert dieser Anzeigen auf allen Geräten im Netzwerk heraus. Dazu müssen Sie auf den Clients lediglich die Netzwerkeinstellungen anpassen (siehe Kasten “Funktionsweise”).

Funktionsweise

Üblicherweise ruft man Inhalte im Internet über die Eingabe von URLs wie http://beispiel.de auf. Unter der Haube arbeitet das Internet jedoch mit IP-Adressen – nur für den Mensch sind die sprechenden URLs einfacher zu merken. Im Netzwerk sorgt das Domain Name System mithilfe von dedizierten DNS-Servern dafür, dass man unter der Adresse http://raspi-geek.de den Webserver 195.122.146.144 erreicht. An genau dieser Stelle setzt nun der Pi-hole-Adblocker an.

Im Computer oder Smartphone als DNS-Server eingestellt oder gar in den Einstellungen des WLAN-Routers als DNS eingetragen, löst Pi-hole den angefragten Domain-Namen in eine IP-Adresse auf. Steht die Domain auf der Blacklist, liefert Pi-hole als IP nun die eigene IP-Adresse zurück und leitet somit diese Anfragen auf den integrierten Webserver um. Der liefert dann statt einer Anzeige nur eine leere HTML-Seite aus: Anzeigen und Tracker verschwinden aus der Webseite.

Pi-hole setzt einen Raspberry Pi mit Raspbian als Distribution voraus. Das Programm müsste zudem auf allen gängigen Debian-Derivaten sowie Distributionen auf Basis von RHEL/CentOS funktionieren [5]. An die Hardware stellt es keine hohen Ansprüche: Theoretisch genügt bereits ein RasPi der ersten Generation oder gar der 9 US-Dollar “kleine” Chip [6]. Für den Test haben wir eine Display-T-Box [7] auf Basis eines Raspberry Pi 3 verwendet, die einen 2,7-Zoll-Touchscreen integriert. Der ist nicht zwingend nötig, erfüllt aber als Statusanzeige einen praktischen Nutzen.

Ausgehend von einem aktuellen Raspbian “Jessie” laden Sie das Installationsskript entsprechend Listing 1 direkt auf den RasPi und führen es dann aus (Abbildung 1). Alternativ laden Sie das Programm mit Wget herunter, setzen die Rechte und starten es erst dann (Listing 1, ab Zeile 4). Das gibt Ihnen die Gelegenheit, in den Quellcode des Skripts zu sehen und zu kontrollieren, ob alles mit rechten Dingen zugeht.

Listing 1

 

### Direkt
$ curl -L https://install.pi-hole.net | bash
### Alternativ
$ wget -O basic-install.sh https://install.pi-hole.net
$ chmod +x basic-install.sh
$ ./basic-install.sh
Abbildung 1: Die Installation von Pi-hole erfolgt unter Raspbian über ein Skript im Terminal.

Abbildung 1: Die Installation von Pi-hole erfolgt unter Raspbian über ein Skript im Terminal.

OpenDNS und Alternativen

Für den Betrieb benötigt Pi-hole eine statische IP in Ihrem Netzwerk. Die Installationsroutine fragt daher ab, über welche Netzwerkschnittstelle der RasPi ins Netz geht (Ethernet oder WLAN) und ob IPv4 oder IPv6 zum Einsatz kommt. Im Normalfall bestätigen Sie die Vorgaben mit einem Ja, bis das Setup Ihnen anbietet, die aktuellen Netzwerkeinstellungen fest einzutragen. Dabei müssen Sie beachten, dass in der Regel der WLAN-Router den angeschlossenen Geräten eine IP-Adresse zuteilt. Überprüfen Sie daher am besten noch in den Einstellungen des Routers, dass dieser die IP des Pi-hole-RasPi nicht anderweitig vergibt.

Zum Abschluss benötigt Pi-hole von Ihnen noch die Wahl des Upstream-DNS-Anbieters. Den nutzt das System für DNS-Anfragen, die es nicht selbst beantworten kann. Im Endeffekt könnten Sie hier über das Feld Custom den DNS-Server ihres Internet-Anbieters eintragen. Pi-hole bietet aber gleich mit dem Google Public DNS [8] oder OpenDNS [9] bewährte DNS-Dienste an (Abbildung 2), die im Falle von OpenDNS sogar einen gewissen Mehrwert bieten, indem schon der DNS-Service bekannte Phishing-Seiten oder Malware-Anbieter blockiert [10].

Abbildung 2: Als Upstream-DNS nutzt Pi-hole Google, OpenDNS oder diverse andere und frei konfigurierbare DNS-Anbieter.

Abbildung 2: Als Upstream-DNS nutzt Pi-hole Google, OpenDNS oder diverse andere und frei konfigurierbare DNS-Anbieter.

Nach Abschluss aller Einstellungen präsentiert das Setup die Netzwerkeinstellungen in der Übersicht. Zudem erfahren Sie die URL des Webfrontends Ihres Pi-hole-Systems. Diese lautet http://<I>IP-Adresse<I>/admin oder einfach http://pi.hole/admin (Abbildung 3). Das Auflösen der Pi-hole-Adresse funktioniert jedoch nur dann, wenn Ihr Computer (oder Smartphone) auch den Pi-hole-Server als DNS-Dienst nutzt. Öffnen Sie dazu die Netzwerkeinstellungen auf dem Gerät und tragen Sie die IP-Adresse des Pi-hole-Servers in den DNS-Einstellungen ein. Achten Sie auch auf das von der Installationsroutine zufällig generierte Passwort – merken Sie es sich für den Anmeldebildschirm. Bei Bedarf ändern Sie das Passwort von einem Terminal aus via pihole -a -p NeuesPasswort.

Abbildung 3: Das überarbeitete Pi-hole-Webfrontend 2.0 bietet Passwortschutz und mehr Einstellungsmöglichkeiten.

Abbildung 3: Das überarbeitete Pi-hole-Webfrontend 2.0 bietet Passwortschutz und mehr Einstellungsmöglichkeiten.

Pi-hole als DNS-Server

Unter Windows erreichen Sie die entsprechenden Einstellungen über einen Rechtsklick auf das Netzwerk-Icon in der Task-Leiste. Dort wählen Sie dann im Kontextmenü Netzwerk- und Freigabecenter öffnen an. Im sich daraufhin öffnenden Dialog klicken Sie auf den Menüpunkt Adaptereinstellungen ändern in der Seitenleiste. Im neuen Fenster tippen Sie nun die gerade aktive Netzwerkkarte mit der rechten Maustaste an und wählen im Kontextmenü den Eintrag Eigenschaften an. Aus der angebotenen Liste wählen Sie nun den Eintrag Internetprotokoll, Version 4 (TCP/IPv4) aus, tippen auf die Schaltfläche Eigenschaften und tragen dann letztendlich die IP des Pi-hole-Servers als DNS-Server ein (Abbildung 4).

Abbildung 4: Zum Blockieren von Anzeigen müssen Sie wie hier unter Windows 10 den Pi-hole-RasPi als DNS-Server im System eintragen.

Abbildung 4: Zum Blockieren von Anzeigen müssen Sie wie hier unter Windows 10 den Pi-hole-RasPi als DNS-Server im System eintragen.

Auch andere Betriebssysteme bieten eine Möglichkeit, den DNS-Server der Netzwerkverbindung anzupassen. Unter Android erreichen Sie diese Option in der Regel in den WLAN-Einstellungen. Dort tippen Sie für einen etwas längeren Moment auf das gewünschte WLAN und wählen dann die Option Netzwerk ändern an. Im darauffolgenden Dialog klappen Sie die Erweiterten Optionen aus und ändern die IP-Einstellungen von DHCP auf Statisch. Am Ende der Liste lässt sich nun der Pi-hole-Server als DNS-Server eintragen (Abbildung 5). Alternativ richten Sie den Pi-hole-DNS netzwerkweit ein: So müssen Sie die Konfiguration nicht auf allen Rechnern im Netz wiederholen (siehe Kasten “Netzwerkweit”).

Abbildung 5: Auch bei mobilen Geräten mit Android oder iOS lässt sich der Pi-hole-Adblocker entsprechend konfigurieren.

Abbildung 5: Auch bei mobilen Geräten mit Android oder iOS lässt sich der Pi-hole-Adblocker entsprechend konfigurieren.

Netzwerkweit

Um nicht die DNS-Einstellungen eines jeden Geräts in Ihrem Netzwerk für den Pi-hole-Adblocker anpassen zu müssen, lässt sich dieser direkt in der Netzwerkkonfiguration des WLAN-Routers eintragen. Dazu öffnen Sie die Weboberfläche des Geräts und wechseln dort in die Netzwerkeinstellungen des Internet-Zugangs. Bei einer Fritzbox finden Sie die fraglichen Einstellungen unter Internet | Zugangsdaten im Reiter DNS-Server. Tragen Sie hier die IP-Adresse des Pi-hole-Servers ein, dann nutzt die Fritzbox – und somit auch alle in Ihrem Netz aktiven Computer – ihn zum Auflösen von Internet-Adressen (Abbildung 6).

Diese Umleitung funktioniert jedoch nicht immer: Im Test war der Pi-hole-RasPi einmal im Computer als DNS-Server eingetragen und einmal nur über die Fritzbox konfiguriert. Im ersten Fall funktioniert die Namensauflösung wie gewünscht. Eine DNS-Anfrage der Raspberry-Pi-Geek-Domain lieferte die korrekte IP, Anfragen an das Werbenetzwerk Adscale leitete Pi-hole auf den integrierten Webserver und filterte somit die Anzeige heraus (Listing 2). In der Fritzbox konfiguriert, führt die Anfrage jedoch zu einem Timeout (Listing 3). Das filterte zwar die Anfrage ebenfalls, doch der Seitenaufbau zog sich massiv in die Länge.

Abbildung 6: Für das gesamte Netzwerk aktivieren Sie den Adblocker, indem Sie im WLAN-Router Pi-hole als DNS-Server eintragen.

Abbildung 6: Für das gesamte Netzwerk aktivieren Sie den Adblocker, indem Sie im WLAN-Router Pi-hole als DNS-Server eintragen.

Listing 2

 

$ nslookup raspi-geek.de
Server:         192.168.178.19
Address:        192.168.178.19#53
Non-authoritative answer:
Name:   raspi-geek.de
Address: 195.122.146.144
$ nslookup adscale.de
Server:         192.168.178.19
Address:        192.168.178.19#53
Non-authoritative answer:
Name:   adscale.de
Address: 192.168.178.19
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland