SERVFAIL on added KSK (DNSSEC) without reload of unbound

Peter Larsen peter.larsen at larsendata.dk
Wed Aug 21 10:18:11 UTC 2019


I have seen this for a while

My conclusion is that unbound caches the KSK/ZSK’s with the first result, then on the second queries (after the zone is added with more KSK/ZSK’s) it uses the cache to search for the keyset, and does not find it.

it would eventually resolve itself if unbound is reloaded (killed) or the first (initiel) query expire’s in TTL.. (not 100% sure on the second claim, but it will reset and start to work eventually)


is this something anyone else have seen?



unbound tested here is 1.9.2, but i have seen it in quite a few versions

asking for soa for the zone:

$ dig -p 5353 @ xxxxxxxxx domain11.dk +dnssec soa

; <<>> DiG 9.10.6 <<>> -p 5353 @ xxxxxxxxx domain11.dk +dnssec soa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18271
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;domain11.dk.			IN	SOA

;; ANSWER SECTION:
domain11.dk.		42513	IN	SOA	ns1.gratisdns.dk. hostmaster.gratisdns.dk. 2019082008 14400 3600 2419000 43200
domain11.dk.		42513	IN	RRSIG	SOA 8 2 43200 20190919111321 20190820111321 39459 domain11.dk. BVw1mc/q4arnQAYOiAno50dHs1EP4xm9MCotfg5JTgzbtaobb60GKa/U rUCHT4n4U2DvjyZl+5QfIM6G2pImYiN33wYXMilLcAsfzStMxqL8ISGq HWoh8DLDSh0ZJSF3KDfnJEeOe6mOtLqSEwwX/yx9RcLkxC4S5SsLcdCS XfpN/64z4KqmDmQeh08bntLZmm1h4nz1V9cTquyPT+pQ5fJm0fg0k1c4 FB0yI9c+ObkK+LDrhUPLmPxsi9MT0BZtu2ruIxmYrsdegfJoOEU5RQbr oL1WbbeJqsrNYQTBGhDCSvmorRNwxi71FCJM3Lvd9pIUsHbdXo++7G5j ZwiFng==

;; Query time: 1 msec
;; SERVER: xxxxxxxxx#5353(xxxxxxxxx)
;; WHEN: Tue Aug 20 15:11:54 CEST 2019
;; MSG SIZE  rcvd: 400


I add a KSK/ZSK, reload it, soa updates on all auth nameservers, checks cache dns (I do not add the KSK to the registry, it’s not needed for the error):

asking for either a TXT or a SOA of a subdomain (nonecached answer):


$ dig -p 5353 @ xxxxxxxxx domain11.dk +dnssec txt

; <<>> DiG 9.10.6 <<>> -p 5353 @ xxxxxxxxx domain11.dk +dnssec txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 59798
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;domain11.dk.			IN	TXT

;; Query time: 242 msec
;; SERVER: xxxxxxxxx#5353(xxxxxxxxx)
;; WHEN: Tue Aug 20 15:19:12 CEST 2019
;; MSG SIZE  rcvd: 40



the original (pre KSK/ZSK add) still answers correctly

$ dig -p 5353 @xxxxxxxxx domain11.dk +dnssec soa

; <<>> DiG 9.10.6 <<>> -p 5353 @xxxxxxxxx domain11.dk +dnssec soa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51775
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;domain11.dk.			IN	SOA

;; ANSWER SECTION:
domain11.dk.		41305	IN	SOA	ns1.gratisdns.dk. hostmaster.gratisdns.dk. 2019082008 14400 3600 2419000 43200
domain11.dk.		41305	IN	RRSIG	SOA 8 2 43200 20190919111321 20190820111321 39459 domain11.dk. BVw1mc/q4arnQAYOiAno50dHs1EP4xm9MCotfg5JTgzbtaobb60GKa/U rUCHT4n4U2DvjyZl+5QfIM6G2pImYiN33wYXMilLcAsfzStMxqL8ISGq HWoh8DLDSh0ZJSF3KDfnJEeOe6mOtLqSEwwX/yx9RcLkxC4S5SsLcdCS XfpN/64z4KqmDmQeh08bntLZmm1h4nz1V9cTquyPT+pQ5fJm0fg0k1c4 FB0yI9c+ObkK+LDrhUPLmPxsi9MT0BZtu2ruIxmYrsdegfJoOEU5RQbr oL1WbbeJqsrNYQTBGhDCSvmorRNwxi71FCJM3Lvd9pIUsHbdXo++7G5j ZwiFng==

;; Query time: 1 msec
;; SERVER: xxxxxxxxx#5353(xxxxxxxxx)
;; WHEN: Tue Aug 20 15:32:01 CEST 2019
;; MSG SIZE  rcvd: 400



if unbound is reloaded (killed and started again) it works…

some debug info


before adding a extra KSK/ZSK


