The idea in one picture
DNZ is the nameserver, so it decides what every name answers with. When a record is proxied, DNS hands out the proxy’s address instead of your server’s, and the proxy takes the visit from there. Because the same program runs DNS and tells the proxies what to do, the two never disagree: add a route and the DNS record follows; take a proxy node down and it drops out of the answers. That is the whole trick behind a proxied record. It just never had to be a SaaS.What you get, feature by feature
And a few things Cloudflare can’t give you, because they only make sense on your own network:
- Internal names stay internal.
lab.hospital.localnever shows up in anyone else’s logs. - Split horizon. One name can answer differently inside and outside with views.
- Divisions. Each department gets its own zones, members and permissions, like separate Cloudflare accounts under one roof. See Users, divisions and roles.
- It keeps working when the internet doesn’t. Everything, certificates included once issued, runs on your LAN.
Building it in five steps
Here is the whole thing, from nothing to a proxied HTTPS site with caching and a firewall.1
Run DNZ
http://localhost:8080, create the admin account and your first division. For a real
server, see Install.2
Add a zone
3
Turn on proxying and add an edge
4
Proxy the record
Add an ACME account and a resolver under Proxy → Certificates (see
Certificates), then route the name:That one command adds the service and the router, redirects
http:// to https://, gets the
certificate and proxies app.example.com in DNS. Your servers at 10.0.0.10 and 10.0.0.11
are now behind the edge, and nobody outside sees their addresses.5
Add the shields
On the proxy’s Middlewares tab, add a Cache, a Firewall (say, an Allow rule for your
office range followed by a Block on
/wp-admin) and keep an Under attack challenge
ready for a bad day.
Attach them to the router, and every node picks them up within a second.Bring the proxy you already have
Not everyone wants a new proxy. DNZ can drive three kinds, and a name can go through several of them at once:- Traefik, which polls DNZ for its routes, and can also feed DNS from the Docker and Kubernetes routers it already knows about.
- Caddy, which loads its configuration from DNZ and keeps its automatic HTTPS.
- dnz-proxy, which adds the caching, firewall, challenge and analytics.
Is it fast?
We measured, on a dedicated server, against the tools you would otherwise reach for. As a nameserver, DNZ answers about 135,000 authoritative queries a second on two CPUs, in the same league as NSD, Knot DNS and PowerDNS, and well ahead of most all-in-one DNS servers. See Benchmarks. As a proxy, pinned to one CPU, dnz-proxy forwards about 11,500 HTTPS requests a second: ahead of Traefik, Envoy and Caddy, behind nginx and HAProxy on keep-alive traffic. It is first on new TLS connections and on large responses, and holds the least memory of the six: 2 MiB idle, 8 MiB under load. The full numbers, including where it loses, are on Proxy benchmarks.What it isn’t
Honesty matters more than a good headline, so: DNZ doesn’t give you a global anycast network with hundreds of locations, and it won’t soak up a terabit DDoS. That is what Cloudflare’s network is for, and DNZ doesn’t pretend otherwise. The good news is you don’t have to choose. Keep your public domains on Cloudflare and edit them from the same DNZ dashboard, while everything internal, and anything you’d rather keep close, runs on your own edge. Cloudflare sync copies records in either direction when you want to move a zone.One binary, one dashboard
What we like most about this setup isn’t any single feature. It’s that DNS, proxies, certificates, cache, firewall, status pages and analytics are one program with one source of truth. The topology map draws all of it: which names go through which proxies, to which servers. The audit log records who changed what. And the whole thing is scriptable from thednz CLI and the API.
Putting an edge in front of your servers was always a good idea. Now it can live in your server room.
Quickstart
Run DNZ and answer your first query in a few minutes.
Proxied records
How proxying works in DNZ.
dnz-proxy
Nodes, caching, the firewall and analytics.
Cloudflare integration
Manage Cloudflare zones from DNZ and move records between them.