Pihole is cool, but fucked me over as well more than once (not the pihole itself but the host). It’s on its own hardware now, but I plan to add a second one to reduce the single point of failure.
I let the router handle dhcp, while having it hand out each of the piholes IPs as DNS #1 and DNS #2. Those piholes settings are mirrored using Nebula-Sync, so any change made to one pihole gets copied over to the other automatically.
Both of those piholes are setup to wrap outbound DNS reqests in DOH as well, with the router blocking port 53 outbound. So all DNS traffic leaving the network has to be DOH/DOT or it just gets dropped. Currently using NextDNS and quad9 as my upstream DOH providers.
Note: the cloudflared method for DOH is outdated. I’m still using it via the docker image “image: cloudflare/cloudflared:2025.11.1”
I mean, would you want it to serve clients outside of your subnet? I guess maybe if you had something like a guest network. But I tend to take the “fuck it, you get basic service and nothing else” approach to things like guest networks.
Isn’t it a potential security issue to have your pihole serve things on any subnet, because it allows an improperly configured firewall to stab at your pihole? I think you can specify any additional subnets it will serve in the settings somewhere. But IIRC, the default behavior is to intentionally drop traffic from unknown subnets. But that’s just off the top of my head.
Pihole is cool, but fucked me over as well more than once (not the pihole itself but the host). It’s on its own hardware now, but I plan to add a second one to reduce the single point of failure.
Haven’t thought of that tbh. Would they both just share configuration? Curious how leasing would be split/shared between them. Off to research!
I’ve been running two piholes for a few years:
I let the router handle dhcp, while having it hand out each of the piholes IPs as DNS #1 and DNS #2. Those piholes settings are mirrored using Nebula-Sync, so any change made to one pihole gets copied over to the other automatically.
Both of those piholes are setup to wrap outbound DNS reqests in DOH as well, with the router blocking port 53 outbound. So all DNS traffic leaving the network has to be DOH/DOT or it just gets dropped. Currently using NextDNS and quad9 as my upstream DOH providers.
Note: the cloudflared method for DOH is outdated. I’m still using it via the docker image “image: cloudflare/cloudflared:2025.11.1”
I believe This (dns-crypt) is the more recent method.
Oh sweet this is super helpful! Doesn’t seem too complicated. Thanks!
There’s some sync mode but I haven’t really looked into it yet.
Makes sense.
Yep I’ve had it randomly stop working if it has to serve clients outside it’s subnet
I mean, would you want it to serve clients outside of your subnet? I guess maybe if you had something like a guest network. But I tend to take the “fuck it, you get basic service and nothing else” approach to things like guest networks.
Isn’t it a potential security issue to have your pihole serve things on any subnet, because it allows an improperly configured firewall to stab at your pihole? I think you can specify any additional subnets it will serve in the settings somewhere. But IIRC, the default behavior is to intentionally drop traffic from unknown subnets. But that’s just off the top of my head.