I don't want my family to get malware from sketchy websites. Quad9 offers a simple solution for these usecases. I'll take the false positive anyday over unfiltered DNS.
By now I expect many sites to be filtered out: too much crap out there.
Then I also run my own DNS (unbound) and after seeing a warning from one of my banks about a phishing site where one letter differed in the domain name from the real bank's site, I went ballistic: I did generate hundreds of thousands (maybe millions by now) of variations of the names of banks/brokers domains I use, with every single variation of one character and many variations of up to two characters and I nullroute those too (in addition to known porn and known malware sites).
And I nullroute every single Unicode domain name. I don't care. I don't care if you disagree with this: too many homoglyph attacks. Too risky. And the Web Just Works [TM] without accessing any Unicode domain.
I null route tens if not hundreds of TLDs.
Filtering out every single domain name using any Unicode char is a bit more involved but it's doable (I do it since years, but today you can ask LLMs if you want to do it or patch a DNS software to do it).
I know some go further and by default disallow everything and then only allow domains they want to use but I find that a bit too tricky.
Now... Should there be something I really want, say I want a shady torrent tracker to download some dubious file, I can always use a VM/container with a more lenient DNS.
I'm using such a setup since years. My unbound DNS runs on a Pi 3 that's on 24/7.
Works flawlessly.
P.S: on another subject I also blocklist entire IP blocks, including entire countries. Same thing: the Web still works totally fine.
That might not be an issue for your situation, but I recall the benefit of something like Quad9’s offering is the encryption between client and their endpoint(s), particularly for untrusted ISP or similar.
Downside is Quad9 can see all your DNS traffic. But without it if you run your own recursive resolver your ISP sees all your queries, and many others see portions of them, unencrypted.
Used to be fine. I stopped doing it when average TTL dropped to 300 seconds and it takes far too long for my local recursor to get the answer >100ms, when 3rd party resolver delivers in <10ms.
cache-min-ttl: 3600 // seconds
cache-min-negative-ttl: 3600 // seconds
or serve-expired: yes
serve-expired-client-timeout: 20 // milliseconds to wait for resolution before serving the old value to the clientFrom AT&T fiber, Cloudflare’s 1.1.1.1 is always the fastest, though Quad9 is a very close second.
It’s interesting that it’s different from different ISPs.
Definitely blew my mind coming from the ~20ms DOCSIS adds.
--- 8.8.8.8 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9015ms
rtt min/avg/max/mdev = 23.666/25.241/27.628/1.022 ms
--- 9.9.9.9 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9015ms
rtt min/avg/max/mdev = 23.811/25.256/27.003/1.024 ms
--- 1.1.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 13.216/14.553/15.835/0.739 ms
Of course, these ICMP reply times are apples-to-oranges comparisons. With the proper tooling, you should be able to measure DNS reply latencies.It can, it depends on the systems and user patterns. Example: if an end user is going to the same site over and over, those DNS responses are probably cached locally on the device, and may also be cached on any upstream resolvers. OTOH if you were somebody without a Facebook account that went to Facebook.com to view a post from a link, you could easily have 120 different DNS lookups for various resources on that domain that haven't been DNS or web resource cached yet.
This hopefully shouldn't be an issue for long with stuff like RFC 9539 and OOTS/SVCB.