Saturday, November 26, 2022

Technitium DNS Server v10 Released!

I am happy to announce the release of Technitium DNS Server v10, a cross-platform, free, open source software that can be used by anyone, be it a novice or an expert user. It features an easy to use web based GUI and works with default config that allows the server to run out-of-the-box.

Download the latest update for Windows, Linux, macOS, or Raspberry Pi!

Technitium DNS Server
Technitium DNS Server v10

This is a major release that now runs on .NET 7 Runtime and adds a lot of features like Dynamic Updates Security Policy, DANE TLSA record, SSHFP record, EDNS Client Subnet, DNS64, and more.

Read the change log to know more details about this latest update.

Any comment or feedback is really appreciated and helps a lot in adding new features and fixing bugs. Send your feedback or support requests to You can also post on /r/technitium on Reddit for community support. For any feature request or reporting bugs, create an issue on GitHub.

The DNS Server source code is available under GNU General Public Licence (GPL) v3 on GitHub.

You can make a contribution to the project by becoming a Patron and help in developing new software, updates and adding more features possible. Become a Patron now!


  1. Looks awesome. Would by a great to have opnsense/pfsense fw packages, also rpm/deb for easy quick install on linux would help.

    1. Thanks. The DNS server is not available on BSD platform so wont work with opnsense/pfsense. For linux packages, I don't have enough resources to maintain them thus only installer script and docker options are available.

    2. Maybe later you add BSD support, because having packages for pf/opnsense would help with adoption of technitium dns server for sure. Another thing to find out after installation on linux virtual is no ability to import dns records, there is only option to add individual records which isnt admin friendly if you have 50-200 records. So option for adding multiple lines of "imap IN CNAME name1" when adding records for new domain, would be nice.

    3. BSD is not support since the DNS server uses .NET runtime which is not available for BSD. Currently .NET supports only Windows, Linux, & MacOS.

      For adding bulk records, it is recommended to use something like a bash script that uses curl with the HTTP API provided by the DNS server.

      If you already have a zone running on another DNS server and want to import it to Technitium DNS Server then look at the Import option in DNS Client tab on the web panel. You will need to allow zone transfer on you existing DNS server and use the DNS Client with server set to the existing DNS server, domain set to the zone, and type set to AXFR. Clicking the Import button will initiate a zone transfer and create a primary zone with all the records imported into it.

    4. Well, maybe is time for switch from net to Rust or Go.. :)
      Well AXFR transfer didnt work, so I will propably destroy my mouse by clicking through adding new records. Anyway, thx for your work and I hope that this project will live at least next 10-15 years.

    5. The import option via zone transfer is much easier and will save a lot of effort. Just make sure that your current DNS server has zone transfer enabled. If you need any help then do send an email to support to make it work.

      In case you cannot enable zone transfer on your current DNS server for any reason, you can still use the import option. You just have to query for the domain and all its subdomain names with type set to ANY which returns all the records for the queried domain/subdomain name. Create a primary zone manually first and then use the Import option by making ANY queries. The records that are received by the query get added to the zone. This is much better option than manually entering the records which is prone to typos.

    6. Unfortunatelly ANY doesnt work, its just get:
      "Answer": [
      "Name": "dns-name.lan",
      "Type": "A",
      "Class": "IN",
      "TTL": "0 (0 sec)",
      "RDLENGTH": "4 bytes",
      "RDATA": {
      "IPAddress": ""
      "DnssecStatus": "Disabled"

      and thats all. If I try *.dns-name.lan same result.

    7. It seems like your old DNS server has too many limitations. So seems like your current options are either making manual entries or writing a bash script that calls the add or import API call for each subdomain name.

    8. well manual it was...and to the point...there shoud be a option to export dns records or rather entire zones to simple txt format.

      Another to setup dns name redirection? Example.... = .
      Its like local hosts but on dns-network level.

    9. You will have to create a primary zone for and add an A record in it with the ip address.

      If you wish to just change one record and let the other records and subdomain name to work normally then create a conditional forwarder zone instead with forwarder set to "this-server". With this setup, the records you add will be used and queries for other record type and subdomain names will be resolved normally via this-server.

    10. Ok, i will try that. Another strange thing I found is CNAME records doesnt work. A records are reachable but anything CNAME is failure... whats wrong?

    11. What do you mean when you say doesn't work? You cannot put CNAME at the zone apex and can use them only for subdomain names. Also, what type of zone did you create, primary or forwarder?

    12. Well problem with CNAME was that in "Domain name" field you must put full domain name, not just first part. What I miss here is single help messages under the fields showing what should records look like. For new adopters things are little bit confusing. It could help to make article in documentation with title "Basic domain setup" with few screenshots how its done.
      So far technitium dns runs ok and I have some nice graphical statistics, which was reason I choose this sw in the first place. So, for now only thing missing from my perspective, is ability to run this sw on my FW rig (pf/opnsense), because I must run dedicated virtual just for dns service on home rig. Maybe sometime/somehow later.

    13. Thanks for the feedback. In Technitium DNS Server, you need to enter full domain name everywhere by design. This has been given a deep thought before deciding on this to make it as easy as possible for new adopters.

      Most domain registrars that provide DNS options expect you to enter full domain name. Most people understand that a domain name is always a full domain name and many do not understand relative domain names.

      If the design allowed to enter a relative domain name or a FQDN then this would have been a severe issue for new adopters who do not understand what FQDN is. This would have required a lot of documentation to explain FQDN and still had caused too many support emails. The current design thus avoids all the issues and is the simplest thing possible.

  2. I just stumbled upon this software while looking for a DNS server alternative to BIND that accepts DNS updates (RFC 2136). I'm currently using ISC BIND and DHCP with dynamic updates setup, but editing conf and zone files was getting old. I was initially elated to discover this software as a result, because I wanted a more modern approach with available web front end. Having a companion DHCP server product baked in was just icing on the cake. I am a bit disappointed with the install instructions showing that the binary is extracted into /etc/dns. Per the Filesystem Hierarchy Standard, no binaries may be located under /etc ( Are there any plans to change this? Is the application dead set on being located there or can we move the binary and execute elsewhere? And like with BIND, I have it running not as the root user, can we also run this as say a user named dns?

    1. Thanks for the feedback. The installer created earlier had this mistake that has stuck till now which was partly due to the software being designed to be portable i.e. to contain the app + config together which is how its also installed on Windows. This is an item in my list to fix it that has not got priority yet due to time issues.

      The app does support taking config folder as a command line argument. So, if you wish to manually install it then you can just extract the tar file in /opt and then configure systemd service with /etc/dns as the parameter to specify the config folder location.

  3. I'm using it with an Intel(R) Celeron(R) 847 CPU @ 1.10GHz and 4GB RAM, 120GB SSD and Debian 11 OS.

    So far, the equipment is serving the 200 customers of our ISP in Brazil.

    Working 100%.

  4. can i access internet without knowing anyone my ip address