Lokaler Filter DNS mit PiHole


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.

In der Regel kannst du sie mit http://[IP-Adresse] aufrufen

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.

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.

Dasselbe gilt für die Whitelist, die genau so konfigurierbar ist, um die Ausnahmen einzurichten (überschreiben dann die Einträge der generellen Listen)

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:
- https://raw.githubusercontent.com/DerHary/PiHole_Blocklist/main/Harys_BlackList.txt
- https://raw.githubusercontent.com/DerHary/PiHole_Blocklist/main/Harys_general_combined_List.txt
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.

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.


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.

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 Funktion verwende ich hier nicht, da ich dies von meinem Router erledigen lasse – dieser weist aber als DNS-Server die IP von PiHole zu.

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“.


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.

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.
One Comment