Lors de la mise à jour vers stretch, nous sommes passés de Knot 1.x à 2.x.
La migration n'a pas été super-sympatique, quidame et nicoo ayant dû désinstaller knot entièrement et reconfigurer la nouvelle version (et importer les clefs DNSSEC existantes). C'était probablement dû à un problème de mise à jour du paquet lors de la mise jour du système, puisque la commande
strace -f -e open knotd -vvv
nous a permis d'observer une recherche infructueuse d'un fichier lbnss_db.so.2
,
qui est un fichier fourni par le paquet libnss-db
…de jessie.
Sauvegarde de la configuration et données
mkdir ~/knot.bak
cp -ar /etc/knot ~/knot.bak/etc
cp -ar /var/lib/knot ~/knot.bak/var_lib
Désinstallation et retrait de la config
apt purge knot
rm -rf /etc/knot /var/lib/knot
Installation
On réinstalle
knot
, on remet la configuration de base (convertie par knot1to2) en place :apt install knot cp ~/knot.bak/etc/db.nos-oignons.{fr,net,org} /var/lib/knot /usr/lib/knot/knot1to2 -i ~/knot.bak/etc/knot.conf~ -o /etc/knot/knot.conf
On édite
/etc/knot/knot.conf
pour désactiver la signature DNSSEC des zones.
Au passage, on teste la validité de la configuration avecknotc conf-check
On résoud (à coup de massue) un souci de permissions:
chown -R knot:knot /var/lib/knot
On relance knot, on teste que les zones sont servies (sans signature !) par les serveurs primaires et secondaires.
À partir de ce point, nos domaines sont indisponibles pour les users de résolveurs DNS compatibles DNSSEC.On teste que les zones sont bien servies, on commit la config.
On importe les clefs DNSSEC au nouveau format utilisé par Knot (
.pem
)keymgr zone key import nos-oignons.net ~/knot.bak/var_lib/keys/Knos-oignons.net.+014+41833.private keymgr zone key import nos-oignons.net ~/knot.bak/var_lib/keys/Knos-oignons.net.+014+43612.private […]
On configure Knot pour la signature automatique des zones :
policy: - id: dnssec_oignons algorithm: ecdsap384sha384 nsec3: True template: - id: "default" semantic-checks: "on" notify: "slave" acl: [ "acl_slave", "acl_dns-update" ] dnssec-signing: "on" dnssec-policy: dnssec_oignons
Encore une fois,
knotc conf-check
est notre ami.On relance knot, on vérifie que l'olibrius a signé les zones :
$ systemctl restart knot $ journalctl -n50 -uknot [...] juil. 28 23:26:12 bulbe knotd[29889]: info: [nos-oignons.fr.] DNSSEC, successfully signed juil. 28 23:26:12 bulbe knotd[29889]: info: [nos-oignons.net.] DNSSEC, successfully signed [...] juil. 28 23:26:12 bulbe knotd[29889]: info: [nos-oignons.org.] DNSSEC, successfully signed
On teste que la zone est valide, en partant de la racine DNS, grâce à drill (l'équivalent de
dig
, made in Unbound) :$ apt install ldnsutils dns-root-data $ drill -k /usr/share/dns/root.key -D -T nos-oignons.net ;; Number of trusted keys: 2 ;; Domain: . [...] ;; Domain: nos-oignons.net. [T] nos-oignons.net. 3600 IN DNSKEY 256 3 14 ;{id = 41833 (zsk), size = 384b} nos-oignons.net. 3600 IN DNSKEY 257 3 14 ;{id = 43612 (ksk), size = 384b} nos-oignons.net. 3600 IN DNSKEY 256 3 14 ;{id = 31516 (zsk), size = 384b} [T] nos-oignons.net. 3600 IN A 91.216.110.49 ;;[S] self sig OK; [B] bogus; [T] trusted
On commit la configuration dans etckeeper.
On remet en place
/etc/knot/db.nos-oignons.{net,org,fr}
etupdate-dns
(qui sont utilisés par divers scripts).On peut souffler un grand coup, et nicoo se sert un whisky.