Nakon dvije i pol godine razvoja, konzorcij ISC je predstavio prvo stabilno izdanje nove značajne grane DNS poslužitelja BIND 9.20, koja uključuje promjene razvijene u eksperimentalnoj grani BIND 9.19. Podrška za granu 9.20 će se održavati unutar proširenog ciklusa podrške do prvog kvartala 2028. godine. Podrška za granu 9.18 prestaje u drugom kvartalu 2025. godine. Za razvoj funkcionalnosti sljedeće stabilne verzije BIND-a bit će formirana eksperimentalna grana BIND 9.21.0. Kod projekta napisan je na jeziku C i distribuira se pod licencom MPL 2.0.
Glavne promjene:
- Jezgra aplikacije, koja povezuje sve komponente, prebačena je na korištenje neblokirajuće obrade događaja, implementirane na temelju biblioteke libuv, koja se koristi u projektima kao što su Node.js, Knot DNS, H2O, Luvit i MoarVM. U grani 9.16 je menadžer mrežnih veza u BIND-u prebačen na libuv, a sada i dijelovi koji se koriste za interakciju internih komponenti infrastrukture, kao i dugotrajni pomoćni procesori (threadpool) koji se koriste za verifikaciju DNSSEC-a, transfer zona, održavanje katalog zona i obradu RPZ (Response Policy Zone). Za sastavljanje BIND-a sada je potrebna najmanje verzija libuv 1.34.0.
- Predložen je novi backend za rad s bazama podataka — „QP trie“, koji je zamijenio RBTDB (Red-Black Tree Database) i koristi se po defaultu za pohranu predmemorije i baze DNS zona. Za višedretveno korištenje u QP trie-upotrebljava se biblioteka liburcu s implementacijom struktura bez zaključavanja u korisničkom prostoru, zahvaljujući primjeni mehanizma sinhronizacije RCU (read-copy-update) i metode sigurnog oslobađanja memorije QSBR (Quiescent-State-Based Reclamation).
- Primijenjen je ažurirani mehanizam kompresije domenaskih imena, koji koristi kompaktniju metodu kodiranja imena s većim brojem oznaka.
- Proširene su mogućnosti DNSSEC-a: „dnssec-policy“ je dopušteno koristiti za upravljanje potpisanim zonama (opcija auto-dnssec je uklonjena); pri korištenju „inline-signing“ dodana je podrška RFC 8901 (DNSSEC multi-signer model 2); obnovljena je podrška za PKCS#11 na temelju OpenSSL 3.0.0 Engine API; u „dnssec-policy“ dodana je podrška za HSM (Hardware Security Module).
- Dodana podrška za verziju dva katalog zone (Catalog Zone, RFC 9432), koja pojednostavljuje održavanje sekundarnih DNS servera jer umjesto definiranja pojedinačnih unosa za svaku sekundarnu zonu na sekundarnom serveru, uspostavlja se prijenos kataloga sekundarnih zona između primarnog i sekundarnog servera. Nakon postavljanja prijenosa kataloga u analogiji s prijenosom pojedinačnih zona, zone koje su označene kao pripadajuće katalogu, automatski se kreiraju na sekundarnom serveru bez potrebe za izmjenom konfiguracijskih datoteka.
- Dodana podrška za mehanizam proširenih pogrešaka (Extended DNS Errors, RFC 8914), koji omogućuje vraćanje dodatnih informacija o razlogu pogreške koja se pojavila prilikom izvršavanja DNS upita.
- Implementacija tehnologija «DNS preko HTTPS» (DoH, DNS over HTTPS) i DNS preko TLS (DoT, DNS over TLS), koje se koriste za enkripciju upita klijenata do rezolvera i šifriranu razmjenu podataka između servera, prebačena je na korištenje ujednačenog transporta.
- Dodana mogućnost korištenja PROXYv2 protokola za sve transporte koje podržava BIND. PROXY protokol omogućuje prijenos informacija o vezi kako bi se sačuvale informacije o izvornom IP adresi i broju porta prilikom prosljeđivanja DNS upita kroz druge backend-e, balansere opterećenja i proxy-e.servere.
- Dodana podrška za USDT (User Statically Defined Tracing) režim, koji omogućava izvođenje praćenja aplikacije putem perf naredbe, bez stvaranja dodatnih troškova kada je praćenje isključeno.
- U prikupljenoj statistici implementirano je odražavanje informacija o nedovršenim dolaznim operacijama prijenosa zona.
- Obrađeni su radovi na smanjenju latencije, smanjenju potrošnje memorije i smanjenju opterećenja CPU-a prilikom rezolvinga, rada DNS-over-TLS i formiranja odgovora putem UDP-a i TCP-a.



Izvor: opennet.ru



