Takelan DNS Server
A BIND9-compatible DNS server with health-aware answers, clustering and DNSSEC
tldns is an authoritative and recursive DNS server written in Rust. It reads your BIND9 zone files and named.conf, then adds what a small team would otherwise bolt on: health-aware failover, nodes that stay in sync, DNSSEC, encrypted DNS and a dashboard.
At a glance
- Reads BIND9 zone files and named.conf
- UDP, TCP, DNS over TLS, HTTPS and QUIC
- DNSSEC signing, including multi-signer
- Health-aware pools and GeoDNS
- Nodes that sync zones, config and credentials
- Behind Takelan DNS hosting and Dynamic DNS
Where it stands
What this project is, and what we do not claim.
A Labs project
The server is source-available under the Takelan OSS License and still changing. This page describes the server and how it is wired to Takelan. It is not a service promise.
Behind two live products
DNS hosting and Dynamic DNS in Takelan Utilities are live. They run on a cluster of these servers, in Michigan, New Jersey and Germany.
Honest about versions
Some server features need a recent build: the per-domain query log, cluster DNSSEC, cluster-wide zone deletes and Defense Intelligence. Utilities shows a server that lacks one as not available. It does not guess.
No numbers we cannot back
We do not publish an uptime figure, an SLA or a speed claim here. The server's own docs hold a benchmark, with its method and caveats, and a list of what BIND9 still does better.
What it supports
Taken from the server's own docs. Each feature is off by default and fails open, unless the docs say otherwise.
Answers
- Authoritative serving and recursive resolution, with a cache that can serve stale answers and prefetch.
- UDP and TCP on port 53, DNS over TLS (RFC 7858), DNS over HTTPS (RFC 8484, GET and POST) and DNS over QUIC (RFC 9250). The encrypted listeners are switched on in configuration.
- EDNS(0), DNS cookies, NSID, extended DNS errors and EDNS client subnet.
- BIND9 zone files and named.conf, parsed and never rewritten. Wildcards, DNAME, glue and SVCB/HTTPS records (RFC 9460).
- A check mode that tells you which named.conf directives and zones it can serve, before you switch.
Zones and changes
- Zone transfers: AXFR and IXFR, NOTIFY and secondary zones. Transfers and updates are denied unless you allow them.
- Dynamic updates (RFC 2136) with TSIG (RFC 8945), and catalog zones (RFC 9432).
- Dynamic DNS keys: a signed HTTP update for one name, for routers and scripts.
- Zone versions with diff and rollback. A comment and a few metadata keys on each zone.
- Hot reload without a restart. Backup, restore and verify from the command line.
DNSSEC
- Online signing, with one combined key per zone by default. Algorithms 8, 10, 13 (the default), 14 and 15.
- Authenticated denial with NSEC3 (the default) or NSEC, with correct wildcard proofs. CDS and CDNSKEY records are served.
- It prints the DS records to publish at your registrar. It reads and writes standard BIND key files.
- Multi-signer (RFC 8901, model 2), so a zone can be signed by more than one provider, or by every node of a cluster, each with its own keys.
- A validating forwarder for recursed answers is built. Its notes say to check how far it is wired in your release before you rely on it.
Smart answers
- Health-aware pools: a name answers with the members that are alive now. Priority tiers, weights, N-of-M and standby members.
- Probes over TCP, UDP, HTTP, HTTPS, DNS and TLS, and a local command check that never leaves its node.
- GeoDNS: named country and continent regions, or the nearest healthy datacenter by distance, with failover.
- All of it is off until you switch it on, and it fails open to the plain zone answer.
Clusters
- Nodes push zone, record and config changes to each other, with retries and a catch-up pass so a node that was away converges when it returns.
- Last writer wins, with a fixed tie-break. A zone delete spreads too, and every node keeps a marker so an old write cannot bring the zone back.
- Credentials sync on their own channel. Node-local settings such as identity, listen ports and file paths never leave their node.
- The management plane uses TLS with a cluster certificate authority the nodes create themselves.
Defense
- Rate limits per client, response rate limiting and a guard against amplification.
- Defense Intelligence: each node watches its own traffic for query floods, random-name floods, amplification, spoofed sources, connection floods and password guessing, and shares what it finds with its peers.
- Mitigations are throttle, block, force TCP, and a limit on made-up names under one domain. Each one expires on its own, and there are caps and a never-block list.
- A node starts in observe mode: it detects, records and shares, and enforces nothing until you switch it to enforce.
Running it
- One binary. It can take the place of the named and rndc programs and keep your units and flags.
- A dashboard and a REST API, with API keys that carry permissions and can be limited to some domains, and web roles.
- Analytics and per-domain query log and stats. A multi-worker mode, by default one process per core up to a cap.
- Packages for deb and rpm, a tarball, a self-extracting installer and a Docker image.
How the nodes work together
Three nodes answer the same zones. A change lands on one node and is pushed to the others.
Inside the cluster
How it connects to Takelan Utilities
Utilities is the front door for DNS hosting and Dynamic DNS. The server does the answering, and Utilities keeps the accounts, the rules and the history.
How DNS plugs into Utilities
Zones come from Utilities
You add a domain in Utilities. It checks the name, checks ownership by delegation or a TXT record, lints the zone on a node, then writes it to one node. The node pushes it to the others, and Utilities confirms that each one now shows the new serial. A node that lags gets a repair task that is retried until it matches.
Dynamic DNS goes through a relay
A router or script signs its update with a key. A relay in Utilities checks the key, the time and the signature, then forwards it to a node, which checks it again. The nodes' management APIs stay private. The key lives on the nodes and is copied to each one. Utilities keeps an encrypted copy of the secret to check the signature.
DNSSEC keys stay on their node
Each node signs with its own keys. The nodes swap only the public keys, so every node serves the same key set and the same DS records. Utilities shows the state per node and the DS records to publish. It refuses to turn signing on unless every node agrees. Nothing is published at your registrar for you.
Logs and stats flow back
Each node keeps a query log. Utilities asks every node for your domain only, merges the answers and shows the log and stats. Client addresses are shortened by default, and the retention is set per domain.
Healthcheck watches the nodes
Healthcheck probes each node for a DNS answer to a known name, its HTTPS status and port 53 over TCP and UDP. A separate Domain name check runs more than 100 tests on any domain.
Attacks become reports
When a node stops a flood or a password-guessing run, it can report the heaviest address to the Takelan reputation API. It needs no key for that, and an anonymous report counts for less. A node can also look up the standing of its heaviest clients and throttle or block the ones that are poor or blocked.
Utilities holds the rules
Ownership, quotas, roles, versions, the audit log and the per-domain privacy settings live in Utilities. Zone contents and DNSSEC keys live on the nodes. Utilities talks to a node over HTTPS with a pinned certificate authority, and holds only a reference to the credential, never the value.


