Pi-hole auf Raspberry Pi installieren und konfigurieren

Pi-hole ist ein automatisierter managebarer DNS Server, welche vor allem dazu dient, die DNS Anfragen von unliebsamen Domains abzufangen und diese ins Leere laufen zu lassen. Als Beispiel zum Schutz vor Malware und jugendgefährdenden Seiten. Im Folgenden wird erklärt, wie der Pi-hole auf dem Raspberry Pi installiert und mit entsprechender Konfiguration in Betrieb genommen wird.

Installation

Zunächst sollte dem Pi eine statische IP Adresse zugewiesen werden, dazu könnt ihr gerne meinen Beitrag Raspberry Pi: Statische IP-Adresse eintragen zur Hilfe nehmen. Wenn wir soweit sind führen wir folgenden Befehl aus:

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

Der Befehl “curl” wird nun das offizielle Skript, welches auf https://install.pi-hole.net liegt, herunterladen. Dabei werden jegliche Redirects der URL zugelassen (-L) und es wird angegeben, dass das Skript direkt von der Bash weiterverarbeitet werden soll (| bash). Der Download der Datei wird dabei allerdings im Silent Mode (-s) mit Anzeige aller Fehler (-S) ausgeführt.

Installation über das Skript von https://install.pi-hole.net - mit curl
Shell Ausgabe vom Installationsskript

Bei der Installation überprüft das Skript automatisch, ob man Root-Rechte hat und räumt sich diese über “sudo” ein. Außerdem wird die verfügbare Softwareliste sowie installierte Software aus den Paketquellen aktualisiert und benötigte Software nachinstalliert.

Anschließend bekommt man einen Dialog vorgesetzt:

Jetzt bekommen wir einige Hinweise, welche mit “OK” bestätigt werden müssen. Hier wird auch nochmal darauf hingewiesen, dass eine statische IP-Adresse konfiguriert werden sollte.
Im folgenden Dialog wird ein Upstream DNS Server abgefragt. Ich nehme hier einfach mal Google, man kann aber auch ein Custome DNS Server, zum Beispiel vom Internet Service Provider, eintragen. Man braucht hier einen Internet-DNS, welcher die zulässigen Domainanfragen anschließend auch in IP Adressen auflöst.

Vorgeschlagene Blockliste

Der Assistent wird anschließend eine Liste für geblockte Domains vorschlagen. Man kann diesen Eintrag mit der [Leertaste] markieren, man sieht dann ein *. Ich werde diese Liste nicht übernehmen, da nachher noch Webseiten gezeigt werden, wo man Host-Blocklisten finden und im Pi-hole einbinden kann. Wenn man aber schnell fertig werden will, ist StevenBlack’s Unified Hosts List eine gute QuickStart Variante.
Die Auswahl mit [Tab] und auf “Ok” bestätigen.

Darauffolgend wird abgefragt, ob man für IPv4 und IPv6 blockieren möchte oder nur eines der beiden Möglichkeiten verwenden will. Wer nur IPv4 hat, kann hier auch nur dieses auswählen, prinzipiell kann die Auswahl aber einfach mit [Enter] bestätigt werden.

Nun wird noch mal gefragt, ob die momentane IP-Adresse als statische IP Adresse verwendet werden soll. Habt ihr also die statische IP Adresse vorher nicht eingestellt, könnt ihr die DHCP zugewiesen Adresse nun festschreiben lassen. Ansonsten wird mit [Enter] auf “Yes” bestätigt.
Anschließend gibt es noch den Hinweis, dass der DHCP Server auf dem Router die IP Adresse weitervergeben kann und es daher Sinn macht, die IP Adresse für das Pi-hole dort ebenfalls statisch zu hinterlegen, damit diese nicht mehr an Clients vergeben wird.
Noch einmal “Ok” um die IPv6 Adresse zu bestätigen und wir kommen zum Dialog wo die Installation des Webadmin Interface mit ebenfalls 2x [Enter] bestätigt wird. Wollt ihr das Admin-Interface nicht benutzen, kann man theoretisch alles über Befehle in der Shell konfigurieren.

Nun wird aus Datenschutzgründen noch gefragt, ob Logs für die Anfragen aufgezeichnet werden sollen und wie Anonym diese Aufzeichnung sein soll. Da das Privat ist und wir uns nur selbst auf die Füße spucken, aktivieren wir die Logs und zeigen alles an. Das vereinfacht auch gleich die Administration der Pi-hole. Das wird wiederum mit 2x [Enter] bestätigt.

Uuuunnnddd… wir sind fertig, nach einer kurzen Skriptinstallation des Webservers bekommen wir die Zusammenfassung der Installation. Dort sieht man auch das vom Skript erstellte Adminpasswort, welches wir nach bestätigen des Assistenten einfach selber festlegen. Dazu einfach den Befehl

pihole -a -p

