1GENREPORT() genreport(1) GENREPORT()
2
3
4
6 genreport - generate a report about DNS server compliance.
7
9 genreport [-46abBcdDeEfjLnopPRstT] [-i test] [-I test] [-m maxoutstand‐
10 ing] [-r server]
11
13 genreport tests DNS servers responses to a variety of different queries
14 and remotes if the response is compliant with the relevant RFCs.
15
16 genreport takes a list of zone names with optional server names and/or
17 IP address (one per line). If only the zone name is provided the list
18 of name servers for the zone will be looked up followed by the ad‐
19 dresses of all the servers for those name servers. If the zone and name
20 server name is specified then only the addresses of that name server
21 will be used for testing. If zone, server and address are given then
22 only that address will be used for testing. The server is a placeholder
23 field.
24
25 There are four grouping of tests EDNS (default), FULL (includes EDNS),
26 COMMON and TYPE.
27
28 Options are order dependent.
29
31 -4 only query IPv4 servers.
32
33 -6 only query IPv6 servers.
34
35 -a only emit ´all ok´ rather than a result for each sub test.
36
37 -A only emit ´all (ok|refused|servfail|timeout)´ rather than a re‐
38 sult for each sub test taking into account EDNS version process‐
39 ing.
40
41 -b only emit bad servers.
42
43 -B only emit bad tests.
44
45 -c add common queries to the set of tests to be made.
46
47 -d enable debugging.
48
49 -D list tests and matching dig command
50
51 -e edns test.
52
53 -E EDNS only. Only emit a report if there has been a valid EDNS re‐
54 sponse.
55
56 -f add full mode tests (includes edns).
57
58 -g look for glue (nameserver, address pairs) then qualify matching
59 zone, ns pairs.
60
61 -G only use glue to qualify zone, ns pairs.
62
63 -i test
64 add a individual test.
65
66 -I test
67 remove a individual test.
68
69 -h emit json.
70
71 -L list tests and their grouping.
72
73 -m maxoutstanding
74 set the maximum number of outstanding DNS queries in progress.
75
76 -n report the NSID value if found.
77
78 -o restore the output order rather than printing each server as the
79 tests for that server complete.
80
81 -p run tests in parallel.
82
83 -P port
84 specify a alternate port to query (default 53).
85
86 -r server
87 use specified recursive server to look up name servers for a
88 zone and addresses.
89
90 -R run recursive tests.
91
92 -s serialize tests.
93
94 -t type tests (serial) - test the server´s handling of different
95 query types. This disables any previous -c, -e (default), and -f
96 switch. To get TYPE test with EDNS, FULL or COMM tests you need
97 to specify them after the -t switch.
98
99 -T print type list for type test (-t).
100
101 -u only test a IP address once.
102
103 -U delay between UDP requests to a server in milliseconds (default:
104 113, range: [0..1000]).
105
107 Test all servers for a zone
108 % echo isc.org | genreport -po
109
110 This runs all the tests in parallel against a server (-p) and the out‐
111 put order (-o) is preserved.
112
113 Test a specific server for a zone by name
114 % echo isc.org ams.sns-pb.isc.org | genreport
115
116 Test a specific server for a zone by address
117 % echo isc.org ams.sns-pb.isc.org 199.6.1.30 | genreport
118
119 The server name is ignored other than to be placed in the report.
120
121 Test all servers in the root zone
122 % dig axfr . | awk ´$4 == "NS" { print $1, $5 }´ > list
123 % genreport -so < list
124
125 This generates a seperate list as the AXFR will timeout when the pipe‐
126 line stalls. The tests are run in serial (-s) against a server and the
127 output is reordered to preserve the input order (-o).
128
129 Test all servers in the root zone against the in-zone address records
130 % dig axfr . |
131 > tr ´[a-z]´ ´[A-Z]´ |
132 > awk ´$4 == "NS" {
133 > ns[$1 " " $5] = $5
134 > }
135 > $4 == "A" {
136 > if (a[$1]) {
137 > a[$1] = a[$1] " " $5
138 > } else {
139 > a[$1] = $5
140 > }
141 > }
142 > $4 == "AAAA" {
143 > if (aaaa[$1]) {
144 > aaaa[$1] = aaaa[$1] " " $5
145 > } else {
146 > aaaa[$1] = $5
147 > }
148 > }
149 > END {
150 > for (n in ns) {
151 > split(n, k, " ")
152 > if (a[k[2]]) {
153 > split(a[k[2]], l, " ")
154 > for (m in l) print(n, l[m])
155 > }
156 > if (aaaa[k[2]]) {
157 > split(aaaa[k[2]], l, " ")
158 > for (m in l) print(n, l[m])
159 > }
160 > }
161 > }´ |
162 > sort > list
163 % genreport -so < list
164
165 Test all the root servers handling of different query types.
166 echo . | genreport -ta
167
168 As the type list is long we also collapse the output to "all ok" (-a)
169 if all subtests to a particular server succeed.
170
171 Test all the glue servers in a zone.
172 % dig axfr zone > file
173 % ( awk ´$4 == "A" || $4 == "AAAA" { print $1, $5 }´ file;
174 > awk ´$4 == "NS" { print $1, $5 }´ file ) | genreport -gG
175
176 Test a recursive server
177 For this you should give it the name of a zone with DNSSEC records if
178 possible.
179
180 echo isc.org localhost | genreport -R
181
182 or
183
184 echo isc.org . <address of server> | genreport -R
185
187 dns EDNS
188 Send a plain DNS query with type code SOA.
189
190 aa FULL
191 Send a plain DNS query with type code SOA and AA set to 1.
192
193 ad FULL
194 Send a plain DNS query with type code SOA and AD set to 1.
195
196 cd FULL
197 Send a plain DNS query with type code SOA and CD set to 1.
198
199 ra FULL
200 Send a plain DNS query with type code SOA and RA set to 1.
201
202 rd FULL
203 Send a plain DNS query with type code SOA and RD set to 1.
204
205 tc FULL
206 Send a plain DNS query with type code SOA and TC set to 1.
207
208 zflag FULL
209 Send a plain DNS query with type code SOA and the remaining re‐
210 served DNS header flag set to 1.
211
212 opcode FULL
213 Send a request with a unknown opcode (15).
214
215 opcodeflg FULL
216 Send a request with a unknown opcode (15) and the following flag
217 bits set to 1 (tc, rd, ra, cd, ad, aa, and z).
218
219 type666 FULL
220 Send a plain DNS query with type code 666. This is used to test
221 unknown type code handling.
222
223 tcp FULL
224 Send a plain DNS query with type code SOA over TCP.
225
226 edns EDNS
227 Send a EDNS version 0 query with type code SOA.
228
229 edns1 EDNS
230 Send a EDNS query with a unknown version (1) and type code SOA.
231
232 edns@512 EDNS
233 Send a EDNS version 0 query with type code DNSKEY, DO set to 1
234 and the EDNS buffer size set to 512. This query is attempting to
235 elicit a truncated EDNS response.
236
237 ednsopt EDNS
238 Send a EDNS version 0 query with type code SOA and a undefined
239 EDNS option code (100).
240
241 edns1opt EDNS
242 Send a EDNS query with a unknown version (1), type code SOA and
243 a undefined EDNS option code (100).
244
245 do EDNS
246 Send a EDNS version 0 query with type code SOA and DO set to 1.
247
248 docd FULL
249 Send a FULL version 0 query with type code SOA, DO set to 1 and
250 CD set to 1.
251
252 edns1do FULL
253 Send a EDNS query with a unknown version (1), type code SOA and
254 DO set to 1.
255
256 ednsflags EDNS
257 Send a EDNS version 0 query with type code SOA and a undefined
258 EDNS flag bit set to 1.
259
260 optlist EDNS
261 Send a EDNS version 0 query with type code SOA and EDNS options
262 NSID, ECS, EXPIRE, and COOKIE.
263
264 ednsnsid FULL
265 Send a EDNS version 0 query with type code SOA and EDNS option
266 NSID.
267
268 ednscookie FULL
269 Send a EDNS version 0 query with type code SOA and EDNS option
270 COOKIE.
271
272 ednsexpire FULL
273 Send a EDNS version 0 query with type code SOA and EDNS option
274 EXPIRE.
275
276 ednssubnet FULL
277 Send a EDNS version 0 query with type code SOA and EDNS option
278 ECS.
279
280 edns1nsid FULL
281 Send a EDNS query with a unknown version (1), type code SOA and
282 EDNS option NSID.
283
284 edns1cookie FULL
285 Send a EDNS query with a unknown version (1), type code SOA and
286 EDNS option COOKIE.
287
288 edns1expire FULL
289 Send a EDNS query with a unknown version (1), type code SOA and
290 EDNS option EXPIRE.
291
292 edns1subnet FULL
293 Send a EDNS query with a unknown version (1), type code SOA and
294 EDNS option ECS.
295
296 ednstcp EDNS
297 Send a EDNS version 0 query with type code SOA over TCP.
298
299 bind11 COMM
300 Send a query that is typical of what named from BIND 9.11 sends.
301
302 dig11 COMM
303 Send a query that is typical of what dig from BIND 9.11 sends.
304
305 dnswkk Send a plain DNS request with TSIG signature. The key is name is
306 ".", the algorithm is "hmac-sha256", the secret is 0-32 zero
307 bytes.
308
309 icmp Send a icmp / icmp6 echo request.
310
311 A TYPE Send a plain DNS query with type code A.
312
313 NS TYPE
314 Send a plain DNS query with type code NS.
315
316 MD TYPE
317 Send a plain DNS query with type code MD.
318
319 MF TYPE
320 Send a plain DNS query with type code MF.
321
322 CNAME TYPE
323 Send a plain DNS query with type code CNAME.
324
325 SOA TYPE
326 Send a plain DNS query with type code SOA.
327
328 MB TYPE
329 Send a plain DNS query with type code MB.
330
331 MG TYPE
332 Send a plain DNS query with type code MG.
333
334 MR TYPE
335 Send a plain DNS query with type code MR.
336
337 NULL TYPE
338 Send a plain DNS query with type code NULL.
339
340 WKS TYPE
341 Send a plain DNS query with type code WKS.
342
343 PTR TYPE
344 Send a plain DNS query with type code PTR.
345
346 HINFO TYPE
347 Send a plain DNS query with type code HINFO.
348
349 MINFO TYPE
350 Send a plain DNS query with type code MINFO.
351
352 MX TYPE
353 Send a plain DNS query with type code MX.
354
355 TXT TYPE
356 Send a plain DNS query with type code TXT.
357
358 RP TYPE
359 Send a plain DNS query with type code RP.
360
361 AFSDB TYPE
362 Send a plain DNS query with type code AFSDB.
363
364 X25 TYPE
365 Send a plain DNS query with type code X25.
366
367 ISDN TYPE
368 Send a plain DNS query with type code ISDN.
369
370 RT TYPE
371 Send a plain DNS query with type code RT.
372
373 NSAP TYPE
374 Send a plain DNS query with type code NSAP.
375
376 NSAP-PTR TYPE
377 Send a plain DNS query with type code NSAP-PTR.
378
379 SIG TYPE
380 Send a plain DNS query with type code SIG.
381
382 KEY TYPE
383 Send a plain DNS query with type code KEY.
384
385 PX TYPE
386 Send a plain DNS query with type code PX.
387
388 GPOS TYPE
389 Send a plain DNS query with type code GPOS.
390
391 AAAA TYPE
392 Send a plain DNS query with type code AAAA.
393
394 LOC TYPE
395 Send a plain DNS query with type code LOC.
396
397 NXT TYPE
398 Send a plain DNS query with type code NXT.
399
400 SRV TYPE
401 Send a plain DNS query with type code SRV.
402
403 NAPTR TYPE
404 Send a plain DNS query with type code NAPTR.
405
406 KX TYPE
407 Send a plain DNS query with type code KX.
408
409 CERT TYPE
410 Send a plain DNS query with type code CERT.
411
412 A6 TYPE
413 Send a plain DNS query with type code A6.
414
415 DNAME TYPE
416 Send a plain DNS query with type code DNAME.
417
418 APL TYPE
419 Send a plain DNS query with type code APL.
420
421 DS TYPE
422 Send a plain DNS query with type code DS.
423
424 SSHFP TYPE
425 Send a plain DNS query with type code SSHFP.
426
427 IPSECKEY TYPE
428 Send a plain DNS query with type code IPSECKEY.
429
430 RRSIG TYPE
431 Send a plain DNS query with type code RRSIG.
432
433 NSEC TYPE
434 Send a plain DNS query with type code NSEC.
435
436 DNSKEY TYPE
437 Send a plain DNS query with type code DNSKEY.
438
439 DHCID TYPE
440 Send a plain DNS query with type code DHCID.
441
442 NSEC3 TYPE
443 Send a plain DNS query with type code NSEC3.
444
445 NSEC3PARAM TYPE
446 Send a plain DNS query with type code NSEC3PARAM.
447
448 TLSA TYPE
449 Send a plain DNS query with type code TLSA.
450
451 SMIMEA TYPE
452 Send a plain DNS query with type code SMIME.
453
454 HIP TYPE
455 Send a plain DNS query with type code HIP.
456
457 CDS TYPE
458 Send a plain DNS query with type code CDS.
459
460 CDNSKEY TYPE
461 Send a plain DNS query with type code CDNSKEY.
462
463 OPENPGPKEY TYPE
464 Send a plain DNS query with type code OPENPGPKEY.
465
466 SPF TYPE
467 Send a plain DNS query with type code SPF.
468
469 NID TYPE
470 Send a plain DNS query with type code NID.
471
472 L32 TYPE
473 Send a plain DNS query with type code L32.
474
475 L64 TYPE
476 Send a plain DNS query with type code L64.
477
478 LP TYPE
479 Send a plain DNS query with type code LP.
480
481 EUI48 TYPE
482 Send a plain DNS query with type code EUI48.
483
484 EUI64 TYPE
485 Send a plain DNS query with type code EUI64.
486
487 URI TYPE
488 Send a plain DNS query with type code URI.
489
490 CAA TYPE
491 Send a plain DNS query with type code CAA.
492
493 AVC TYPE
494 Send a plain DNS query with type code AVC.
495
496 DOA TYPE
497 Send a plain DNS query with type code DOA.
498
499 DLV TYPE
500 Send a plain DNS query with type code DLV.
501
502 TYPE1000 TYPE
503 Send a plain DNS query with type code 1000. This is used to test
504 unknown type code handling.
505
507 dig(1), named(8).
508
509
510
511Internet Systems Consortium August 2023 GENREPORT()