Po dvou a půl letech vývoje představil konsorcium ISC první stabilní vydání nové významné větve DNS serveru BIND 9.20, která zahrnuje změny vyvíjející se v experimentální větvi BIND 9.19. Podpora větve 9.20 bude zajišťována v rámci rozšířeného cyklu údržby až do prvního čtvrtletí roku 2028. Podpora větve 9.18 skončí ve 2. čtvrtletí 2025. Pro vývoj funkcionality další stabilní verze BIND bude vytvořena experimentální větev BIND 9.21.0. Kód projektu je napsán v jazyce C a je distribuován pod licencí MPL 2.0.
Hlavní změny:
- Jádro aplikace, které spojuje všechny komponenty, bylo převedeno na používání cyklu zpracování událostí v neblokujícím režimu, realizovaném na základě knihovny libuv, používané v takových projektech jako Node.js, Knot DNS, H2O, Luvit a MoarVM. Ve větvi 9.16 byl na libuv převeden správce síťových spojení v BIND, a nyní také části, které se používají pro interakci interních komponent infrastruktury, jakož i dlouho běžící pomocné zpracovatele (threadpool), které se používají pro ověřování DNSSEC, převod zón, udržování katalogu zón a zpracování RPZ (Response Policy Zone). Pro sestavení BIND je nyní potřeba minimálně verze libuv 1.34.0.
- Byl navržen nový backend pro práci s databází — „QP trie“, který nahradil RBTDB (Database s černou-červenou stromovou strukturou) a je výchozí pro ukládání cache a databáze DNS zón. Pro vícerozměrnou práci v QP trie je využívána knihovna liburcu s implementací ve uživatelském prostoru, která nevyužívá zámky, díky použití synchronizačního mechanismu RCU (read-copy-update) a metody bezpečného uvolnění paměti QSBR (Quiescent-State-Based Reclamation).
- Byl implementován aktualizovaný mechanismus komprese doménových jmen, který používá kompaktnější metodu kódování jmen s velkým počtem štítků.
- Možnosti DNSSEC byly rozšířeny: „dnssec-policy“ lze použít pro správu podepsaných zón (možnost auto-dnssec byla odstraněna); při použití „inline-signing“ byla přidána podpora RFC 8901 (DNSSEC multi-signer model 2); byla obnovena podpora PKCS#11 na základě OpenSSL 3.0.0 Engine API; do „dnssec-policy“ byla přidána podpora HSM (hardware security module).
- Byla přidána podpora druhé verze katalogu zón (Catalog Zone, RFC 9432), která usnadňuje údržbu sekundárních DNS serverů tím, že místo definování jednotlivých záznamů pro každou sekundární zónu na sekundárním serveru probíhá přenos katalogu sekundárních zón mezi primárním a sekundárním serverem. Po nastavení přenosu katalogu analogicky k přenosu jednotlivých zón se zóny, které byly na primárním serveru označeny jako součást katalogu, automaticky vytvářejí na sekundárním serveru bez nutnosti úpravy konfiguračních souborů.
- Byla přidána podpora mechanismu rozšířených chyb (Extended DNS Errors, RFC 8914), což umožňuje vracet dodatečné informace o příčině chyby, která nastala při provádění DNS dotazu.
- Realizace technologií "DNS přes HTTPS" (DoH, DNS over HTTPS) a DNS přes TLS (DoT, DNS over TLS), které se používají k šifrování dotazů klientů na resolver a šifrované výměně dat mezi servery, byla převedena na použití jednotné dopravy.
- Byla přidána možnost využívat protokol PROXYv2 se všemi transporty podporovanými v BIND. Protokol PROXY umožňuje přenášet informace o spojení, aby se uchoval údaj o původní IP adrese a portu při přesměrování DNS dotazů přes jiné backendy, vyvažovače zátěže a proxy.servery.
- Byla přidána podpora režimu USDT (User Statically Defined Tracing), který umožňuje provádět sledování aplikace pomocí příkazu perf, aniž by vznikaly další náklady, když je sledování vypnuto.
- Ve shromažďované statistice byla implementována informace o nedokončených příchozích operacích přenosu zón.
- Byla provedena práce na snížení latencí, snížení spotřeby paměti a snížení zátěže CPU při resolvování, práci s DNS-over-TLS a generování odpovědí přes UDP a TCP.



Zdroj: opennet.ru



