Hoy, varios importantes servicios de DNS y fabricantes de servidores DNS llevarán a cabo un evento conjunto , destinado a centrar la atención en sobre la fragmentación de IP en el procesamiento de mensajes DNS de gran tamaño. Este es el segundo evento de este tipo, el año pasado fue el 'día de la bandera DNS' en el procesamiento correcto de las solicitudes EDNS.
Los participantes de la iniciativa del día de la bandera DNS 2020 instan a fijar los tamaños de búfer recomendados para EDNS hasta valores de 1232 bytes (tamaño MTU 1280 menos 48 bytes para encabezados), así como el procesamiento de solicitudes por TCP como un requisito obligatorio en los servidores. En se señala que solo se requiere la capacidad de proceso de solicitudes por UDP, mientras que TCP se menciona como deseable, pero no obligatorio para su funcionamiento. Nuevas y definitivamente clasifican TCP como una de las capacidades obligatorias necesarias para un funcionamiento correcto de DNS. En el marco de la iniciativa, se propone forzar la transición del envío de solicitudes por UDP a la aplicación de TCP en casos cuando el tamaño del búfer EDNS establecido no es suficiente.
Los cambios propuestos eliminarán la confusión sobre la elección del tamaño del búfer EDNS y resolverán el problema de la fragmentación de grandes mensajes UDP, cuyo procesamiento a menudo conduce a la pérdida de paquetes y tiempos de espera del lado del cliente. Del lado del cliente, el tamaño del búfer EDNS será constante, y las respuestas grandes se enviarán de inmediato al cliente por TCP. La exclusión del envío de grandes mensajes por UDP también resolverá problemas con la eliminación de grandes paquetes en ciertos cortafuegos y permitirá bloquear la manipulación del caché DNS basada en la manipulación de paquetes UDP fragmentados (al dividirse en fragmentos, el segundo fragmento no incluye el encabezado con el identificador, por lo que puede ser falsificado siempre que coincida la suma de verificación).
A partir de hoy, los proveedores de DNS participantes en la iniciativa, incluidos CloudFlare, Quad 9, Cisco (OpenDNS) y Google, el tamaño del búfer EDNS de 4096 a 1232 bytes en sus servidores DNS (el cambio de EDNS se extenderá durante 4-6 semanas y con el tiempo abarcará un número cada vez mayor de solicitudes). Las respuestas a solicitudes UDP que no se ajusten al nuevo límite se enviarán por TCP. Los fabricantes de servidores DNS, incluyendo BIND, Unbound, Knot, NSD y PowerDNS, lanzarán actualizaciones cambiando el tamaño del búfer EDNS por defecto de 4096 a 1232 bytes.
En última instancia, los cambios introducidos pueden llevar a problemas de resolución al acceder a servidores DNS cuyas respuestas DNS por UDP superan los 1232 bytes y que no pueden enviar respuestas por TCP. Un experimento realizado por Google mostró que cambiar el tamaño del búfer EDNS no impactará significativamente en el nivel de fallos; con un búfer de 4096 bytes, el número de solicitudes UDP truncadas es del 0.345%, y el número de respuestas de reintento inalcanzables por TCP es del 0.115%. Con un búfer de 1232 bytes, estas cifras son del 0.367% y 0.116%. Hacer que el soporte de TCP sea obligatorio para las capacidades de DNS causará problemas al interactuar con alrededor del 0.1% de los servidores DNS. Se observa que, en las condiciones actuales, sin TCP, el funcionamiento de dichos servidores ya es inestable.
Los administradores de servidores DNS autoritativos deben asegurarse de que su servidor responda por TCP en el puerto 53 de la red y que este puerto TCP no esté bloqueado por un firewall. Un servidor DNS autoritativo tampoco debería enviar respuestas UDP que superen
el tamaño solicitado del búfer EDNS. En el propio servidor, el tamaño del búfer EDNS debe ser fijado en 1232 bytes. Los resolutores tienen requisitos similares: la capacidad de responder por TCP es obligatoria, el soporte obligatorio para el reenvío de solicitudes por TCP al recibir una respuesta UDP truncada y establecer el búfer EDNS en 1232 bytes.
Los siguientes parámetros son responsables de la configuración del tamaño del búfer EDNS en diferentes servidores DNS:
options {
edns-udp-size 1232;
max-udp-size 1232;
};
max-udp-payload: 1232
net.bufsize(1232)
udp-truncation-threshold=1232
edns-outgoing-bufsize=1232
udp-truncation-threshold=1232
edns-buffer-size: 1232
ipv4-edns-size: 1232
ipv6-edns-size: 1232
Fuente: opennet.ru
