Zum Inhalt

Pi-hole DNS-Server (DietPi / NanoPi NEO3)

Netzwerkweite Werbe- und Tracker-Blockierung via Pi-hole v6 auf einem FriendlyElec NanoPi NEO3 mit DietPi OS. DNS-Upstream über Unbound (rekursiver Resolver, kein Drittanbieter-DNS).

Hardware

FriendlyElec NanoPi NEO3

| Eigenschaft | Wert | | Modell | FriendlyElec NanoPi NEO3 | | SoC | Rockchip RK3328 (Quad-Core ARM Cortex-A53, 64-bit) | | RAM | 1 GB LPDDR4 | | Netzwerk | Gigabit Ethernet | | OS | DietPi (Debian-basiert, ARM64) | | Kernel | 6.18.16-current-rockchip64 | | IP-Adresse | 192.168.178.15 | | Hostname | Pi-Hole |

Software

Pi-hole v6

| Komponente | Version | Status | | Core | v6.4.1 | aktuell | | Web | v6.5 | aktuell | | FTL | v6.6 | aktuell |

  • Web-Interface: http://192.168.178.15:8089/
  • API: http://192.168.178.15:8089/api/
  • Passwort: Nec338a°!

Home Assistant Integration

Pi-hole ist seit 2026-04-09 in HA integriert (Einstellungen → Integrationen → Pi-hole).

| Entity | Beschreibung | | binary_sensor.pi_hole_status | Pi-hole aktiv/inaktiv | | switch.pi_hole | Blocking ein/ausschalten | | sensor.pi_hole_dns_abfragen | DNS-Abfragen heute | | sensor.pi_hole_blockierte_anzeigen | Blockierte Anfragen heute | | sensor.pi_hole_anteil_blockierter_anzeigen | Blockierungsrate in % | | sensor.pi_hole_blockierte_domains | Domains in Blockliste | | update.pi_hole_core_update_verfugbar | Core-Update verfügbar |

Auth: Passwort direkt als api_key, Port 8089, kein SSL.

Unbound (Rekursiver DNS-Resolver)

Pi-hole leitet DNS-Anfragen nicht an Drittanbieter (Google, Cloudflare etc.) weiter, sondern nutzt Unbound als rekursiven Resolver:

  • Unbound läuft lokal auf Port 5335
  • Pi-hole Upstream DNS: 127.0.0.1#5335
  • Vorteile: Datenschutz, keine Abhängigkeit von externen DNS-Anbietern, direkte Root-Server-Abfragen

DNS-Konfiguration

| Einstellung | Wert | | Interface | eth0 | | DNS Port | 53 | | Listening Mode | LOCAL | | Upstream DNS | 127.0.0.1#5335 (Unbound) | | Blocking Mode | NULL | | DNS Cache | 10.000 Einträge | | DNSSEC | deaktiviert | | CNAME Deep Inspect | aktiviert | | Block ESNI | aktiviert | | Query Logging | deaktiviert | | Domain | lan | | Rate Limit | 1.000 Anfragen / 60 Sek. |

DHCP ist deaktiviert — die FritzBox übernimmt DHCP und ist als einziger DNS-Client eingetragen (192.168.178.1). Alle Netzwerkgeräte erhalten Pi-hole als DNS über die FritzBox.

Blocklisten

| # | Liste | Domains | Status | | 1 | Steven Black Unified Hosts | 92.277 | aktiv |

Gesamt blockierte Domains: 92.277 (Stand 2026-04-09)

Statistiken (Stand 2026-04-09)

| Metrik | Wert | | Gesamte Anfragen | ~28.800 / 24h | | Blockierte Anfragen | ~816 (2,8 %) | | Gecachte Anfragen | ~24.200 (84 %) | | Weitergeleitet (Upstream) | ~3.550 | | Aktive Clients | 2 (FritzBox + localhost) |

Top 10 blockierte Domains

