Kurz notiert: Pi-hole auf einem Raspberry Pi einrichten

Pi-hole Webinterface

Screenshot Pi-hole Webinterface, kurz nach der Ersteinrichtung

Zum Testen, als Werbe- und Trackingblocker sowie – später – auch für netzwerkweiten Jugendschutz, habe ich mir heute Pi-hole® ins Heimnetz eingebaut. Wer’s nicht kennt: Pi-hole ist eine Software für den Einplatinencomputer Raspberry Pi, welche in Form eines DNS-Servers als Tracking- und Werbeblocker dient. Technisch werden dabei sämtliche Anfragen an Hostnamen bekannter Tracking- und Werbeplattformen abgefangen und ins Leere geleitet. Und dieses System lässt sich dann auch für beliebige andere Domains, etwa vor dem Hintergrund von Jugenschutz-Maßnahmen, erweitern. In diesem Artikel fasse ich nur kurz die vorgenommen Schritte für die Einrichtung des Raspberry Pis, von Pi-hole sowie die Anpassungen an die Netzwerkkonfiguration zusammen.

Meine Rahmenbedingungen

Als Router habe ich aktuell eine FRITZ!Box im Einsatz, welche auch als lokaler DNS-Server dient (Standardkonfiguration), der Raspberry ist ein Modell 3B, ich arbeite an einem Mac und hatte keine Möglichkeit Tastatur & Bildschirm direkt an den Raspberry Pi anzuschließen. Daher erfolgte die Einrichtung komplett Remote via SSH.

Schritt 1: Raspberry Pi OS (vormals Raspberian) installieren

Für die Installation des Betriebssystem Raspberry Pi OS, habe ich den offiziellen Raspberry Pi Imager verwendet, welcher auf der Raspberry-Website für Windows, MacOS und Ubuntu zum Download bereit steht. Der Raspberry Pi Imager kümmert sich auch um das Herunterladen des Raspberry-Pi-OS-Images, da muss man also vorab nichts weiter tun. MicroSD-Karte in den Rechner einstecken, Imager starten, Raspberry Pi OS auswählen und den „Write”-Button betätigen.

Schritt 2: SSH aktivieren

Nachdem der Raspberry Pi Imager die MicroSD-Karte beschrieben hat, wird diese automatisch ausgeworfen und der Imager zeigt an, dass die Karte entfernt werden kann. Das habe ich auch getan – allerdings gleich darauf wieder eingesteckt, um den SSH-Zugriff zu aktivieren. Hierzu muss lediglich eine (leere) Datei mit dem Namen „ssh” im Root-Verzeichnis der MicroSD-Karte abgelegt werden (vgl. Dokumentation).
Damit ist die MicroSD-Karte jetzt vorbereitet und einsatzbereit.

Schritt 3: Raspberry Pi booten, IP-Adresse ermitteln

Die soeben präparierte MicroSD-Karte kommt nun in den Raspberry Pi, Netzwerk- und Stromkabel dran und etwas warten bis der Pi zuende gebootet hat. Nach spätestens einer Minute sollte das der Fall sein.
Nun muss die vom Router zugewiesene IP-Adresse ermittelt werden, um im nächsten Schritt via SSH auf den Raspberry Pi zu verbinden. Ich habe dazu die Oberfläche der FRITZ!Box genutzt – dort findet man unter dem Menüpunkt „Heimnetz” → „Netzwerk” eine Liste aller angemeldeter Geräte. In meinem Fall trug der Raspberry den Hostnamen „raspberrypi” (ich nehme an, das ist der Standard bei Raspberry Pi OS) und war somit leicht zu finden. Bei anderen Routern ist das möglicherweise unter einem anderen Menüpunkt aber prinzipiell sollte das immer irgendwo zu finden sein.

Schritt 4: Per SSH zum Raspberry verbinden

Nachdem nun die IP-Adresse des Raspberry Pi bekannt ist, kann im Terminal (MacOS / Linux) oder in der Eingabeaufforderung (Windows) via ssh pi@IPADRESSE verbunden werden – z.B. ssh pi@10.44.44.151. Das dann abgefragte Passwort ist standardmäßig raspberry.

Kurzer Hinweis: Der ssh-Befehl steht unter Windows erst seit Windows 10 zur Verfügung, für frühere Windows-Versionen (die man ohnehin nicht mehr benutzen sollte) benötigt man ein separates SSH-Tool wie PuTTY.

Schritt 5: Pi-hole® installieren

