7 Pi Hole
7.1 Einführung
7.1.1 Was ist DNS?
Der DNS (Domain Name System) ist für die Namensauflösung von URLs zuständig. Sobald eine Domain aufgerufen wird, fragt der eigene Computer beim DNS nach, welche IP sich hinter der angegebenen Adresse verbirgt, um eine Verbindung aufbauen zu können.
7.1.2 Was ist ein Pi-Hole?
Der Pi-Hole wird in der eigenen Dokumentation als ein “DNS-Sinkhole” bezeichnet. Das bedeutet, dass diese Anwendung als DNS-Server verwendet wird und bestimmte Anfragen auf URLs schlichtweg blockiert. Dadurch können (viele) Werbeanzeigen blockiert und der Zugriff auf böswillige Webseiten verhindert werden.
7.2 Pi-Hole vs. Browser Adblocker
Im Vergleich zu herkömmlichen Ad-Blockern, die als Erweiterungen direkt im Webbrowser installiert werden (z. B. uBlock Origin oder Adblock Plus), arbeitet Pi-hole auf Netzwerkebene. Während Browser-Adblocker HTML-Inhalte analysieren und gezielt Werbung anhand bestimmter Elemente oder Skripte auf einer Webseite blockieren, filtert Pi-hole DNS-Anfragen bereits bevor eine Verbindung zu einer Werbequelle überhaupt aufgebaut wird. Das bedeutet, dass Pi-hole sämtliche Anfragen zu bekannten Werbedomains im lokalen Netzwerk abfängt und blockiert, indem es gefälschte DNS-Antworten liefert. Dadurch werden viele Werbeinhalte gar nicht erst geladen, unabhängig vom verwendeten Gerät oder Browser. Dies hat den Vorteil, dass auch Geräte ohne die Möglichkeit, einen Adblocker zu installieren (z. B. Smart-TVs, Smartphones oder Spielekonsolen), vom Werbefilter profitieren. Allerdings kann das Pi-hole keine Inhalte blockieren, die von der gleichen Domain wie die Hauptseite stammen (sogenannte First-Party-Ads). Hier sind Browser-Adblocker oft im Vorteil, da sie direkt auf die Struktur und den Code der geladenen Webseite zugreifen können. Beide Ansätze haben also unterschiedliche Stärken und ergänzen sich im Idealfall gegenseitig.
| Merkmal | Pi-hole | Browser-Adblocker |
|---|---|---|
| Einsatzort | Netzwerkweit (DNS-Ebene) | Lokal im Browser |
| Geräteabdeckung | Alle Geräte im Netzwerk (bei passen konfiguriertem DNS Server) | Nur Geräte mit unterstütztem Browser |
| Blockiermethode | DNS-Anfragen zu Werbedomains | HTML/JS-Analyse und Filterregeln |
| Wirksamkeit | Eingeschränkt bei First Party Ads | Grundsätzlich besser |
| Vorteile | Werbung wird netzwerkweit gar nicht geladen | Genaue Kontrolle über Inhalte |
| Nachteile | Keine Filterung innerhalb von Webseiten; First-Party Ads werden nicht verlässlich blockiert | Nur wirksam im Browser |
7.3 Einrichtung (mit Docker)
Ziel: Werbefilterung & DNS-Server im lokalen Netzwerk mit Pi-hole aufsetzen – einfach via Docker Compose.
7.3.1 Voraussetzungen:
- Docker & Docker Compose installiert
- Eine statische IP-Adresse (empfohlen)
- Port 53 darf nicht von einem anderen Dienst blockiert sein (z. B.
systemd-resolvedauf Ubuntu)
7.3.2 docker-compose.yml:
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
# DNS Ports
- "53:53/tcp"
- "53:53/udp"
# Default HTTP Port
- "80:80/tcp"
# Default HTTPs Port. FTL will generate a self-signed certificate
- "443:443/tcp"
# Uncomment the line below if you are using Pi-hole as your DHCP server
#- "67:67/udp"
# Uncomment the line below if you are using Pi-hole as your NTP server
#- "123:123/udp"
environment:
# Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
TZ: 'Europe/Berlin'
# Set a password to access the web interface. Not setting one will result in a random password being assigned
FTLCONF_webserver_api_password: 'Hey there I m using Pi-Hole'
# If using Docker's default `bridge` network setting the dns listening mode should be set to 'all'
FTLCONF_dns_listeningMode: 'all'
# Volumes store your data between container upgrades
volumes:
# For persisting Pi-hole's databases and common configuration file
- './etc-pihole:/etc/pihole'
# Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards. Needs environment variable FTLCONF_misc_etc_dnsmasq_d: 'true'
#- './etc-dnsmasq.d:/etc/dnsmasq.d'
cap_add:
# See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
# Required if you are using Pi-hole as your DHCP server, else not needed
- NET_ADMIN
# Required if you are using Pi-hole as your NTP client to be able to set the host's system time
- SYS_TIME
# Optional, if Pi-hole should get some more processing time
- SYS_NICE
restart: unless-stopped7.3.3 Starten:
docker compose up -dDanach im Browser: http://<deine-IP>/admin
7.3.4 Blocklists & Whitelists über die Web-UI verwalten
7.3.4.1 Blocklist hinzufügen:
Öffne das Webinterface: http://<deine-IP>/admin
- Wähle den Menüpunkt Lists aus
- Gib die Adresse der gewünschten Liste aus
- Klicke auf “Add blocklist”
- Führe entweder in der Konsole
bash pihole-gaus

