About Technitium DNS Server
Technitium DNS Server is an open source authoritative as well as recursive DNS server that can be used for self hosting a DNS server for privacy & security. It works out-of-the-box with no or minimal configuration and provides a user friendly web console accessible using any modern web browser.
Features
- Works on Windows, Linux, macOS and Raspberry Pi.
- Docker image available on Docker Hub.
- Installs in just a minute and works out-of-the-box with zero configuration.
- Block ads & malware using one or more block list URLs.
- Supports working as an authoritative as well as a recursive DNS server.
- High performance DNS server based on async IO that can serve millions of requests per minute even on a commodity desktop PC hardware (load tested on Intel i7-8700 CPU with more than 100,000 request/second over Gigabit Ethernet).
- Self host DNS-over-TLS, DNS-over-HTTPS, and DNS-over-QUIC DNS services on your network.
- DNS-over-HTTPS implementation supports HTTP/1.1, HTTP/2, and HTTP/3 transport protocols.
- Supports DNS over PROXY protocol version 1 and 2 for both UDP and TCP transports.
- Use public DNS resolvers like Cloudflare, Google, Quad9, and AdGuard with DNS-over-TLS, DNS-over-HTTPS, or DNS-over-QUIC protocols as forwarders.
- Support for latency based name server selection algorithm that works with concurrency feature for both recursive resolution and forwarders.
- Advanced caching with features like serve stale, prefetching and auto prefetching.
- Persistent caching feature that saves cache to disk when DNS server restarts.
- DNS rebinding attack protection feature available with DNS Rebinding Protection App.
- DNSSEC validation support with RSA & ECDSA algorithms for recursive resolver, forwarders, and conditional forwarders with NSEC and NSEC3 support.
- DNSSEC support for all supported DNS transport protocols including encrypted DNS protocols.
- DANE TLSA RFC 6698 record type support. This includes support for automatically generating the hash values using certificates in PEM format.
- SVCB & HTTPS draft-ietf-dnsop-svcb-https record type support.
- URI RFC 7553 record type support.
- SSHFP RFC 4255 record type support.
- CNAME cloaking feature to block domain names that resolve to CNAME which are blocked.
- QNAME minimization support in recursive resolver RFC 9156.
- QNAME case randomization support for UDP transport protocol draft-vixie-dnsext-dns0x20-00.
- DNAME record RFC 6672 support.
- ANAME proprietary record support to allow using CNAME like feature at zone apex (CNAME flattening). Supports multiple ANAME records at both zone apex and sub domains.
- APP proprietary record support that allows custom DNS Apps to directly handle DNS requests and return a custom DNS response based on any business logic.
- Support for features like Split Horizon and Geolocation based responses using DNS Apps feature.
- Support for REGEX based block lists with different block lists for different client IP addresses or subnet using Advanced Blocking DNS App.
- Primary, Secondary, Stub, and Conditional Forwarder zone support.
- Static stub zone support implemented in Conditional Forwarder zone to force a domain name to resolve via given name servers using NS records.
- Supports Catalog Zones RFC 9432.
- Supports record aging where the records with expiry set are automatically removed from the zone.
- Bulk conditional forwarding support using Advanced Forwarding DNS App.
- DNSSEC signed zones support with RSA & ECDSA algorithms.
- DNSSEC support for both NSEC and NSEC3.
- Zone transfer with AXFR and IXFR RFC 1995 and DNS NOTIFY RFC 1996 support.
- Zone transfer over TLS (XFR-over-TLS) RFC 9103 support.
- Zone transfer over QUIC (XFR-over-QUIC) RFC 9250 support.
- Support for zone validation using ZONEMD records RFC 8976 for Secondary zones.
- Dynamic DNS Updates RFC 2136 support with security policy.
- Secret key transaction authentication (TSIG) RFC 8945 support for zone transfers.
- EDNS(0) RFC6891 support.
- EDNS Client Subnet (ECS) RFC 7871 support for recursive resolution and forwarding.
- Extended DNS Errors RFC 8914 support.
- DNS64 function RFC 6147 support for use by IPv6 only clients using the DNS64 App.
- Support to host DNSBL / RBL block lists RFC 5782.
- Multi-user role based access with non-expiring API token support.
- Self host your domain names on your own DNS server.
- Wildcard sub domain support.
- Enable/disable zones and records to allow testing with ease.
- Built-in DNS Client with option to import responses to local zone.
- Supports out-of-order DNS request processing for DNS-over-TCP and DNS-over-TLS protocols RFC 7766.
- Built-in DHCP Server that can work for multiple networks.
- IPv6 support in DNS server core.
- HTTP & SOCKS5 proxy support which can be configured to route DNS over Tor Network or use Cloudflare's hidden DNS resolver.
- Web console portal for easy configuration using any web browser.
- Built in HTTP API to allow 3rd party apps to control and configure the DNS server.
- Built-in system logging and query logging.
- Open source cross-platform .NET 8 implementation hosted on GitHub.
Environment variables
View environment variables
- PROJECT
- technitium-dns
- DOMAIN
- stack.localhost
- DNS_SERVER_DOMAIN
- $PROJECT.$DOMAIN #The primary domain name used by this DNS Server to identify itself.
- DNS_SERVER_ADMIN_PASSWORD
- password #DNS web console admin user password.
- DNS_SERVER_PREFER_IPV6
- false #DNS Server will use IPv6 for querying whenever possible with this option enabled.
- DNS_SERVER_WEB_SERVICE_LOCAL_ADDRESSES
- 172.17.0.1,127.0.0.1 #Comma separated list of network interface IP addresses that you want the web service to listen on for requests. The "172.17.0.1" address is the built-in Docker bridge. The "[::]" is the default value if not specified. Note! This must be used only with "host" network mode.
- DNS_SERVER_WEB_SERVICE_HTTP_PORT
- 5380 #The TCP port number for the DNS web console over HTTP protocol.
- DNS_SERVER_WEB_SERVICE_HTTPS_PORT
- 53443 #The TCP port number for the DNS web console over HTTPS protocol.
- DNS_SERVER_WEB_SERVICE_ENABLE_HTTPS
- false #Enables HTTPS for the DNS web console.
- DNS_SERVER_WEB_SERVICE_USE_SELF_SIGNED_CERT
- false #Enables self signed TLS certificate for the DNS web console.
- DNS_SERVER_OPTIONAL_PROTOCOL_DNS_OVER_HTTP
- false #Enables DNS server optional protocol DNS-over-HTTP on TCP port 8053 to be used with a TLS terminating reverse proxy like nginx.
- DNS_SERVER_RECURSION
- AllowOnlyForPrivateNetworks #Recursion options: Allow, Deny, AllowOnlyForPrivateNetworks, UseSpecifiedNetworkACL.
- DNS_SERVER_RECURSION_NETWORK_ACL
- 192.168.10.0/24, !192.168.10.2 #Comma separated list of IP addresses or network addresses to allow access. Add ! character at the start to deny access, e.g. !192.168.10.0/24 will deny entire subnet. The ACL is processed in the same order its listed. If no networks match, the default policy is to deny all except loopback. Valid only for `UseSpecifiedNetworkACL` recursion option.
- DNS_SERVER_RECURSION_DENIED_NETWORKS
- 1.1.1.0/24 #Comma separated list of IP addresses or network addresses to deny recursion. Valid only for `UseSpecifiedNetworkACL` recursion option. This option is obsolete and DNS_SERVER_RECURSION_NETWORK_ACL should be used instead.
- DNS_SERVER_RECURSION_ALLOWED_NETWORKS
- 127.0.0.1, 192.168.1.0/24 #Comma separated list of IP addresses or network addresses to allow recursion. Valid only for `UseSpecifiedNetworkACL` recursion option. This option is obsolete and DNS_SERVER_RECURSION_NETWORK_ACL should be used instead.
- DNS_SERVER_ENABLE_BLOCKING
- false #Sets the DNS server to block domain names using Blocked Zone and Block List Zone.
- DNS_SERVER_ALLOW_TXT_BLOCKING_REPORT
- false #Specifies if the DNS Server should respond with TXT records containing a blocked domain report for TXT type requests.
- DNS_SERVER_FORWARDERS
- 1.1.1.1, 8.8.8.8 #Comma separated list of forwarder addresses.
- DNS_SERVER_FORWARDER_PROTOCOL
- Tcp #Forwarder protocol options: Udp, Tcp, Tls, Https, HttpsJson.
- DNS_SERVER_LOG_USING_LOCAL_TIME
- true #Enable this option to use local time instead of UTC for logging.