So long as you have set up unbound correctly and your ISP is not hijacking your DNS requests then Pi-hole works just fine with unbound.
I am aware that some guides for setting up unbound (now woefully out of date) previously suggested the use of port 5353 for unbound. The official guide has recommended 5335 for quite some time. If the port number being suggested is wrong, I wonder what else may be out of date in the guides you are consulting. If you are consulting LLMs expect the slop they produce to be patchy and often including out of date or flat out wrong information.
The official guide for installing unbound alongside pi-hole is found here:
OK, so this could be the second scenario I described - potentially your ISP (or your router) is hijacking your DNS requests.
As a quick test please run the following:
dig NS . @198.41.0.4
If something (your ISP, your router) is hijacking your DNS requests then you will receive only a truncated output such as:
$ dig NS . @198.41.0.4
; <<>> DiG 9.20.18-1~deb13u1-Debian <<>> NS . @198.41.0.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44599
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 54697 IN NS h.root-servers.net.
. 54697 IN NS l.root-servers.net.
. 54697 IN NS e.root-servers.net.
. 54697 IN NS f.root-servers.net.
. 54697 IN NS g.root-servers.net.
. 54697 IN NS a.root-servers.net.
. 54697 IN NS d.root-servers.net.
. 54697 IN NS j.root-servers.net.
. 54697 IN NS k.root-servers.net.
. 54697 IN NS i.root-servers.net.
. 54697 IN NS m.root-servers.net.
. 54697 IN NS c.root-servers.net.
. 54697 IN NS b.root-servers.net.
;; Query time: 4 msec
;; SERVER: 198.41.0.4#53(198.41.0.4) (UDP)
;; WHEN: Wed Mar 04 06:29:24 AEST 2026
;; MSG SIZE rcvd: 444
But, if you are able to access the root nameserver, your output should be similar to this: With the "additional section" at the end and the entry WARNING: recursion requested but not available near the top.
$ dig NS . @198.41.0.4
; <<>> DiG 9.18.41-1~deb12u1-Debian <<>> NS . @198.41.0.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15172
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
;; WARNING: recursion requested but not available
[..]
;; ADDITIONAL SECTION:
l.root-servers.net. 518400 IN A 199.7.83.42
l.root-servers.net. 518400 IN AAAA 2001:500:9f::42
j.root-servers.net. 518400 IN A 192.58.128.30
j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30
f.root-servers.net. 518400 IN A 192.5.5.241
f.root-servers.net. 518400 IN AAAA 2001:500:2f::f
h.root-servers.net. 518400 IN A 198.97.190.53
h.root-servers.net. 518400 IN AAAA 2001:500:1::53
d.root-servers.net. 518400 IN A 199.7.91.13
d.root-servers.net. 518400 IN AAAA 2001:500:2d::d
b.root-servers.net. 518400 IN A 170.247.170.2
b.root-servers.net. 518400 IN AAAA 2801:1b8:10::b
k.root-servers.net. 518400 IN A 193.0.14.129
k.root-servers.net. 518400 IN AAAA 2001:7fd::1
i.root-servers.net. 518400 IN A 192.36.148.17
i.root-servers.net. 518400 IN AAAA 2001:7fe::53
m.root-servers.net. 518400 IN A 202.12.27.33
m.root-servers.net. 518400 IN AAAA 2001:dc3::35
e.root-servers.net. 518400 IN A 192.203.230.10
e.root-servers.net. 518400 IN AAAA 2001:500:a8::e
g.root-servers.net. 518400 IN A 192.112.36.4
g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d
c.root-servers.net. 518400 IN A 192.33.4.12
c.root-servers.net. 518400 IN AAAA 2001:500:2::c
a.root-servers.net. 518400 IN A 198.41.0.4
a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30
;; Query time: 167 msec
;; SERVER: 198.41.0.4#53(198.41.0.4) (UDP)
;; WHEN: Wed Mar 04 06:28:05 AEST 2026
;; MSG SIZE rcvd: 811
In addition to these problems,
Unlikely to be caches, more likely there is a second DNS pathway specified somewhere on your network (potentially IPv6 via your router).
I just read your reply again and saw your comment about my router. It's a Unifi Gateway, and I think I know what it's about, but I'll take another look.
Can't see anything untoward in the Unifi Gateway settings. And I do not have IP6 anywhere.
Odd behaviour that resolves about half the queries. It's not a TLD, as some .com and resolved and some are not.
No, I see this. I'm pretty sure CGNAT is not the problem.
traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.0.1 0.524 ms 0.489 ms 0.466 ms
2 10.247.254.1 8.625 ms 6.651 ms 6.558 ms
3 10.255.255.157 8.688 ms 7.889 ms 7.695 ms
4 * * *
5 * * *
6 8.8.8.8 7.739 ms 172.253.66.98 9.071 ms 8.8.8.8 8.178 ms
Yes it appears so.
But your latest dig not returning below:
Also makes me suspect something upstream is interfering.
Below on my setup:
$ dig NS . @198.41.0.4
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> NS . @198.41.0.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61892
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 518400 IN NS l.root-servers.net.
. 518400 IN NS j.root-servers.net.
. 518400 IN NS f.root-servers.net.
. 518400 IN NS h.root-servers.net.
. 518400 IN NS d.root-servers.net.
. 518400 IN NS b.root-servers.net.
. 518400 IN NS k.root-servers.net.
. 518400 IN NS i.root-servers.net.
. 518400 IN NS m.root-servers.net.
. 518400 IN NS e.root-servers.net.
. 518400 IN NS g.root-servers.net.
. 518400 IN NS c.root-servers.net.
. 518400 IN NS a.root-servers.net.
;; ADDITIONAL SECTION:
l.root-servers.net. 518400 IN A 199.7.83.42
l.root-servers.net. 518400 IN AAAA 2001:500:9f::42
j.root-servers.net. 518400 IN A 192.58.128.30
j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30
f.root-servers.net. 518400 IN A 192.5.5.241
f.root-servers.net. 518400 IN AAAA 2001:500:2f::f
h.root-servers.net. 518400 IN A 198.97.190.53
h.root-servers.net. 518400 IN AAAA 2001:500:1::53
d.root-servers.net. 518400 IN A 199.7.91.13
d.root-servers.net. 518400 IN AAAA 2001:500:2d::d
b.root-servers.net. 518400 IN A 170.247.170.2
b.root-servers.net. 518400 IN AAAA 2801:1b8:10::b
k.root-servers.net. 518400 IN A 193.0.14.129
k.root-servers.net. 518400 IN AAAA 2001:7fd::1
i.root-servers.net. 518400 IN A 192.36.148.17
i.root-servers.net. 518400 IN AAAA 2001:7fe::53
m.root-servers.net. 518400 IN A 202.12.27.33
m.root-servers.net. 518400 IN AAAA 2001:dc3::35
e.root-servers.net. 518400 IN A 192.203.230.10
e.root-servers.net. 518400 IN AAAA 2001:500:a8::e
g.root-servers.net. 518400 IN A 192.112.36.4
g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d
c.root-servers.net. 518400 IN A 192.33.4.12
c.root-servers.net. 518400 IN AAAA 2001:500:2::c
a.root-servers.net. 518400 IN A 198.41.0.4
a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30
;; Query time: 23 msec
;; SERVER: 198.41.0.4#53(198.41.0.4) (UDP)
;; WHEN: Fri Mar 06 02:50:15 CET 2026
;; MSG SIZE rcvd: 811
Another test that you can run is querying above root servers for their version like below (via IPv4 only):
Traceroute is often unrevealing as to what happening with dns. Often times an ISP will redirect port 53 DNS, without altering other traffic, so traceroute traffic goes right through to the specified destination unscathed.