Los mecanismos de extensión para DNS ( EDNS ) son una especificación para expandir el tamaño de varios parámetros del protocolo del Sistema de nombres de dominio (DNS) que tenían restricciones de tamaño que la comunidad de ingeniería de Internet consideró demasiado limitadas para aumentar la funcionalidad del protocolo. El primer conjunto de extensiones fue publicado en 1999 por el Grupo de trabajo de ingeniería de Internet como RFC 2671, también conocido como EDNS0 [1] que fue actualizado por RFC 6891 en 2013 cambiando ligeramente la abreviatura a EDNS(0) . [2]
El Sistema de Nombres de Dominio se desarrolló por primera vez a principios de la década de 1980. Desde entonces, se ha mejorado progresivamente con nuevas funciones, manteniendo al mismo tiempo la compatibilidad con versiones anteriores del protocolo.
Las restricciones en el tamaño de varios campos de indicadores, códigos de retorno y tipos de etiquetas disponibles en el protocolo DNS básico impidieron el soporte de algunas características deseables. Además, los mensajes DNS transportados por UDP estaban restringidos a 512 bytes, sin considerar el Protocolo de Internet (IP) y los encabezados de la capa de transporte . [3] Recurrir a un transporte de circuito virtual , utilizando el Protocolo de Control de Transmisión (TCP), aumentaría enormemente la sobrecarga. Esto presentó un gran obstáculo para agregar nuevas características al DNS. En 1999, Paul Vixie propuso extender el DNS para permitir nuevos indicadores y códigos de respuesta y para proporcionar soporte para respuestas más largas en un marco que sea compatible con versiones anteriores.
Dado que no se pueden agregar nuevos indicadores en el encabezado DNS, EDNS agrega información a los mensajes DNS en forma de pseudo- registros de recursos ("pseudo-RR") incluidos en la sección de "datos adicionales" de un mensaje DNS. Tenga en cuenta que esta sección existe tanto en las solicitudes como en las respuestas.
EDNS introduce un único tipo pseudo-RR: OPT
.
Como pseudo-RR, los RR de tipo OPT nunca aparecen en ningún archivo de zona; solo existen en mensajes creados por los participantes del DNS.
El mecanismo es compatible con versiones anteriores , ya que los respondedores DNS más antiguos ignoran cualquier RR del tipo OPT desconocido en una solicitud y un respondedor DNS más nuevo nunca incluye un OPT en una respuesta a menos que haya uno en la solicitud. La presencia del OPT en la solicitud significa que un solicitante más nuevo sabe qué hacer con un OPT en la respuesta.
El pseudo-registro OPT proporciona espacio para hasta 16 indicadores y amplía el espacio para el código de respuesta. El tamaño total del paquete UDP y el número de versión (actualmente 0) están contenidos en el registro OPT. Un campo de datos de longitud variable permite registrar más información en futuras versiones del protocolo. El protocolo DNS original proporcionaba dos tipos de etiquetas, que se definen mediante los dos primeros bits del octeto de longitud de una etiqueta (RFC 1035): 00 (etiqueta estándar) y 11 (etiqueta comprimida). EDNS introduce el tipo de etiqueta 01 como etiqueta extendida . Los 6 bits inferiores del primer byte se pueden utilizar para definir hasta 63 nuevas etiquetas extendidas.
Un ejemplo de un pseudorregistro OPT, como se muestra mediante el comando dig :
;; PSEUDOSECCIÓN OPT:; EDNS: versión: 0, indicadores: sí; udp: 4096
El resultado de "EDNS: version: 0" indica conformidad total con EDNS0. [4] El resultado "flags: do" indica que está configurado "DNSSEC OK". [5]
EDNS es esencial para la implementación de extensiones de seguridad DNS ( DNSSEC ). [6]
Existen estándares para usar EDNS para establecer cuánto relleno debe haber alrededor de un mensaje DNS. [7] [8] El relleno es esencial al cifrar DNS, porque sin él puede ser posible determinar el nombre de dominio consultado a partir del tamaño cifrado de la consulta.
EDNS se utiliza para indicar durante cuánto tiempo debe mantenerse activa una conexión TCP. [9]
EDNS también se utiliza para enviar información general desde los resolutores a los servidores de nombres sobre la ubicación geográfica de los clientes en forma de la opción de subred de cliente EDNS (ECS). [10]
En la práctica, pueden surgir dificultades al utilizar EDNS atravesando firewalls, ya que algunos firewalls asumen una longitud máxima de mensaje DNS de 512 bytes y bloquean paquetes DNS más largos.
La introducción de EDNS hizo posible el ataque de amplificación de DNS , un tipo de ataque de denegación de servicio reflejado , ya que EDNS facilita paquetes de respuesta muy grandes en comparación con paquetes de solicitud relativamente pequeños.