Still thinking about #DNS privacy. I have a validating resolver that does DNS-over-HTTP #DoH and DNS-over-TLS #DoT. So that solves the client-to-server security.
But the server has to get the data from somewhere and that's generally via recursion starting at the root servers. Those servers don't widely use DoT, so the queries tend to be in the clear which means my ISP can see them.
I could shuttle the queries to Cloudflare or Quad9 using DoT, but then I'm just changing my exposure from my ISP (who I generally trust) to someone who promises I can trust them (spoiler alert: I don't).
To address that gap, I built tord. This is a VPP-integrated Tor service that I adjusted dnsd to optionally use as a forwarder. So I can set 9.9.9.9 as my target forwarder and have dnsd use the tord circuit to pass the requests so that my IP address remains private. The forwarded requests themselves are DoT, so the Tor exit node can't read them.
It works pretty well! There's a slightly noticeable delay when visiting a non-cached name for the first time, but that quickly smooths out.