FAQ clarification on "How do I configure my devices to use Pi-hole as their DNS server?"

Not going to follow the template as this is more of a question than a problem.

On the guide: How do I configure my devices to use Pi-hole as their DNS server?

I am using option 2 and the last paragraph of Option 2 does not explain why it is making this last paragraph recommendation. It seems like the last step for option 2 would stop all upstream DNS queries from resolving. If I have my router point to my piHole, and my piHole point to my router as its only upstream then I will never resolve anything that hasn't been cached already. What am I missing? And what is the purpose of this last step?

On Pi-hole, login to the web interface (http://pi.hole ) > Settings > DNS and instead of choosing upstream servers like Google or OpenDNS, set the upstream to be the IP address of the router as the only upstream DNS server. Do not define any other DNS entries for Pi-hole:

Your router does not point to Pi-hole in that scenario. :wink:

There's a difference between the upstream DNS resolvers your router itself would be using and the local DNS resolvers that your router is telling your network to use. Not every router would expose respective configuration options.

Option 2 is suggesting a configuration where you configure your router to distribute your Pi-hole's IP as local DNS resolver via DHCP.
Any DHCP client having acquired a DHCP lease from your router would then talk to Pi-hole for DNS (instead of talking to your router as before).

Using your router as Pi-hole's upstream would allow Pi-hole to resolve local hostnames as known by your router (provided your router would register hostnames with its own DNS resolver).
In that scenario, a client's DNS resolution chain would look like this:
client :arrow_right: Pi-hole :arrow_right: router :arrow_right: router's upstreams (...)

You could also pick a public upstream for Pi-hole instead, but then you should consider to enable Pi-hole's Conditional Forwarding for local hostname resolution.


ok so I think I got it...
clients will ignore (or not receive it at all) what I have in the routers config for "Static DNS" (I am using dd-wrt) but will take what is advertised to them. Then if pihole doesn't have the IP, pihole will ask the router, if the router doesn't have the IP the router will ask what is in the Static DNS fields.

Did I get that right?


Run from your Pi-hole machine, what's the output of

sudo pihole-FTL dhcp-discover

Looks interesting...but zero doesn't sound great.

sudo docker exec -it pihole bash
root@bfeb34ea6a4b:/# sudo pihole-FTL dhcp-discover
Scanning all your interfaces for DHCP servers
Timeout: 10 seconds
DHCP packets received on interface eth0: 0

made the changes on pihole

and on my dd-wrt router:

LMK what you think


pihole-FTL dhcp-discover did not receive any DHCP broadcast replies as you run a dockered Pi-hole.

In that case, you'd have to consult your router's documentation and support on its DHCP DNS configuration details.

Perhaps not.

Your screenshot seems to suggest that you would configure your router's DHCP server, so the Static DNS settings would be the ones distributed to DHCP clients.
That's just a guess, though - I don't know your router nor dd-wrt.
You'd have to check its documentation for details.

But regardless whether those would be the local DNS resolvers to be distributed via DHCP or the upstream DNS resolvers to be used by the router:
Pi-hole has to be the sole DNS resolver for your network.
Otherwise, clients may by-pass Pi-hole via those alternatives at their own discretion.

Ah ok, I should have included more screenshots....


which matches the example in the faq:

So in theory the dnsmasq should take care of the advertisement and the local DNS flag should mean that it is not taking care of the local DNS but acting only as upstream?

The FAQ didn't include what they have for their DHCP settings so I am not fully sure how it would be setup....but if they are saying that the upstream dns for pihole should be the router then the router needs an upstream if it needs to resolve something that is not already known and cached....so the upstream needs to be defined somewhere....right?

This is my DHCP setting that I think you were referencing before:

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.