isitdns? wiki/Security/KSK roll 2026 check: is the resolver you run ready?
Security

KSK roll 2026 check: is the resolver you run ready?

for
anyone who runs a resolver
roll
2026-10-11
new-key
38696 (KSK-2024)
need
38696 trusted before the roll
holddown
30 days, per resolver
trap
old images restart the clock
source
IANA root-anchors.xml
watch
48 h after the roll
next
20326 revoke sched 2027-01-11
spec
RFC 5011, RFC 8509

Step 1: check what your resolver trusts#

Check the trust anchor your resolver stores, not what it says it validates. The sentinel test on ksk-roll-2026 asks the second question; this is the first.

ResolverUpdates its anchor by itself (RFC 5011)Where to look
BIND 9Yes, with dnssec-validation auto;rndc managed-keys status: 38696 listed as trusted
UnboundYes, with auto-trust-anchor-filethe anchor file: 38696 with state VALID
Knot ResolverYes, by defaultthe keyfile it keeps: 38696 listed
PowerDNS RecursorNo, the root key is built into the binary and moves only on upgrade (docs)dig trustanchor.server CH TXT (needs recursor.allow_trust_anchor_query): 38696 listed

A key the resolver has seen but not yet trusts is in its 30-day hold-down (RFC 5011 section 2.4.1). Only trusted counts on 2026-10-11. The hold-down runs per resolver, so a box rebuilt from an old image starts it again from day 0.

Step 2: compare against the source#

Compare it with IANA's trust anchor file, the one normative source, and with the root itself.

curl -s https://data.iana.org/root-anchors/root-anchors.xml
<KeyDigest id="Klajeyz" validFrom="2017-02-02T00:00:00+00:00">
    <KeyTag>20326</KeyTag>
    ...
<KeyDigest id="Kmyv6jo" validFrom="2024-07-18T00:00:00+00:00">
    <KeyTag>38696</KeyTag>
    ...

Your resolver must trust 38696 before 2026-10-11. The root publishes both keys today; the two with flags 257 are the KSKs:

Asks the root for its public keys, which is what the roll replaces.

 dig @1.1.1.1 . DNSKEY
; <<>> DiG 9.20.11-0ubuntu0.2-Ubuntu <<>> @1.1.1.1 . DNSKEY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 893
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;. IN DNSKEY
;; ANSWER SECTION:
. 2536 IN DNSKEY 256 3 8 AwEAAeCYD6Z7WWKVLeuWgowKP+3g+Gs1cnLKq7a3CaQxQpv8bfuFVI0W nG33qaSH/Mw9IBgifrdzf4XY/DQLnyBJ9MfaOyAWuEaEmYJ+GQPiwVVf stGwSA1McfFJUttTgq2Huu74KARhtA8wPo/N3XcyYQtNhz+qCM5NBb3e cx/naw6sYab9LxS6f2cU0q03++BP5Ks0Uef8WJCa/1izCYE+vMkwoltV +tENa3hpXiZ7jle/xdgaZrPi5ZGmyLVI34g1XVYrNlsCCTmNvFQIfzW5 STFQFsQpizczyFn9r3LzSxxPCNwdlCG84bER0BmdwqbF6Tanv+FxMOav rahkj4wIy5k=
. 2536 IN DNSKEY 257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3 +/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF 0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN R1AkUTV74bU=
. 2536 IN DNSKEY 257 3 8 AwEAAa96jeuknZlaeSrvyAJj6ZHv28hhOKkx3rLGXVaC6rXTsDc449/c idltpkyGwCJNnOAlFNKF2jBosZBU5eeHspaQWOmOElZsjICMQMC3aeHb GiShvZsx4wMYSjH8e7Vrhbu6irwCzVBApESjbUdpWWmEnhathWu1jo+s iFUiRAAxm9qyJNg/wOZqqzL/dL/q8PkcRU5oUKEpUge71M3ej2/7CPqp dVwuMoTvoB+ZOT4YeGyxMvHmbrxlFzGOHOijtzN+u1TQNatX2XBuzZNQ 1K+s2CXkPIZo7s6JgZyvaBevYtxPvYLw4z9mR7K2vaF18UYH9Z9GNUUe ayffKC73PYc=
;; Query time: 31 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Mon Sep 14 17:44:03 CDT 2026
;; MSG SIZE rcvd: 853

GO NOERROR and two keys with flags 257, 20326 and 38696

NO GO SERVFAIL

DO resolver operator: Fix the trust anchor, step 3

run this query in the dig tool →

what each part of this output means →

Step 3: fix it if it is already broken#

Fix it in this order if every validated lookup is SERVFAIL after the roll and step 1 shows 38696 missing. The first two come from ICANN's 2018 rollover review, section 3.4.

  1. Stop the outage. Turn validation off, or set a negative trust anchor for the root (RFC 7646). Both drop DNSSEC protection for everyone behind the resolver. An NTA expires by itself: "The lifetime SHOULD NOT exceed a week" (RFC 7646 section 4).
  2. Install 38696 from root-anchors.xml, where your resolver reads its anchors. Its own documentation names the place.
  3. Turn validation back on and run the test on ksk-roll-2026 until it says Ready.

The dates#

DateWhat happens
2025-01-1138696 published in the root
2025-02-10earliest a resolver trusts it, after the 30-day hold-down (RFC 5011 section 2.4.1)
2026-10-1138696 signs alone; 20326 stays published
2026-10-11 +48hfailures show as cached root key sets expire
2027-01-1120326 scheduled to be published with the REVOKE bit
2027-03-2220326 scheduled to be removed from the root zone

Sources: IANA's timeline at iana.org/dnssec/files and ICANN's root zone KSK rollover FAQ (PDF, 2026-05-22), p.3.

See also#