Technitium DNS Server is a free, open-source, cross-platform, authoritative, and recursive DNS server that is aimed at self-hosting a local DNS Server for privacy and security, software development, and testing on small to medium-size networks. It works out-of-the-box with no or minimal configuration and provides a user-friendly web console accessible using any web browser.

Technitium DNS Server web console provides a dashboard that displays useful stats, these can be used to understand the DNS server operations. The dashboard contains the main chart which displays query and response-related data and a couple of pie charts. It also lists top clients, top domains, and top blocked domains in a tabular format.

How to install?

For the installation I chose Ubuntu Linux the process is fairly simple, however the software was built to be cross platform using .NET. You can run it on Windows, Linux or MacOS.

The Automated installer script was used to install the DNS Server.

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

Once installed, you may go ahead and allow the following ports:

  • 53/udp
  • 53/tcp

Port 5380/tcp is used for the web console, you really don’t want that open to the web.
Port 67/udp is used for DHCP, again you only want that on your local network.

Login to your dashboard

That’s it, it’s installed. Now configure your network with the IP address of the server for DNS resolution.

I use this server for my home lab, servers, docker containers, basically I use a domain internally and use this server for name resolution for my devices.

Installing DNS Server Manually

Install the .NET 5 runtime from here.

Once you have installed .NET 5, SSH into the server and follow the steps below:

  1. Download DNS Server portable app using wget and extract it.
wget https://download.technitium.com/dns/DnsServerPortable.tar.gz sudo mkdir -p /etc/dns/ sudo tar -zxf DnsServerPortable.tar.gz -C /etc/dns/
  1. You can now run the DNS Server directly from the console as a standalone app.
    cd /etc/dns/ sudo ./start.sh
  2. Open the url http://<server-ip-address>:5380/ to access the web console.