.xn--8y0a063a TLD DNSSEC Outage: 2019-10-06
Date: October 6, 2019
Overview
This page gives some details on the .xn--8y0a063a TLD DNSSEC outage on October 6, 2019.
Timeline / DNSViz
(At the time of this writing, DNSViz historical archives have been down for months. DNSSEC makes its users think downtime doesn't matter.)
- 2019-10-06 22:42:32 UTC — RRSIGs expire
- 2019-10-06 22:43:51 UTC — first personally witnessed <xn--8y0a063a. NS IN> DNSSEC failure
- 2019-10-07 00:36:01 UTC — last personally witnessed <xn--8y0a063a. NS IN> DNSSEC failure
DNSSEC Debugger
Here's a screenshot of my web browser's output from October 6, 2019:
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 xn--8y0a063a. @8.8.8.8
; <<>> DiG 9.4.2-P2 <<>> +dnssec ns xn--8y0a063a. @8.8.8.8
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 9081
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 512
;; QUESTION SECTION:
;xn--8y0a063a. IN NS
;; Query time: 144 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Oct 6 22:43:56 2019
;; MSG SIZE rcvd: 41
You have to disable DNSSEC to make DNS queries work:
$ dig +cd ns xn--8y0a063a. @8.8.8.8
; <<>> DiG 9.4.2-P2 <<>> +cd ns xn--8y0a063a. @8.8.8.8
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45599
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;xn--8y0a063a. IN NS
;; ANSWER SECTION:
xn--8y0a063a. 3599 IN NS f.zdnscloud.com.
xn--8y0a063a. 3599 IN NS j.zdnscloud.com.
xn--8y0a063a. 3599 IN NS b.zdnscloud.com.
xn--8y0a063a. 3599 IN NS i.zdnscloud.com.
xn--8y0a063a. 3599 IN NS d.zdnscloud.com.
xn--8y0a063a. 3599 IN NS g.zdnscloud.com.
xn--8y0a063a. 3599 IN NS c.zdnscloud.com.
xn--8y0a063a. 3599 IN NS a.zdnscloud.com.
;; Query time: 83 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Oct 6 22:43:56 2019
;; MSG SIZE rcvd: 171
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):
;; Domain: xn--8y0a063a.
[B] xn--8y0a063a. 7200 IN DNSKEY 257 3 8 ;{id = 44995 (ksk), size = 2048b}
xn--8y0a063a. 7200 IN DNSKEY 257 3 8 ;{id = 59182 (ksk), size = 2048b}
xn--8y0a063a. 7200 IN DNSKEY 256 3 8 ;{id = 1491 (zsk), size = 1280b}
xn--8y0a063a. 7200 IN DNSKEY 256 3 8 ;{id = 37429 (zsk), size = 1024b}
[B] Error verifying denial of existence for xn--8y0a063a. type A: 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.
- [1570401831] unbound[25587:0] info: validation failure <xn--8y0a063a. NS IN>: signature expired from 203.99.26.1 for key xn--8y0a063a. while building chain of trust
- [1570402013] unbound[25587:0] info: validation failure <xn--8y0a063a. NS IN>: signature expired from 42.62.2.16 for key xn--8y0a063a. while building chain of trust
- [1570402059] unbound[185:0] info: validation failure <dnssec.xn--8y0a063a. NS IN>: signature expired from 203.99.25.1 for key xn--8y0a063a. while building chain of trust
- [1570406039] unbound[185:0] info: validation failure <xn--8y0a063a. NS IN>: signature expired from 203.99.27.1 for key xn--8y0a063a. while building chain of trust
- [1570408561] unbound[25587:0] info: validation failure <xn--8y0a063a. NS IN>: signature expired from 114.67.46.12 for key xn--8y0a063a. while building chain of trust