.llp TLD DNSSEC Outage: 2020-04-03
Date: April 3, 2020
Overview
This page gives some details on the .llp TLD DNSSEC outage on April 3, 2020.
Timeline / DNSViz
- 2020-04-03 17:50:10 UTC — RRSIGs expire
- 2020-04-03 17:59:51 UTC — expired RRSIGs
- 2020-04-03 18:07:08 UTC — last personally observed DNSSEC failure
- 2020-04-03 18:12:01 UTC — DNSSEC outage over
There are a couple copies of the DNSViz output from 2020-04-03 17:59:51 UTC, saved at:
- archive.is
- web.archive.org choked
DNSSEC Debugger
Here's a screenshot of my web browser's output from April 3, 2020:
Google DNS: with and without DNSSEC
DNSSEC can be disabled in queries via the CD (checking disabled) bit. Let's compare DNS queries with and without DNSSEC.
$ dig +dnssec ns llp. @8.8.8.8
; <<>> DiG 9.4.2-P2 <<>> +dnssec ns llp. @8.8.8.8
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 3649
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 512
;; QUESTION SECTION:
;llp. IN NS
;; Query time: 76 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Apr 3 17:50:47 2020
;; MSG SIZE rcvd: 32
You have to disable DNSSEC to make DNS queries work:
$ dig +cd ns llp. @8.8.8.8
; <<>> DiG 9.4.2-P2 <<>> +cd ns llp. @8.8.8.8
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60152
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;llp. IN NS
;; ANSWER SECTION:
llp. 21599 IN NS ns1.uniregistry.net.
llp. 21599 IN NS ns4.uniregistry.info.
llp. 21599 IN NS ns3.uniregistry.net.
llp. 21599 IN NS ns2.uniregistry.info.
;; Query time: 37 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Apr 3 17:50:47 2020
;; MSG SIZE rcvd: 124
drill trace
Since DNSSEC contains so much garbage, I put the complete drill trace into its own file, with the relevant portion below (emphasis added):
llp. 86400 IN DS 27216 7 2 b95649568bd88f57c7500a9e21d1d181065170cadbb881e299fd82e3a9909c23
;; Domain: llp.
[B] llp. 86400 IN DNSKEY 257 3 7 ;{id = 27216 (ksk), size = 1024b}
llp. 86400 IN DNSKEY 256 3 7 ;{id = 53960 (zsk), size = 1024b}
[B] llp. 3600 IN A 127.0.53.53
;; Error: No keys with the keytag and algorithm from the RRSIG found
;;[S] self sig OK; [B] bogus; [T] trusted
Logfile examples
These Unbound log entries come from different Unbound instances, each on different servers in different geographical regions.
- [1585936246] unbound[58922:0] info: validation failure <llp. NS IN>: signature expired from 64.96.245.53 for key llp. while building chain of trust
- [1585936297] unbound[19874:0] info: validation failure <llp. NS IN>: signature expired from 64.96.1.1 for key llp. while building chain of trust
- [1585936633] unbound[58922:0] info: validation failure <llp. NS IN>: signature expired from 185.159.197.3 for key llp. while building chain of trust
- [1585937168] unbound[58922:0] info: validation failure <llp. NS IN>: signature expired from 185.159.198.3 for key llp. while building chain of trust
- [1585937228] unbound[19874:0] info: validation failure <llp. NS IN>: signature expired from 64.96.245.53 for key llp. while building chain of trust