Technitium DNS Server v5 |
Technitium DNS Server is a free, open source software that can be used by anyone be it a novice or an expert user. The server aims to have a user friendly approach, providing an easy to use web based GUI, and with defaults that allow the server to run out-of-the-box.
The DNS server can be used to self host domain names, used as a local resolver on a desktop or laptop computer, or used as a DNS server for the entire local network. It supports many useful and powerful features like blocking domain names using block lists, overriding records for any domain, use forwarders or conditional forwarders with DNS-over-TLS or DNS-over-HTTPS, and host your own DNS-over-TLS or DNS-over-HTTPS service.
The DNS Server is cross platform and can run on Windows, Linux and macOS. It has small footprint and thus can run even on a Raspberry Pi.
Once you have used Technitium DNS Server, you will realize how powerful it is and how silly it is to rely on your ISP's DNS servers.
Conditional Forwarder Zone |
Features that you may find interesting in this release:
- QNAME minimization support in recursive resolver for privacy.
- ANAME propriety record support to allow using CNAME like feature at zone root.
- Primary and Secondary zone support with NOTIFY implementation and zone transfer support.
- Stub zone support that allows the DNS server to keep track of the name servers of the zone.
- Conditional Forwarder zone support which allows to configure multiple forwarders for a specific domain name with all protocol support including DNS-over-HTTP or DNS-over-TLS protocols.
- Ability to override records of a live domain name using conditional forwarder or stub zone. This allows you to easily implements things like forced Google safe search or YouTube's restricted mode.
- Concurrent querying with more than one forwarder allows to get fastest response from multiple forwarders.
- Option to change the DNS Server local ports for TCP and UDP protocols.
Conditional Forwarder Zone with Overridden Records For Google Force Safe Search |
The DNS Server code has been optimized for CPU, memory and concurrency. The server now notably has a very small memory footprint which allows loading a couple of million blocked domain names easily via the blocks list URLs on a Raspberry Pi with just 1 GB RAM. The time it takes to load the blocked lists too has improved significantly.
The DNS server now internally uses a new ByteTree data structure which is a complete lock less implementation allowing concurrent threads to do read and write operations. This allows the DNS server to handle large amount of concurrent requests easily while also allowing it to update the cache data parallelly.
With the limited hardware that is available with me for testing, the DNS server was load tested on a machine with Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz on a 1 Gbps wired Ethernet network. The server could resolve more than 2 million requests per minute with an average 30% CPU utilization consistently for 3 hours. The client machine that was used to bombard requests however would peak out at 100% CPU preventing from adding any more load on the server for the load test. This update is supposed to fix issues in the previous version that caused the CPU to peak, failing to handle load more that couple of thousand requests per second.
Any comment or feedback is really appreciated and helps a lot in adding new features and fixing bugs. Do send your feedback or support requests to support@technitium.com. For any feature request or reporting bug, do create an issue on GitHub.
The DNS Server code is available under GNU General Public Licence (GPL) v3 on GitHub.
You can now make your contributions to Technitium by becoming a Patron and help in developing new software, updates and adding more features possible. Become a Patron now!
Hi, Shreyas, and thank you for your work and your apps.
ReplyDeletePlease provide road map for "Technitium DNS Server".
Which new features do you plan to implement in the future?
Thanks for asking. There are a lot of things to implement that I think there I need to do it as a blog post. Here are a few things in the to-do list:
Delete- DNSSEC
- syslog
- Clustering support
- geolocation based records
- health check based failover
- making any raspberry pi or a linux box into a router with most common router options.
Hi, Shreyas.
DeleteThank you for your answer.
Hi there, are this software able to setup public DNS? I have tried like everything but clients from other network cannot use my DNS.
ReplyDeleteI have a public ip and i have setup port forwarding on my network....
But only clients from my network are only available to use my public ip dns
If you don't mind can you help me?
Thank you for your consideration
Thanks for asking. By default the option "Allow Recursion Only For Private Networks" in settings is enabled so thus the DNS server will respond with refused error for requests coming from public networks. Just uncheck that option in settings and it would work.
Delete