Einmal via SSH mit dem Raspberry Pi verbunden, gibt man nun curl -sSL https://install.pi-hole.net | bash ein (vgl. Installationsanweisung), um den Pi-hole-Installer herunter zu laden und auszuführen. Hier folgt man einfach den Anweisungen auf dem Bildschirm, die Standardeinstellungen können weitestgehend belassen werden (kann man alles später auch noch ändern).

Hier besonders wichtig:

  1. Während der Installation muss dem Raspberry Pi eine feste (statische) IP-Adresse zugewiesen werden – die wird nämlich später in der Router-Konfigration benötigt. Hier also am besten vorher nachschauen, welche IP-Adresse außerhalb des DHCP-Bereiches noch frei ist. Hat der Router beispielsweise die Adresse 10.44.44.1, dann könnte der Pi als zukünftiger DNS-Server die bekommen 10.44.44.2.
  2. Am Ende des Installers wird das Passwort für das Webinterface angezeigt, also die für die von Pi-hole ausgelieferte „Website” auf der man später Einstellungen vornimmt, Statistiken ansieht etc. Unbedingt notieren!

Schritt 6: Raspberry Pi neu starten und testen

Da während der Installation die IP-Adresse geändert wurde – die Änderung aber erst nach dem nächsten Neustart des Raspberry Pi wirksam wird – muss dieser nun einmal neu gestartet werden. Ich bin mir nicht sicher, ob das der Installer am Ende selber gemacht hat – falls nicht wird das via sudo reboot im noch immer geöffneten Terminal-/Eingabeaufforderung-Fenster ausgelöst.

Anschließend sollte via http://IPADRESSE/admin – also z.B. http://10.44.44.2/admin – das Webinterface von Pi-hole aufgerufen werden können. Mit dem im Schritt 5 notierten Passwort, kann man sich nun bereits dort anmelden.

Schritt 7: Router konfigurieren (FRITZ!Box)

Nun muss der Router im Netzwerk so eingestellt werden, dass er per DHCP die Adresse des Raspberry Pi mit installierem Pi-hole an die Clients im Netzwerk übermittelt. In der FRITZ!box geht das unter „Heimnetz” → „Netzwerk” → „Netzwerkeinstellungen” → „IP-Adressen” und dann unter „IPv4-Adressen” bzw. „IPv6-Adressen”. Bei IPv4 muss in das Feld „Lokaler DNS-Server” jeweils die v4-Adresse des Raspberry eingetragen werden – also beispielsweise 10.44.44.2 wenn wir beim o.g. Beispiel bleiben.

Bei IPv6 ist es allerdings etwas komplizierter: Da werden nämlich normalerweise keine statischen Adressen vergeben, sondern die Clients generieren die v6-Adressen selber aus einem vom Provider vorgegebenen Präfix. In der FRITZ!Box kann man aber auf s.g. „Unique local address”, kurz ULA, umstellen – dann bestimmt der Router den Präfix für lokale (!) v6-Adressen. Wie man das Schritt für Schritt in der FRITZ!Box und im Pi-hole einstellt, beschreibt sehr anschaulich dieser Artikel: Pi-Hole – IPv6 und die Fritz!Box.
Executive summary: Man sagt der FRITZ!Box, dass Sie ULAs erzwingen und welchen Präfix sie dafür verwenden soll; dann schaut man auf dem Raspberry nach, welche Adresse er (nach einem Reboot) bekommen hat und trägt diese sowohl in der Konfigurationsdatei von Pi-hole als auch in der FRITZ!Box als IPv6-DNS-Server fest. Und dann sagt man der FRITZ!Box noch, dass Sie im v6-Netz per DHCP nur den DNS-Server bekanntgeben soll.

ULAs sind zwar eigentlich nicht so geil (weil dann wieder NAT stattfinden muss) aber verhindern, dass sich die v6-Adresse des Raspberry Pis ändert wenn der Provider seinen Präfix ändert. Somit erzeugt man quasi, wenn ich es richtig verstanden habe, etwas mit statischen IPv4-Adressen Vergleichbares in IPv6.

Auf anderen Routern ist das etwas anders aber auch dort sollte man (hoffentlich) die entsprechenden Einstellmöglichkeiten finden.

Schritt 8: Testen

Nachdem jetzt alles vorbereitet ist, geht es ans Testen. Dazu am besten mal einen Test-Rechner im Netz kurz offline schalten (oder den DHCP-Lease erneuern), damit dieser die geänderten Daten vom Router zugespielt bekommt. Danach einfach mal eine werbe- und trackinglastige Website aufrufen (da eignen sich insbesondere Websites von Zeitungen) und schauen, ob im Webinterface von Pi-hole Anfragen aufgezeichnet (und geblockt) werden.