Using it as a customer? Read about DNS hosting, Dynamic DNS and Takelan Utilities.
The dashboard
Real screens from a local test cluster. The zones, names and addresses are made up.








Run it yourself
Build from source, use the Docker image, or install a package. Check your named.conf first.
Build and check
cd rust cargo build --release -p tldns-server ./target/release/tldns --check-compat /etc/bind/named.conf ./target/release/tldns --config bind9_manager.yaml
The check lists which directives and zones it can serve. It listens on an alternate port by default, so you can run it beside BIND9 while you test.
Print the DS records
tldns --print-ds /etc/bind/named.conf # example.com. IN DS <keytag> 13 2 <digest>
Hand each line to your registrar. The command only reads. It never creates a key.
License: the Takelan OSS License is source-available, not OSI-approved. You may use, modify and distribute it, including commercially, and improvements flow back to the canonical repository.
Questions
What is the Takelan DNS server?
tldns is an authoritative and recursive DNS server written in Rust. It reads BIND9 zone files and named.conf, and adds health-aware answers, GeoDNS, clustering, DNSSEC, encrypted DNS and a dashboard. It is a Takelan Labs project with source available under the Takelan OSS License.
Is it a drop-in replacement for BIND9?
For many setups, yes. It serves your named.conf and zone files, can take the place of the named and rndc programs, and BIND9 can take over again from the same files. Its docs list what BIND9 still does better. Only the rndc commands status, reload and flush are wired so far.
Which DNSSEC algorithms does it sign with?
RSASHA256 (8), RSASHA512 (10), ECDSAP256SHA256 (13, the default), ECDSAP384SHA384 (14) and ED25519 (15). It uses NSEC3 by default or NSEC, and supports multi-signer (RFC 8901, model 2).
How does it connect to Takelan Utilities?
Utilities is the front door for DNS hosting and Dynamic DNS. It checks ownership and quotas, writes zones to one node, confirms the others have them, relays Dynamic DNS updates, merges query logs and shows DNSSEC state. Healthcheck probes the nodes, and the nodes report attacks to the reputation API.
Can I run it myself?
Yes. Build it from source, use the Docker image, or install a deb, rpm or tarball. The source is on the Takelan GitLab. The license is source-available, not OSI-approved, and asks that improvements flow back to the canonical repository.
Does it publish DS records for me?
No. It prints the DS records, and Takelan Utilities shows them for your domain. You publish them at your registrar.
Is DNS hosting on Takelan live?
Yes. DNS hosting and Dynamic DNS are live in Takelan Utilities. This page is about the server underneath them, which is a Labs project.
