v1.17.5 · MIT licensed · Production ready

A fast, safe DNS server. Written in Rust.

Recursive resolver, authoritative server, DNS-over-TLS, DNSSEC validation, and RPZ filtering — in a single static binary.

639,581
queries per second (cached, 50 clients)
98 µs
cached query latency under load
21×
faster than the v1 baseline

What's inside

Everything a modern DNS server needs.

Recursive resolver

Full iterative resolution from root hints, with CNAME chain following and qname minimization.

Authoritative server

Serve zones from RFC 1035 zone files, or PostgreSQL with LISTEN/NOTIFY hot reload.

DNS-over-TLS

RFC 7858 encrypted DNS on port 853, via rustls. No OpenSSL dependency.

DNSSEC validation

Chain of trust verification from root trust anchors. Validated by default.

RPZ filtering

Block or redirect domains via Response Policy Zones. Ad blocking, malware filtering, parental controls.

Prometheus metrics

Per-listener QPS, cache hit rate, latency histograms — all exposed at /metrics.

See all features →

Performance

On par with multi-threaded Unbound. In Rust.

rDNS handles ~640K cached queries per second on commodity hardware — matching a fully multi-threaded Unbound, and ahead at low concurrency. The optimization journey from a naïve 29K-QPS baseline is documented step by step.

Read the benchmarks →

rDNS
639,581
Unbound
596,564

QPS, 50 cached clients, both on all cores

Safety

Memory-safe by construction.

Written in Rust. No buffer overflows, no use-after-free, no double-frees — entire classes of CVEs eliminated at compile time. Privilege dropping after bind. FreeBSD Capsicum capability sandbox.

rustls for TLS — no OpenSSL exposure.

[security]
sandbox = true
rate_limit = 1000

[server]
user = "rdns"
group = "rdns"

Get rDNS running in 60 seconds.

Single static binary. TOML config. MIT licensed. Linux, FreeBSD, and macOS.