Vorab – was ist PiHole und wofür braucht man es?

PiHole ist ein System, das es möglich macht, unter anderem einen lokalen DNS zur Werbe- und Tracking-Filterung bereitzustellen.

Werbe URLs und Hostnamen werden beim DNS Lookup der Geräte durch lokale oder „non-existing“ Ergebnisse ersetzt.

Das führt dazu, dass der vorgesehene Inhalt der aufgerufenen Werbeseiten, Tracker usw. nicht an deine Geräte ausgeliefert werden.

In Anbetracht dessen wie viel heutzutage auf Webseiten geworben wird und wie exzessiv Hersteller von Software und Geräten versuchen dich auszuspionieren ist dies ein sehr nützliches Tool!

PiHole kann ebenso als DHCP Server verwendet werden, um z. B. unübersichtliche Router Interfaces zu umgehen oder eben DHCP + DNS auf einem Gerät zu vereinen.

Bei PiHole handelt es sich um ein OpenSource Projekt, es wird von einer großen Community gewartet und weiter entwickelt und ist kostenlos.

Features die PiHole bietet

  • Leicht zu installieren
  • blockt Werbung zuverlässig
  • blockt auch non-Browser Werbung (Bsp. Smartphone App Werbung)
  • blockt auch non-Browser Tracking (Bsp. Windows „nachhause telefonieren“)
  • funktioniert für alle Geräte im Netzwerk
  • Browsing Beschleunigung durch lokalen DNS Cache
  • Braucht nicht viele Hardware Ressourcen
  • Übersichtliches Webinterface für die Konfiguration
  • IPv4/IPv6 Betrieb möglich (parallel)
  • Open Source, kostenlos

Was brauche ich um PiHole zu verwenden?

Hauptsächlich hängt das von der vorgesehenen Verwendung ab.

Typischerweise verwendet man PiHole im eigenen privaten Heimnetzwerk.

Um das eigene Heimnetz mit PiHole zu versorgen, reicht in der Regel eine der folgenden Geräte/Umgebungen:

  • Raspberry Pi mit >500 MB RAM (Beispiel)
  • eine bestehende Linux Umgebung (Ubuntu/Debian/Fedora/CentOS)
  • Docker

Installation

Einfacher könnte diese fast nicht sein!

Logge dich als root oder anderer privilegierter Benutzer ein und führe dieses Kommando aus:

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

Dies startet den Installer, welcher die benötigten Abhängigkeiten und PiHole selbst installiert.

ACHTUNG: Verwendest du ein bestehendes System mit Webserver, beachte bitte, dass PiHole für sein Webinterface /var/www/html verwendet – tut das der bestehende Webserver auch, könnte PiHole ungewollt auch über diesen erreichbar werden.

Willst du PiHole in Docker verwenden:

docker pull pihole/pihole

Dies lädt das vorkonfigurierte Image.

Dort ist es aber empfehlenswert, die Docker Konfiguration anzupassen – Beschreibung dazu.

Das PiHole Webinterface und was es enthält

Hier nun eine kleine Übersicht des Webinterface.

