isitdns? wiki/Security/DNSSEC troubleshooting: is it the signatures?
Security

DNSSEC troubleshooting: is it the signatures?

symptom
SERVFAIL for one zone
cause
a broken DNSSEC chain
test
the same query with +cd
means
NOERROR with +cd: DNSSEC broke
run
dig @1.1.1.1 +dnssec NAME
look
the EDE line says why
then
delv @1.1.1.1 NAME A
spec
RFC 4035, RFC 8914

Step 1: check whether DNSSEC is the cause#

Run the failing query twice, the second time with +cd (checking disabled, RFC 4035 section 3.2.2). Replace NAME with the name that fails.

dig @1.1.1.1 NAME A
dig @1.1.1.1 NAME A +cd
Plain queryWith +cdIt is
SERVFAILNOERRORDNSSEC: go to step 2
SERVFAILSERVFAILnot isolated: read the EDE (step 2); DNSSEC not ruled out; servfail

Step 2: read why#

Read the EDE line in the failing answer (RFC 8914). Here a zone broken on purpose:

Asks a deliberately broken zone for its address.

 dig @1.1.1.1 dnssec-failed.org A
; <<>> DiG 9.20.11-0ubuntu0.2-Ubuntu <<>> @1.1.1.1 dnssec-failed.org A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19921
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 9 (DNSKEY Missing): (no SEP matching the DS found for dnssec-failed.org.)
;; QUESTION SECTION:
;dnssec-failed.org. IN A
;; Query time: 105 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Mon Sep 14 13:45:35 CDT 2026
;; MSG SIZE rcvd: 103

GO SERVFAIL, and an EDE line naming the reason

NO GO NOERROR with an address

DO resolver operator: Check validation is on, nothing validated the chain

run this query in the dig tool →

what each part of this output means →

EDEMeansFix
6, DNSSEC Bogusa signature does not check outfind the link, step 3
7, Signature Expiredthe signatures ran outre-sign the zone
9, DNSKEY Missingthe parent's DS matches no key the zone publishespublish the key, or fix the DS
10, RRSIGs Missingrecords came back unsigned where signatures were expectedsign the zone, or remove the DS

No EDE line in your dig output? Ask over DoH; the Comment field carries it:

curl -s -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=NAME&type=A'

Check the chain with delv, which validates every link against its own root key and prints one verdict. On a Mac, use a current delv (brew install bind): the one macOS ships, 9.10.6, prints no crypto support.

delv @1.1.1.1 NAME A
delv printsMeans
; fully validatedthe chain is good; the problem is elsewhere
;; resolution failed: failurethe chain is broken; add +rtrace to see each fetch
; unsigned answerthe zone is not signed

Or draw the whole chain: dnsviz.

See also#