Local DNS Records funktionieren nach Update auf v6 nicht mehr

Expected Behaviour:

I'm running Pi-hole v6 in a docker container on a Raspberry Pi 5 (8GB model, running Raspberry Pi OS - latest version)
I've updated from v5 to v6 yesterday, I've had several local DNS records configured that were working perfectly in v5, but are completely ignored after updating to v6, so most of the stuff in my network isn't reachable anymore via the configured DNS records.

Actual Behaviour:

Local DNS Records are forwarded to the chosen DNS provider:

query[A] jellyfin.raspberrypi.local from 192.168.2.10
forwarded jellyfin.raspberrypi.local to 9.9.9.9
reply jellyfin.raspberrypi.local is NXDOMAIN

I've experimented with .local instead of .lan (which I had previously), but it doesn't make any difference.

I've already deleted all of my local DNS records (which generates error messages in the web interface, but they are deleted after a page refresh) and re-added some of them, but without any success. They're still forwarded.

The error messages while deleting records look like this:

Error while deleting DNS record: 192.168.2.20 jellyfin.raspberry.lan
192.168.2.20 jellyfin.raspberry.lan

Debug Token:

https://tricorder.pi-hole.net/Kr88LlOi/

Die Verwendung von .local ist fĂĽr das mDNS-Protokoll reserviert und sollte nicht im klassischen DNS genutzt werden.

Was gibt folgendes Kommando fĂĽr einen von Dir angelegten Local DNS Record zurĂĽck:

dig hostname @192.168.2.20

Ja gut, das mit .local war jetzt wirklich ein blödes Beispiel. :smiley: Alle meine local dns records waren *.raspberry.lan - und sollen es am Ende auch wieder sein.

Ich hab den jellyfin.raspberry.lan Eintrag wieder angelegt (fĂĽr 192.168.2.20 - liegt als Docker Container auf dem selben System)

; <<>> DiG 9.10.6 <<>> jellyfin.raspberry.lan @192.168.2.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 6124
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;jellyfin.raspberry.lan.		IN	A

;; Query time: 1 msec
;; SERVER: 192.168.2.20#53(192.168.2.20)
;; WHEN: Fri Feb 21 15:36:56 CET 2025
;; MSG SIZE  rcvd: 51

Habs gelöst. Habe bemerkt, dass die Auflösung lokal auf dem Raspberry funktioniert, aber von anderen Geräten im Netzwerk aus nicht.

Habe jetzt in Pi-hole folgende Einstellung geändert:

All Setings -> DNS -> dns.piholePTR -> None

Das war auf den Default-Wert "pi.hole" gesetzt.

Danach auf meinem Mac den Cache geleert und schon wurden die lokalen DNS Records wieder aufgelöst.

Leider hat die Lösung nicht geholfen, hat über Nacht wieder aufgehört zu funktionieren und jetzt stehe ich wieder vor dem selben Problem.

Bitte lade ein neues Debug Log hoch und poste hier anschlieĂźend nur die Token-URL.
Das Token generierst Du ĂĽber

pihole -d

Falls Pi-hole als Docker-Container läuft:

docker exec -it <pihole-container-name-or-id> pihole -d

wobei Du <pihole-container-name-or-id> passend ersetzt.

In beiden Varianten ist die Frage nach dem Upload am Ende des Vorgangs zu bejahen.

https://tricorder.pi-hole.net/Ur9esV0C/

Die local dns records enden jetzt alle auf .raspberry.home (immer noch ohne Erfolg)

Was gibt folgendes Kommando zurĂĽck:

dig monitor.raspberry.home @192.168.2.20

Was taucht dazu in /var/log/pihole/pihole.log auf bzw. wie wird das in Pi-hole's Query Log verbucht?

output:

; <<>> DiG 9.10.6 <<>> monitor.raspberry.home @192.168.2.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 53825
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; OPT=15: 00 1d 52 65 73 75 6c 74 20 73 79 6e 74 68 65 73 69 7a 65 64 20 62 79 20 72 6f 6f 74 2d 6e 78 2d 74 72 75 73 74 ("..Result synthesized by root-nx-trust")
;; QUESTION SECTION:
;monitor.raspberry.home.		IN	A

;; AUTHORITY SECTION:
.			846	IN	SOA	a.root-servers.net. nstld.verisign-grs.com. 2025022300 1800 900 604800 86400

;; Query time: 18 msec
;; SERVER: 192.168.2.20#53(192.168.2.20)
;; WHEN: Sun Feb 23 10:58:41 CET 2025
;; MSG SIZE  rcvd: 167

pihole.log:

2025-02-23 10:58:41.395 query[A] monitor.raspberry.home from 192.168.2.10
2025-02-23 10:58:41.396 forwarded monitor.raspberry.home to 9.9.9.9
2025-02-23 10:58:41.412 validation result is SECURE
2025-02-23 10:58:41.412 reply monitor.raspberry.home is NXDOMAIN
2025-02-23 10:58:41.412 reply monitor.raspberry.home is NXDOMAIN

Da Pi-hole hier tatsächlich die DNS-Anfragen upstream weiterleitet, könnte das darauf hindeuten, dass pihole-FTL die lokalen DNS-Namen nicht einlesen kann.

Tatsächlich findet sich dazu In Deinem letzten Debug Log eine Meldung:

*** [ DIAGNOSING ]: Pi-hole log
-rw-r----- 1 pihole pihole 35M Feb 22 23:59 /var/log/pihole/pihole.log
   -----head of pihole.log------
(…)
   Feb 22 12:37:42 dnsmasq[57]: failed to create inotify for /etc/pihole/hosts: No space left on device

EDIT: Hier hätte stattdessen die Erfolgsmeldung nach dem Einlesen stehen sollen, also z.B.

read /etc/pihole/hosts/custom.list - 9 names

Was geben folgende Kommandos zurĂĽck:

sudo df -h
ls -lah /etc/pihole/hosts

Habe die Befehle innerhalb des Docker-Containers ausgefĂĽhrt:

pihole-docker:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         234G   32G  190G  15% /
tmpfs            64M     0   64M   0% /dev
shm              64M   13M   52M  20% /dev/shm
/dev/nvme0n1p2  234G   32G  190G  15% /etc/pihole
tmpfs           4.0G     0  4.0G   0% /proc/asound
tmpfs           4.0G     0  4.0G   0% /sys/firmware
pihole-docker:/#
pihole-docker:/# ls -lah /etc/pihole/hosts
total 20K
drwxr-xr-x 2 pihole pihole 4.0K Feb 22 12:57 .
drwxrwxr-x 8 pihole pihole  12K Feb 23 10:58 ..
-rw-r--r-- 1 pihole pihole 2.0K Feb 22 12:57 custom.list
pihole-docker:/#

Speicherplatz ist ausreichend vorhanden.

Zeigt cat /etc/pihole/hosts/custom.list die lokalen Namen wie erwartet?

Ja, der komplette Header der Datei ist drin, gefolgt von meinen Einträgen und am Ende dann:

There are 9 entries in this file

(was auch der korrekten Anzahl entspricht)

Die Berechtigungen fĂĽr custom.list sehen auch richtig aus.

Wie sieht denn Dein docker compose oder docker run script aus, mit dem Du Deinen Pi-hole container startest?

Erstellt wurde der Container damals in Portainer, aber grundsätzlich sieht das aktuelle docker compose so aus:

services:
  pihole:
    container_name: pi-hole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8180:80/tcp"
      - "8181:443/tcp"
    environment:
      TZ: 'Europe/Berlin'
      FTLCONF_webserver_api_password: 'blabla'
      FTLCONF_webserver_port: '8180'
      DNSMASQ_USER: 'pihole'
      FTL_CMD: 'no-daemon'
    volumes:
      - pihole_etc:/etc/pihole
      - pihole_dnsmasq:/etc/dnsmasq.d
    cap_add:
      - NET_ADMIN
      - SYS_TIME
      - SYS_NICE
    restart: unless-stopped

Das sieht auch soweit OK aus.

Hast Du schon versucht, den Container abzuräumen und neu zu starten?

Was genau meinst du mit "abräumen"?

Neu gestartet wurde der Container in den letzten Tagen mehrfach, den DNS Resolver habe ich auch vorhin nochmal neu gestartet, damit der Cache geleert wird (bevor ich den dig Befehl ausgefĂĽhrt hab, weil der Name bereits gecached war)

Ich hatte gestern auch bereits parallel einen neuen Container aufgesetzt mit neuen Volumes, aber konnte leider nicht mehr recht viel weiter testen, da hier im Netzwerk momentan fast alle Geräte Pi-hole als DNS haben. Das müsste ich mal nachts machen, wenn alle anderen im Bett sind. :slight_smile:

Ich verwende Portainer nicht.
Direkt mit Docker wäre das z.B.:

docker stop <container>
docker rm <container>
docker compose up -d

gegenüber einem einfachen docker restart <container>, wobei <container> durch Name oder ID Deines Pi-hole-Containers zu ersetzen wäre.

Eventuell löst das das Zugriffsproblem auf /etc/pihole/hosts, sofern Speicher hier tatsächlich die Ursache und nur vorübergehend knapp war.

Ich habe jetzt folgendes gemacht:

  • Container gelöscht
  • Container neu erstellt (mit den selben Volumes wie vorher)

Leider kein Unterschied. Local DNS Records werden weiterhin direkt zu Quad9 geleitet.

Danach habe ich:

  • Container beendet
  • Neue Volumes erstellt
  • Container neu erstellt - mit neuem Namen und den neuen Volumes

Also insgesamt läuft hier jetzt eine komplett frische Installation.

Danach habe ich den Local DNS Record fĂĽr monitor.raspberry.home erstellt.

Dieser wird jedoch weiterhin direkt weitergeleitet - in dem Fall jetzt an 8.8.8.8, weil das in der Standardinstallation als Default hinterlegt ist.

Ich habe ansonsten keinerlei Konfigurationen vorgenommen, alles ist Default direkt nach der Installation.

Taucht dieselbe failed to create inotify-Warnung wieder auf?

sudo grep "etc/pihole/hosts" /var/log/pihole/pihole.log*