Vary DNS per DHCP client

Hi all

Bit of an odd one this, and spawned by an IoT device (video doorbell) and something I can't yet pin down.

My feature request is to allow "per defined DHCP client" DNS settings - i.e. if not selected, give a defined DHCP cost the DNS server(s) defined in piHole Settings>DNS>Upstream - but if selected, assign that client a given DNS server. This could potentially be entered on the DHCP screen (per client) or on the piHole Settings>DNS>Upstream screen as a set of servers, to be picked from a dropdown on the DHCP screen?

It could also (potentially) be applied to piHole groups?

The reasoning, which is maybe TL;DR is below.

My DNS is somewhat custom - I run a docker image based on dnsdist to provide my LAN with DoH/DoT, which also answers some very restricted queries from the internet. I use WireGuard on my Android phone, which uses my dnsdist image as a secure DNS server - and uses a single (restricted) query to be able to find my WireGuard server and then connect. dnsdist passes all valid queries (including my Wireguard client, once connected) over to piHole for filtering etc.

piHole is (currently) linked to OpenDNS, via a DNSCrypt tunnel also running on the dnsdist image.

I've just acquired a Eufy video doorbell, and notifications to my mobile from it are very hit and miss, either when I'm on LAN with or without VPN running, or off LAN (i.e. roaming) with or without VPN running.

I've been through piHole logs, my dnsdist logs, and OpenDNS logs - and can't see where it's dying. WireShark has also been unhelpful (needle/haystack).

I've tried exluding the Eufy app from the VPN, I've tried whitelisting all the domains I can see my Android phone AND the Eufy devices from talking to (via the logs above) and ensuring they are whitelisted in piHole, dnsdist and OpenDNS also, but notifications keep dying off.

The only so far reliable fix has been to get the Eufy kit to use "external" DNS (i.e. Quad9) - BUT as the Eufy kit needs DHCP, and piHole provides DHCP, it's "all devices or nothing".

My fix has been to remove the Eufy kit from pihole DHCP settings, and manually define it in my dnsmasq overrides, thus:


This seems to get it to behave - but it means I have a device getting DHCP from piHole, but not in the UI.

So this lead me to think the feature may be useful to others (put clients in a group, vary their DNS) generally - so here it is.

On a side, adding the specialhosts option above, can be forgotten - so if you then add the device from the client list, it causes a duplicate in dhcp config and breaks :\