| # | Domain | Blockierungen | Kategorie | | 1 | mobile.pipe.aria.microsoft.com | 143 | Microsoft Telemetrie | | 2 | firebaselogging-pa.googleapis.com | 53 | Google Analytics | | 3 | _dns.resolver.arpa | 48 | DNS Spezial | | 4 | global.telemetry.insights.video.a2z.com | 39 | Amazon Telemetrie | | 5 | googleads.g.doubleclick.net | 35 | Google Werbung | | 6 | app-analytics-v2.snapchat.com | 34 | Snapchat Analytics | | 7 | firebaselogging.googleapis.com | 32 | Google Analytics | | 8 | app-measurement.com | 25 | Firebase Analytics | | 9 | api.ad.intl.xiaomi.com | 23 | Xiaomi Werbung | | 10 | www.googletagmanager.com | 21 | Google Tag Manager |

Performance-Optimierungen (2026-03-26)

Pi-hole hatte unter hoher Last (DNS-Burst beim Neustart) Crashes durch das Kaskadierproblem: dnsmasq-Limit → Unbound-Überlastung → TCP-Fehler → FTL-Crash.

Behobene Konfiguration

dnsmasq — /etc/dnsmasq.d/99-custom.conf:

dns-forward-max=500

Unbound — /etc/unbound/unbound.conf.d/dietpi.conf (geänderte Werte):

num-threads: 2         # war: 1 (NanoPi NEO3 hat 4 Kerne)
msg-cache-slabs: 2
rrset-cache-slabs: 2
infra-cache-slabs: 2
key-cache-slabs: 2

| Einstellung | Vorher | Nachher | | dnsmasq dns-forward-max | 150 (Standard) | 500 | | Unbound num-threads | 1 | 2 | | Unbound cache-slabs | nicht gesetzt | 2 |

Update-History

| Datum | System | Vorher | Nachher | | 2026-04-09 | Pi-hole + OS | Core v6.4 / Web v6.4.1 / FTL v6.5 | Core v6.4.1 / Web v6.5 / FTL v6.6 | | 2026-04-09 | Debian Packages | — | libssl3, openssl, bind9, libpng16, libtiff6 (Security-Updates) | | 2026-03-26 | DietPi Update | v9.15.0 | v10.2.3 | | 2026-03-26 | Unbound + dnsmasq | forward-max=150, threads=1 | forward-max=500, threads=2 | | 2026-03-21 | DietPi + Pi-hole | Kernel 6.12.35 / Core v6.0.6 | Kernel 6.18.16 / Core v6.4 / Web v6.4.1 / FTL v6.5 |

Installierte Addons

Fail2ban

Schützt den SSH-Zugang (Dropbear) vor Brute-Force-Angriffen.

| Einstellung | Wert | | Jail | dropbear | | Max. Versuche | 3 | | Beobachtungsfenster | 600 Sekunden | | Ban-Dauer | 3.600 Sekunden (1 Stunde) | | Config | /etc/fail2ban/jail.d/dietpi-hardened.conf |

Log2Ram

Schreibt /var/log in den RAM, um die SD-Karte/eMMC zu schonen. Logs werden periodisch und beim Herunterfahren auf die Karte zurückgeschrieben.

| Einstellung | Wert | | RAM-Größe | 128 MB | | Sync | rsync (täglich + bei Shutdown) | | Config | /etc/log2ram.conf | | Mount | tmpfs auf /var/log |

Zugang & Administration

| Zugang | Details | | Web-Interface | http://192.168.178.15:8089/ | | SSH | ssh root@192.168.178.15 · PW: Nec338a°! (kein Key, Passwort-Auth) | | SSH via HA | ssh -F /config/.ssh/config omv → sshpass -p 'Nec338a°!' ssh root@192.168.178.15 | | API Auth | POST /api/auth mit {"password":"Nec338a°!"} |

Ressourcen (Stand 2026-03-26)

| Ressource | Wert | | RAM gesamt | ~969 MB | | RAM genutzt | ~135 MB (14 %) | | Swap | ~1 GB (ungenutzt) | | CPU-Auslastung | ~1 % | | CPU-Kerne | 4 |


← Zurück zur Hardware-Übersicht · ← Server-Übersicht