Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • Knot DNS Knot DNS
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 19
    • Issues 19
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 6
    • Merge requests 6
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Knot projects
  • Knot DNSKnot DNS
  • Issues
  • #617
Closed
Open
Issue created Oct 24, 2018 by Sebastian Wiesinger@sebastianw

During algorithm rollover, old keys get removed bevore DS TTL expires

I was doing an algorithm rollover for the zone 6v6.de. This zone has a DNSKEY TTL of 3600 (1h). One hour after knot detected the DS change at the parent zone he removed the old keys from the zone even though the parent DS has a TTL of 86400 (1d). This made the zone bogus on resolvers that still had the old DS in cache:

Oct 24 13:02:03 alita unbound: [2897:0] info: validation failure <6v6.de. A IN>: no keys have a DS with algorithm RSASHA256 from 2a01:4f8:150:7142::53 for key 6v6.de. while building chain of trust
Oct 24 13:34:46 alita unbound: [2897:3] info: validation failure <6v6.de. MX IN>: no keys have a DS with algorithm RSASHA256 from 213.95.0.65 for key 6v6.de. while building chain of trust

From the resolver:

# dig @127.0.0.1 6v6.de DS

; <<>> DiG 9.11.4-P2-3~bpo9+1-Debian <<>> @127.0.0.1 6v6.de DS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7219
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;6v6.de.                                IN      DS

;; ANSWER SECTION:
6v6.de.                 73543   IN      DS      59381 8 2 82C73B71D5BD196F2AE555812D85E9766B90646EF922F2805D0F8FAC A9962F78

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Oct 24 13:36:20 CEST 2018
;; MSG SIZE  rcvd: 83

From the auth:

root@alita:/etc/knot# dig @a.nic.de 6v6.de DS

; <<>> DiG 9.11.4-P2-3~bpo9+1-Debian <<>> @a.nic.de 6v6.de DS
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41975
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 313801575f1130e40570e46c5bd0595daf3ff6745ed62ce1 (good)
;; QUESTION SECTION:
;6v6.de.                                IN      DS

;; ANSWER SECTION:
6v6.de.                 86400   IN      DS      54879 13 2 A944984935973E1F6B1F6F34C85D95D53D9F7BCFCD6DA52795061A49 0164AA11

;; Query time: 12 msec
;; SERVER: 2001:678:2::53#53(2001:678:2::53)
;; WHEN: Wed Oct 24 13:37:01 CEST 2018
;; MSG SIZE  rcvd: 111

This seems like an error to me, the old key should only be removed after the DS has expired from all caches. From RFC6781:

  DNSKEY removal:  After the cache data for the old DS RRset has
  expired, the old algorithm can be removed.  This time, the old key
  needs to be removed first, before removing the old signatures.

Knot version is: 2.7.2-2~bpo9+1 (Debian Stretch Backport)

Config for the zone:

submission:
  - id: tld_de
    parent: [a.nic.de, f.nic.de, l.de.net, n.de.net, s.de.net, z.nic.de]
    check-interval: 30m

policy:
  - id: ecdsap256-de
    algorithm: ecdsap256sha256
    ksk-submission: tld_de

template:
  - id: slave-dnssec-rsa-de
    storage: "/var/lib/knot/slave"
    file: "%s.zone"
    dnssec-signing: on
    dnssec-policy: ecdsap256-de
    master: ns1_signer
    notify: ns1
    acl: acl_ns1

zone:
- domain: 6v6.de
  template: slave-dnssec-rsa-de
  serial-policy: unixtime
Assignee
Assign to
Time tracking