Pi-Hole als alleiniger DNS nicht nutzbar

Ich habe gestern versucht mir ein Pi-Hole einzurichten. Ich habe mich an die Anleitung zur Installation gehalten und bin von dem gängigen Weg nicht abgewichen. Bei der Installation selbst kam auch keine Fehlermeldung oder ähnliches. Nachdem ich nun den DNS von meinem Router auf das Pi-Hole umgestellt habe, ergab sich allerdings das Problem, dass keine Seiten geladen wurden. Weder Youtube, noch Twitter oder duckduckgo. Nachdem ich einen sekundären DNS-Server angegeben habe, funktionierten die Seiten wieder. Allerdings wurde Werbung angezeigt. Laut dem QueryLogs wurden Seiten über das Pi-Hole abgefragt und auch Seiten blockiert.

So ist das Pi-Hole natürlich nicht nutzbar. Eine Neuinstallation hat auch nichts gebracht. Der Pi wird vom Router erkennt und hat auch eine feste IP-Adresse. Neben meinem Computer soll noch ein Smart-TV und mein Smartphone über das Pi-Hole laufen. Beide sollten theoretisch auch funktionieren, wenn ich nur den DNS im Router umstelle. Habe beim Smart-TV aber bereits den DNS auf das Pi-Hole umgestellt. Ebenfalls ohne den gewünschten Effekt.

Ich nutze:
Raspberry Pi Zero W mit einer 32GB-Speicherkarte
die neusten Versionen vom OS und Pi-Hole
easybox 804 von Vodafone

Ich habe den Pi einmal mit und einmal ohne OpneVPN konfiguriert, ohne dass ich ein Unterschied im Ergebnis sehen konnte. Mein Handy und mein Laptop laufen beide mit ihrem eigenem VPN. Pi-Hole funktionierte aber nicht unabhängig davon, ob dieser eingeschalten ist oder nicht.

Nun, wo könnte das Problem liegen?

Wie genau hast du das gemacht? Du darfst Pi-Hole normalerweise nur als DNS-Server für DHCP-Leases konfigurieren und nicht generell als DNS-Sever für deinen Router, denn: Der Router ist ja normalerweise der Upstream-DNS-Server für Pi-Hole und damit bekommst du eine Art „Kreisverkehr“.

Das leuchtet ein. Den DNS-Server konnte ich in diesem Menü umstellen.

weitere Optionen habe ich dazu nicht gefunden. in der ersten Zeile würde die IP-Adresse des Pi-Holes stehen.

Diese Sorte Router kenne ich leider nicht und kann daher nichts Konkretes zu dessen Einstellmöglichkeiten sagen. Grundsätzlich bezieht ein Router seine DNS-Server-Adressen vom ISP und die braucht man wegen Pi-Hole nicht zu verändern. Gibt es keine Konfigurationsseite für den DHCP-Server deines Routers? Woher beziehen deine Netzwerk-Clients ihre IP-Konfiguration? In deren Konfiguration gehört die Adresse des Pi-Hole als DNS-Server.

Unter den Einstellung gibt es nur diese Seite zum DHCP-Server:

Ich kann die IP-Adresse der EasyBox ändern und einstellen in welchem Zahlenbereich die IPs vergeben werden. Ist ersteres, was du meinst oder müsste ich noch nach einer anderen Funktion suchen?

Bitte lade ein Debug Log hoch und poste hier anschliessend nur das Token.
Das Token generierst Du über

pihole -d

wobei Du die Frage nach dem Upload bejahst, oder Du machst das über die Weboberfläche:
Tools > Generate Debug Log

https://tricorder.pi-hole.net/0jv4ftc9jn

Dein Pi-hole ist so konfiguriert, dass er nur auf tun0 (a.e. OpenVPN wie oben beschrieben) lauscht.

