AprÚs deux ans et demi de développement, le consortium ISC a présenté le premier release stable de la nouvelle version majeure du serveur DNS BIND 9.20, qui intÚgre des changements développés dans la branche expérimentale BIND 9.19. Le support de la version 9.20 sera assuré dans le cadre d'un cycle de maintenance prolongé jusqu'au premier trimestre 2028. Le support de la version 9.18 cessera au deuxiÚme trimestre 2025. Pour le développement des fonctionnalités de la prochaine version stable de BIND, une branche expérimentale BIND 9.21.0 sera créée. Le code du projet est écrit en langage C et distribué sous licence MPL 2.0.
Principales modifications :
- Le noyau de l'application, reliant tous les composants, a été converti pour utiliser une boucle de traitement d'événements en mode non-bloquant, réalisée sur la base de la bibliothÚque libuv, utilisée dans des projets tels que Node.js, Knot DNS, H2O, Luvit et MoarVM. Dans la version 9.16, le gestionnaire de connexions réseau a été converti sur libuv dans BIND, et maintenant les parties utilisées pour interagir avec les composants internes de l'infrastructure, ainsi que les gestionnaires auxiliaires longs exécutés dans des threads séparés (threadpool), utilisés pour la vérification DNSSEC, le transfert de zones, le maintien du répertoire de zones et le traitement de RPZ (Response Policy Zone), ont également été incluses. Pour construire BIND, une version minimale de libuv 1.34.0 est requise.
- Un nouveau backend pour le travail avec la base de donnĂ©es a Ă©tĂ© proposĂ© - «QP trie», qui remplace RBTDB (Red-Black Tree Database) et est utilisĂ© par dĂ©faut pour stocker le cache et la base de donnĂ©es des zones DNS. Pour le travail multi-thread, la bibliothĂšque liburcu a Ă©tĂ© intĂ©grĂ©e dans QP trie avec une mise en Ćuvre d'infrastructures sans verrou dans l'espace utilisateur, grĂące Ă l'utilisation du mĂ©canisme de synchronisation RCU (read-copy-update) et de la mĂ©thode de libĂ©ration de mĂ©moire sĂ©curisĂ©e QSBR (Quiescent-State-Based Reclamation).
- Un mĂ©canisme de compression mis Ă jour a Ă©tĂ© mis en Ćuvre complets, utilisant une mĂ©thode de codage des noms plus compacte avec un plus grand nombre d'Ă©tiquettes.
- Les fonctionnalités de DNSSEC ont été étendues : «dnssec-policy» est désormais autorisé pour la gestion des zones signées (l'option auto-dnssec a été supprimée) ; lors de l'utilisation de «inline-signing», le support de la RFC 8901 (modÚle multi-signataire DNSSEC 2) a été ajouté ; le support PKCS#11 basé sur OpenSSL 3.0.0 Engine API a été rétabli ; et la prise en charge HSM (Hardware Security Module) a été ajoutée à «dnssec-policy».
- Ajout du support de la deuxiÚme version du catalogue de zones (Catalog Zone, RFC 9432), simplifiant le maintien des serveurs DNS secondaires en organisant la transmission du catalogue des zones secondaires entre le serveur principal et le serveur secondaire au lieu de définir des enregistrements distincts sur le serveur secondaire pour chaque zone secondaire. AprÚs la configuration de la transmission du catalogue, similaire à celle des zones individuelles, les zones créées sur le serveur principal, marquées comme annexées au catalogue, sont automatiquement créées sur le serveur secondaire sans avoir besoin de modifier les fichiers de configuration.
- Ajout du support du mĂ©canisme d'erreurs Ă©tendues (Extended DNS Errors, RFC 8914), permettant de retourner des informations supplĂ©mentaires sur la cause de l'erreur survenue lors de l'exĂ©cution de la requĂȘte DNS.
- La mise en Ćuvre des technologies « DNS sur HTTPS » (DoH, DNS over HTTPS) et DNS sur TLS (DoT, DNS over TLS), utilisĂ©es pour chiffrer les requĂȘtes des clients vers le rĂ©solveur et l'Ă©change sĂ©curisĂ© de donnĂ©es entre serveurs, a Ă©tĂ© convertie pour utiliser un transport unifiĂ©.
- Ajout de la possibilitĂ© d'utiliser le protocole PROXYv2 avec tous les transports pris en charge dans BIND. Le protocole PROXY permet de transmettre des informations de connexion pour conserver les dĂ©tails sur l'adresse IP source et le numĂ©ro de port lors du passage des requĂȘtes DNS Ă travers d'autres backends, load balancers et proxies.serveurs.
- Ajout du support du mode USDT (User Statically Defined Tracing), permettant d'effectuer le traçage d'application à l'aide de la commande perf, sans créer de frais généraux supplémentaires lorsque le traçage est désactivé.
- Les statistiques collectées reflÚtent désormais les informations sur les opérations de transfert de zones entrantes inachevées.
- Des efforts ont été déployés pour réduire les délais, diminuer la consommation de mémoire et alléger la charge CPU lors de la résolution, du fonctionnement de DNS-over-TLS et de la formation des réponses par UDP et TCP.



Source : opennet.ru



