.mg TLD DNSSEC Outage: 2018-12-30
Date: December 30, 2018
Overview
This page gives some details on the .mg (Madagascar) TLD DNSSEC outage on December 30, 2018.
Timeline / DNSViz
- 2018-12-30 19:54:19 UTC — Signature inception is 32 minutes in the future
- 2018-12-30 19:54:50 UTC — Signature inception is 32 minutes in the future
- 2018-12-30 19:55:03 UTC — Signature inception is 32 minutes in the future
- 2018-12-30 19:55:42 UTC — Signature inception is 31 minutes in the future
- 2018-12-30 20:24:10 UTC — last personally observed DNSSEC failure
- 2018-12-30 20:27:04 UTC — RRSIGs become valid
DNSSEC Debugger
Unlike DNSViz, Verisign's DNSSEC Debugger doesn't archive results, so here's a screenshot of my web browser's output from December 30, 2018:
Zonemaster
Note: zonemaster requires javascript.
- zonemaster.net archived "The apex DNSKEY RRset was not correctly signed."
- zonemaster.fr archived "The apex DNSKEY RRset was not correctly signed."
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: mg.
[B] mg. 3600 IN DNSKEY 256 3 5 ;{id = 5307 (zsk), size = 1024b}
mg. 3600 IN DNSKEY 257 3 5 ;{id = 64652 (ksk), size = 2048b}
mg. 3600 IN DNSKEY 257 3 5 ;{id = 59263 (ksk), size = 2048b}
[B] Error verifying denial of existence for mg. type A: No keys with the keytag and algorithm from the RRSIG found
;;[S] self sig OK; [B] bogus; [T] trusted
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.
With DNSSEC, DNS queries fail:
$ dig +dnssec ns mg. @8.8.8.8
; <<>> DiG 9.4.2-P2 <<>> +dnssec ns mg. @8.8.8.8
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 34240
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 512
;; QUESTION SECTION:
;mg. IN NS
;; Query time: 397 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 30 19:55:30 2018
;; MSG SIZE rcvd: 31
You have to disable DNSSEC to make DNS queries work:
$ dig +cd ns mg. @8.8.8.8
; <<>> DiG 9.4.2-P2 <<>> +cd ns mg. @8.8.8.8
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28158
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mg. IN NS
;; ANSWER SECTION:
mg. 7199 IN NS ns-mg.malagasy.com.
mg. 7199 IN NS ns.dts.mg.
mg. 7199 IN NS ns.nic.mg.
mg. 7199 IN NS censvrns0001.ird.fr.
mg. 7199 IN NS pch.nic.mg.
;; Query time: 31 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 30 19:55:30 2018
;; MSG SIZE rcvd: 145
Logfile examples
- [1546199726] unbound[27504:0] info: validation failure <mg. NS IN>: signature before inception date from 91.203.32.147 for key mg. while building chain of trust
- [1546201450] unbound[27504:0] info: validation failure <mg. NS IN>: signature before inception date from 204.61.216.121 for key mg. while building chain of trust