ausführen und das gewünschte Passwort in die Abfrage eingeben. Die Adminpage ist nun unter http:// <IP-Pihole> /admin/ erreichbar.

Konfiguration

Nun geht es an die Konfiguration.

Pi-hole Webobefläche
Erster Zugriff auf die Admin Weboberfläche — || — Admin Weboberfläche im Betrieb

Man sieht links oben die Auslastung des Pi. Oben mittig die größeren farbigen Felder zeigen in Reihe an

  • Anzahl der Insgesamt vom Pi-hole verarbeiteten Anfragen innerhalb von 24h (grün)
  • Vom Pi-hole blockierte Anfragen (blau)
  • Vom Pi-hole blockierte Anfragen prozentual zu der Gesamtanzahl der Fragen (gelb)
  • Anzahl der Domains in Blocklisten auf dem Pi-hole (rot)

Diese Webseite ist für alle sichtbar. Aber um detailliertere Informationen zu bekommen, melden wir uns nun als Admin über Login an.

Detailliertere Information für Admins
Detailliertere Information als Admin

Settings

Wenn wir links in die Settings schauen, haben wir mehrere Reiter.

System

Zeigt relevante Daten des Raspberry Pis und des Pi-holes an. Zudem kann man hier den Pi neustarten.

Adlist

Veraltet – ein Direktlink zur aktuellen Blocklisteintragung im Reiter vorhanden.

DNS

Hier kann der Upstream DNS Server nachträglich geändert werden.
Ich setze in Custom DNS gerne die IP Adressen zu den jeweiligen DNS Servern ein. Beispielsweise 8.8.8.8 für Google DNS.

Zudem ist es hier sinnvoll “Use Conditional Forwarding” zu aktivieren, wenn euer Router die DHCP IP Adressvergabe durchführt. Damit werden auch die lokalen Hostnames korrekt vom Pi aufglöst. Dazu den Haken setzen, in “Local network in CIDR notation” die Netz ID hinterlegen. (Beispiel, der Pi ist unter 192.168.1.20 erreichbar, der Router unter 192.168.1.1, und Subnet ist 255.255.255.0, dann ist die NetzID 192.168.1.0/24)
Unter “IP address of your DHCP server (router)” den Router eintragen und “Local domain name (optional)” freilassen, oder dem Domain Name Eintrag im Router anpassen – bei FritzBox normalerweise fritz.box. (Beispiel mein Client wäre unter client.fritz.box erreichbar.)

DHCP

Unter DHCP kann man die IP-Adressvergabe über den Pi-hole aktivieren. Ich verwende beispielsweise den Pi-hole DHCP Server. Wenn man die Adressvergabe aber über den Router lauf lässt, ist dieser Reiter irrelevant. Ansonsten natürlich darauf achten, den DHCP vom Router auszuschalten!

API / Web Interface

Hier kann das Web Interface leicht angepasst werden, aber auch Client IP Adressen (Top Clients) und Domainnamen (Top Domains / Top Advertisers) hinzugefügt werden, welche dann in der Statistik nicht mehr angezeigt werden.

Privacy

Hier kann man nachträglich entscheiden, wie freizügig die Statistik angezeigt werden soll.

Teleporter

Und zu guter Letzt der Teleporter Reiter, welcher für Backups und Restores der Konfiguration des Pi-holes vorhanden ist. Immer mal wieder ein Backup der Konfiguration zu erstellen kann nicht Schaden.

Blockieren

Über Blocklisten (Hostlisten)

Um den Pi-hole zu befüllen ist das primäre Werkzeug, das Gerät mit Hostlisten zu füttern. Also im Endeffekt eine TXT-Datei mit untereinandergeschrieben FQDNs (beispielsweise “www.google.de”). Es gibt viele Projekte welche bereits Listen zur Verfügung stellen. Folgend eine Auswahl von Blocklistenlieferanten:

RPiList (SemperVideo Community Blocklisten)https://github.com/RPiList/specials
Steven Black’s Unified Hosts Listhttps://github.com/StevenBlack/hosts
GameIndustry Anti-Spyware & Hosts Protectionhttps://hosts.gameindustry.eu/
The Firebog – Big Blocklist Collectionhttps://firebog.net/
Filterlists.comhttps://filterlists.com/
BraveDNS Rethink Listshttps://www.bravedns.com/configure

Um eine Liste einzutragen geht man links auf “Group Management” > “Adlist”.
Dort hat man das Feld “Address” wo nun die URL einer Liste eingetragen werden kann. Für das Beispiel nutze ich nun die RPiList. Dazu gehen wir auf die Seite und in den Ordner “Blocklisten”. Anschließend suchen wir uns eine Liste aus, zum Beispiel “Fake-Science”.

RPiList Blocklisten auswählen
RPiList Fake-Science auswählen

Nun sieht die Seite wie unten dargestellt aus. Um die Liste nun auch verwenden zu können, benötigen wir allerdings direkt die TXT-File, dazu klicken wir auf RAW.

