Após dois anos e meio de desenvolvimento, o consórcio ISC lançou a primeira versão estável da nova e significativa linha do servidor DNS BIND 9.20, que incorpora alterações desenvolvidas na linha experimental BIND 9.19. O suporte para a linha 9.20 será mantido dentro de um ciclo de suporte estendido até o primeiro trimestre de 2028. O suporte para a linha 9.18 será encerrado no segundo trimestre de 2025. Para desenvolver a funcionalidade da próxima versão estável do BIND, uma linha experimental BIND 9.21.0 será formada. O código do projeto foi escrito na linguagem C e é distribuído sob a licença MPL 2.0.
Principais mudanças:
- O núcleo do aplicativo, que conecta todos os componentes, foi migado para um ciclo de processamento de eventos não bloqueante, implementado com a biblioteca libuv, utilizada em projetos como Node.js, Knot DNS, H2O, Luvit e MoarVM. Na linha 9.16, o gerenciador de conexões de rede no BIND foi migrado para libuv, e agora partes usadas para interação entre os componentes internos da infraestrutura, bem como manipuladores auxiliares longos executados em threads separadas (threadpool), usados para verificação DNSSEC, transferência de zonas, manutenção do catálogo de zonas e processamento RPZ (Response Policy Zone), também foram migrados. Para compilar o BIND agora é necessário pelo menos a versão libuv 1.34.0.
- Foi proposto um novo backend para trabalhar com bancos de dados — "QP trie", que substitui o RBTDB (Red-Black Tree Database) e é utilizado por padrão para armazenar o cache e o banco de zonas DNS. Para operações multithread no QP trie, a biblioteca liburcu é utilizada, implementando estruturas no espaço do usuário que não usam bloqueios, graças ao mecanismo de sincronização RCU (read-copy-update) e ao método de liberação de memória segura QSBR (Quiescent-State-Based Reclamation).
- Foi implementado um mecanismo de compressão atualizado domínios, que utiliza um método de codificação mais compacto para nomes com um grande número de rótulos.
- As capacidades do DNSSEC foram ampliadas: "dnssec-policy" agora pode ser aplicada para gerenciar zonas assinadas (a opção auto-dnssec foi removida); ao usar "inline-signing", foi adicionada a compatibilidade com a RFC 8901 (modelo multi-signer DNSSEC 2); o suporte ao PKCS#11 baseado na API OpenSSL 3.0.0 Engine foi restaurado; na "dnssec-policy", o suporte a HSM (Hardware Security Module) foi adicionado.
- Adicionada a suporte à segunda versão do catálogo de zonas (Catalog Zone, RFC 9432), que simplifica a manutenção de servidores DNS secundários ao permitir que, em vez de definir registros separados para cada zona secundária no servidor secundário, um catálogo de zonas secundárias seja transferido entre os servidores primário e secundário. Após configurar a transferência do catálogo semelhante à transferência de zonas individuais, as zonas criadas no servidor primário, marcadas como pertencentes ao catálogo, são automaticamente criadas no servidor secundário sem a necessidade de editar arquivos de configuração.
- Adicionada a suporte ao mecanismo de erros estendidos (Extended DNS Errors, RFC 8914), que permite retornar informações adicionais sobre a causa do erro que ocorreu ao executar uma consulta DNS.
- A implementação das tecnologias "DNS sobre HTTPS" (DoH, DNS over HTTPS) e DNS sobre TLS (DoT, DNS over TLS), utilizadas para criptografar consultas de clientes ao resolvedor e a troca segura de dados entre servidores, foi migrada para um transporte unificado.
- Adicionada a possibilidade de usar o protocolo PROXYv2 com todos os transportes suportados no BIND. O protocolo PROXY permite transmitir informações sobre a conexão para preservar dados do IP de origem e número da porta ao encaminhar consultas DNS por outros backends, balanceadores de carga e proxies.servidores.
- Adicionada a suporte ao modo USDT (User Statically Defined Tracing), que permite a execução de rastreamento de aplicações com o comando perf, sem gerar sobrecargas adicionais quando o rastreamento está desativado.
- Na estatística coletada, implementou-se reflexões sobre informações de operações de transmissão de zonas não concluídas.
- Foi realizado um trabalho para reduzir latências, diminuir o consumo de memória e reduzir a carga sobre a CPU durante a resolução, operação do DNS-over-TLS e formação de respostas via UDP e TCP.



Fonte: opennet.ru



