Delegation
Does the parent zone agree with yours?
- Parent and child NS sets
- Lame delegations
- Glue mismatches
zoneblick asks every authoritative nameserver for every record you care about, checks the answers, and keeps a history. When something changes, breaks, or is left dangling, you hear about it first.
Three records changed in example.org. One nameserver has not caught up.
| Nameserver | SOA serial |
|---|---|
| ns1.example.org | 2026111302 |
| ns2.example.org | 2026111302 |
| ns3.example.net | 2026111302 |
| ns4.example.net | 2026111301 |
DNS drift is the gap between what you believe your DNS says and what your nameservers answer today.
Records get added, changed and abandoned over months and years. Each change is small and most are harmless. DNS has no way to tell you when one of them is a mistake, so the gap grows until something breaks or someone else finds it.
Drift is silent, and its cost grows with the time it goes unnoticed. A dangling record can be claimed from the moment the resource behind it is released.
Confirm the edit reached every nameserver and that nothing else moved with it.
Finds takeover exposure, stale secondaries and unplanned edits within the hour. A run over a few hundred names is a few thousand small queries.
Enough for the slow problems: signatures nearing expiry, SPF creeping toward its limit, a policy record that went missing.
An occasional check finds the slow rot. A frequent check catches an incident while it is still small.
Each check has a stable ID, a severity, and the evidence behind it. No recursive resolver sits in the middle, so you see what the authoritative servers really say.
Light runHourly. Twenty-six checks across the whole fleet.
Does the parent zone agree with yours?
Do all your nameservers say the same thing?
Is the chain of trust intact, and for how long?
Are the records that guard mail and certificates sound?
Does anything point at a resource you no longer own?
Fourteen more checks that take extra queries per nameserver. Each one was chosen because its result changes over time, so the history shows when a zone went wrong as well as that it is wrong.
Deep runDaily by default, or on demand for a single zone.
Does signing hold up through rollovers and re-signing?
Does each nameserver still behave after its last upgrade?
Would one network failure take every nameserver with it?
Is the zone's own housekeeping record sound?
After v1The deep checks are planned for the release after the first one. A diagram of each zone's DNSSEC chain, with before-and-after comparison across runs, ships with the first web UI.
The same five steps on every schedule tick, or once from the command line.
Follow referrals down to your zone and record the whole delegation path, glue included.
Query each authoritative nameserver directly for each name and type, over UDP and TCP, IPv4 and IPv6.
Run the catalog against what came back: the light checks on every run, the deep checks once a day. Checks are pure rules over stored answers, so results are repeatable.
Store the run in SQLite. Unchanged record sets are deduplicated, so years of history stay small.
Compare with the last run and your pinned baseline. Rotating CDN pools are recognised and kept quiet. You get one alert when a finding opens and one when it closes.
Good tools exist for each part of this job. None of the open-source ones covers zone health, takeover exposure and drift history together while keeping your zone data on your own server.
| Tool | Core zone health | Deep analysis | Takeover exposure | Drift history | Self-hosted |
|---|---|---|---|---|---|
| Zonemaster, DNSViz | Yes | Full | No | No, one shot | Yes |
| BadDNS, dnsReaper | No | No | Deep | No | Yes |
| Hosted DNS monitors | Partial | Varies | Partial | Yes | No |
| zoneblick | 26 checks, hourly | 14 selected checks, daily | Imported signatures | Every run | One binary |
Six things the existing tools leave to you, and what zoneblick does about each.
TodayZonemaster and DNSViz analyse one zone when you ask. They are not built to watch dozens of zones on a schedule and alert you when one changes.
With zoneblickEvery zone is checked on a schedule. Each run is stored and compared with the last one, so you can see what changed and when.
TodayZone-health tools do not look for takeover risk, and takeover scanners do not check delegation, serial sync or DNSSEC. You run two tools and reconcile two reports.
With zoneblickBoth sets of checks run over the same answers and land in one list of findings, with one severity scale and one history.
TodayMost services that track DNS changes over time are hosted. Your record inventory, including the list of dangling records, sits on someone else's server.
With zoneblickOne binary on your own server. The data is a single SQLite file that you own and can back up, export or delete.
TodayMany monitors ask a public resolver, or a single nameserver. A stale secondary, or a server that fails only over TCP or IPv6, goes unseen.
With zoneblickEach authoritative server is queried directly over UDP and TCP, IPv4 and IPv6, and the answers are compared server by server.
TodayConfig tools such as dnscontrol and OctoDNS confirm that your provider matches your config file. They do not see the parent's delegation, a lagging secondary or expiring signatures.
With zoneblickResolution starts at the root and follows the real delegation, so the result is what a resolver would receive.
TodayA plain record diff fires every time a CDN or round-robin pool rotates its addresses, and people soon mute it.
With zoneblickNames that rotate are recognised and tracked as pools. You are alerted when a finding opens and when it closes.
What it does not replace. The deep checks borrow a selected part of what Zonemaster and DNSViz do. Those tools still go further on a single zone, so findings link straight to them when you need a closer look. The takeover checks in zoneblick use the signature sets that the BadDNS, dnsReaper and Nuclei communities maintain.
One binary, one config file, one SQLite file. There is no hosted version and no account to create.
No config and no database. Exit code follows severity, so it works in CI.
zoneblick check example.org
Scheduler, web UI and alerts. Put it behind your reverse proxy.
# /etc/zoneblick/zoneblick.toml
[[zone]]
name = "example.org"
seeds = ["www", "api", "mail"]
zoneblick serve
One image, one volume for data, one mounted config file.
docker run -d \ -v ./data:/data \ -v ./zoneblick.toml:/etc/zoneblick.toml \ -p 127.0.0.1:8053:8053 \ zoneblick serve
In designzoneblick is not released yet. The commands above show the planned interface. The first milestone is the one-shot check command.