GitHub RPiList Raw anklicken

Und nun haben wir die URL, welche wir im Pi-hole unter “Address” eintragen.

GitHub RPiList Raw TXT-File URL kopieren
URL von RPiList in Pi-hole eintragen.

Nachdem man nun den Eintrag mit “Add” hinzugefügt hat, kann man anschließend weitere Listen über den gleichen Weg eintragen. Wenn man fertig ist, muss unter dem linken Menüpunkt “Tools” > “Update Gravity” und einem Klick auf “Update” die Pi-hole Blocklist generiert werden. Je nach Masse der Listen kann dies länger dauern. Die Webseite darf in der Zwischenzeit nicht geschlossen werden. Wenn ihr also keine Informationen seht, warten. Das kann dauern. Es sieht wie folgt aus, wenn der Prozess abgeschlossen wurde:

Pi-hole Blocklisten aktualisiert

Damit ist der Pi-hole betriebsbereit.

White-/Blacklist

Wenn man einzelne Domains blockieren oder auch wieder freigeben möchte kann man dies unter dem Menüpunkt “Blacklist” und “Whitelist” tun. Dabei ist zu beachten, dass der Domaineintrag als absoluter Eintrag zu sehen ist und der RegEx Filter-Eintrag als Wildcard Eintrag. Mit RegEx Einträgen kann man ganze Wildcard Überprüfungen basteln, dazu kann man sich die Offizielle Anleitung https://docs.pi-hole.net/regex/tutorial/ anschauen.

Erwähnenswert

DoH oder DoT

Der Pi-hole kann keine DoH (DNSoverHTTPS) oder DoT (DNSoverTLS) blockieren. Das liegt einfach daran, dass man bei diesen DNS Abfragen nicht über den standardisierten Port 53 für DNS geht und das die DNS Anfragen verschlüsselt sind. Man kann höchstens versuchen die DoH Server über den Pi-hole zu blockieren, da die IP Adresse dieser Server ebenfalls erst ermittelt werden muss. Sollte die IP Adresse aber in der jeweiligen DoH Anwendung fest eingeschrieben sein, kann der Pi-hole nicht mehr agieren.

Hier ist auch darauf zu achten, dass man mögliche Webbrowser Features deaktiviert, welche DoH forcieren. Besonders bei Google Chrome und Firefox ist mittlerweile bekannt, dass die Browser DoH als momentan experimentelle Implementierung hinzugefügt haben.

Update

Falls ein Update vorhanden ist, wird dies in der Admin Weboberfläche unten angezeigt.

Fußzeile Update Hinweis

Es gibt momentan noch keine Möglichkeit das Update über die Admin-Oberfläche zu starten, heißt in der Shell muss der Befehl

sudo pihole -up

ausgeführt werden. Anschließend wird die Software und alle Module aktualisiert. Ein apt update und apt dist-upgrade ist natürlich auch nicht schlecht.

Query Log

Unter dem Menü Query Log, sieht man alle DNS Anfragen, die an den Pi-hole gestellt wurden. Ebenso, wie lange die Antwort benötigt hat, und ob die Anfrage blockiert wurde. Dort kann man auch schnell Domains in die Blacklist oder Whitelist eintragen. Das ist besonders dann hilfreich, wenn man just in diesem Moment zum Beispiel nicht auf irgendeine Webseite kommt oder ein Onlinespiel nicht startet und deshalb die Domain wieder freigegeben werden soll.

Wenn es nur eine temporäre Freigabe sein soll, kann man unter “Disable” die Blockierung vom Pi-hole zeitlich begrenzt oder auch dauerhaft deaktivieren. Das gilt dann allerdings für die gesamte Blockliste.

3 Gedanken zu “Pi-hole auf Raspberry Pi installieren und konfigurieren

  1. Pingback: Pi-hole über Docker installieren | LierschIT

  2. Als Zusatz würde ich noch eine neue Netzwerkanwendungen im Router hinzufügen (bei mir Fritz.box). Alle Ports TCP/UDP auf Port 53. Das dann dem Standard Profil hinterlegen, so greift es bei allen Geräten automatisch. Nur der Raspberry sollte das Profil Unbeschränkt bekommen. So kann nichts am PiHole vorbei.

    • Hallo Flo,

      das ist eine gute Idee und habe ich bei mir tatsächlich auch so in der Fritzbox schon länger eingerichtet.
      Als Erklärung für andere Leser oder Leserinnen: Somit wird von der Fritzbox der Datenverkehr auf dem Port 53, ob TCP oder UDP, ins Internet blockiert und nur die lokalen DNS Server können verwendet werden.

      Danke dir für diesen Tipp!
      Wenn ich ein wenig mehr Zeit diese Woche habe, werde ich den Hinweis noch mit aufnehmen!

      Viele Grüße
      LierschIT

Schreibe einen Kommentar

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