Für Pi-hole auf Ubuntu Server 24.04 leiten Sie die Upstream-Anfragen dnscrypt-proxyüber den lokalen Listener unter 127.0.0.1#5053. Dadurch wird der DNS-Verkehr zwischen Ihrem Server und dem ausgewählten Upstream-Resolver mit DNS-over-HTTPS (DoH) verschlüsselt, während Pi-hole weiterhin Ihre LAN-Clients bedient und seine Blocklisten anwendet. Pi-hole selbst stellt standardmäßig keine DoH-Verbindung zum Upstream bereit; diese verschlüsselte Verbindung wird vom lokalen Proxy bereitgestellt.
Eine wichtige Information zur aktuellen Version: Cloudflare hat den cloudflared proxy-dnsBefehl ab dem 2. Februar 2026 aus neuen Versionen entfernt. Ältere Anleitungen, die diesen Befehl installieren, funktionieren möglicherweise nicht mit aktuellen cloudflaredVersionen. Die folgenden Schritte verwenden dnscrypt-proxydie aktuelle DoH-Anleitung von Pi-hole. Diese Konfiguration eignet sich, wenn Pi-hole und der Proxy auf demselben Ubuntu-Host laufen. Bei einer Docker- oder Multi-Host-Umgebung sind andere Listener-Adressen und Firewall-Regeln erforderlich.
Was diese Konfiguration leistet und was sie nicht leistet
Normales DNS sendet Anfragen von Ihrem Resolver üblicherweise unverschlüsselt an einen vorgelagerten DNS-Anbieter. DoH hingegen überträgt DNS-Anfragen über HTTPS, wodurch es für einen Netzwerkbeobachter zwischen Ihrem Pi-hole-Server und dem Resolver deutlich schwieriger wird, diese Anfragen zu lesen oder zu verändern. Pi-hole bleibt der DNS-Server, der den Geräten in Ihrem lokalen Netzwerk bekanntgegeben wird; lediglich der Pfad zum vorgelagerten DNS-Anbieter ändert sich.
DoH macht DNS-Aktivitäten für den gewählten Resolver nicht unsichtbar. Der Upstream-Provider empfängt weiterhin Anfragen von Ihrem Server, und Pi-hole speichert möglicherweise den Anfrageverlauf des Clients gemäß seinen Datenschutz- und Protokollierungseinstellungen. HTTPS verschlüsselt außerdem keinen fremden Webverkehr. Wenn Sie einen bestimmten Resolver verwenden möchten, prüfen Sie dessen Datenschutzrichtlinie und wählen Sie den entsprechenden DoH-Eintrag aus der Liste der unterstützten Resolver aus.
Bevor Sie beginnen
- Vergewissern Sie sich, dass Pi-hole bereits auf Ubuntu Server 24.04 installiert ist und funktioniert. Diese Anleitung konfiguriert ein vorhandenes Pi-hole, anstatt es neu zu installieren.
- Stellen Sie sicher, dass der Server über eine stabile LAN-Adresse verfügt. Ändert sich die Adresse, verlieren die DHCP-Clients des Routers möglicherweise ihren DNS-Server.
- Sie benötigen Administratorrechte und eine Möglichkeit, den Pi-hole-Host zu erreichen, falls die DNS-Auflösung vorübergehend ausfällt. Vermeiden Sie es, diese Änderung remote über eine Verbindung vorzunehmen, die für die Namensauflösung auf denselben Pi-hole-Server angewiesen ist.
- Notieren Sie sich die aktuellen Pi-hole-Upstream-Einstellungen, damit Sie diese im Falle eines Rollbacks wiederherstellen können.
Der Proxy bindet ausschließlich an den Loopback-Port 5053, sodass Port 53 für Pi-hole frei bleibt. Dadurch wird eine Konfliktierung mit dem DNS-Dienst von Pi-hole und dem lokalen Resolver von Ubuntu vermieden. Deaktivieren Sie den Proxy nicht, systemd-resolvednur um diese Konfiguration zu ermöglichen; der separate Loopback-Port des Proxys verhindert diesen Konflikt.
1. Installieren Sie dnscrypt-proxy aus den Paketquellen von Ubuntu.
Das dnscrypt-proxy-Projekt dokumentiert einen Installationspfad für Ubuntu-Pakete. Prüfen Sie vor der Installation, ob Ihre konfigurierten Ubuntu-Repositories ein geeignetes Paket anbieten.
sudo apt update
apt-cache policy dnscrypt-proxy
Falls die Ausgabe eine Kandidatenversion anzeigt, installieren Sie diese:
sudo apt install dnscrypt-proxy
Wird kein Kandidat angezeigt, fügen Sie kein fremdes Drittanbieter-Repository hinzu, nur um fortzufahren. Verwenden Sie die Installationsmethode aus der offiziellen Linux-Anleitung des dnscrypt-proxy-Projekts, überprüfen Sie die Version und Architektur und passen Sie die Dienstkonfiguration an diese Installation an. Die unten aufgeführten Pfade für die systemd-Socket-Unit und die Konfiguration beziehen sich auf die von Pi-hole dokumentierte Ubuntu-Paketkonfiguration.
2. Verschieben Sie den Proxy-Listener auf localhost Port 5053.
Pi-hole verwendet bereits den Standard-DNS-Port 53. Konfigurieren Sie den Socket des Proxys so, dass er sowohl auf TCP als auch auf UDP unter lauscht 127.0.0.1:5053, erreichbar nur vom selben Host aus. Erstellen Sie ein systemd-Drop-in:
sudo systemctl edit dnscrypt-proxy.socket
Geben Sie diese Zeilen im Editor ein und speichern Sie:
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5053
ListenDatagram=127.0.0.1:5053
Die leeren ListenStream=Zeilen ListenDatagram=löschen die Paketstandardeinstellungen, bevor die Ersatzadressen festgelegt werden. Lassen Sie diese Zeilen nicht weg: Andernfalls behält systemd möglicherweise den Standardport zusätzlich zum benutzerdefinierten Listener bei.
3. Wählen Sie einen DoH-Resolver aus.
Öffnen Sie die Paketkonfigurationsdatei:
sudoedit /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Für die Aktivierung von systemd-Sockets verwenden Sie eine leere Listener-Liste in der Proxy-Konfiguration. Wählen Sie einen Resolver-Namen aus der aktuellen Liste signierter öffentlicher Resolver. Beispielsweise wählt die folgende Anweisung den Standard-Cloudflare-Resolver aus; die Pi-hole-Anleitung zeigt dies auch cloudflare-securityals Beispiel, wenn Malware-Filterung auf Ebene des Upstream-Resolvers gewünscht ist:
listen_addresses = []
server_names = ['cloudflare']
Die übrige Paketkonfiguration sollte unverändert bleiben. Die Namen server_namessind Registry-Bezeichner, keine beliebigen Hostnamen oder URL-Pfade. Wenn Sie einen anderen Anbieter bevorzugen, prüfen Sie, ob dessen aktueller Resolver-Eintrag DoH unterstützt, und kopieren Sie den genauen Namen. Ein Resolver, der Malware oder andere Kategorien filtert, kann andere Ergebnisse liefern als ein ungefilterter Resolver.
4. Pi-hole auf den lokalen Proxy verweisen
Setzen Sie die Upstream-DNS-Adresse von Pi-hole auf den lokalen Listener:
sudo pihole-FTL --config dns.upstreams '["127.0.0.1#5053"]'
Das #5053Suffix ist die Pi-hole-Notation für den nicht standardmäßigen DNS-Port. Sie können dies auch in der Pi-hole-Administrationsoberfläche unter Einstellungen > DNS überprüfen . Entfernen Sie die voreingestellten öffentlichen Upstream-Server und belassen Sie den benutzerdefinierten Server 127.0.0.1#5053als Upstream. Wenn ein öffentlicher Resolver als zusätzlicher Upstream ausgewählt ist, können Anfragen den verschlüsselten Proxy umgehen. Entfernen Sie diese Einträge daher, wenn alle Pi-hole-Upstream-Anfragen DoH verwenden sollen.
5. Starten Sie die Dienste neu und überprüfen Sie die Auflösung.
Starten Sie den Socket, den Proxy-Dienst und den Pi-hole FTL-Daemon neu, damit sie die neue Konfiguration laden:
sudo systemctl restart dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy.service
sudo systemctl restart pihole-FTL.service
Servicestatus prüfen:
sudo systemctl status dnscrypt-proxy.socket
sudo systemctl status dnscrypt-proxy.service
sudo systemctl status pihole-FTL.service
Jeder sollte ohne Bindungsfehler oder Resolver-Startfehler aktiv sein. Testen Sie den Proxy direkt über seinen lokalen DNS-Listener:
dig @127.0.0.1 -p 5053 example.com
Eine DNS-Antwort zeigt an, dass der lokale Proxy antwortet. Testen Sie anschließend Pi-hole auf Port 53:
dig @127.0.0.1 example.com
Überprüfen Sie das Pi-hole-Abfrageprotokoll oder das Dashboard, um zu bestätigen, dass die Anfrage Pi-hole erreicht hat, und überprüfen Sie das Proxy-Journal, falls der Test fehlschlägt:
sudo journalctl -u dnscrypt-proxy.service -b --no-pager
Prüfen Sie zur zusätzlichen Überprüfung die Start- oder Journalausgabe des Proxys auf den ausgewählten Resolver und den DoH-Protokollstatus. Ein erfolgreicher Resolver digallein beweist, dass die DNS-Auflösung funktioniert; er beweist jedoch nicht automatisch, dass die Anfrage HTTPS verwendet hat.
Häufige Probleme und sichere Wiederherstellung
- „Adresse wird bereits verwendet“: Ein anderer Prozess belegt möglicherweise bereits Port 5053, oder die Socket-Überschreibung wurde nicht geladen. Überprüfen Sie die Listener mit `socket list`
sudo ss -lntup, überprüfen Sie den Drop-in mit ` socket drop-in` systemctl cat dnscrypt-proxy.socketund stellen Sie sicher, dass den Einträgen für Port 5053 leere Reset-Zeilen vorangehen.
- Der Proxy ist aktiv, aber die Anfragen laufen ins Timeout: Überprüfen Sie ausgehende HTTPS-Zugriffe, den Resolvernamen und die Proxy-Protokolle. Einige Netzwerke blockieren DNS-over-HTTPS-Verbindungen oder beschränken den TCP-Port 443.
- Der Proxy-Test funktioniert, aber Pi-hole antwortet nicht vom Upstream-Server: Stellen Sie sicher, dass Pi-hole korrekt konfiguriert ist
127.0.0.1#5053, und starten Sie es anschließend neu pihole-FTL. Prüfen Sie außerdem, ob die Standard-Upstream-Kontrollkästchen nicht im Hintergrund eine alternative Route angeben.
- Ubuntu selbst kann nach der Änderung keine Namen mehr auflösen: Diese Konfiguration ändert die Upstream-Konfiguration von Pi-hole, nicht die des Hosts
/etc/resolv.conf. Vermeiden Sie es, diese Datei zu ersetzen oder Pi-hole systemd-resolvedals Abkürzung zur Fehlerbehebung zu deaktivieren.
Um die Einstellungen rückgängig zu machen, stellen Sie die in Pi-hole gespeicherten Upstream-DNS-Einstellungen wieder her und starten Sie Pi-hole neu pihole-FTL. Sobald Pi-hole nicht mehr auf den Proxy verweist, können Sie ihn dnscrypt-proxyüber den Paketmanager deaktivieren oder entfernen. Falls dieser Server seine DNS-Auflösung ebenfalls über Pi-hole vornimmt, sollten Sie vor Änderungen an den Diensten einen lokalen Wiederherstellungspfad bereithalten.
Welche Option passt zu Ihrem Netzwerk?
Verwenden Sie diese Single-Host-Proxy-Konfiguration, wenn Sie eine zentrale DNS-Filterung in Pi-hole und verschlüsselten Datenverkehr von Pi-hole zu einem ausgewählten Resolver wünschen. Die Überprüfung ist relativ einfach, da der Proxy nur eine lokale Adresse und einen Port besitzt. Wenn Sie Pi-hole in Docker, auf einem anderen Server oder über mehrere Netzwerke betreiben, benötigen Sie möglicherweise eine Container-Netzwerkadresse anstelle einer Loopback-Adresse und müssen den Proxy-Listener so einschränken, dass er nicht als offener Resolver sichtbar ist. Wenn Sie richtlinienbasierte Filterung, gerätespezifische Identität oder verschlüsseltes DNS für mobile Geräte außerhalb des Heimnetzwerks benötigen, konfigurieren Sie diese Clients oder ein verwaltetes Gateway separat. Die Upstream-DoH-Verbindung von Pi-hole verschlüsselt den Pfad jedes Clients zu Pi-hole nicht automatisch.
Beachten Sie abschließend, dass ein Router oder Client Pi-hole umgehen kann, wenn er einen zweiten DNS-Server ankündigt. Für eine netzwerkweite Filterung sollten Sie Clients per DHCP ausschließlich die Pi-hole-Adresse zuweisen und sowohl IPv6- als auch IPv4-DNS-Ankündigungen berücksichtigen. Testen Sie die Einstellungen nach jeder Änderung des Routers mit mehreren Geräten, da eine korrekte Proxy-Konfiguration auf dem Server nicht verhindern kann, dass ein Client direkt einen anderen Resolver verwendet.
Offizielle Referenzen