1VALIDNS(1) General Commands Manual VALIDNS(1)
2
3
4
6 validns - DNS and DSNSEC zone file validator
7
9 This document describes validns version 0.8
10
12 validns -h validns [options] zone-file
13
14 For validating stdin, specify "-" in place of zone-file.
15
17 Coming soon.
18
20 -h Produce usage text and quit.
21
22 -f Quit on first validation error. Normally, validns continues
23 working on a zone after encountering a parsing or validation
24 error.
25
26 -p name
27 Activate policy check name. By default, only basic checks and
28 DNSSEC checks are performed. This option can be specified mul‐
29 tiple times. See POLICY CHECKS, below, for details. The fol‐
30 lowing names are understood:
31
32 · single-ns
33
34 · cname-other-data
35
36 · dname
37
38 · dnskey
39
40 · nsec3param-not-apex
41
42 · mx-alias
43
44 · ns-alias
45
46 · rp-txt-exists
47
48 · tlsa-host
49
50 · all
51
52 -n N Use N worker threads for parallelizable operations. The default
53 is 0, meaning no parallelization. Currently only signature ver‐
54 ification is parallelizable.
55
56 -q quiet - do not produce any output
57
58 -s print validation summary/stats
59
60 -x skip printing timing summary/stats
61
62 -v be extra verbose
63
64 -I path
65 use this path for $INCLUDE files
66
67 -z origin
68 use this origin as initial $ORIGIN
69
70 -t epoch-time
71 Use specified time instead of the current time when verifying
72 validity of the signatures. This option may be specified multi‐
73 ple times, in which case every signature is checked against all
74 specified times.
75
77 Every record and every supported directive should be parsable, which
78 consitutes the most basic check of all. The validns program will
79 report the exact reason why it cannot parse a record or a directive.
80
81 Other basic checks include:
82
83 · there could only be one SOA in a zone;
84
85 · the first record in the zone must be an SOA record;
86
87 · a record outside the apex;
88
89 · TTL values differ within an RR set (excepting RRSIG);
90
92 · type exists, but NSEC does not mention it for name;
93
94 · NSEC mentions type, but no such record found for name;
95
96 · NSEC says x is the last name, but z exists;
97
98 · NSEC says z comes after x, but nothing does;
99
100 · NSEC says z comes after x, but y does;
101
102 · signature is too new;
103
104 · signature is too old;
105
106 · RRSIG exists for non-existing type type;
107
108 · RRSIG's original TTL differs from corresponding record's;
109
110 · RRSIG(type): cannot find a signer key;
111
112 · RRSIG(type): cannot verify the signature;
113
114 · RRSIG(type): cannot find the right signer key;
115
116 · NSEC3 record name is not valid;
117
118 · multiple NSEC3 with the same record name;
119
120 · no corresponding NSEC3 found for name;
121
122 · type exists, but NSEC3 does not mention it for name;
123
124 · NSEC3 mentions type, but no such record found for name;
125
126 · there are more record types than NSEC3 mentions for name;
127
128 · broken NSEC3 chain, expected name, but nothing found;
129
130 · broken NSEC3 chain, expected name1, but found name2;
131
132 · NSEC3 without a corresponding record (or empty non-terminal).
133
135 · there should be at least two NS records per name (or zero);
136
137 · CNAME and other data (excluding possible RRSIG and NSEC);
138
139 · DNAME checks: no multiple DNAMEs, no descendants of a node with a
140 DNAME; please note that DNAME/CNAME clash is handled by CNAME and
141 other data check already;
142
143 · DNSKEY checks: public key too short, leading zero octets in public
144 key exponent or modulus;
145
146 · NSEC3PARAM, if present, should only be at the zone apex.
147
148 · MX exchange should not be an alias
149
150 · NS nsdname should not be an alias
151
152 · TXT domain name mentioned in RP record must have a corresponding TXT
153 record if it is within the zone
154
155 · domain name of a TLSA record must be a proper prefixed DNS name
156
158 · textual segments in TXT and HINFO must be enclosed in double quotes;
159
160 · there cannot be more than 20 textual segments in a TXT record;
161
162 · $INCLUDE directive is not implemented;
163
164 · a dot within a label is not currently supported;
165
166 If at least one NSEC3 record uses opt-out flag, validns assumes it is
167 used as much as possible, that is, every unsigned delegation does not
168 have a corresponding NSEC3 record. This is done for reasons of effi‐
169 ciency, to avoid calculating cryptographic hashes of every unsigned
170 delegation. If this assumption is wrong for a zone, validns will pro‐
171 duce spurious validation errors.
172
174 Thanks go to Andy Holdaway, Daniel Stirnimann, Dennis Kjaer Jensen,
175 Goran Bengtson, Hirohisa Yamaguchi, Hugo Salgado, Jake Zack, Jakob
176 Schlyter, Koh-ichi Ito, Mathieu Arnold, Miek Gieben, Patrik Wallstrom,
177 Paul Wouters, Ryan Eby, Tony Finch, Willem Toorop, and YAMAGUCHI
178 Takanori for bug reports, testing, discussions, and occasional patches.
179
180 Special thanks to Stephane Bortzmeyer and Phil Regnauld.
181
182 Thanks for AFNIC which funded major portion of the development. Thanks
183 for SWITCH for additional funding.
184
186 Anton Berezin.
187
188
189
190 April 2011 VALIDNS(1)