Versions
- Pi-hole: v6.4.1
- Web: v6.5
- FTL: v6.6
Platform
- OS and version: Debian-based Linux on multiple hosts
- Platform: Native installs on multiple LAN hosts / VMs
Expected behavior
A hostname configured as a local Pi-hole override should be answered locally every time, regardless of which LAN client asks the question.
If a local host record exists for a name under a public domain, Pi-hole should return the configured local A record instead of falling through to upstream/public recursion. In short, the override should actually override.
Related issues:
Actual behavior / bug
The same Pi-hole server returns different answers for the same locally configured hostname depending on which client asks.
For the same query name and same Pi-hole IP:
- querying from the Pi-hole host itself returns
NOERROR with the configured local A record
- querying from another Linux LAN client returns
NXDOMAIN with the public authoritative SOA for the parent domain
This should not happen for a local host override.
Important context: this setup worked until a few weeks ago, and the breakage appears to line up with recent Pi-hole v6-era behavior changes around local DNS / local-domain handling. Similar reports describe local DNS records or split-DNS forwarding working before upgrade and failing afterward:
I initially suspected DNSSEC because disabling DNSSEC made some cases start working again, but the client-dependent behavior still reproduces even after:
- setting
dns.domain.name = ""
- setting
dns.dnssec = false
- setting
dns.localise = false
Steps to reproduce
Steps to reproduce the behavior:
- Configure local host overrides in Pi-hole for names under a public domain, for example:
host-a.example.test -> 10.0.10.10
node-1.lab.example.test -> 10.0.20.20
- Confirm the records exist in FTL config under
dns.hosts.
- From the Pi-hole host itself, query the Pi-hole LAN IP:
dig @10.0.20.53 node-1.lab.example.test
- Observe
NOERROR with the configured local A record.
- From another Linux client on the LAN, query the same Pi-hole IP for the same name:
dig @10.0.20.53 node-1.lab.example.test
- Observe
NXDOMAIN with the public SOA for example.test instead of the local A record.
Optional additional attempts that did not resolve the issue:
- Disable DNSSEC
- Set
dns.domain.name to an empty string
- Set
dns.localise to false
- Restart
pihole-FTL
- Repeat the same tests
- Observe that the same client-dependent mismatch can still occur
References:
Debug Token
- URL: Please replace with your
pihole -d upload token
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
This was reproduced across multiple Pi-hole instances configured as LAN DNS servers.
The local records were present in pihole-FTL --config under dns.hosts, so this does not appear to be a missing-record problem. Pi-hole’s FTL config docs describe these as local host mappings managed by FTL:
Behavior differed between clients:
- macOS with Firefox appeared to continue working
- Linux clients, including Home Assistant OS and another Linux machine, hit the failing path
The strongest evidence is that the same Pi-hole server returned different results for the same query at nearly the same time:
From the Pi-hole host:
dig @10.0.20.53 node-1.lab.example.test
-> NOERROR
-> ANSWER SECTION: node-1.lab.example.test. 0 IN A 10.0.20.20
From another Linux client:
dig @10.0.20.53 node-1.lab.example.test
-> NXDOMAIN
-> AUTHORITY SECTION: example.test. IN SOA <public authoritative SOA>
This makes it look like Pi-hole/FTL is varying behavior by client/query path, or incorrectly bypassing local host overrides for some clients. Recent v6 reports about local entries returning NXDOMAIN unexpectedly seem related.
Versions
Platform
Expected behavior
A hostname configured as a local Pi-hole override should be answered locally every time, regardless of which LAN client asks the question.
If a local host record exists for a name under a public domain, Pi-hole should return the configured local A record instead of falling through to upstream/public recursion. In short, the override should actually override.
Related issues:
Actual behavior / bug
The same Pi-hole server returns different answers for the same locally configured hostname depending on which client asks.
For the same query name and same Pi-hole IP:
NOERRORwith the configured local A recordNXDOMAINwith the public authoritative SOA for the parent domainThis should not happen for a local host override.
Important context: this setup worked until a few weeks ago, and the breakage appears to line up with recent Pi-hole v6-era behavior changes around local DNS / local-domain handling. Similar reports describe local DNS records or split-DNS forwarding working before upgrade and failing afterward:
I initially suspected DNSSEC because disabling DNSSEC made some cases start working again, but the client-dependent behavior still reproduces even after:
dns.domain.name = ""dns.dnssec = falsedns.localise = falseSteps to reproduce
Steps to reproduce the behavior:
host-a.example.test -> 10.0.10.10node-1.lab.example.test -> 10.0.20.20dns.hosts.dig @10.0.20.53 node-1.lab.example.testNOERRORwith the configured local A record.dig @10.0.20.53 node-1.lab.example.testNXDOMAINwith the public SOA forexample.testinstead of the local A record.Optional additional attempts that did not resolve the issue:
dns.domain.nameto an empty stringdns.localisetofalsepihole-FTLReferences:
Debug Token
pihole -dupload tokenScreenshots
If applicable, add screenshots to help explain your problem.
Additional context
This was reproduced across multiple Pi-hole instances configured as LAN DNS servers.
The local records were present in
pihole-FTL --configunderdns.hosts, so this does not appear to be a missing-record problem. Pi-hole’s FTL config docs describe these as local host mappings managed by FTL:Behavior differed between clients:
The strongest evidence is that the same Pi-hole server returned different results for the same query at nearly the same time:
From the Pi-hole host:
From another Linux client:
This makes it look like Pi-hole/FTL is varying behavior by client/query path, or incorrectly bypassing local host overrides for some clients. Recent v6 reports about local entries returning
NXDOMAINunexpectedly seem related.