So your home lab is starting to look more like a home data center, with a stack of network equipment tying it all together. But while you're thinking about hardware and the effect it will have on your Jellyfin streaming capacity, don't forget that some of the best networking tools are software-based, like running your own DNS server.

That way, you can cache DNS queries at the network level, add encryption and hijacking protection so that your browsing habits aren't readily used for advertising, and use locally-resolved domain names for home lab experiments without paying yearly fees for the use of the names. While something like a Pi-Hole is enough for most people's networking needs, I've always erred on the side of overkill, so I decided to set up one of the robust DNS resolvers that companies like Quad9 use for their public DNS servers. It was a humbling experience, and while I learned a ton, I learned more about myself and how sometimes going the extra mile is actually just being extra.

What is PowerDNS, and why would you want to run it at home?

It's a powerful DNS server split into authoritative, recursive, and load-balancing segments

If DNS is the phone book of the connected world, PowerDNS would be one of the companies printing those pages out. Its DNS tools provide routing and protection for broadband networks, 5G wireless, big hosting providers, and companies like Quad9 who try to make the Internet a safer place to browse. Whether it's complex routing for CDNs or other providers, company networks that could span the globe, or a handful of devices in your home lab, PowerDNS can scale to the occasion.

PowerDNS has three main complimentary sections, although the Recursor is the one most people should use:

  • PowerDNS Authoritative DNS server: The encyclopedia of domain records that you or your company uses, as an authority on the matter
  • PowerDNS Recursor: This is the most common type of self-hosted DNS server, which queries other authoritative sources
  • PowerDNS dnsdist: A DNS-, DoS-, and abuse-aware load balancer for DNS servers at scale

This is by no means the full list of things PowerDNS develops, with cloud-based management tools, tools for syncing clusters at high speed, distributed storage, powerful zone management, and other DNS-adjacent products that make up a robust offering for ISPs, mobile carriers, and other connectivity providers to use in their daily operations.

PowerDNS

PowerDNS takes more setup time than most DNS servers

I never want to have to manually set up a database from the command line ever again

I've used plenty of different DNS servers, and they run the gamut between the easy-to-setup crowd of Technitium, Pi-hole, and AdGuard Home to the more involved Bind9 and everything in-between, and PowerDNS is very much on the extra side of the scale. Which is okay, especially if you're trying to learn the concepts behind the tools you're using, as even setting up one part of the main servers is very hands-on, never mind making the three play nicely together.

Over the last week, I have hand-built databases in Mariadb for the servers to store data in, tweaked Dockerfiles to create a web GUI for a more modern management plane, set up Nginx to connect that web interface to the DNS server, and configured multiple backend packages for use. I can't say it's all been a wonderful experience, and there are parts of networking that I'll quite happily leave up to the professionals in the future. Still, I've learned a ton and the feeling of achievement when something starts working correctly after hours of coding and command-line commands is positively magical.

I've learned the relationship between authoritative DNS resolvers and the recursive ones that query them, how much coffee I can drink before my heart explodes, and just how much work the addressing layer that holds networks together, internal and external, so the devices on them can communicate quickly and with the minimum of hops. I've remembered how much I dislike database work, even if it's neat watching them get put together, and how easily the "it was DNS" meme becomes reality.

There's a powerful API (that's too powerful for my brain)

One of the big selling points for PowerDNS is the robust API that lets you add, change, and automate entries, and while it's more than my networking needs, need, right now, it's something I've put on the list for further testing. That's because of the DHCP plugin in Proxmox, which can automatically deploy DHCP servers for a Zone as they're added to the virtualization server. That means automatic configuration of IP addresses and domain names for VMs and containers, and as networking is one of my least favorite computing tasks to do, that makes it a priority of mine to learn.

The plugins generate IPSets when interfaces are linked to VMs or containers, which can then be referenced in the Proxmox firewall, making the management of your virtual empire easier. It also removes devices from the zones as the VMs get parked or taken away, which I love, so I don't have to do monthly cleanup of DNS records, or of firewall groups.

PowerDNS lives up to its name but it's a lot to deal with in the home lab

Credit: Source: Docker Hub

I know there's a Docker version of everything PowerDNS develops, but I wanted to do things the long way. It turned out, I couldn't escape the containerized future anyway, as the web application that I found for a front-end came as a Docker image. I still really, really dislike setting up databases with the command line, but at least now I understand more of the relationship between DNS elements and the software used for lookups when someone clicks a link.