Schritt 9: Standard-SSH-Passwort des Raspberry Pi ändern

Da die Standard-SSH-Zugangsdaten für Raspberry Pi natürlich ein Sicherheitsrisiko darstellen, sollte zumindest das Passwort noch geändert werden. Dazu wieder per SSH verbinden (siehe Schritt 4, jedoch jetzt mit der neuen IP-Adresse) und mit dem Befehl passwd ein neues Passwort vergeben.

Schritt 10: Netzinterne Privatsphäre verbessern

Da Pi-hole in der Grundkonfiguration jede Anfrage von jedem Client loggt – inkl. des angefragten Hostnamens – sollten noch ein paar Privatsphäre-Anpassungen vorgenommen werden. Schließlich soll Pi-hole nicht der Überwachung sondern dem Schutz dienen.
Hier habe ich zum einem im Webinterface von Pi-hole unter „Settings” → „Privacy” das „DNS resolver privacy level” auf „Hide domains: Display and store all domains as „hidden“” eingestellt. Damit werden zwar noch die Clients geloggt (was ich sinnvoll finde, um zu schauen welche Geräte z.B. auch während der Nacht und in meiner Abwesenheit im Netz aktiv sind) ABER nicht mehr, welche Hostnamen / Domains sie abfragen. Diese Einstellung hat allerdings nur Einfluss auf das Webinterface, auf Dateiebene loggt Pi-hole weiterhin sämtliche Anfragen nach /var/log/pihole.log. Aber auch das lässt sich abschalten – und zwar wieder per SSH mit folgendem Befehl: sudo pihole logging off

Eine Nebenwirkung

Da nun Pi-hole als DNS-Server im Netz fungiert und nicht mehr der Router – ist dieser nicht mehr über seinen früheren Hostnamen erreichbar (also z.B. fritz.box oder speedport.ip). Das lässt sich aber beheben: Hierzu loggt man sich in das Webinterface von Pi-hole ein (http://IPADRESSE/admin) und setzt unter „Local DNS Records” den entsprechenden Eintrag manuell neu. In meinem Bespiel kommt da also ins Feld „Domain” fritz.box und ins Feld „IP Adress” die IP-Adresse des Routers, hier beispielhaft die 10.44.44.1.

Jugenschutz mit Pi-hole

Ich hatte ja eingangs geschrieben, dass ich die Pi-hole-Installation auch für Jugenschutz-Maßnahmen in meinem Heimnetz nutzen möchte. Aktuell habe ich die dafür nötigen Erweiterungen noch nicht vorgenommen, da meine Kids eh noch nicht allein im Netz unterwegs sind. Aber mit Pi-hole ist die Basis für entsprechende Inhalte-Einschränkungen vorhanden – dieses Youtube-Video von Sempervideo erklärt, wie man das macht. Allerdings, das möchte ich nicht unerwähnt lassen, ist das natürlich kein wirksamer Schutz bzw. keine wirksame Sperre für technisch affine Kids, da man den per DHCP vom Router benannten DNS-Server (den Raspberry Pi mit Pi-hole) mittels manuellen Eintrag in den Netzwerkeinstellungen des Endgerätes übergehen kann. Aber eine Zeit lang wird das vermutlich reichen.

Fazit

Da der Raspberry Pi mit Pi-hole erst neu in meinem Netzwerk ist, kann ich noch nicht sagen wie gut oder wie schlecht das alles im Alltag funktioniert. Was die technische Basis angeht, so mache ich mir da wenig Sorgen. Aber ich kann mir vorstellen, dass werbefinanzierte Websites und Apps solche Eingriffe in deren Monetarisierungsstrategie nicht gut finden und ihren Dienst versagen. Sites und Apps die mir wichtig sind, kann ich dann jedoch in Pi-hole manuell auf die Whitelist setzen. Wie sehr das im Alltag nervt, wird sich zeigen.

Die Installation des Raspberry Pi OS und der Pi-hole Software hat jedoch problemlos funktioniert, der Pi ist stromsparend und günstig zu haben – von daher auf jeden Fall meine Empfehlung.

Schreibe einen Kommentar

Personenbezogene Daten interessieren mich nicht – daher ist die Angabe von Name und E-Mail-Adresse freiwillig. Jedoch wird jeder Kommentar von mir geprüft, bevor er freigeschalten wird.