[ldns-users] validating nsec responses with drill
Kal Feher
kal at securenic.net
Thu May 22 12:09:04 UTC 2014
Hello list,
I’ve been trying to get to the bottom of some odd behaviour with drill.
The behaviour I’m seeing appears to be limited to verifying nsec responses. When issuing the following query:
drill -a -4 -V 5 -d us -k uskey -TD 0.us
I receive the following response (trimmed for clarity):
;; AUTHORITY SECTION:
us. 900 IN SOA a.cctld.us. hostmaster.neustar.biz. 2011722984 900 900 604800 86400
us. 900 IN RRSIG SOA 5 1 900 20140621111356 20140522101356 28350 US. C44LuFw7+/QekEvR
US. 86400 IN NSEC 0-.us. NS SOA RRSIG NSEC DNSKEY TYPE65534
us. 86400 IN RRSIG NSEC 5 1 86400 20140617202559 20140518200713 28350 US. SjkrioUZ4T
;; Existence of data set with this name denied by NSEC
NSEC(3) Records to verify:
US. 86400 IN NSEC 0-.us. NS SOA RRSIG NSEC DNSKEY TYPE65534
With signatures:
correct keys:
us. 518400 IN DNSKEY 257 3 5 AwEAAcPLfBcYsSxr3IQFL;{id = 44323 (ksk), size = 2048b}
us. 518400 IN DNSKEY 257 3 5 AwEAAatM9tlDcd8gpSq+ ;{id = 55408 (ksk), size = 2048b}
us. 518400 IN DNSKEY 256 3 5 AwEAAZxMuH84tkVwYuP;{id = 14358 (zsk), size = 1024b}
us. 518400 IN DNSKEY 256 3 5 AwEAAZ6LjDKPJisyM73 ;{id = 28350 (zsk), size = 1024b}
[B] Error verifying denial of existence for 0.us. type A: No DNSSEC signature(s)
;;[S] self sig OK; [B] bogus; [T] trusted
Yet when I query for another non existent label:
drill -a -4 -V 5 -d us -k uskey -TD 0-000.us
I have succes:
;; AUTHORITY SECTION:
us. 900 IN SOA a.cctld.us. hostmaster.neustar.biz. 2011722996 900 900 604800 86400
us. 900 IN RRSIG SOA 5 1 900 20140621111552 20140522101552 28350 US. CKhVuRK1BsCBZw8ydZ45CiEz7
US. 86400 IN NSEC 0-.us. NS SOA RRSIG NSEC DNSKEY TYPE65534
us. 86400 IN RRSIG NSEC 5 1 86400 20140617202559 20140518200713 28350 US. SjkrioUZ4TauR5c7OGhGXy
0-00.US. 86400 IN NSEC 0-0000AKLUJVHZ.us. NS RRSIG NSEC
0-00.US. 86400 IN RRSIG NSEC 5 2 86400 20140613022320 20140514021623 28350 US. Q2ixTZVctcc2pD0WgMtL7
NSEC(3) Records to verify:
0-00.US. 86400 IN NSEC 0-0000AKLUJVHZ.us. NS RRSIG NSEC
With signatures:
0-00.US. 86400 IN RRSIG NSEC 5 2 86400 20140613022320 20140514021623 28350 US. Q2ixTZVctcc2pD0WgMtL7
correct keys:
us. 518400 IN DNSKEY 257 3 5 AwEAAcPLfBcYsSxr3IQFLeJraBpgwzHqd ;{id = 44323 (ksk), size = 2048b}
us. 518400 IN DNSKEY 256 3 5 AwEAAZxMuH84tkVwYuPk7+QDPQuq9 ;{id = 14358 (zsk), size = 1024b}
us. 518400 IN DNSKEY 256 3 5 AwEAAZ6LjDKPJisyM730QN6miz2cQCW ;{id = 28350 (zsk), size = 1024b}
us. 518400 IN DNSKEY 257 3 5 AwEAAatM9tlDcd8gpSq+Wlksu;{id = 55408 (ksk), size = 2048b}
[T] Existence denied: 0-000.us. A
;;[S] self sig OK; [B] bogus; [T] trusted
The signatures look fine, but for some reason they do not appear in the output for my first test above. This results in an error (RR count less than 1). Is it the case of the label (upper for NSEC, lower for its RRSIG) that is causing the issue for drill? I’ve flicked through the code going backwards from the error message but only got as far as ldns_verify() before my poor c skills failed me.
Am I missing an obvious DNSSEC error that I can’t see?
Kal
More information about the ldns-users
mailing list