- Oder im Menüpunkt Tools → Update Gravity
- Den Button Update aus

7.3.4.2 Domain whitelisten:
- Wähle den Menüpunkt “Domains”
- Trage die Domain ein, z. B.
icloud.com - (optional) Setze den Haken “Add domain as wildcard”
- Klicke auf “Add to allowed Domains”
> Tipp: In den Query Logs findest du blockierte Domains und kannst sie mit einem Klick erlauben.
7.3.5 Fritz!Box: DNS auf Pi-hole umstellen
- Öffne die Weboberfläche deiner Fritz!Box:
http://fritz.box - Navigiere zu Heimnetz → Netzwerk → Netzwerkeinstellungen
- Klicke auf “IPv4-Einstellungen”
- Aktiviere “Lokaler DNS-Server” und trage dort die IP deines Pi-hole ein

Achtung: Manche Fritz!Box-Modelle erlauben diese Einstellung nur im Expertenmodus.
- Für IPv6 ggf. unter “IPv6” ebenfalls den lokalen DNS setzen

7.4 Performance
Pi Hole verbraucht im ruhezustand etwa 11MB RAM, in diesem Fall kommen noch 558MB dazu wegen des Docker Daemons. 
Bei wiederholten Versuchen und einer Anfragerate von etwa 222 Anfragen pro Sekunde zeigte sich, dass, selbst dann, nur 11MB Arbeitsspeicher in Anspruch genommen werden. Der CPU werden dabei ebenfalls kaum Resourcen genommen. 
Es lässt sich dementsprechend sagen, dass Pi Hole ziemlich resourcenschonend ist und somit auch effektiv auf leistungsschwachen Rechnern, wie einem Raspberry, eingesetzt werden kann.
7.5 PiHole: Vorteile und Nachteile
7.5.1 Vorteile
Pi-hole filtert Werbung und Tracker zentral auf DNS-Ebene für das gesamte Netzwerk. So sind alle Geräte – auch solche ohne eigene Adblocker wie Smart-TVs oder Konsolen – automatisch geschützt. Das sorgt für weniger Werbung, schnellere Ladezeiten und spart Datenvolumen.
7.5.1.1 Weitere Vorteile von Pi-hole
Datenschutz & Privatsphäre: Schutz vor Trackern, die dein Surfverhalten überwachen.
Weniger störende Werbung: Werbung wird auch in Apps, auf Smart-TVs und Streaming-Geräten blockiert.
Open-Source & kostenlos: Kostenlos, mit großer Community und regelmäßigen Updates.
Individuelle Konfiguration: Eigene Blacklists/Whitelists möglich, anpassbar auf die eigenen Bedürfnisse.
Statistik & Monitoring: Übersichtliche Web-Oberfläche mit Statistiken zu blockierten Anfragen und Netzwerkverkehr.
7.5.2 Nachteile
Fällt das Gerät mit Pi-hole aus, ist die Namensauflösung im Netzwerk gestört – das Internet funktioniert meist nicht mehr. Ohne Backup-DNS oder technisches Know-how kann das schnell zu Frust führen.
7.5.2.1 Weitere Nachteile von Pi-hole
Komplexe Einrichtung/Wartung: Für weniger versierte Nutzer etwas anspruchsvoller.
Umgehung durch DoH/DoT: Einige Apps und Geräte umgehen Pi-hole durch verschlüsselte DNS-Anfragen.
Falsche Blockierungen: Gelegentlich werden auch nützliche Dienste blockiert.
Kein vollständiger Adblocker-Ersatz: Nicht jede Werbung, z. B. auf YouTube, wird gefiltert.
Abhängigkeit von Listen-Qualität: Die Filterwirkung hängt von den gewählten Blocklisten ab.
7.6 Lokalen Rekursiven DNS Server einrichten
Zusätzlich zum Pi-Hole selbst bietet es sich auch an, auf dem selben Gerät einen eigenen lokalen rekursiven DNS Server aufzusetzen. Dadurch ist man nicht auf die sonst gängigen Upstream DNS Anbieter wie Cloudflare oder Google gebunden.
7.6.1 Was macht ein rekursiver DNS Server?
Der rekursive DNS Server ist die erste Anlaufstelle des eigenen Endgerätes, wenn auf eine URL zugegriffen werden soll.
Wenn beispielsweise auf die Webseite cloud.hs-augsburg.de zugegriffen werden soll, fragt das Gerät den rekursiven DNS Server nach der IP hinter dieser Adresse. Ist die IP nicht bereits im Cache, fragt der rekursive DNS zunächst bei den Root DNS Servern nach, welcher autoritative DNS Server für den Bereich de zuständig ist. Wurde diese Frage beantwortet, fragt der rekursive DNS nach dem autoritativen Server für hs-augsburg.de. Danach wird bei diesem Server schließlich nach cloud.hs-augsburg.de gefragt. Sobald der rekursive DNS Server die gesuchte IP-Adresse hat, wird diese schließlich an das Endgerät weitergegeben und die Seite kann besucht werden.
7.6.2 Wieso einen eigenen lokalen rekursiven DNS einrichten?
Standardmäßig nutzt das eigene Netzwerk den rekursiven DNS Server des ISP (Internet Service Provider). Falls man einen anderen rekursiven DNS Server benutzen möchte, gibt es auch einige Anbieter für sogenannte “Upstream DNS”. Zu den bekanntesten zählen Google (8.8.8.8), Cloudflare (1.1.1.1) oder auch Quad9 (9.9.9.9).
Das Problem bei der Nutzung eines solchen Upstream DNS ist, dass man den Anbietern vertrauen muss. Selbst wenn diese Anbieter angeben, solche Anfragen nicht mitzuloggen, lässt sich dies nicht überprüfen. Da Die an diese Server geschickten Daten sensible Informationen enthalten, welche Webseiten man zu welchem Zeitpunkt besucht, scheint es verständlich einen solchen Service lieber im eigenen Netzwerk zu hosten. Wie sich zeigen wird, ist dies sogar sehr einfach und in wenigen Minuten erledigt.
7.6.3 Einrichtung
Die Dokumentation von Pi-Hole empfiehlt dazu das Paket unbound.
Dieses Paket kann einfach mit dem Befehl sudo apt-get install unbound auf dem Gerät installiert werden, auf dem bereits der Pi-Hole läuft. Entsprechende Konfigurationen wie die Adressen der Root DNS Server werden in diesem Fall bereits durch den Paketmanager mitinstalliert uns automatisch regelmäßig geupdatet.
Sobald daraufhin eine Config Datei für den Pi-Hole geschrieben ist (die Dokumentation gibt eine vor), kann der Unbound Service mit sudo service unbound restartneu gestartet werden.
Wenn man nun eine DNS Anfrage sendet, kann man den Zeitunterschied beobachten, den die Erste Anfrage ohne Cache im Vergleich zur zweiten Anfrage mit Cache benötigt:

Nun muss nur noch der lokale rekursive DNS Server im Pi-Hole eingestellt werden:

Nun benutzt der Pi-Hole einen eigenen lokal gehosteten rekursiven DNS Server.