Iniciativa do DNS Flag Day 2020 para abordar problemas de fragmentación e compatibilidade con TCP

Hoxe, unha serie de grandes servizos DNS e fabricantes de servidores DNS celebrarán un evento conxunto Día da bandeira DNS 2020deseñado para centrar a atención decisión problemas con fragmentación de IP ao procesar mensaxes DNS grandes. Este é o segundo evento deste tipo, o ano pasado, o "Día da bandeira do DNS" estaba centrado sobre o tratamento correcto das solicitudes EDNS.

Os participantes na iniciativa DNS Flag Day 2020 piden que os tamaños de búfer recomendados para EDNS se fixen en 1232 bytes (tamaño MTU 1280 menos 48 bytes para as cabeceiras), así como traducir procesar solicitudes a través de TCP é unha función imprescindible nos servidores. EN RFC 1035 Só a compatibilidade para procesar solicitudes a través de UDP está marcada como obrigatoria e TCP aparece como desexable, pero non é necesario para o funcionamento. Novo RFC 7766 и RFC 5966 lista explícitamente TCP como unha capacidade necesaria para que o DNS funcione correctamente. A iniciativa propón forzar a transición do envío de solicitudes a través de UDP ao uso de TCP nos casos en que o tamaño do búfer EDNS establecido sexa insuficiente.

Os cambios propostos eliminarán a confusión coa elección do tamaño do búfer EDNS e resolverán o problema da fragmentación de grandes mensaxes UDP, cuxo procesamento adoita levar á perda de paquetes e tempo de espera no lado do cliente. No lado do cliente, o tamaño do búfer EDNS será constante e as respostas grandes enviaranse inmediatamente ao cliente a través de TCP. Evitar o envío de mensaxes grandes a través de UDP tamén resolverá problemas cos paquetes grandes que se soltan nalgúns cortalumes e permitirá o bloqueo. ataques para envelenar a caché DNS, baseada na manipulación de paquetes UDP fragmentados (cando se divide en fragmentos, o segundo fragmento non inclúe unha cabeceira cun identificador, polo que pode ser falsificado, para o que só é suficiente para que a suma de verificación coincida) .

A partir de hoxe, os provedores de DNS participantes, incluídos CloudFlare, Quad 9, Cisco (OpenDNS) e Google, irá cambiando gradualmente Tamaño do búfer EDNS de 4096 a 1232 bytes nos seus servidores DNS (o cambio de EDNS estenderase durante 4-6 semanas e cubrirá un número crecente de solicitudes ao longo do tempo). As respostas ás solicitudes UDP que non se axusten ao novo límite enviaranse a través de TCP. Os provedores de servidores DNS, incluídos BIND, Unbound, Knot, NSD e PowerDNS, publicarán actualizacións para cambiar o tamaño predeterminado do búfer EDNS de 4096 bytes a 1232 bytes.

En definitiva, estes cambios poden levar a problemas de resolución ao acceder a servidores DNS cuxas respostas UDP DNS superan os 1232 bytes e non poden enviar unha resposta TCP. Un experimento realizado en Google mostrou que cambiar o tamaño do búfer EDNS non ten practicamente ningún efecto na taxa de fallos: cun búfer de 4096 bytes, o número de solicitudes UDP truncadas é do 0.345 % e o número de reintentos inalcanzables a través de TCP é do 0.115 %. Cun búfer de 1232 bytes, estas cifras son 0.367% e 0.116%. Facer que a compatibilidade con TCP sexa unha función DNS necesaria causará problemas con preto do 0.1 % dos servidores DNS. Nótase que en condicións modernas, sen TCP, o funcionamento destes servidores xa é inestable.

Os administradores de servidores DNS autorizados deben asegurarse de que o seu servidor responde a través de TCP no porto de rede 53 e de que este porto TCP non estea bloqueado por un firewall. Un servidor DNS respectable tampouco debería enviar respostas UDP que sexan maiores que
tamaño do búfer EDNS solicitado. No propio servidor, o tamaño do búfer EDNS debe establecerse en 1232 bytes. Os resolutores teñen aproximadamente os mesmos requisitos: capacidade obrigatoria para responder a través de TCP, soporte obrigatorio para enviar solicitudes repetidas a través de TCP ao recibir unha resposta UDP truncada e establecer o búfer EDNS en 1232 bytes.

Os seguintes parámetros son os responsables de configurar o tamaño do búfer EDNS en diferentes servidores DNS:

  • BIND

    opcións {
    edns-udp-tamaño 1232;
    tamaño máximo-udp 1232;
    };

  • DNS de nó

    Carga útil máxima-udp: 1232

  • Resolvedor de nudos

    net.bufsize (1232)

  • Autoridade de PowerDNS

    udp-truncation-threshold=1232

  • Recursor de PowerDNS

    edns-outgoing-bufsize=1232
    udp-truncation-threshold=1232

  • Non obrigado

    tamaño do búfer edns: 1232

  • NSD

    Tamaño ipv4-edns: 1232
    Tamaño ipv6-edns: 1232

    Fonte: opennet.ru

  • Engadir un comentario