Die Startseite, welche du siehst, wenn du das erste Mal die URL deines PiHole aufrufst.
In der Regel kannst du sie mit http://[IP-Adresse] aufrufen
Nach dem Login befindet man sich auf der Übersichtsseite, welche die Statistiken anzeigt.
Wie man am Screenshot sehen kann, wird bei mir enorm viel geblockt – Das liegt vor allem an Amazon Geräten, da diese permanent nachhause zu telefonieren versuchen.
Ein wichtiger Part: Das Query Log, wo du die angefragten Domains nachvollziehen kannst.
Kann unterschiedlich aussehen, je nachdem welche Datenschutz-Einstellungen du triffst (Hostnamen können z. B. verborgen werden)
Blocked (gravity) bedeutet zB dass die URL von PiHole nicht aufgelöst wurde, sondern eine (je nach Einstellung) falsche IP, noData oder NXDomain zurückgegeben wird.
In der Blacklist kannst du Hostnamen und Domains hinzufügen, die du abseits der generellen Listen blocken willst, dies kann per exact Match oder Regex stattfinden.
Dasselbe gilt für die Whitelist, die genau so konfigurierbar ist, um die Ausnahmen einzurichten (überschreiben dann die Einträge der generellen Listen)
Im Group Management kann man die Blocking-Gruppen einrichten, ich gehe hier nicht darauf ein, da man idR. für alle Geräte dieselben Regeln anwenden will und keine zusätzlichen Gruppen verwendet – Man kann einfach gesagt unterschiedliche Gruppen definieren und Geräte diesen Gruppen zuweisen.
Der Haupt-Punkt hier ist allerdings die Tabelle mit den Adlists.
Hier kann man die zu verwendenden Listen hinzufügen/aus/einschalten.
Abseits der allgemein verfügbaren Listen verwende ich auch meine eigenen Listen, combined und eine speziellere mit URLs, die mir selbst negativ aufgefallen sind.

Details zu meinen Blacklisten:

Github Page: https://github.com/DerHary/PiHole_Blocklist
Direkte Listen URLs:

Die Listen sind duplikatbereinigt und alphabetisch sortiert.

Verschiedene Optionen

Nach dem Gruppen-Management gibt es auch die Möglichkeit, mit „Disable“ das Blocking von PiHole temporär zu deaktivieren.
Allerdings ist hier zu beachten, dass die Deaktivierung nicht bedeutet, dass man eine Seite sofort erreichen kann – denn – auch Geräte haben einen DNS Cache, der sich nicht sofort aktualisiert.
Soll heißen, deaktivierst du PiHole kann es dennoch dauern bis du die Seite/den Dienst, den du erreichen willst, nicht sofort erreichen wirst.
Du kannst es aber auf z. B. Windows beschleunigen in dem du in der Commandline „ipconfig /flushdns“ ausführst, was den DNS Cache von Windows leert.

Unter Tools finden sich diverse Hilfen, um z. B. eine generelle PiHole Diagnose zu machen, die Blacklisten upzudaten (herunterladen und anwenden), oder die Logs zu prüfen.

