TL;DR: I made the switch an hour ago and thought I’d share my motivations and experiences here in case anyone wants to do the same.


A few years ago, when the number of devices in my LAN threatened to get out of hand for reasonable maintainability, I made the switch to network-wide ad blocking. An older Raspberry Pi model connected directly to my router turned out to be a good solution. After checking the available options, I ran AdGuard Home on it for a while, which is (in my opinion) a nicer solution than the top dog Pi-Hole, but essentially does the same thing: every DNS request is forwarded to a customisable DNS server and filtered using equally customisable blocking lists, plus there’s a nice web interface.

Third-party DNS servers have some advantages, but they are not protected against censorship (e.g. the attacks by corporations against Quad9) and surveillance. Because what used to be called ‘paranoia’ can now be called healthy caution again, my own DNS server wouldn’t be such a bad idea, I thought. The most obvious solution, setting up an Unbound in addition to AdGuard Home, did not seem wise to me for two reasons: Firstly, I have had rather mixed experiences with setting up and running Unbound on my mail server, and secondly, the concept of having to run two different services on the same device for the same purpose, which then have to talk to each other, seemed ill-conceived to me: not only is it quite complex and seems partially redundant, it is also more error-prone than a standardised solution.

Shortly afterwards, I accidentally found the answer to my doubts with the Technitium DNS server. Technitium (they have more products, but I’ll cut it short for now) is something similar to AdGuard Home and Pi-Hole: you start a software and this software then acts as a DNS server. Technitium does not (necessarily) use a third-party service, but sends all queries directly to the root nodes. This takes a little longer than usual the first time a domain is called, but is censorship-free and then (naturally, because it is within the local network) lightning-fast.

Technitium works without further configuration, right after starting (and setting the admin password) it is fully operational. Fine-tuning is possible, there are also some plugins, I myself have actually only set up a few ad filters, because Technitium can also use these by default. I like it.

I regret not having started until 2025. I was always put off by Unbound. If I had known that something like Technitium existed (for over five years now), I would probably have skipped AdGuard Home straight away. I am happy to recommend it.

  • Nougat@fedia.io
    link
    fedilink
    arrow-up
    7
    ·
    12 hours ago

    For the record, any DNS server you choose to employ should default to only using the root servers. You would need to configure your own forwarder IP(s) to point to a general purpose resolver.

    … censorship-free …

    You should also be aware that even if you use root servers, a DNS server which is authoritative for the domain you are querying may well return different results depending on where in the world you are. This can be in order to direct you to an IP that is closer to you, or because “different global locations get different content” for any reason, including censorship and malicious goals. The latter is definitely less likely than the former, but it’s just as possible.

    • rhabarba@feddit.orgOP
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      12 hours ago

      For the record, any DNS server you choose to employ should default to only using the root servers.

      If that was the case, there would be a market for exactly 0 DNS servers.

      You should also be aware that even if you use root servers, a DNS server which is authoritative for the domain you are querying may well return different results depending on where in the world you are.

      Thank you, this is valuable information to me. :-)

      • Nougat@fedia.io
        link
        fedilink
        arrow-up
        5
        ·
        12 hours ago

        If that was the case, there would be a market for exactly 0 DNS servers.

        I’m not sure what you mean by that, but it’s definitely the case.

        • rhabarba@feddit.orgOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          12 hours ago

          I mean that, if all DNS servers just returned whatever the root servers tell them, nobody would want to run his own one, I think.

          • Nougat@fedia.io
            link
            fedilink
            arrow-up
            5
            ·
            12 hours ago

            That’s not what I was talking about.

            Technitium does not (necessarily) use a third-party service, but sends all queries directly to the root nodes.

            By default, any DNS server will look to the root servers for any query. The root servers only know what DNS servers are authoritative for top level domains (TLDs), and tell the client querying “Hey, go ask the “.com” (for example) server.”

            That server knows what DNS servers are authoritative for the zones under .com, and says “Hey, go ask the “querieddomain” server.”

            Then your machine asks that server for the “www” (for example) host, and that DNS server says “Here’s the IP.”

            Unless the DNS server your machine is pointing at is configured to use a forwarder, wherein queries for any records that it isn’t authoritative for or aren’t in its local cache are resent to whatever DNS server is configured as the forwarder. The recursion like above is done between your DNS server and its forwarder, finally returning you an IP address when one is identified.

            There’s a bit more to it than that, but that’s what I was talking about. Out of the box, a DNS server uses root hints, which are IP addresses of the root DNS servers. You would need to configure forwarder(s) in your DNS server if you desire them.