** [ DIAGNOSING ]: Networking
[✓] IPv4 address(es) bound to the tun0 interface:
   10.8.0.1/24 does not match the IP found in /etc/pihole/setupVars.conf (https://discourse.pi-hole.net/t/use-ipv6-ula-addresses-for-pi-hole/2127)


*** [ DIAGNOSING ]: Setup variables
    BLOCKING_ENABLED=true
    PIHOLE_INTERFACE=tun0
    IPV4_ADDRESS=192.168.2.103/24

Lass für den Anfang Pi-hole mal nur in deinem lokalen Netz als DNS Server arbeiten und wenn dass dann funktioniert, fügst du OpenVPN hinzu. Am Besten du ruft pihole -r auf und stellst das Interface über reconfigure wieder auf wlan0 ein.


Wie schon aus den Screenshots zu sehen war, lässt dein Router es nicht zu, dass via DHCP ein anderer DNS Server als er selbst verteilt wird

*** [ DIAGNOSING ]: Discovering active DHCP servers (takes 10 seconds)
   Scanning all your interfaces for DHCP servers
   Timeout: 10 seconds
   
   * Received 318 bytes from wlan0:192.168.2.1
     Offered IP address: 192.168.2.103
     Server IP address: 192.168.2.1
     Relay-agent IP address: N/A
     BOOTP server: (empty)
     BOOTP file: (empty)
     DHCP options:
      Message type: DHCPOFFER (2)
      server-identifier: 192.168.2.1
      lease-time: 31536000 ( 365d )
      renewal-time: 15768000 ( 182d 12h )
      rebinding-time: 27594000 ( 319d 9h )
      netmask: 255.255.255.0
         router: 192.168.2.1
      dns-server: 192.168.2.1
      hostname: "raspberrypi"
      domain-name: "local"
      broadcast: 192.168.2.255
      --- end of options ---

Du hast zwei Möglichkeiten:

  1. Pi-hole ist der Upstream DNS deines Routers. Dann musst du das entsprechend oben im Menü einstellen. Dadurch gehen alle Anfragen deiner Clients erst an den Router und dann an Pi-hole. Dadurch verlierst du die Fähigkeit, das Blocking für einzelne Clients separat einzustellen, da es für Pi-hole so aussieht, als ob alle Anfragen von deinem Router kommen. Wichtig ist hierbei noch, dass du keinen sekundären DNS Server einstellen solltest, sonst wird dein Router früher oder später Anfragen einfach auch an diesen Stellen und die Anfragen gehen am Pi-hole vorbei.

  2. Du schaltest den DHCP Server im Router ab und nutzt Pi-hole auch als DHCP Server.

Lösung 1. ist doch das, was ich bisher auch versucht habe. Bei dem allerdings keine Verbindung zu den Webseiten aufgebaut wurde. Muss ich da noch irgendwas machen außer, die DNS-Adresse im Router umstellen? Oder verstehe ich dich gerade grundlegend falsch?

Ich kann dir nur noch einen Debug-Token anbieten vom Zustand mit dem sekundären DNS eingestellt. Und ohne OpenVPN https://tricorder.pi-hole.net/1c0ktc6ppj
Wenn ich keinen sekundären DNS habe, kann der Token nicht hochgeladen werden. Da kann ich dir nur den reinen log anbieten.

Zu 2. hast du eine gut Anleitung zur Hand, wie man das einrichtet?

Das liegt daran, dass dann irgendwas noch nicht funktioniert.... Mal sehen.


Prinzipiell sieht der Debug log jetzt gut aus.

Versuche mal folgendes von einem Client auszuführen

nslookup pi.hole
nslookup pi.hole 192.168.2.103
nslookup google.com 192.168.2.103

Tauchen denn Anfragen im Query Log auf?

google.com wird angezeigt. Pi-hole nicht und bei der ersten Zeile kommt:
"server can't find pi.hole: NOXDOMAIN"

Zeig bitte mal die komplette Ausgabe.

pi@raspberrypi:~ $ nslookup pi.hole
Server: 192.168.2.1
Address: 192.168.2.1#53

** server can't find pi.hole: NXDOMAIN

pi@raspberrypi:~ $ nslookup pi.hole 192.168.2.103
Server: 192.168.2.103
Address: 192.168.2.103#53

Name: pi.hole
Address: 192.168.2.103
Name: pi.hole
Address: fdee:569e:153:1:fd5c:588b:3bd2:90aa

pi@raspberrypi:~ $ nslookup google.com 192.168.2.103
Server: 192.168.2.103
Address: 192.168.2.103#53

Non-authoritative answer:
Name: google.com
Address: 142.250.186.46
Name: google.com
Address: 2a00:1450:4001:827::200e

Also man sieht, dass Pi-hole funktioniert und sowohl seinen eigenen Hostnamen als auch externe Domains auflöst.

Allerdings verwendet der Client standardmäßig immer noch deinen Router als DNS Server, der dann nicht Pi-hole anfragt. Sonst wäre

Das auch erfolgreich gewesen.

Stelle im Router nochmal Pi-hole als DNS Server ein und wiederhole den Test.

Dann bekomme ich diese Ergebnis:

pi@raspberrypi:~ $ nslookup pi.hole
;; connection timed out; no servers could be reached

pi@raspberrypi:~ $ nslookup pi.hole 192.168.2.103
Server: 192.168.2.103
Address: 192.168.2.103#53

Name: pi.hole
Address: 192.168.2.103
Name: pi.hole
Address: fdee:569e:153:1:fd5c:588b:3bd2:90aa

pi@raspberrypi:~ $ nslookup google.com 192.168.2.103
;; connection timed out; no servers could be reached

Soll ich vielleicht mal versuchen es an einem anderem Router auszuprobieren? Dann könnte man ausschließen, ob es einfach nur mit meinem Router nicht geht.

Wenn du einen zur Hand hast, wäre das eine gute Option.


Es scheint, als ob dein Router die Anfrage eben nicht an Pi-hole weiterleitet, obwohl dieser ja aktiv ist und auf Anfragen wartet.

Ich habe es jetzt mit einem geliehenen Router ausprobiert. FritzBox7430. Ich kann den Pi jetzt als alleinigen DNS im Router einstellen und Seiten auch weiterhin aufrufen. Allerdings wird immer noch nicht richtig geblockt. Die Anfragen von meinem Handy und Laptop laufen alle über das Pi-Hole, wenn ich meinen VPN ausschalte. Die von meinem Smart-TV überhaupt nicht. Und das obwohl ich bei letzterem das Pi-Hole auch nochmal extra als DNS angegeben habe. Der dürfte nach meinem Verständnis gar keinen anderen DNS kennen.

So oder so musste ich feststellen, dass Youtube-Werbung wohl eh nicht vom Pi-Hole geblockt werden kann. Was der eigentlich Grund für die Anschaffung war. Falls ihr nicht noch ne fixe Idee habt, woran es liegen könnte, dass es immer noch nicht richtig über das Pi-Hole läuft, werde ich sie nochmal ausprobieren. Aber ansonsten, werde ich den Versuch wohl einstellen. Vielen dank für die Hilfe und eure Zeit.

Was genau wird denn deiner Meinung „nicht richtig“ geblockt? Dir ist bewusst, dass Pi-Hole nur DNS-Anfragen ggf. blockt, d.h., einfach ausgedrückt, ganze Server, aber niemals bspw. einzelne Webseiten auf einem bestimmten Server. So etwas wäre nicht Aufgabe von Pi-Hole, sondern die eines Inhaltsblockers.

In diesem Fall heißt das, dass keine DNS-Anfragen über den Pi-Hole gehen. Kann ich ja im Log sehen.

Sie wahrscheinlichste Ursache: entweder hat er die Einstellung noch nicht "übernommen" bzw. braucht einen Neustart, oder, ebenso wahrscheinlich, hat er noch einen fest eingestellten internen DNS Server. Evt. hat er ja ein paar Anfragen an Pi-hole gesendet, hat keine Antwort bekommen und ist dann auf den fest eingestellten "zurückgefallen". Was du da noch machen könntest: in der FritzBox kannst du Port 53 sperren, außer für den Pi-hole. Dann kann der Smart-TV den DNS Server nicht mehr erreichen - entweder geht dann gar nichts mehr, oder er akzeptiert doch den Pi-hole wo zumindest einen Teil der DNS Anfragen durchgehen werden.

Ja, das geht prinzipbedingt nicht. Die Domains von der YT Werbung ausliefert und die Domains von der die Videos kommen sind die gleichen. Deshalb kann man die Werbung nicht blocken ohne auch die Videos zu blockieren.