DTCONFCHK(1)
π DTCONFCHK π
okay bestie, gather round, because this is dtconfchk from the User Contributed Perl Documentation section of the manual, and it is literally the vibe-checker for your DNSSEC-Tools config files. let's get into it π¦
β¨ NAME β¨
dtconfchk β Check a DNSSEC-Tools configuration file for sanity πΈ
β¨ SYNOPSIS β¨
dtconfchk [options] [config_file]
β¨ DESCRIPTION β¨
so what does dtconfchk actually do? it reads a DNSSEC-Tools configuration file and figures out whether all the entries in it are valid. that's it, that's the job. and if you don't hand it a config file? no worries, it'll go verify the system configuration file instead. main character energy, honestly π
without any display options, dtconfchk just shows you error messages for whatever problems it found, then hits you with a summary line. the display options can crank the detail up or down depending on how nosy you're feeling about the config file's sanity. and in every single case, the exit code is the count of errors found in the file. periodt π
the tests are split into five groups:
- key-related checks π
- zone-related checks π
- path checks π£οΈ
- rollover checks π
- miscellaneous checks π
and yeah, the checks in each of these self-explanatory groups are described below, don't worry.
π¨ important: the default_keyrec configuration entry is not checked. that entry specifies the default keyrec file name, and it isn't necessarily expected to exist in any particular place. so like, it gets a pass. iconic of it.
π Boolean Values
the DNSSEC-Tools configuration file has a bunch of fields that are expected to hold boolean values. the recognized values for booleans are:
true values - 1, true, t, yes, y
false values - 0, false, f, no, n
positive values greater than 1 are recognized as true values, but ngl it probably would be best to just use 1. like, why would you do that to yourself π
and text values that aren't in the set above? not valid, bestie. they will translate to false values. sorry not sorry.
π Key-related Checks
the following key-related checks are performed:
algorithmβ make sure thealgorithmfield is valid. the acceptable values may be found in thednssec-keygenman page. πksklengthβ make sure theksklengthfield is valid. the acceptable values may be found in thednssec-keygenman page. this may also be specified asksklen.ksklifeβ make sure theksklifefield is valid. the acceptable values may be found in thedefaults.pmman page.zskcountβ make sure thezskcountfield is valid. the ZSK count must be positive. no zeroes, no negatives, we're being real here.zsklengthβ make sure thezsklengthfield is valid. the acceptable values may be found in thednssec-keygenman page. this may also be specified aszsklen.zsklifeβ make sure thezsklifefield is valid. the acceptable values may be found in thedefaults.pmman page.randomβ make sure therandomfield is valid. this file must be a character device file. π₯
π Zone-related Checks
the following zone-related checks are performed:
endtimeβ make sure theendtimefield is valid. this value is assumed to be in the"+NNNNNN"format. there's a lower limit of two hours. (this is an artificial limit under which it may not make sense to have an end-time.) π
π£οΈ Path Checks
path checks get run for several DNSSEC-Tools commands, several BIND commands, and a few miscellaneous files. let's go group by group π«
the following path checks are performed for DNSSEC-Tools commands:
genkrfβ make sure thegenkrffield is valid. if the filename starts with a/, the file must be a regular executable file.keyarchβ make sure thekeyarchfield is valid. if the filename starts with a/, the file must be a regular executable file.rollchkβ make sure therollchkfield is valid. if the filename starts with a/, the file must be a regular executable file.rollctlβ make sure therollctlfield is valid. if the filename starts with a/, the file must be a regular executable file.zonesignerβ make sure thezonesignerfield is valid. if the filename starts with a/, the file must be a regular executable file.
the following path checks are performed for BIND tools:
keygenβ make sure thekeygenfield is valid. if the filename starts with a/, the file must be a regular executable file.rndcβ make sure therndcfield is valid. if the filename starts with a/, the file must be a regular executable file.zonecheckβ make sure thezonecheckfield is valid. if the filename starts with a/, the file must be a regular executable file.zonesignβ make sure thezonesignfield is valid. if the filename starts with a/, the file must be a regular executable file.
the following path checks are performed for miscellaneous files and directories:
randomβ make sure therandomfield is valid. the file must be a character device file.roll_logfileβ make sure theroll_logfilefield is a regular file.taresolvconfβ make sure thetaresolvconffield is a regular file.tatmpdirβ make sure thetatmpdirfield is a directory. π
π Rollover Daemon Checks
the following checks are performed for rollerd values:
autosignβ make sure that theautosignflag is a valid boolean.log_tzβ make sure thelog_tzfield is either'gmt'or'local'.prog_normal,prog_ksk1...prog_ksk7,prog_zsk1...prog_zsk4β make sure that the rollover phase commands are valid paths. each of these fields is a semicolon-separated command list. the file checks are run on the commands to make sure the commands exist and are executable. options and arguments to the commands are ignored, as is thedefaultkeyword. πroll_loadzoneβ make sure that theroll_loadzoneflag is a valid boolean.roll_logfileβ make sure that the log file for therollerdis valid. if the file exists, it must be a regular file.roll_loglevelβ make sure that the logging level for therollerdis reasonable. the log level must be one of the following text or numeric values:tmi,1β Overly verbose informational messages.expire,3β A verbose countdown of zone expiration is given.info,4β Informational messages.phase,6β Current state of zone.err,8β Error messages.fatal,9β Fatal errors.
specifying a particular log level will causes messages of a higher numeric value to also be displayed. (yes, the original says "causes". we're keeping it fr fr π)
roll_sleeptimeβ make sure that therollerd's sleep-time is reasonable.rollerd's sleep-time must be at least one minute. π΄roll_usernameβ make sure that the username forrollerdis valid. if it's a username, it must be translatable to a uid; if it's a uid, it must translate to a known username.zone_errorsβ make sure that the zone error count is numeric and0or greater.
π NSEC3 Checks
the following checks are performed for NSEC3-related values:
nsec3iterβ make sure that thensec3iteriteration count falls within the range used bydnssec-signzone. the current values are from1-65535.nsec3optoutβ make sure that thensec3optoutflag is a valid boolean.usensec3β make sure that theusensec3flag is a valid boolean.
π Miscellaneous Checks
the following miscellaneous checks are performed:
admin-emailβ make sure that theadmin-emailfield is defined and has a value.dtconfchkdoes not try to validate the email address itself. so put literally anything in there, it's not gonna judge the format πarchivedirβ make sure that thearchivedirdirectory is actually a directory. this check is only performed if thesavekeysflag is set on.entropy_msgβ make sure that theentropy_msgflag is a valid boolean.savekeysβ make sure that thesavekeysflag is a valid boolean. if this flag is set to1, then thearchivedirfield will also be checked.useguiβ make sure that theuseguiflag is a valid boolean.zonefile-parserβ make sure that thezonefile-parserflag is a valid Perl module. this is checked by using the Perl"require"facility to load the specified module. π¦
β¨ OPTIONS β¨
-expertβ this option will bypass the following checks:- KSK has a longer lifespan than the configuration file's default minimum lifespan
- KSK has a shorter lifespan than the configuration file's default maximum lifespan
- ZSKs have a longer lifespan than the configuration file's default minimum lifespan
- ZSKs have a shorter lifespan than the configuration file's default maximum lifespan
-quietβ no output will be given. the number of errors will be used as the exit code. silent but deadly π€«-summaryβ a final summary of success or failure will be printed. the number of errors will be used as the exit code.-verboseβ success or failure status of each check will be given. a+or-prefix will be given for each valid and invalid entry. the number of errors will be used as the exit code. this is the nosy option, and we love her for it π-Versionβ displays the version information fordtconfchkand the DNSSEC-Tools package.-helpβ display a usage message.
β¨ COPYRIGHT β¨
Copyright 2004-2014 SPARTA, Inc. All rights reserved. See the COPYING file included with the DNSSEC-Tools package for details.
β¨ AUTHOR β¨
Wayne Morrison, tewok@tislabs.com
β¨ SEE ALSO β¨
dtdefs(8),dtinitconf(8),rollerd(8),zonesigner(8)Net::DNS::SEC::Tools::conf.pm(3),Net::DNS::SEC::Tools::defaults.pm(3)dnssec-tools.conf(5)
and that's the whole page, bestie π«Ά this was perl v5.42.0, dated 2025-07-23, and it's giving manual page, but make it iconic πβ¨ go check your config files, you got this π
π¦ where this page comes from
- fedora 43: dnssec-tools 2.2.3-30.fc43 Β· LicenseRef-Callaway-BSD
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms