For DN42, master delegation servers (source code here?) regularly pulls registry and sign the zones (only what you wrote in the registry), as dig AXFR dn42. @172.20.129.1 said (burble’s server), e.g.:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
lantian.dn42. 900 IN DS 20109 13 1 390386BE8B1112DCF5B476286B5E64FF098200B0 lantian.dn42. 900 IN DS 20109 13 2 28206D72E41A4F3B19E48EEBA571CB2DA202A80AF19E217BFAD34CE9 76AF0B51 lantian.dn42. 900 IN DS 20109 13 4 8DC4CB9741A6EB7B40016A1AA8334A4380D55D7D2F2648F486BB12FA D2836D453879DE6FC0B20A8F772DCCBE0C45D82A lantian.dn42. 900 IN NS ns-anycast.lantian.dn42. lantian.dn42. 900 IN NS ns1.lantian.dn42. lantian.dn42. 900 IN NS ns2.lantian.dn42. lantian.dn42. 900 IN NS ns3.lantian.dn42. lantian.dn42. 900 IN RRSIG DS 10 2 900 20200920203556 20200916203556 59291 dn42. (long stuff here) lantian.dn42. 900 IN RRSIG NSEC 10 2 900 20200920203556 20200916203556 59291 dn42. (long stuff here) ns-anycast.lantian.dn42. 900 IN A 172.22.76.109 ns-anycast.lantian.dn42. 900 IN AAAA fdbc:f9dc:67ad:2547::54 ns1.lantian.dn42. 900 IN A 172.22.76.186 ns1.lantian.dn42. 900 IN AAAA fdbc:f9dc:67ad::8b:c606:ba01 ns2.lantian.dn42. 900 IN A 172.22.76.185 ns2.lantian.dn42. 900 IN AAAA fdbc:f9dc:67ad::dd:c85a:8a93 ns3.lantian.dn42. 900 IN A 172.22.76.190 ns3.lantian.dn42. 900 IN AAAA fdbc:f9dc:67ad::cc:433e:da3b lalakis.dn42. 900 IN NSEC lantian.dn42. NS RRSIG NSEC lantian.dn42. 900 IN NSEC laxu.dn42. NS DS RRSIG NSEC
Yes, the root server just signed DS records for us, so what we need to do is to:
create our own keys;
sign the zones;
add ds-rdata record to the domain objects.
Then do as described here, also this page. Don’t forget to set AppArmor properly to let BIND write to zone directory. Note that keys need to be loaded each time BIND is restarted.
To check if your domain is signed:
1
rndc signing -list example.nil
Valid output should be like:
1 2
Done signing with key 11999/RSASHA256 Done signing with key 57898/RSASHA256
Then just add 11999 8 2 3B960D74068771B034AD6A8B9F454E3B359545812416AEB4EE72BBA6B8036EA4 to the registry, to the ds-rdata field of your dns/ file or inet(6)num file for rDNS.
Enable DNSSEC on Your BIND
Enable DNSSEC by these lines in your named.conf.options:
delv -a trust-anchors.key +root=dn42 +mtrace +vtrace +rtrace +yaml www.moecast.dn42
or a shorter version:
1
delv -a trust-anchors.key +root=dn42 www.moecast.dn42
We load our trust anchor file for BIND named (described above), and tell delv not to ignore the dn42 zone. For the dn42 zone delv does query for the clearnet root zone, and use the key we specified only if the dn42 zone does not exist on clearnet root servers. A success output (of the short version) would be like:
1 2 3 4 5
; fully validated www.moecast.dn42. 60 IN CNAME moecast.dn42. www.moecast.dn42. 60 IN RRSIG (a pretty lone line here) moecast.dn42. 60 IN A 172.23.89.1 moecast.dn42. 60 IN RRSIG (a pretty long line here)