DNS | |
---|---|
Nombre | sistema de nombres de dominio |
Nivel (según el modelo OSI ) | Aplicado |
Familia | TCP/IP |
Puerto/ID | 53/ TCP , 53/ UDP |
Propósito del protocolo | resolución de nombres de dominio |
Especificación | RFC 1034 , RFC 1035 /STD 13 |
Implementaciones principales (clientes) | Integrado en todos los sistemas operativos de red |
Implementaciones principales ( servidores ) | BIND , NSD , PowerDNS o servidor DNS de Microsoft |
Archivos multimedia en Wikimedia Commons |
DNS ( English Domain Name System "sistema de nombres de dominio") es un sistema distribuido por computadora para obtener información sobre dominios . Se usa más comúnmente para obtener una dirección IP de un nombre de host (computadora o dispositivo), obtener información de enrutamiento de correo y/o hosts de servidor para protocolos en un dominio ( registro SRV ).
Una base de datos DNS distribuida está respaldada por una jerarquía de servidores DNS que interactúan a través de un protocolo específico .
La base de DNS es la idea de una estructura jerárquica de nombres y zonas . Cada servidor responsable del nombre puede transferir la responsabilidad de la parte posterior del dominio a otro servidor (desde un punto de vista administrativo, a otra organización o persona), lo que le permite asignar la responsabilidad de la relevancia de la información a los servidores de varios organizaciones (personas) responsables únicamente de "su" nombre de dominio parcial.
A partir de 2010, el sistema DNS implementó controles de integridad de datos denominados Extensiones de seguridad DNS ( DNSSEC ). Los datos transmitidos no están encriptados, pero su autenticidad se verifica mediante métodos criptográficos. El estándar DANE implementado asegura la transferencia de información criptográfica confiable ( certificados ) por medio de DNS utilizado para establecer conexiones seguras y seguras entre las capas de transporte y aplicación .
El DNS tiene las siguientes características:
El DNS es importante para el funcionamiento de Internet , ya que se necesita información sobre la dirección IP de un host para conectarse a un host, y es más fácil para las personas recordar direcciones alfabéticas (generalmente significativas) que una secuencia de números. En algunos casos, esto permite el uso de servidores virtuales, como servidores HTTP, distinguiéndolos por el nombre de la solicitud. Inicialmente, la conversión entre dominio y direcciones IP se realizaba mediante un archivo de texto especial hosts , que se compilaba de forma centralizada y se enviaba automáticamente a cada una de las máquinas de su red local. Con el crecimiento de la Web, surgió la necesidad de un mecanismo eficiente y automatizado, que se convirtió en DNS.
DNS fue desarrollado por Paul Mokapetris en 1983 ; la descripción original de los mecanismos de trabajo se encuentra en RFC 882 y RFC 883 . En 1987 , la publicación de RFC 1034 y RFC 1035 cambió la especificación de DNS y dejó en desuso a RFC 882 , RFC 883 y RFC 973 .
El uso de un nombre más simple y fácil de recordar en lugar de una dirección de host numérica es de la era ARPANET . El Instituto de Investigación de Stanford (ahora SRI International ) mantuvo un archivo de texto HOSTS.TXT que asignaba nombres de host a direcciones numéricas de computadora en ARPANET . El mantenimiento de las direcciones numéricas, denominada lista de números asignados, estuvo a cargo de Jon Postel en el Instituto de Ciencias de la Información (ISI) de la Universidad del Sur de California, cuyo equipo trabajó en estrecha colaboración con el NII [1] .
Las direcciones se asignaban manualmente. Para solicitar un nombre de host y una dirección y agregar una computadora al archivo maestro, los usuarios se comunicaron con el Centro de Información de la Red (NIC) de SRI, dirigido por Elisabeth Feinler , por teléfono durante el horario comercial.
A principios de la década de 1980, el mantenimiento de una única tabla de host centralizada se había vuelto lento y engorroso, y la creciente red necesitaba un sistema de nombres automático para tratar los problemas técnicos y de personal. Postel se impuso la tarea de llegar a un compromiso entre cinco propuestas en competencia para resolver el problema planteado por Paul Mokapetris. En cambio, Mokapetris creó el concepto de un sistema de nombres de dominio jerárquico.
El Grupo de Trabajo de IETF publicó las especificaciones originales en RFC 882 y RFC 883 en noviembre de 1983.
En 1984, cuatro estudiantes de UC Berkeley , Douglas Terry, Mark Painter, David Riggle y Songnian Zhou, escribieron la primera versión del servidor de nombres BIND (Berkeley Internet Name Daemon) . En 1985, Kevin Dunlap de DEC revisó significativamente la implementación de DNS. Mike Karel, Phil Almquist y Paul Vixey han apoyado a BIND desde entonces. A principios de la década de 1990, BIND se transfirió a la plataforma Windows NT . Está muy extendido, especialmente en sistemas Unix, y sigue siendo el software de DNS más utilizado en Internet.
En noviembre de 1987, se adoptaron las especificaciones DNS: RFC 1034 y RFC 1035 . Desde entonces, se han adoptado cientos de RFC que modifican y complementan el DNS.
Inicialmente, las preocupaciones de seguridad no fueron consideraciones importantes en el desarrollo del software DNS, o cualquier software que se implementara en los inicios de Internet, ya que la red no estaba abierta al público en general. Sin embargo, el crecimiento de Internet en el sector comercial en la década de 1990 cambió los requisitos de las medidas de seguridad para proteger la integridad de los datos y la autenticación de los usuarios.
Los atacantes han descubierto y explotado varias vulnerabilidades. Uno de estos problemas es el envenenamiento de caché de DNS , en el que los datos se propagan a los resolutores de almacenamiento en caché con el pretexto de ser un servidor de origen autorizado, lo que contamina el almacén de datos con información potencialmente falsa y fechas de caducidad prolongadas (tiempo de vida). Posteriormente, las solicitudes de aplicaciones legítimas pueden redirigirse a hosts de red controlados por el atacante.
Las respuestas de DNS no se firmaron previamente criptográficamente, lo que permite una variedad de opciones de ataque. Las extensiones modernas de seguridad de nombres de dominio ( DNSSEC ) modifican el DNS para agregar soporte para respuestas firmadas criptográficamente. Otras extensiones, como TSIG, agregan soporte para autenticación criptográfica entre pares confiables y se usan comúnmente para autorizar transferencias de zona u operaciones de actualización dinámica.
Algunos nombres de dominio se pueden utilizar para lograr efectos de suplantación de identidad. Por ejemplo, paypal.com y paypa1.com son nombres diferentes, pero es posible que los usuarios no puedan distinguirlos en la GUI según la fuente elegida por el usuario. En muchas fuentes, la letra l y el número 1 se ven muy similares o incluso idénticos. Este problema es grave en los sistemas que admiten nombres de dominio internacionalizados porque muchos de los códigos de caracteres ISO 10646 se pueden mostrar en pantallas de computadora típicas. Esta vulnerabilidad a veces se aprovecha en el phishing .
También se pueden utilizar técnicas como el DNS inverso con validación directa de registros para validar los resultados del DNS, pero no son criptográficamente válidas; esto no tiene en cuenta la opción de sustituir la información de enrutamiento ( secuestro de BGP en inglés ).
Los conceptos clave de DNS son:
El sistema DNS contiene una jerarquía de servidores DNS , correspondiente a una jerarquía de zonas . Cada zona es compatible con al menos un servidor DNS autorizado (del inglés autoritativo - autorizado), que contiene información sobre el dominio.
El nombre y la dirección IP no son idénticos : una dirección IP puede tener muchos nombres, lo que le permite admitir muchos sitios web en una computadora (esto se denomina alojamiento virtual ). Lo contrario también es cierto: muchas direcciones IP se pueden asignar al mismo nombre: esto le permite crear equilibrio de carga .
Para aumentar la estabilidad del sistema, se utilizan muchos servidores que contienen información idéntica y el protocolo tiene medios para mantener el sincronismo de la información ubicada en diferentes servidores. Hay 13 servidores raíz , sus direcciones prácticamente no cambian. [2]
El protocolo DNS utiliza el puerto 53 de TCP o UDP para responder a las consultas. Tradicionalmente, las solicitudes y respuestas se envían como un solo datagrama UDP . TCP se utiliza cuando el tamaño de los datos de respuesta supera los 512 bytes y para solicitudes AXFR .
El término recursión en DNS se refiere al algoritmo de comportamiento del servidor DNS : "realizar en nombre del cliente una búsqueda completa de la información necesaria en todo el sistema DNS, si es necesario, refiriéndose a otros servidores DNS" .
Una consulta de DNS puede ser recursiva (que requiere una búsqueda completa) y no recursiva (o iterativa ), que no requiere una búsqueda completa.
De manera similar, un servidor DNS puede ser recursivo (capaz de realizar búsquedas completas) y no recursivo (no capaz de realizar búsquedas completas). Algunos software de servidor DNS, como BIND , se pueden configurar para consultar a algunos clientes de forma recursiva y consultar a otros de forma no recursiva .
Al responder a una consulta no recursiva , así como la imposibilidad o prohibición de realizar consultas recursivas , el servidor DNS o bien devuelve datos sobre la zona de la que es responsable , o bien devuelve un error. La configuración de un servidor no recursivo, cuando la respuesta devuelve las direcciones de los servidores que tienen más información sobre la zona solicitada que el servidor que responde (la mayoría de las veces, las direcciones de los servidores raíz), son incorrectas y dicho servidor puede ser utilizado para organizar ataques DoS .
En el caso de una consulta recursiva , el servidor DNS sondea los servidores (en orden descendente del nivel de zona en el nombre) hasta que encuentra una respuesta o encuentra que el dominio no existe (en la práctica, la búsqueda comienza desde el DNS más cercano). servidores al deseado, si la información sobre ellos está disponible en caché y actualizada, es posible que el servidor no consulte a otros servidores DNS).
Considere el ejemplo de la operación de todo el sistema.
Supongamos que escribimos en el navegador la dirección ru.wikipedia.org. El navegador busca una coincidencia entre esta dirección y la dirección IP en el archivo de hosts . Si el archivo no contiene una coincidencia, entonces el navegador le pregunta al servidor DNS: "¿cuál es la dirección IP de ru.wikipedia.org"? Sin embargo, es posible que el servidor DNS no solo no sepa nada sobre el nombre solicitado, sino incluso sobre todo el dominio wikipedia.org. En este caso, el servidor se comunica con el servidor raíz , por ejemplo, 198.41.0.4. Este servidor dice: "No tengo información sobre esta dirección, pero sé que 204.74.112.1 es responsable de la zona org". Luego, el servidor DNS envía su solicitud a 204.74.112.1, pero responde "No tengo información sobre este servidor, pero sé que 207.142.131.234 es el responsable de la zona wikipedia.org". Finalmente, la misma solicitud se envía al tercer servidor DNS y recibe una respuesta, una dirección IP, que se transmite al cliente, el navegador.
En este caso, al resolver un nombre, es decir, en el proceso de búsqueda de una IP por nombre:
A veces es posible que el servidor solicitado envíe una consulta recursiva a un servidor DNS "upstream" y espere una respuesta lista.
Con el procesamiento de consultas recursivas , todas las respuestas pasan por el servidor DNS y tiene la oportunidad de almacenarlas en caché . Una solicitud repetida de los mismos nombres generalmente no va más allá del caché del servidor , no hay llamadas a otros servidores en absoluto. El tiempo de caché permitido para las respuestas viene con las respuestas ( campo TTL del registro de recursos ).
Las solicitudes recursivas requieren más recursos del servidor (y crean más tráfico), por lo que generalmente se aceptan desde nodos "conocidos" por el propietario del servidor (por ejemplo, el proveedor brinda la capacidad de realizar solicitudes recursivas solo a sus clientes, en un entorno corporativo). red, las solicitudes recursivas se aceptan solo desde el segmento local). Las consultas no recursivas generalmente se reciben de todos los hosts en la red (y solo las consultas sobre la zona alojada por el host reciben una respuesta significativa, las consultas de DNS para otras zonas generalmente devuelven direcciones de otros servidores).
El DNS se usa principalmente para resolver nombres simbólicos en direcciones IP, pero también puede realizar el proceso inverso. Para ello se utilizan las herramientas DNS existentes. El hecho es que se pueden comparar varios datos con un registro DNS, incluido algún nombre simbólico. Hay un dominio especial in-addr.arpacuyas entradas se utilizan para convertir direcciones IP en nombres simbólicos. Por ejemplo, para obtener un nombre DNS para una dirección 11.22.33.44, puede consultar el servidor DNS para obtener una entrada 44.33.22.11.in-addr.arpay devolverá el nombre simbólico correspondiente. El orden inverso de escribir partes de la dirección IP se debe a que en las direcciones IP los bits altos se ubican al principio, y en los nombres DNS simbólicos los bits altos (ubicados más cerca de la raíz) se ubican al final.
Los registros DNS , o resource records ( registros de recursos en inglés , RR ), son unidades de almacenamiento y transmisión de información en el DNS. Cada registro de recursos consta de los siguientes campos [3] :
Los tipos más importantes de registros DNS son:
RFC 2606 ( Nombres DNS de nivel superior reservados) define los nombres de dominio que se deben usar como ejemplos (por ejemplo, en la documentación) y también con fines de prueba. Además example.comde , example.orgyexample.net , este grupo también incluye test, invalidetc.
Un nombre de dominio solo puede constar de un conjunto limitado de caracteres ASCII , lo que permite escribir la dirección del dominio independientemente del idioma del usuario. ICANN ha aprobado un sistema IDNA basado en Punycode que convierte cualquier cadena Unicode en un juego de caracteres DNS válido.
Servidores de nombres:
URI | esquemas|
---|---|
Oficial | |
no oficial |
Protocolos TCP /IP básicos por capas del modelo OSI | |
---|---|
Físico | |
canalizado | |
la red | |
Transporte | |
sesión | |
Representación | |
Aplicado | |
Otro aplicado | |
Lista de puertos TCP y UDP |