[1566303150] unbound[67502:0] debug: iter_handle processing q with state QUERY RESPONSE STATE
[1566303150] unbound[67502:0] info: query response was nodata ANSWER
[1566303150] unbound[67502:0] debug: iter_handle processing q with state FINISHED RESPONSE STATE
[1566303150] unbound[67502:0] info: finishing processing for domain11.dk. TXT IN
[1566303150] unbound[67502:0] debug: mesh_run: iterator module exit state is module_finished
[1566303150] unbound[67502:0] debug: validator[module 0] operate: extstate:module_wait_module event:module_event_moddone
[1566303150] unbound[67502:0] info: validator operate: query domain11.dk. TXT IN
[1566303150] unbound[67502:0] debug: validator: nextmodule returned
[1566303150] unbound[67502:0] debug: val handle processing q with state VAL_INIT_STATE
[1566303150] unbound[67502:0] debug: validator classification nodata
[1566303150] unbound[67502:0] info: signer is domain11.dk. TYPE0 CLASS0
[1566303150] unbound[67502:0] debug: val handle processing q with state VAL_FINDKEY_STATE
[1566303150] unbound[67502:0] info: validator: FindKey domain11.dk. TXT IN
[1566303150] unbound[67502:0] debug: val handle processing q with state VAL_VALIDATE_STATE
[1566303150] unbound[67502:0] info: verify rrset domain11.dk. SOA IN
[1566303150] unbound[67502:0] debug: verify sig 39600 8
[1566303150] unbound[67502:0] debug: verify result: sec_status_secure
[1566303150] unbound[67502:0] info: verify rrset domain11.dk. NSEC IN
[1566303150] unbound[67502:0] debug: verify sig 39600 8
[1566303150] unbound[67502:0] debug: verify result: sec_status_secure
[1566303150] unbound[67502:0] debug: Validating a nodata response
[1566303150] unbound[67502:0] debug: successfully validated NODATA response.
[1566303150] unbound[67502:0] info: validate(nodata): sec_status_secure
[1566303150] unbound[67502:0] debug: val handle processing q with state VAL_FINISHED_STATE
[1566303150] unbound[67502:0] info: validation success domain11.dk. TXT IN
[1566303150] unbound[67502:0] info: negcache insert for zone domain11.dk. SOA IN
[1566303150] unbound[67502:0] info: negcache rr domain11.dk. NSEC IN
[1566303150] unbound[67502:0] debug: mesh_run: validator module exit state is module_finished
[1566303150] unbound[67502:0] debug: query took 0.015346 sec


after adding a extra KSK/ZSK:


[1566303221] unbound[67502:0] debug: iter_handle processing q with state QUERY RESPONSE STATE
[1566303221] unbound[67502:0] info: query response was nodata ANSWER
[1566303221] unbound[67502:0] debug: iter_handle processing q with state FINISHED RESPONSE STATE
[1566303221] unbound[67502:0] info: finishing processing for domain11.dk. CNAME IN
[1566303221] unbound[67502:0] debug: mesh_run: iterator module exit state is module_finished
[1566303221] unbound[67502:0] debug: validator[module 0] operate: extstate:module_restart_next event:module_event_moddone
[1566303221] unbound[67502:0] info: validator operate: query domain11.dk. CNAME IN
[1566303221] unbound[67502:0] info: validator operate: chased to . TYPE0 CLASS0
[1566303221] unbound[67502:0] debug: validator: nextmodule returned
[1566303221] unbound[67502:0] debug: val handle processing q with state VAL_INIT_STATE
[1566303221] unbound[67502:0] debug: validator classification nodata
[1566303221] unbound[67502:0] info: signer is domain11.dk. TYPE0 CLASS0
[1566303221] unbound[67502:0] debug: val handle processing q with state VAL_FINDKEY_STATE
[1566303221] unbound[67502:0] info: validator: FindKey domain11.dk. CNAME IN
[1566303221] unbound[67502:0] debug: val handle processing q with state VAL_VALIDATE_STATE
[1566303221] unbound[67502:0] info: verify rrset domain11.dk. SOA IN
[1566303221] unbound[67502:0] debug: verify sig 39459 8
[1566303221] unbound[67502:0] debug: verify: could not find appropriate key
[1566303221] unbound[67502:0] debug: rrset failed to verify: no valid signatures
[1566303221] unbound[67502:0] debug: verify result: sec_status_bogus
[1566303221] unbound[67502:0] info: validator: response has failed AUTHORITY rrset: domain11.dk. SOA IN
[1566303221] unbound[67502:0] info: Validate: message contains bad rrsets
[1566303221] unbound[67502:0] debug: val handle processing q with state VAL_FINISHED_STATE
[1566303221] unbound[67502:0] debug: mesh_run: validator module exit state is module_finished
[1566303221] unbound[67502:0] debug: query took 0.266759 sec



regards, Peter Larsen


More information about the Unbound-users mailing list