Elsistema de nombres de dominio (Domain Name System oDNS, por sus siglas en inglés)[1] es un sistema de nomenclatura jerárquico descentralizado para dispositivos conectados aredes IP comoInternet o unared privada. Este sistema asocia información variada connombres de dominio asignados a cada uno de los participantes. Su función más importante es la resolución de nombres, «traducir» nombres inteligibles para las personas en identificadores binarios asociados con los equipos conectados a la red con el propósito de poder localizar y direccionar estos equipos mundialmente.[2]
El servidor DNS utiliza unabase de datos distribuida yjerárquica que almacena información asociada anombres de dominio en redes comoInternet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio adirecciones IP y la localización de los servidores decorreo electrónico de cada dominio.
La asignación de nombres a direcciones IP es ciertamente la función más conocida de los protocolos DNS. Por ejemplo, si la dirección IP del sitio Google es 216.58.210.163, la mayoría de la gente llega a este equipo especificandowww.google.com y no la dirección IP. Además de ser más fácil de recordar, el nombre es más fiable.[3] La dirección numérica podría cambiar por muchas razones, sin que tenga que cambiar el nombre del sitio web. Incluso, en el caso de que una página web utilice unared de distribución de contenidos (Content delivery network o CDN, por sus siglas en inglés) por medio del DNS el usuario recibirála dirección IP del servidor más cercano según su localización geográfica (cada CDN a su vez tiene sus propios servidores DNS).
Principalmente, el DNS nació de la necesidad de recordar fácilmente los nombres de todos los servidores conectados a Internet. En un inicio, SRI (ahoraSRI International) alojaba un archivo llamadoHOSTS que contenía todos los nombres de dominio conocidos.[4][5]
El crecimiento explosivo de la red causó que el sistema de nombres centralizado en el archivo hosts no resultara práctico y en noviembre de 1983Jon Postel publica el planeamiento en elRFC 881 y luego junto aPaul Mockapetris publican losRFC 882 yRFC 883 ese mismo año. En octubre de 1984 y tras largas discusiones emiten elRFC 920,[6] definiendo lo que hoy en día ha evolucionado hacia el DNS moderno (estosRFC 882 y 883 fueron reemplazados en 1987 con losRFC 1034 yRFC 1035).[7]
De no existir los servidores DNS los usuarios tendrían que escribir la dirección IP del sitio web en lugar de escribir la URL de este lo cual generaría confusiones y la navegación en internet se tornaría muy complicada para los usuarios.
En esta etapa, la mejor forma de proveer «continuidad» era tener múltiples servidores contestando múltiples consultas. Un servidor era elmaestro y los demás eranesclavos. Cada uno de los esclavos debía revisar con el maestro periódicamente que los datos no hubieran cambiado.
Unos 10 años después, se hicieron algunos ajustes mayores al protocolo DNS. Esto era una forma más dinámica de mantener los servidores al día, utilizando NOTIFY (en españolnotificar) y las transferencias incrementales de zona (IXFR).[8]
NOTIFY fue un cambio clave. En vez de esperar a que un esclavo revisara, el maestro podía mandar mensajes NOTIFY a los esclavos, instándolos a adquirir los nuevos datos. Por su parte, IXFR significó un cambio en la forma en que los datos se comunicaban. Si cambiaba solamente uno de entre cientos de registros, la especificación original enviaría cientos de mensajes. IXFR cambió el sistema, permitiendo que solamente se enviasen los registros que cambiaron.[8]
La siguiente evolución de DNS vino cuando se definieron cambios dinámicos enRFC 2136. Esto permitió que los administradores de los servidores pudieran hacer cambios en los registros de mejor forma. Más tarde, en elRFC 2671 se definieronmecanismos de extensión de DNS (EDNS) que modernizó aún más el sistema.[8]
Para la operación práctica del sistema DNS se utilizan tres componentes principales:
Clientes fase 1
Un programa cliente DNS que se ejecuta en la computadora del usuario y que genera peticiones DNS de resolución de nombres a un servidor DNS(Por ejemplo: ¿Qué dirección IP corresponde a nombre.dominio?)
Servidores DNS
Que contestan las peticiones de los clientes. Los servidores recursivos tienen la capacidad de reenviar la petición a otro servidor si no disponen de la dirección solicitada.
Zonas de autoridad
Es una parte del espacio de nombre de dominios sobre la que es responsable un servidor DNS, que puede tener autoridad sobre varias zonas. (Por ejemplo: subdominio.Wikipedia.ORG, subdominio.COM, etc.)
Unnombre de dominio usualmente consiste en dos o más partes (técnicamente «etiquetas»), separadas por puntos cuando se las escribe en forma de texto. Por ejemplo,www.ejemplo.com oes.wikipedia.org
A la etiqueta ubicada más a la derecha se le llama «dominio de nivel superior» (en ingléstop level domain). Como «com» enwww.ejemplo.com u «org» enes.wikipedia.org
Cada etiqueta a la izquierda especifica una subdivisión o «subdominio». Nótese que «subdominio» expresa dependencia relativa, no dependencia absoluta. En teoría, esta subdivisión puede tener hasta 127 niveles, y cada etiqueta puede contener hasta 63 caracteres, pero restringidos a que la longitud total del nombre del dominio no exceda los 255 caracteres, aunque en la práctica los dominios son casi siempre mucho más cortos.
Finalmente, la parte más a la izquierda del dominio suele expresar elnombre de la máquina (en ingléshostname). El resto del nombre de dominio simplemente especifica la manera de crear una ruta lógica a la información requerida. Por ejemplo, el dominioes.wikipedia.org tendría el nombre de la máquina «es», aunque en este caso no se refiere a una máquina física en particular.
El DNS consiste en un conjunto jerárquico de servidores DNS. Cada dominio o subdominio tiene una o más «zonas de autoridad» que publican la información acerca del dominio y los nombres de servicios de cualquier dominio incluido. La jerarquía de las zonas de autoridad coincide con la jerarquía de los dominios. Al inicio de esa jerarquía se encuentra losservidores raíz: los servidores que responden cuando se busca resolver un dominio de primer y segundo nivel.
Los usuarios generalmente no se comunican directamente con el servidor DNS: la resolución de nombres se hace de forma transparente por las aplicaciones del cliente (por ejemplo,navegadores,clientes de correo y otras aplicaciones que usan Internet). Al realizar una petición que requiere una búsqueda de DNS, la petición se envía al servidor DNS local delsistema operativo. El sistema operativo, antes de establecer alguna comunicación, comprueba si la respuesta se encuentra en la memoria caché. En el caso de que no se encuentre, la petición se enviará a uno o más servidores DNS,[9] el usuario puede utilizar los servidores propios de su ISP, puede usar un servicio gratuito de resolución de dominios o contratar un servicio avanzado de pago que por lo general son servicios contratados por empresas por su rapidez y la seguridad que estos ofrecen.
La mayoría de usuarios domésticos utilizan como servidor DNS el proporcionado por el proveedor de servicios de Internet salvo quienes personalizan sus equipos o enrutadores para servidores públicos determinados. La dirección de estos servidores puede ser configurada de forma manual o automática medianteDHCP (IP dinámica). En otros casos, los administradores de red tienen configurados sus propiosservidores DNS.
En cualquier caso, los servidores DNS que reciben la petición, buscan en primer lugar si disponen de la respuesta en la memoria caché. Si es así, sirven la respuesta; en caso contrario, iniciarían la búsqueda de manera recursiva. Una vez encontrada la respuesta, el servidor DNS guardará el resultado en su memoria caché para futuros usos y devuelve el resultado.[9]
Típicamente el protocolo DNS transporta las peticiones y respuestas entre cliente y servidor usando elprotocolo UDP, ya que es mucho más rápido. Las ocasiones donde se usa elprotocolo TCP son: cuando se necesitan transportar respuestas mayores de 512 bytes de longitud (por ejemplo al usar DNSSEC) y cuando se intercambia información entre servidores (por ejemplo al hacer una transferencia de zona), por razones de fiabilidad.[10]
Elespacio de nombres de dominio tiene unaestructura arborescente. Las hojas y los nodos del árbol se utilizan como etiquetas de los medios. Un nombre de dominio completo de un objeto consiste en la concatenación de todas las etiquetas de un camino. Las etiquetas soncadenasalfanuméricas (con «-» como único símbolo permitido), deben contar con al menos un carácter y un máximo de 63 caracteres de longitud, y deberá comenzar con una letra (y no con «-»).[11] Las etiquetas individuales están separadas por puntos. Un nombre de dominio termina con un punto (aunque este último punto generalmente se omite, ya que es puramente formal). Un nombre de dominio correctamente formado (FQDN, por sus siglas en inglés), es por ejemplo «www.ejemplo.com.» (incluyendo el punto al final).
Un nombre de dominio debe incluir todos los puntos y tiene una longitud máxima de 255 caracteres.
Un nombre de dominio se escribe siempre de derecha a izquierda. El punto en el extremo derecho de un nombre de dominio separa la etiqueta raíz de la jerarquía. Este primer nivel es también conocido comodominio de nivel superior (TLD, por sus siglas en inglés).
Los objetos de un dominio DNS (por ejemplo, el nombre del equipo) se registran en un archivo de zona, ubicado en uno o másservidores de nombres.
Estos son los tipos de servidores de acuerdo a su función:[9]
Primarios o maestros
guardan los datos de un espacio de nombres en sus ficheros.
Secundarios o esclavos
obtienen los datos de los servidores primarios a través de una transferencia de zona.
Locales o caché
funcionan con el mismo software, pero no contienen la base de datos para la resolución de nombres. Cuando se les realiza una consulta, estos a su vez consultan a los servidores DNS correspondientes, almacenando la respuesta en su base de datos para agilizar la repetición de estas peticiones en el futuro continuo o libre.
Un servidor DNS puede resolver un nombre de dominio de manera «recursiva» o «iterativa».[12] En una consulta «recursiva», un cliente solicita a un servidor DNS que obtenga por sí mismo la respuesta completa (es decir, dado el dominiomi.dominio.com, el cliente espera recibir la dirección IP correspondiente). Por otro lado, dada una consulta «iterativa», el servidor DNS no otorga una respuesta completa: para el caso demi.dominio.com, el primer servidor al que se le realiza la consulta (un servidor raíz), retorna las direcciones IP de los servidores de nivel superior (TDL) responsables del dominio.com. De este modo, el cliente ahora debe realizar una nueva consulta a uno de estos servidores, el cual toma nota del sufijo.dominio.com y responde con la IP del servidor DNS correspondiente, por ejemplodns.dominio.com. Finalmente, el cliente envía una nueva consulta adns.dominio.com para obtener la dirección IP demi.dominio.com.
En la práctica, la consulta de un host a un DNS local es recursiva, mientras que las consultas que realiza el DNS local son iterativas. Además, las consultas recursiva sólo se realizan en caso de que el servidor DNS local no posea los datos correspondientes en caché (o en caso de que estos hayan expirado). En resumen, el proceso de resolución normal se lleva a cabo de la siguiente manera:
El servidor DNS local recibe una consulta recursiva desde elresolver del host cliente.
El servidor DNS local verifica su caché para ver si ya tiene una respuesta almacenada para esa consulta. Si la encuentra, devuelve la respuesta al cliente.
Si el servidor DNS local no tiene la respuesta en su caché, realiza las consultas iterativas a los servidores correspondientes.
El servidor DNS local entrega la resolución al host que solicitó la información.
Elresolver del host cliente entrega la respuesta a la aplicación correspondiente.
Originalmente, las preocupaciones deseguridad no fueron consideraciones importantes para el diseño en el software DNS o de cualquier otro software para despliegue en la Internet temprana, ya que la red no estaba abierta a la participación del público general. Sin embargo, la expansión de Internet en el sector comercial en los años 1990 cambió los requisitos de las medidas de seguridad para proteger laintegridad de los datos y laautenticación de los usuarios.
Muchos temas de vulnerabilidades fueron descubiertos y explotados por usuarios maliciosos. Uno de esos temas es elenvenenamiento de caché DNS, en la cual los datos son distribuidos a los resolvedores de caché bajo el pretexto de ser un servidor de autoridad de origen, contaminando así el almacenamiento de datos con información potencialmente falsa y largos tiempos de expiración (time-to-live). Subsecuentemente, las solicitudes legítimas de las aplicaciones pueden ser redirigidas a equipos de red operados con contenidos maliciosos.
Las respuestas DNS tradicionalmente no estaban firmadascriptográficamente, permitiendo muchas posibilidades de ataque; lasextensiones de seguridad del DNS (DNSSEC) modifican el DNS para agregar la posibilidad de tener respuestas firmadas criptográficamente.DNSCurve ha sido propuesto como una alternativa a DNSSEC. Otras extensiones, comoTSIG, agregan soporte para autenticación criptográfica entre pares de confianza y se usan comúnmente para autorizar transferencias de zona u operaciones dinámicas de actualización.
Algunos nombres de dominio pueden ser usados para conseguir efectos de engaño. Por ejemplo, paypal.com y paypa1.com son nombres diferentes, pero puede que los usuarios no puedan distinguir la diferencia dependiendo deltipo de letra que estén usando. En muchos tipos de letras la letral y el numeral1 se ven muy similares o hasta idénticos. Este problema es grave en sistemas que permiten nombres de dominio internacionalizados, ya que muchos caracteres enISO 10646 pueden aparecer idénticos en las pantallas típicas de computador. Esta vulnerabilidad se explota ocasionalmente enphishing.[13]
El Sistema de nombres de dominio especifica una base de datos de elementos de información para recursos de red. Los tipos de elementos de información se clasifican y organizan con una lista detipos de registros de DNS: los registros de recursos (RR). Cada registro tiene un tipo (nombre y número), un tiempo de expiración (tiempo de vida), una clase, y datos específicos del tipo. Los registros de recursos del mismo tipo se describen como un conjunto de registros de recursos (RRset) y no tienen un orden específico. Los resolvedores de DNS devuelven el conjunto completo tras la consulta, pero los servidores pueden implementar un ordenamientoround-robin para lograr unbalance de carga. Por el contrario, lasExtensiones de Seguridad del Sistema de Nombres de Dominio (DNSSEC) funcionan en el conjunto completo de registros de recursos en orden canónico.
Cuando se envían a través de una red deProtocolo de Internet, todos los registros usan el formato común especificado enRFC 1035:[14]
Cantidad de segundos en que el RR es válido (el máximo es 231−1, que es aproximadamente 68 años)
4
RDLENGTH
Longitud del campo RDATA (especificado en octetos)
2
RDATA
Datos adicionales específicos de RR
Variable, según RDLENGTH
NAME es el nombre de dominio completo del nodo en el árbol. Durante la conexión, el nombre puede acortarse utilizando la compresión de etiquetas donde los extremos de los nombres de dominio mencionados anteriormente en el paquete pueden sustituirse por el final del nombre de dominio actual. Un @ independiente se usa para denotar el origen actual.
TYPE es el tipo de registro. Indica el formato de los datos y da una idea del uso previsto. Por ejemplo, el registroA se usa para traducir de un nombre de dominio a unadirección IPv4, el registroNS enumera quéservidores de nombres pueden responder búsquedas en unazona DNS, y el registroMX especifica elservidor de correo utilizado para manejar el correo de un dominio especificado en una dirección de correo electrónico capas del dns cuales son.
RDATA son datos de tipo específico de relevancia, como la dirección IP para registros de dirección, o la prioridad y el nombre de host para registros MX. Los tipos de registros conocidos pueden usar la compresión de etiquetas en el campo RDATA, salvo los tipos de registros "unknown" (RFC 3597).
CLASS es la clase del registro establecido en IN (Internet) para registros DNS comunes que involucran nombres de host, servidores o direcciones IP. Además, existen las clases Chaos (CH) y Hesiod (HS). Cada clase es un espacio de nombres independiente con delegaciones potencialmente diferentes de zonas DNS.
Además de los registros de recursos definidos en unarchivo de zonas, el sistema de nombres de dominio también define varios tipos de solicitud que se usan sólo en la comunicación con otros nodos DNS (en la conexión), como cuando se realizantransferencias de zona (AXFR / IXFR) o paraEDNS (OPTAR).
El sistema de nombres de dominio soporta registros DNS de tipocomodín, que especifican nombres que comienzan con laetiqueta de asterisco «*», por ejemplo, * .ejemplo.[15][16] Los registros de DNS pertenecientes a nombres de dominio comodín especifican reglas para generar registros de recursos dentro de una sola zona de DNS mediante la sustitución de etiquetas con componentes coincidentes del nombre, incluyendo cualquier descendientes especificado. Por ejemplo, en la siguiente configuración, la zona DNSx.example especifica que todos los subdominios, incluidos los subdominios de subdominios, dex.example usan el intercambiador de correo (MX)a.x.example. El registro A paraa.x.example es necesario para especificar la dirección IP del intercambiador de correo. Dado que esto tiene como resultado excluir este nombre de dominio y sus subdominios de las coincidencias con comodines, también se debe definir un registro MX adicional para el subdominio a.x.example, así como un registro MX comodín para todos sus subdominios en la zona de DNS.
El rol de los registros comodín se perfeccionó enRFC 4592, porque la definición original enRFC 1034 era incompleta y dio lugar a interpretaciones erróneas por parte de los implementadores.[16]
Dirección (address). Este registro se usa para traducir nombres de servidores de alojamiento a direcciones IPv4
AAAA
Dirección (address). Este registro se usa enIPv6 para traducir nombres de hosts adirecciones IPv6
CNAME
Nombre canónico (canonical Name). Se usa para crear nombres de servidores de alojamiento adicionales, o alias, para los servidores de alojamiento de un dominio. Es usado cuando se están corriendo múltiples servicios (comoFTP y servidor web) en un servidor con una soladirección IP. Cada servicio tiene su propia entrada de DNS (como «ftp.ejemplo.com.» y «www.ejemplo.com.»). Esto también es usado cuando corres múltiples servidoresHTTP, con diferentes nombres, sobre el mismo host. Se escribe primero el alias y luego el nombre real. Ej. «Ejemplo1 IN CNAME ejemplo2»
NS
Servidor de nombres (name server). Define la asociación que existe entre un nombre de dominio y los servidores de nombres que almacenan la información de dicho dominio. Cada dominio se puede asociar a una cantidad cualquiera de servidores de nombres
Intercambio de correo (mail exchange). Asocia un nombre de dominio a una lista de servidores de intercambio de correo para ese dominio. Tiene un balanceo de carga y prioridad para el uso de uno o más servicios de correo
PTR
Indicador (pointer). También conocido como «registro inverso», funciona a la inversa del registro A, traduciendo IPs en nombres de dominio. Se usa en el archivo de configuración de lazona DNS inversa
SOA
Autoridad de la zona (start of authority). Proporciona información sobre el servidor DNS primario de la zona
SRV
Service record (SRV record)
ANY
Toda la información de todos los tipos que exista. (No es un tipo de registro, sino un tipo de consulta)
Un registro «A» y «AAAA» se dice que es un «registro de pegamento» (eninglés:glue record) cuando define un dominio apuntado por un registro NS. Un registro de pegamento asocia una dirección IP «pegada» al subdominio que se quiere usar comoservidor de DNS.[17]
Por ejemplo, supongamos que tenemos el dominio «yourdomain.com» para el que tengo los subdominios «ns1.yourdomain.com» y «ns2. yourdomain.com». Entonces podríamos realizar una configuración como:[18]
yourdomain.com IN NS ns1.yourdomain.comyourdomain.com IN NS ns2.yourdomain.comns1.yourdomain.com IN A 182.18.164.24ns1.yourdomain.com IN AAAA 2400:3B00:1:1::2ns2.yourdomain.com IN A 103.231.77.204ns2.yourdomain.com IN AAAA 2400:3B00:20:4::d4
Los cuatro últimos registros se dice que son registros de pegamento.
Los siguientes documentos definen el Sistema de Nombres de Dominio:
RFC 881,The Domain Names Plan and Schedule – El Plan de los Nombres de Dominio y su Agenda, inicio formal del planeamiento de trabajo para la conceptualización.
RFC 920,Domain Requirements – Especificaba los dominios de nivel superior originales
↑«El Sistema de nombres de dominio»(html).Microsoft TechNet. Archivado desdeel original el 12 de abril de 2008. Consultado el 16 de julio de 2018. «Sistema de nombres de dominio (DNS) es una base de datos distribuida y jerárquica que contiene asignaciones de nombres de dominio de DNS a diferentes tipos de datos, como las direcciones de protocolo de Internet (IP). El sistema DNS le permite usar nombres sencillos como www.microsoft.com, para localizar equipos de forma fácil y otros recursos en redes basadas en TCP/IP. DNS es un estándar del Grupo de trabajo de ingeniería de Internet (IETF).»
↑«Comment fonctionne Internet?»(html).progresser en informatique(en francés). Archivado desdeel original el 16 de julio de 2018. Consultado el 16 de julio de 2018. «Afin que chaque serveur puisse être identifié et atteint, ils possèdent tous une adresse IP unique, comme votre lieu de domicile ou votre numéro de téléphone. Comme une adresse IP est difficile à retenir (par ex.: 216.27.69.178), nous leur donnons aussi un nom, comme google.com, facebook.com, etc. Dans le jargon, ce nom s’appelle un nom de domaine ou une adresse URL. (...) Votre ordinateur envoie une requête à votre fournisseur d’accès à Internet (Swissco, Free, etc.) et ce dernier va router (transmettre) votre demande à un serveur DNS (Domain Name Server) qui à son tour va faire correspondre le nom de domaine que vous avez demandé à son adresse IP unique afin de pouvoir rediriger votre demande initiale vers le serveur Google adéquat dont l’adresse IP correspond au nom de domaine google.com».
↑«How DNS Works»(html).Microsoft Technet(en inglés). 10 de julio de 2009. Archivado desdeel original el 16 de julio de 2018. Consultado el 16 de julio de 2018. «The Domain Name System introduced in 1984 became this new system. With DNS, the host names reside in a database that can be distributed among multiple servers, decreasing the load on any one server and providing the ability to administer this naming system on a per-partition basis. DNS supports hierarchical names and allows registration of various data types in addition to host name to IP address mapping used in HOSTS files. Because the DNS database is distributed, its potential size is unlimited and performance is not degraded when more servers are added.»
↑«History of DNS».CyberTelecom(en inglés). Consultado el 28 de febrero de 2016.