Zero-Trust-DNS-Infrastruktur: Unbound & Pi-hole mit DoH und DNSSEC

Inhalt
Das Vertrauen in externe, öffentliche DNS-Resolver (wie 8.8.8.8 oder 1.1.1.1) bedeutet zwangsläufig, sämtliche Metadaten des gesamten Netzwerkverkehrs an Dritte zu übergeben. Selbst bei aktivierter Transportverschlüsselung können zentrale DNS-Anbieter Abfragen protokollieren und Profile der Internetnutzung erstellen. Der Aufbau einer Zero-Trust-DNS-Architektur durch die Kombination von Pi-hole mit dem rekursiven, validierenden Resolver Unbound eliminiert jegliche Abhängigkeiten von externen Dienstleistern. Durch die direkte Abfrage der DNS-Root-Server bei gleichzeitiger DNSSEC-Validierung wird kryptografische Integrität garantiert und Manipulationen durch den Internetanbieter werden unterbunden; vor dem Mitlesen auf der Leitung schützt das allein nicht.
1. Architektur-Prinzipien: Zero-Trust-DNS & Rekursion
In standardmäßigen Netzwerkkonfigurationen werden DNS-Anfragen an einen ISP oder öffentlichen Resolver weitergeleitet. Eine lokale Zero-Trust-Architektur trennt die Aufgabenbereiche stattdessen in zwei klar definierte Stufen:
- Pi-hole (DNS-Sinkhole & Filter-Engine): Fängt eingehende Abfragen lokaler Endgeräte ab und filtert Telemetrie-, Werbe- und bekannte Schad-Domains anhand von Blocklisten aus.
- Unbound (Rekursiver Resolver & Validator): Nimm legitime Abfragen von Pi-hole entgegen und fragt die weltweite DNS-Hierarchie (Root-Server → TLD-Server → Autorisative Nameserver) eigenständig ab. Jede Antwort wird vor der lokalen Zwischenspeicherung durch kryptografische DNSSEC-Signaturen validiert.
2. Schritt-für-Schritt-Installation und Härtung von Unbound
Für die Bereitstellung von Unbound als hochsicherer rekursiver Resolver auf einem Linux-System (z. B. Debian oder Raspberry Pi OS) ist folgende Vorgehensweise auszuführen:
- Paketinstallation: Installation des Resolvers und der notwendigen DNS-Werkzeuge:
sudo apt update && sudo apt install unbound unbound-anchor -y - Einrichtung des DNSSEC-Root-Trust-Anchors: Abruf des offiziellen DNSSEC-Root-Schlüssels zur Signaturprüfung:
sudo unbound-anchor -a /var/lib/unbound/root.key - Konfiguration der gehärteten Resolver-Datei: Erstellung der Hauptkonfigurationsdatei unter
/etc/unbound/unbound.conf.d/pi-hole.confmit optimierten Sicherheits- und Datenschutzparametern:server: verbosity: 1 interface: 127.0.0.1 port: 5335 do-ip4: yes do-udp: yes do-tcp: yes # Sicherheit & DNSSEC-Validierung auto-trust-anchor-file: "/var/lib/unbound/root.key" harden-glue: yes harden-dnssec-stripped: yes use-caps-for-id: no edns-buffer-size: 1232 prefetch: yes num-threads: 1 # Datenschutz-Härtung (Minimale Datenpreisgabe) qname-minimisation: yes hide-identity: yes hide-version: yes private-address: 10.0.0.0/8 private-address: 172.16.0.0/12 private-address: 192.168.0.0/16 - Dienst-Neustart & Verifikation: Aktivierung und Neustart des Unbound-Dienstes sowie anschließender Test der lokalen Auflösung und DNSSEC-Prüfung über den definierten Port:
sudo systemctl restart unbounddig @127.0.0.1 -p 5335 dnssec-failed.org +dnssec(Muss aufgrund einer ungültigen DNSSEC-Signatur zwingendSERVFAILzurückgeben).
3. Schritt-für-Schritt-Integration in Pi-hole & DoH-Fallback
Sobald die lokale Rekursion funktionsfähig ist, muss Pi-hole an den internen Unbound-Dienst angebunden werden:
- Upstream-Konfiguration in Pi-hole: Aufrufen der Pi-hole Web-Oberfläche und Navigation zu
Settings > DNS. - Deaktivierung externer Upstream-Anbieter: Entfernen sämtlicher Haken bei vorkonfigurierten, externen DNS-Servern (z. B. Google, Cloudflare, Quad9).
- Eintragung des lokalen Custom-Upstreams: Im Feld
Custom 1 (IPv4)wird der lokale Unbound-Socket eingetragen:127.0.0.1#5335. - Aktivierung von DNSSEC: Setzen des Hakens bei
Use DNSSEC, damit Pi-hole die kryptografischen DNSSEC-Statusflags korrekt an die lokalen Clients weiterreicht. - Optionales DNS-over-HTTPS (DoH)-Tunneling: In Netzwerkumgebungen mit restriktiver ISP-Überwachung auf Port 53 kann Unbound so konfiguriert werden, dass Abfragen über einen lokalen DoH-Proxy (z. B.
cloudflaredoderdnscrypt-proxy) verschlüsselt weitergeleitet werden, um ein Abhören auf Transitrouten zu verhindern.
4. Zusammenfassung & Mehrwert
Was sich damit erreichen lässt: Die erfolgreiche Implementierung einer autonomen Zero-Trust-DNS-Architektur, bei der die Werbe- und Tracking-Blockade von Pi-hole mit der kryptografischen DNSSEC-Validierung und Datenminimierung des rekursiven Unbound-Resolvers kombiniert wird.
Resultierender Mehrwert: Es wird eine vollständige Unabhängigkeit von kommerziellen DNS-Anbietern erreicht, sodass kein externer DNS-Anbieter mehr interne Netzwerkprofile oder Abfragelogbücher erfassen oder monetarisieren kann. Die kryptografische DNSSEC-Validierung schützt alle Geräte im lokalen Netz zuverlässig vor Cache-Poisoning, Spoofing und Man-in-the-Middle-Manipulationen, während die QNAME-Minimierung sicherstellt, dass jeweils nur das absolut notwendige Minimum an Domain-Informationen an übergeordnete DNS-Server übertragen wird.
Fragen und Antworten
Schützt die eigene Rekursion mit Unbound die DNS-Anfragen vor dem Internetanbieter?
Vor Manipulation ja, vor dem Mitlesen nicht. DNSSEC sichert die Echtheit der Antworten, verschlüsselt aber nichts. Unbound fragt Root-, TLD- und autoritative Server direkt über Port 53 im Klartext, und diese Anfragen laufen über die Leitung des Anbieters. Die QNAME-Minimierung verringert nur, was der einzelne Server erfährt: Ein Root-Server sieht die Endung, nicht den vollen Namen. Auf der Leitung selbst ist jede Anfrage trotzdem lesbar.
Die Verschlüsselung per DoH, die der Artikel als Option nennt, ändert die Lage grundlegend: Unbound fragt dann nicht mehr selbst die Hierarchie ab, sondern reicht alle Anfragen an den Betreiber des DoH-Dienstes weiter. Der Internetanbieter sieht von den Anfragen nichts mehr, dafür sieht der DoH-Betreiber alle, und damit steht wieder ein zentraler Resolver im Weg, wie ihn die Rekursion vermeiden sollte. Beides zugleich geht nicht, weil autoritative Server verschlüsselte Anfragen in aller Regel nicht annehmen.
Ein Rest bleibt in beiden Fällen: Die Verbindung, die auf die Auflösung folgt, verrät dem Anbieter ihr Ziel über die IP-Adresse und meist auch über den Servernamen, der beim TLS-Aufbau unverschlüsselt mitgeht. Die Wahl zwischen Rekursion und DoH ist deshalb eine Wahl, wem die Anfragen offenliegen, nicht ob.
Warum werden manche öffentlichen Namen, die auf eine interne Adresse zeigen, nach der Umstellung auf Unbound nicht mehr aufgelöst?
Die Zeilen private-address in der Konfiguration sind ein Schutz gegen DNS-Rebinding: Unbound entfernt Adressen aus diesen Bereichen aus allen Antworten, die aus dem öffentlichen DNS kommen. Ein Name, der absichtlich auf eine interne Adresse zeigt, bleibt damit ohne Ergebnis, bis eine Zeile private-domain: "beispiel.de" seine Domain von der Prüfung ausnimmt. Lokale Einträge in Pi-hole betrifft das nicht, weil Pi-hole sie selbst beantwortet und Unbound gar nicht erst fragt.