OUaVMJ
June 25, 2026, 7:37am
1
Please follow the below template, it will help us to help you!
Expected Behaviour:
i expect the rpi-pihole to return DNS requests as it usually does.
Debian GNU/Linux 12 (bookworm) / DietPi v10.5.2 / pihole 6.6.2 w/ unbound
RPi 4 Model B (aarch64)
Docker: n/a
Docker: n/a
Actual Behaviour:
LAN DNS requests are returned correctly. requests for DNS resolves out on the net, SERVFAIL is returned. tested locally on the rpi pihole in question:
<<>> DiG 9.18.49-1~deb12u1-Debian <<>> pi-hole.net @127.0.0.1 -p 5335
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 59248
Debug Token:
GfiXUjxo
You are using Unbound as upstream DNS server.
If you enabled DNSSEC in the Unbound settings, disable it on Pi-hole and check again.
OUaVMJ
June 26, 2026, 7:24am
4
i disabled DNSSEC, restarted pihole-FTL, same SERVFAIL returned.
i tried these cmds to check if the rpi-pihole in question can reach & talk with root servers. the rpi-pihole in question returned this: keyword REFUSED...
dig @198.41.0.4 . NS +norec +time=3
dig @198.41.0.4 . NS +norec +tcp +time=3
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 63296
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
the other pihole that has basically the same setup/configs works. this one in question glitches once in while. it is not on a vpn and it can ping and touch entities on the net using ip.
all i know for now. i'll work it some more tomorrow. thanks
What if you run below similar query on another machine that can be Windows, MacOS or Linux?
C:\>nslookup -debug -type=ns . 198.41.0.4
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, want recursion
questions = 1, answers = 0, authority records = 6, additional = 12
QUESTIONS:
4.0.41.198.in-addr.arpa, type = PTR, class = IN
AUTHORITY RECORDS:
-> in-addr.arpa
nameserver = f.in-addr-servers.arpa
ttl = 172800 (2 days)
-> in-addr.arpa
nameserver = b.in-addr-servers.arpa
ttl = 172800 (2 days)
-> in-addr.arpa
nameserver = d.in-addr-servers.arpa
ttl = 172800 (2 days)
-> in-addr.arpa
nameserver = a.in-addr-servers.arpa
ttl = 172800 (2 days)
-> in-addr.arpa
nameserver = c.in-addr-servers.arpa
ttl = 172800 (2 days)
-> in-addr.arpa
nameserver = e.in-addr-servers.arpa
ttl = 172800 (2 days)
ADDITIONAL RECORDS:
-> f.in-addr-servers.arpa
internet address = 193.0.9.1
ttl = 172800 (2 days)
-> f.in-addr-servers.arpa
AAAA IPv6 address = 2a13:27c0:30::1
ttl = 172800 (2 days)
-> b.in-addr-servers.arpa
internet address = 199.253.183.183
ttl = 172800 (2 days)
-> b.in-addr-servers.arpa
AAAA IPv6 address = 2001:500:87::87
ttl = 172800 (2 days)
-> d.in-addr-servers.arpa
internet address = 200.10.60.53
ttl = 172800 (2 days)
-> d.in-addr-servers.arpa
AAAA IPv6 address = 2001:13c7:7010::53
ttl = 172800 (2 days)
-> a.in-addr-servers.arpa
internet address = 199.180.182.53
ttl = 172800 (2 days)
-> a.in-addr-servers.arpa
AAAA IPv6 address = 2620:37:e000::53
ttl = 172800 (2 days)
-> c.in-addr-servers.arpa
internet address = 196.216.169.10
ttl = 172800 (2 days)
-> c.in-addr-servers.arpa
AAAA IPv6 address = 2001:43f8:110::10
ttl = 172800 (2 days)
-> e.in-addr-servers.arpa
internet address = 203.119.86.101
ttl = 172800 (2 days)
-> e.in-addr-servers.arpa
AAAA IPv6 address = 2001:dd8:6::101
ttl = 172800 (2 days)
------------
in-addr.arpa
nameserver = f.in-addr-servers.arpa
ttl = 172800 (2 days)
in-addr.arpa
nameserver = b.in-addr-servers.arpa
ttl = 172800 (2 days)
in-addr.arpa
nameserver = d.in-addr-servers.arpa
ttl = 172800 (2 days)
in-addr.arpa
nameserver = a.in-addr-servers.arpa
ttl = 172800 (2 days)
in-addr.arpa
nameserver = c.in-addr-servers.arpa
ttl = 172800 (2 days)
in-addr.arpa
nameserver = e.in-addr-servers.arpa
ttl = 172800 (2 days)
f.in-addr-servers.arpa
internet address = 193.0.9.1
ttl = 172800 (2 days)
f.in-addr-servers.arpa
AAAA IPv6 address = 2a13:27c0:30::1
ttl = 172800 (2 days)
b.in-addr-servers.arpa
internet address = 199.253.183.183
ttl = 172800 (2 days)
b.in-addr-servers.arpa
AAAA IPv6 address = 2001:500:87::87
ttl = 172800 (2 days)
d.in-addr-servers.arpa
internet address = 200.10.60.53
ttl = 172800 (2 days)
d.in-addr-servers.arpa
AAAA IPv6 address = 2001:13c7:7010::53
ttl = 172800 (2 days)
a.in-addr-servers.arpa
internet address = 199.180.182.53
ttl = 172800 (2 days)
a.in-addr-servers.arpa
AAAA IPv6 address = 2620:37:e000::53
ttl = 172800 (2 days)
c.in-addr-servers.arpa
internet address = 196.216.169.10
ttl = 172800 (2 days)
c.in-addr-servers.arpa
AAAA IPv6 address = 2001:43f8:110::10
ttl = 172800 (2 days)
e.in-addr-servers.arpa
internet address = 203.119.86.101
ttl = 172800 (2 days)
e.in-addr-servers.arpa
AAAA IPv6 address = 2001:dd8:6::101
ttl = 172800 (2 days)
Server: UnKnown
Address: 198.41.0.4
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, auth. answer, want recursion
questions = 1, answers = 13, authority records = 0, additional = 13
QUESTIONS:
(root), type = NS, class = IN
ANSWERS:
-> (root)
nameserver = l.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = j.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = f.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = h.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = d.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = b.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = k.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = i.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = m.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = e.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = g.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = c.root-servers.net
ttl = 518400 (6 days)
-> (root)
nameserver = a.root-servers.net
ttl = 518400 (6 days)
ADDITIONAL RECORDS:
-> l.root-servers.net
internet address = 199.7.83.42
ttl = 518400 (6 days)
-> l.root-servers.net
AAAA IPv6 address = 2001:500:9f::42
ttl = 518400 (6 days)
-> j.root-servers.net
internet address = 192.58.128.30
ttl = 518400 (6 days)
-> j.root-servers.net
AAAA IPv6 address = 2001:503:c27::2:30
ttl = 518400 (6 days)
-> f.root-servers.net
internet address = 192.5.5.241
ttl = 518400 (6 days)
-> f.root-servers.net
AAAA IPv6 address = 2001:500:2f::f
ttl = 518400 (6 days)
-> h.root-servers.net
internet address = 198.97.190.53
ttl = 518400 (6 days)
-> h.root-servers.net
AAAA IPv6 address = 2001:500:1::53
ttl = 518400 (6 days)
-> d.root-servers.net
internet address = 199.7.91.13
ttl = 518400 (6 days)
-> d.root-servers.net
AAAA IPv6 address = 2001:500:2d::d
ttl = 518400 (6 days)
-> b.root-servers.net
internet address = 170.247.170.2
ttl = 518400 (6 days)
-> b.root-servers.net
AAAA IPv6 address = 2801:1b8:10::b
ttl = 518400 (6 days)
-> k.root-servers.net
internet address = 193.0.14.129
ttl = 518400 (6 days)
------------
(root)
nameserver = l.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = j.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = f.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = h.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = d.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = b.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = k.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = i.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = m.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = e.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = g.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = c.root-servers.net
ttl = 518400 (6 days)
(root)
nameserver = a.root-servers.net
ttl = 518400 (6 days)
l.root-servers.net
internet address = 199.7.83.42
ttl = 518400 (6 days)
l.root-servers.net
AAAA IPv6 address = 2001:500:9f::42
ttl = 518400 (6 days)
j.root-servers.net
internet address = 192.58.128.30
ttl = 518400 (6 days)
j.root-servers.net
AAAA IPv6 address = 2001:503:c27::2:30
ttl = 518400 (6 days)
f.root-servers.net
internet address = 192.5.5.241
ttl = 518400 (6 days)
f.root-servers.net
AAAA IPv6 address = 2001:500:2f::f
ttl = 518400 (6 days)
h.root-servers.net
internet address = 198.97.190.53
ttl = 518400 (6 days)
h.root-servers.net
AAAA IPv6 address = 2001:500:1::53
ttl = 518400 (6 days)
d.root-servers.net
internet address = 199.7.91.13
ttl = 518400 (6 days)
d.root-servers.net
AAAA IPv6 address = 2001:500:2d::d
ttl = 518400 (6 days)
b.root-servers.net
internet address = 170.247.170.2
ttl = 518400 (6 days)
b.root-servers.net
AAAA IPv6 address = 2801:1b8:10::b
ttl = 518400 (6 days)
k.root-servers.net
internet address = 193.0.14.129
ttl = 518400 (6 days)
Any CGNAT addresses displayed if do below traceroute ?
traceroute -n 8.8.8.8
The allocated address block is 100.64.0.0/10, i.e. IP addresses from 100.64.0.0 to 100.127.255.255.
Carrier-grade NAT (CGN or CGNAT) (also known as large-scale NAT, LSN) is a type of network address translation (NAT) used by Internet service providers (ISPs) in IPv4 network design. With CGN, end sites, in particular residential networks, are configured with private network addresses that are translated to public IPv4 addresses by middlebox network address translator devices embedded in the network operator's network, permitting the sharing of small pools of public addresses among many end users...
EDIT: Oh and make sure date/time is accurate and syncing on the Pi-hole host!
timedatectl
Not related I guess but just to be sure.
OUaVMJ
June 27, 2026, 6:14am
6
deHakkelaar:
CGNAT addresses displaye
# apologies for late reply. here are outputs from your suggested cmd's...
# this cmd was executed on a fedora notebook with the rpi in question as its DNS resolver, following is output:
nslookup -debug -type=ns . 198.41.0.4
Server: 198.41.0.4
Address: 198.41.0.4#53
------------
QUESTIONS:
., type = NS, class = IN
ANSWERS:
-> .
nameserver = d.root-servers.net.
ttl = 4269
-> .
nameserver = b.root-servers.net.
ttl = 4269
-> .
nameserver = k.root-servers.net.
ttl = 4269
-> .
nameserver = i.root-servers.net.
ttl = 4269
-> .
nameserver = m.root-servers.net.
ttl = 4269
-> .
nameserver = e.root-servers.net.
ttl = 4269
-> .
nameserver = g.root-servers.net.
ttl = 4269
-> .
nameserver = c.root-servers.net.
ttl = 4269
-> .
nameserver = a.root-servers.net.
ttl = 4269
-> .
nameserver = l.root-servers.net.
ttl = 4269
-> .
nameserver = j.root-servers.net.
ttl = 4269
-> .
nameserver = f.root-servers.net.
ttl = 4269
-> .
nameserver = h.root-servers.net.
ttl = 4269
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
. nameserver = d.root-servers.net.
. nameserver = b.root-servers.net.
. nameserver = k.root-servers.net.
. nameserver = i.root-servers.net.
. nameserver = m.root-servers.net.
. nameserver = e.root-servers.net.
. nameserver = g.root-servers.net.
. nameserver = c.root-servers.net.
. nameserver = a.root-servers.net.
. nameserver = l.root-servers.net.
. nameserver = j.root-servers.net.
. nameserver = f.root-servers.net.
. nameserver = h.root-servers.net.
Authoritative answers can be found from:
#--------------------------------------
traceroute -n 8.8.8.8
#the were no CGNAT addresses displayed in the range 100.64.0.0 to 100.127.255.255.
#--------------------------------------
timedatectl status
#returned correct time
#timeserver is on LAN via another rpi/dietpi/chronyd
sudo systemctl status systemd-timesyncd.service
#shows the rpi in question is contacting the local time server with successful time sync...
#systemd-timesyncd[217838]: Contacted time server 192.168.1.192:123 (192.168.1.192)
#--------------------------------------
nslookup output can differ slightly between Windows and Linux.
But when I run that query on my Debian host, it returns ADDITIONAL RECORDS which seems to be missing from your output:
$ nslookup -debug -type=ns . 198.41.0.4
Server: 198.41.0.4
Address: 198.41.0.4#53
------------
QUESTIONS:
., type = NS, class = IN
ANSWERS:
-> .
nameserver = l.root-servers.net.
ttl = 518400
-> .
nameserver = j.root-servers.net.
ttl = 518400
-> .
nameserver = f.root-servers.net.
ttl = 518400
-> .
nameserver = h.root-servers.net.
ttl = 518400
-> .
nameserver = d.root-servers.net.
ttl = 518400
-> .
nameserver = b.root-servers.net.
ttl = 518400
-> .
nameserver = k.root-servers.net.
ttl = 518400
-> .
nameserver = i.root-servers.net.
ttl = 518400
-> .
nameserver = m.root-servers.net.
ttl = 518400
-> .
nameserver = e.root-servers.net.
ttl = 518400
-> .
nameserver = g.root-servers.net.
ttl = 518400
-> .
nameserver = c.root-servers.net.
ttl = 518400
-> .
nameserver = a.root-servers.net.
ttl = 518400
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
-> l.root-servers.net
internet address = 199.7.83.42
ttl = 518400
-> l.root-servers.net
has AAAA address 2001:500:9f::42
ttl = 518400
-> j.root-servers.net
internet address = 192.58.128.30
ttl = 518400
-> j.root-servers.net
has AAAA address 2001:503:c27::2:30
ttl = 518400
-> f.root-servers.net
internet address = 192.5.5.241
ttl = 518400
-> f.root-servers.net
has AAAA address 2001:500:2f::f
ttl = 518400
-> h.root-servers.net
internet address = 198.97.190.53
ttl = 518400
-> h.root-servers.net
has AAAA address 2001:500:1::53
ttl = 518400
-> d.root-servers.net
internet address = 199.7.91.13
ttl = 518400
-> d.root-servers.net
has AAAA address 2001:500:2d::d
ttl = 518400
-> b.root-servers.net
internet address = 170.247.170.2
ttl = 518400
-> b.root-servers.net
has AAAA address 2801:1b8:10::b
ttl = 518400
-> k.root-servers.net
internet address = 193.0.14.129
ttl = 518400
------------
. nameserver = l.root-servers.net.
. nameserver = j.root-servers.net.
. nameserver = f.root-servers.net.
. nameserver = h.root-servers.net.
. nameserver = d.root-servers.net.
. nameserver = b.root-servers.net.
. nameserver = k.root-servers.net.
. nameserver = i.root-servers.net.
. nameserver = m.root-servers.net.
. nameserver = e.root-servers.net.
. nameserver = g.root-servers.net.
. nameserver = c.root-servers.net.
. nameserver = a.root-servers.net.
Which makes me suspect something upstream in the network is tampering/intercepting/censoring DNS traffic.
You can double check if run below one which queries each of the 13 DNS root servers for their version (via IPv4 only):
$ awk '/ A / {print "@"$4}' /usr/share/dns/root.hints | xargs -n1 dig +norecurse +short version.bind chaos txt
"ATLAS"
"bind 9.x"
"c-root"
"NSD 4"
"2026.6.0"
"9.20.24"
"NSD 4.x"
"contact info@netnod.se"
"NSD"
"Knot DNS"
"Knot DNS 3"
"9.16"
If you dont get a similar reply, I recommend contacting your ISP for assistance.
Also ask them if they apply CGNAT just to be sure.
OUaVMJ
June 30, 2026, 12:28am
8
didn't get a reply. i ended up uninstalling pihole and reinstalling and it's returning DNS requests now. have no real clear reason why it stopped returning DNS requests but it's working now. i'll just wait and see if it stays that way or flakes out again. certainly appreciate your help and input!