nsd-checkzone(8)
π nsd-checkzone β bestie's zone file vibe check
okay so this is nsd-checkzone, part of nsd (version 4.15.4) β the little syntax checker that makes sure your zone file isn't a whole mess before you hand it to the actual daemon. Your manual section 8 era π
β¨ SYNOPSIS β¨
nsd-checkzone [-h] zonename zonefile
πΈ DESCRIPTION πΈ
So here's the tea: nsd-checkzone reads a DNS zone file and checks it for errors. That's literally its whole job and it eats every time. π
It prints errors to stderr. And if something's wrong? On failure it exits with nonzero exit status β so like, the exit code is giving "nope" π
The whole point: this is used to check files before feeding them to the nsd(8) daemon. Vibe check first, serve later, periodt. π
π¦ OPTIONS π¦
-hβ Print usage help information and exit. That's it, that's the option. Very demure.zonenameβ The name of the zone to check, eg."example.com".zonefileβ The file to read, eg."zones/example.com.zone.signed". Use"-"to read from stdin. yes bestie, stdin is allowed, slay π-pβ Print the zone contents tostdoutif the zone is ok. Important nuance tho: this prints the contents as it has been parsed, not literally a copy of the input β it's as printed by the formatting routines in NSD, much like thensd-controlcommandwritedoes. So don't come for it expecting a mirror image, it's giving interpretation β¨-i<oldzonefile>β Create an IXFR from the differences between the old zone file and the new zone file. The argument to the-ioption is the old zone file, and the otherzonefileargument you passed is the new zonefile. Two files, one glow-up diff π«
The difference is computed between the two zonefiles by keeping one version of the zone in memory, and another version in a temporary file. The temporary file is located at the zonefile directory. This is also where the result is written, to a file with the zonefile name, ending with '.ixfr'. This is also where NSD reads it when IXFRs are configured for the zone.
The other existing ixfr files are renamed to become older IXFR contents for the zone, if any such files exist. If the output file already exists with the correct contents, no new file is created. The contents of the header of the output file are checked for that, if it already exists. (efficient queen behavior π)
-n<ixfr number>β The number of IXFR versions to store, at most. Default5. This is the number of files that is created withixfrcontents for the zone. Older stored IXFR versions are deleted when the number is exceeded. Purge era π-s<ixfr size>β The number of bytes of storage to use for IXFRs. Default is1048576. If an IXFR is bigger it is not created, and if the sum of IXFR storage exceeds it, older IXFRs versions are deleted. Budget queen β no unchecked growth in this house π
β οΈ heads up bestie:-iwrites into the zonefile directory and rotates your existingixfrfiles. That's by design, but likeβ¦ know that's what's happening before you run it, fr fr π
π₯ SEE ALSO π₯
go read those too, they're the supporting cast and they ate π
π AUTHORS π
NSD was written by NLnet Labs and RIPE NCC joint team. Please see the CREDITS file in the distribution for further details. iconic collaborative energy honestly π«Ά
mwah π that's the whole page β brought to you by the legends at NLnet Labs, dated okt 21, 2026, living in nsd 4.15.4 land. now go check those zones bestie, iykyk β¨π
π¦ where this page comes from
- epel 10: nsd 4.15.4-1.el10_3 Β· BSD-3-Clause
- epel 9: nsd 4.15.4-1.el9 Β· BSD-3-Clause
- nixpkgs unstable: nsd 4.15.4
- Copyright (c) 2014-2024, NLnet Labs. All rights reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms