baharna_ online  ·  last deploy 2026-07-23
/blog

Self-hosted DNS with Technitium

I wanted to host my own DNS but worried it would be complicated. It is not. I had a Raspberry Pi 4 sitting around doing nothing, so I installed Technitium DNS server. Installing it was incredibly easy. The Raspberry Pi was already set up and updated, so I installed it using the install script:

curl -sSL https://download.technitium.com/dns/install.sh | sudo bash

Once installed, I logged in, changed passwords and created an admin user, and set upstream DNS. Then I created a zone for my internal URL and started setting internal A records. So, so simple. Configuring it to act as network DNS was simple as well, the Deco has an option for that. I have read that the Deco can have issues pushing custom DNS to endpoints, but I have not experienced that.

I still have issues on my Linux machines and my phone. The Linux machines will often resort to using 9.9.9.9, which I set as a secondary DNS on the Deco. But as I found out when researching, there is no real "secondary" DNS in Network Manager, just a list of DNS servers. Still, it sets the first one in the list as the main DNS server when DHCP assigns it, but at some point just changes to the 9.9.9.9. I still haven't nailed down a root cause for this. The connection data is stored in a file at /etc/NetworkManager/system-connections/, and if I notice it's tripped up again I have to run this:

sudo nmcli connection reload 
nmcli connection up "wifi-name"

Still working to figure out that issue. But aside from that I have only had one issue. The Raspberry Pi is dual homed, it sits on the main network connected tot he same switch my ISP router and main Deco device are on. But it also has a wifi interface. By default the DNS server listens on all interfaces, but I was assigning the physical interface IP. This worked in almost all cases, but it caused some crazy networking issues with Proxmox. Using the console on the Proxmox web UI would time out or load then stop loading. Assigning the Proxmox with the wifi interface IP for the Pi fixed the issue. Not an ideal fix, but it worked.

← all posts