Der Punkt Network listet die gefundenen Geräte im Netzwerk auf und deren Status – ob sie PiHole verwenden, wann die letzte Query war, wie viele, und wann das Gerät zum ersten Mal wahrgenommen wurde.
Das kann praktisch sein, wenn man keinen DHCP verwendet, der PiHole automatisch im Netzwerk als DNS setzt – dann kann man hier die fehlenden Geräte finden und ggf. umstellen.
Beim Betreten der Settings Kategorie wird dir erstmal eine Übersicht angezeigt – auf dieser hast du auch die Möglichkeit das Log zu leeren, den Host neu zu starten, herunterzufahren oder den Resolver neu zu starten.
In den DNS Einstellungen kannst du die sogenannten Upstream DNS konfigurieren – also die Server, die deinem DNS die Ergebnisse liefern, nachdem er selbst die DNS Anfrage genehmigt hat.
Die Anfrage wird an die konfigurierten Upstream DNS weitergeleitet und die Antwort erst an deinen PiHole gesendet, der sie wiederum an deine Geräte weiterreicht.
Das Ergebnis der Query wird im DNS Cache gespeichert und die nächste Anfrage zur selben Domain wird aus dem DNS Cache des PiHole beantwortet.
Man kann hier die voreingestellten DNS wie Google, OpenDNS usw. verwenden oder eigene in den „Custom“ Feldern angeben.
In meinem Fall verwende ich einen eigenen, ebenfalls auf diesem Host, weil ich an einen DNS over HTTP (kurz DoH) Server weiterleite.
Dazu werde ich einen eigenen Artikel erstellen, wo die Installation und Konfiguration von einem DNS Proxy erklärt wird.
Die erweiterten DNS Einstellungen können beim Finetuning helfen, da z. B. die Konfiguration des Conditional Forwarding wichtig ist, wenn man Netzwerk interne Hostnamen verwenden will.
In meinem Fall wird z. B. rechner.lan beim DNS des Routers angefragt statt bei einem DNS im Internet – Der Google DNS kennt meine LAN Geräte nicht, daher würde das nichts bringen.
DHCP Server Settings können hier z. B. feste DHCP Leases bekommen, der Range kann definiert werden – wie auch auf Routern üblich.
DHCP Funktion verwende ich hier nicht, da ich dies von meinem Router erledigen lasse – dieser weist aber als DNS-Server die IP von PiHole zu.
Die Privacy Settings definieren, was PiHole selbst über die Geräte, Domains und Queries speichert.
Ich speichere grundsätzlich alles, speziell um sogenannte „Telemetrie“ Anfragen weitestmöglich zu finden und zu unterbinden – Handelt es sich dabei in Wirklichkeit eigentlich nur um Tracking, unter dem Deckmantel der „Verbesserung von Services“.
Die Teleport Funktion bezeichnet die Möglichkeit, Backups der aktuellen Konfiguration anzufertigen und sie ggf. auf demselben oder anderem PiHole wiederherzustellen.
Eine spannende und nützliche Funktion ist der „Local DNS“, damit kann man z. B. Domains auf interne IPs verweisen lassen.
Will ich zum Beispiel, wenn ich Google.com aufrufe stattdessen auf einem internen Gerät landen, könnte man dies hier machen.
Das Beispiel lässt sich z. B. auch auf xyz.lan anwenden – mein Netzwerkdrucker ist dann z. B. unter drucker.lan erreichbar, es könnte aber genauso gut drucker.com sein.
Ist ein Eintrag in der Local DNS Liste zu einer angefragten Domain vorhanden, wird diese dem DNS Forward vorgezogen und mit dem Eintrag aus der Liste beantwortet.
In der CNAME Liste kannst du wie der Name schon sagt CNAME Einträge auf andere Domains/Hostnamen setzen.
Ich bin nicht sicher, ob dies generell so ist oder aus irgendwelchen Gründen vorkommt – ich kann die CNAME Einträge nur auf meine lokalen Hostname aus den DNS Records setzen, nicht auf externe Domains.

Das war es auch schon mit dem Interface.
Ich habe nicht alle Seiten des Interface gezeigt, aber versucht einen generellen Überblick zu verschaffen.

Meine PiHole Umgebung

Wie oben genannt, sind die Voraussetzungen für eine PiHole Maschine nicht besonders groß.
Selbst die Installation ist sehr einfach, vorausgesetzt man hat ein Linux Grundsystem bereits installiert oder einen Raspberry.

Ich selbst habe bei mir einen Windows-Server 2019 mit Hyper-V auf einer potenten Hardware im Einsatz.
Von daher hat hier PiHole eine eigene VM, mit Debian als solide „Unterlage“, die auf dem Hyper-V Server als Gen2 VM läuft.

Neben dem PiHole habe ich ebenfalls einen Apache Webserver installiert und hoste das PiHole Webinterface damit.
Das ermöglicht mir für meine externe Erreichbarkeit auch die Erstellung von Zertifikaten über Certbot und die verschlüsselte Kommunikation auch intern zum PiHole.

Der von mir oben erwähnte Custom DNS-Server ist konfiguriert seine DoH Anfragen an die DNS von NextDNS weiterzuleiten.

Soweit hier erstmal die Informationen von mir.
Wenn ich am Pihole etwas Neues/anders konfiguriere, werde ich ggf. einen Artikel erstellen und hier verlinken, um die Infos zu teilen.

Hi, I’m DerHary

One Comment

Schreibe einen Kommentar

aschi.at