Ya sabes que en internet se pueden encontrar una infinidad de sitios de diversas temáticas. Para acceder a ellos, normalmente se escribe una dirección en el campo correspondiente del navegador, por ejemplo, www.google.es o www.profesionalreview.com. ¿Pero tienes idea de cómo el equipo puede buscar estos sitios web, independientemente de dónde estén alojados? Es en este punto donde entra en escena el trabajo de los servidores del tipo DNS (Domain Name System). En este artículo vas a saber qué son los DNS, cómo funcionan y cuáles son otros conceptos relacionados, como el DNSSEC.
Índice de contenidos
El comienzo de internet y su colapso
En el inicio de la internet, como fue pensada para poco uso, había un archivo hosts.txt que contenía todas las IP y los nombres de las máquinas que existen en internet. Este archivo era administrado por NIC (Network Information Center) y distribuido por un único host, el SRI-NIC.
Los administradores de Arpanet enviaban a NIC, por e-mail, todos los cambios que hubieran sido efectuados y de vez en cuando SRI-NIC era actualizado, así como el archivo hosts.txt.
Los cambios eran aplicados en un nuevo hosts.txt una o dos veces por semana. Con el crecimiento de Arpanet, sin embargo, este esquema se hizo inviable. El tamaño del archivo hosts.txt crecía en la medida en que crecía el número de máquinas en internet.
Además, el tráfico generado con el proceso de actualización crecía en proporciones aún mayores una vez que cada host que era incluido, lo que no solo significaba una línea más en el archivo hosts.txt, sino también otro host actualizándose a partir del SRI-NIC.
Con el uso del TCP/IP de Arpanet, la red creció de manera exponencial, lo que hizo que la actualización del archivo fuera casi imposible de ser administrada.
Los administradores de Arpanet intentaron otras configuraciones que resolvieran el problema del archivo hosts.txt. El objetivo era crear un sistema que resolviera los problemas en una sola tabla de hosts. El nuevo sistema debería permitir que un administrador local convirtiese los datos disponibles mundialmente. La descentralización de la administración resolvería el problema del cuello de botella generado por un único host y disminuiría el problema del tráfico.
Además, la administración local haría que actualizar los datos se convirtiera en una tarea más sencilla. El esquema debería de usar los nombres en jerarquía para garantizar la exclusividad de los nombres.
[irp posts=»37885″]Paul Mockapetris, del USC’s Information Science Institute, fue el responsable de la arquitectura del sistema. En 1984 lanzó el RFC 882 y 883, que describe el «Domain Name System» o DNS. Estos RFC (Request For Comments) fueron seguidos por los RFC 1034 y 1035, que cuentan con las especificaciones actuales del DNS.
El DNS fue creado para ser jerárquico, distribuido y recursivo, además de permitir el almacenamiento en caché de su información. Así ninguna máquina tendría que saber todas las direcciones de internet. Los principales servidores DNS son los root servers, (servidores raíz). Son servidores que saben cuáles son las máquinas encargadas de los dominios de primer nivel.
En total hay 13 root servers, ubicándose diez en los Estados Unidos, dos en Europa (Estocolmo y Amsterdam) y otro en Asia (Tokio). Cuando una falla, los demás consiguen mantener el funcionamiento de la red sin mayores complicaciones.
El DNS trabaja con los puertos 53 (UDP y TCP) y 953 (TCP) para su funcionamiento y control, respectivamente. El puerto 53 UDP se utiliza para las consultas entre servidor y cliente, y el puerto 53 TCP generalmente se utiliza para la sincronización de datos entre master (principal) y esclavo (secundario).
El puerto 953 se utiliza para programas externos que se comuniquen con BIND. Por ejemplo, un DHCP que desee agregar el nombre de los hosts que recibieron IP dentro de la zona del DNS. Es lógico que esto solo debe hacerse si se establece una relación de confianza entre ellos, con el fin de evitar que el DNS tenga datos sobrescritos por cualquier software.
BIND fue creado por cuatro estudiantes de graduación, miembros de un grupo de investigación en ciencias de la computación de la Universidad de Berkeley. El desarrollador Paul Vixie (creador de vixie-cron), mientras trabajaba para la empresa DEC, fue el primer responsable de BIND. Actualmente, BIND es soportado y mantenido por el Internet Systems Consortium (ISC).
El desarrollo de BIND 9 se ha realizado a través de una combinación de contratos comerciales y militares. La mayoría de las funciones de BIND 9 eran promovidas por empresas proveedoras de sistemas Unix que querían asegurarse de que BIND se mantendría competitivo con las ofertas de los servidores DNS de Microsoft.
Por ejemplo, la extensión de la seguridad DNSSEC ha sido financiada por los militares de los Estados Unidos que se dieron cuenta de la importancia de la seguridad para el servidor DNS.
Nombres de dominio
Todo sitio web o servicio en internet necesita una dirección IP (ya sea IPv4 o IPv6). Con este recurso, es posible encontrar el servidor o conjunto de servidores que hospeda al sitio web y, así, acceder a sus páginas. En el momento de escribir este artículo, la dirección IP de Google España es 172.217.16.227.
Imagina tener que recordar las IPs de todos los sitios web que visitas todos los días, como Facebook, Twitter, e-mail, portales de noticias y más. Esto sería casi imposible y muy poco práctico, ¿No es así?
C:\Users\Migue>ping www.google.es Haciendo ping a www.google.es [172.217.16.227] con 32 bytes de datos: Respuesta desde 172.217.16.227: bytes=32 tiempo=39ms TTL=57 Respuesta desde 172.217.16.227: bytes=32 tiempo=30ms TTL=57 Respuesta desde 172.217.16.227: bytes=32 tiempo=31ms TTL=57 Respuesta desde 172.217.16.227: bytes=32 tiempo=30ms TTL=57 Estadísticas de ping para 172.217.16.227: Paquetes: enviados = 4, recibidos = 4, perdidos = 0 (0% perdidos), Tiempos aproximados de ida y vuelta en milisegundos: Mínimo = 30ms, Máximo = 39ms, Media = 32ms C:\Users\Migue>
Es básicamente por eso que utilizamos los nombres de dominios para acceder a los sitios web de internet. Con esto, el usuario no necesita saber, por ejemplo, la dirección IP de Profesional Review para acceder a ella, basta con saber su nombre de dominio y listo.
Se trata de un esquema muy práctico, ya que después de todo, memorizar nombres es mucho más fácil que memorizar secuencias numéricas. Además, a pesar de que no te acuerdes de un nombre con exactitud, puedes escribirlo en un motor de búsqueda y este te ayudará a encontrarlo.
La cuestión es que, a pesar del uso de dominios, los sitios todavía necesitan direcciones IP, ya que después de todo los nombres han sido creados para facilitar la comprensión humana, no la de los ordenadores. Y cabe al DNS el trabajo de relacionar un dominio a direcciones IP.
Servidores DNS (Domain Name System)
Los servicios de DNS (Sistema de Nombres de Dominios) de internet son, en pocas palabras, los grandes bancos de datos dispersos en servidores ubicados en varias partes del mundo. Cuando escribes una dirección en tu navegador, como www.profesionalreview.com, tu equipo pide a los servidores DNS de tu proveedor de internet (o de otros que hayas especificado) que encuentre la dirección IP asociada a dicho dominio. En caso de que estos servidores no tengan esta información, se comunicarán con otros que puedan tenerla.
Ayuda en este trabajo el hecho de que los dominios están organizados jerárquicamente. Primero tenemos el servidor raíz (root server), que puede ser entendido como el principal servicio de DNS y es representado por un punto al final de la dirección, como se muestra en el siguiente ejemplo:
www.profesionalreview.com
Ten en cuenta que si escribes la dirección exactamente como está arriba, con punto al final, en el navegador, el programa encontrará el sitio web por lo general. Sin embargo, no es necesario incluir este punto, ya que los servidores implicados ya saben de su existencia.
La jerarquía es seguida por dominios que conocemos bastante, como .com, .net, .org, .info, .edu, .es, .me y varios otros. Estas extensiones son llamadas «gTLDs» (Generic Top Level Domains), algo así como Dominios Genéricos de Primer Nivel.
También hay terminaciones orientadas a los países, las llamadas «ccTLDs» (Country Code Top Level Domains), algo así como Código de País para Dominios de Primer Nivel. Por ejemplo: .es para España, .ar para Argentina, .fr para Francia y así sucesivamente.
Despues, aparecen los nombres que las empresas y personas pueden registrar con estos dominios, como la palabra Profesional Review en profesionalreview.com o Google en google.es.
Con la jerarquía, averiguar cuál es la IP y, por tanto, cuál es el servidor que está asociado a un dominio (proceso llamado resolución de nombre) es más fácil, ya que este modo de funcionamiento permite un esquema de trabajo distribuido, donde cada nivel de la jerarquía cuenta con servicios específicos de DNS.
Para entenderlo mejor, mira este ejemplo: supongamos que deseas visitar el sitio web www.profesionalreview.com. Para ello, el servicio de DNS de tu proveedor tratará de descubrir si sabes cómo ubicar el referido sitio web. En caso negativo, primero consultará al servidor raíz. Este, a su vez, indicará el servidor DNS de la terminación .com, que continuará el proceso hasta llegar al servidor que responde al dominio profesionalreview.com, que finalmente informará la IP asociada, o sea, en qué servidor está el sitio en cuestión.
Los servidores DNS que representan determinados dominios se llaman «autoritativos». Por su parte, los servicios responsables de recibir las consultas de DNS de máquinas cliente y tratar de obtener respuestas con servidores externos se llaman «recursivos».
Los dominios gTLD y ccTLD son administrados por entidades diferentes, que responden también por los servidores DNS.
La memoria caché del DNS
Supongamos que has visitado una página web a la que fue imposible localizar mediante el servicio DNS de tu proveedor, de forma que este tenga que consultar otros servidores DNS (por medio del ya mencionado esquema de búsqueda jerárquica).
Con el propósito de impedir que esta investigación tenga que ser hecha de nuevo cuando otro usuario del proveedor de internet trate de ingresar al mismo sitio, el servicio de DNS puede guardar la información de la primera consulta por algún tiempo. Así, en otra solicitud igual, el servidor ya sabrá cuál es la IP asociada al sitio web en cuestión. Este procedimiento se conoce como caché del DNS.
En principio, el almacenamiento en caché del DNS solo guardaba datos de consultas positivas, esto es, cuando un sitio se encontraba. Sin embargo, los servicios de DNS también pasaron a guardar resultados negativos, de sitios no existentes o no localizados, como cuando introducen una dirección equivocada, por ejemplo.
La información de la memoria caché se almacena por un período de tiempo determinado por medio de un parámetro conocido como el TTL (Time to Live). Este se utiliza para evitar que la información registrada se vuelva obsoleta. El período de tiempo del TTL varía según las configuraciones determinadas para el servidor.
Gracias a esto, el trabajo de los servicios de DNS de los servidores raíz y los demás posteriores es minimizado.
Seguridad en el DNS con DNSSEC
En este punto, ya sabes que los servidores DNS tienen un papel importantísimo en la internet. El problema es que el DNS también puede ser «víctima» de acciones maliciosas.
Imagina, por ejemplo, que una persona con gran conocimiento en el tema elaboró un esquema para lograr capturar las solicitudes de resolución de nombres de clientes de un proveedor determinado. Al tener éxito con esto, puede tratar de dirigir a una dirección falsa en lugar del sitio web seguro que el usuario quiera visitar. Si el usuario no se da cuenta que se dirige a una página web falsa, puede proporcionar datos confidenciales, como el número de tarjeta de crédito.
Para evitar problemas como estos, es que fue creado el DNSSEC (DNS Security Extensions), que consiste en una especificación que añade características de seguridad en el DNS.
El DNSSEC considera, fundamentalmente, los aspectos de la autenticidad y la integridad de los procedimientos que involucran al DNS. Pero, al contrario de lo que algunas personas piensan inicialmente, no puede proveer protección contra intrusiones o ataques DoS, por ejemplo, aunque pueda ayudar, de cierta forma.
Básicamente, el DNSSEC utiliza un esquema que involucra claves públicas y privadas. Con esto, es posible tener la certeza de que los servidores correctos están respondiendo a las consultas de DNS. La implementación del DNSSEC debe ser realizada por las entidades responsables de la gestión de los dominios, motivo por el cual este recurso no es utilizado de manera plena.
Servicios gratuitos de DNS: OpenDNS y Google Public DNS
Cuando contratas un servicio de acceso a internet, de forma predeterminada, pasas a utilizar los servidores DNS de la compañía. El problema es que, muchas veces, estos servidores pueden no funcionar del todo bien: se establece la conexión, pero el navegador no puede encontrar ninguna página o el acceso a sitios web puede estar lento porque los servicios de DNS tardan en responder.
Una solución para problemas como estos consiste en adoptar los servicios de DNS alternativos y especializados, que están optimizados para ofrecer el mejor rendimiento posible y son menos susceptibles a errores. Los más conocidos son OpenDNS y Google Public DNS. Ambos servicios son gratuitos y, casi siempre, funcionan de forma muy satisfactoria.
OpenDNS
Hacer uso de OpenDNS es muy fácil: solo tienes que utilizar las dos IPs del servicio. Ellas son:
- Primaria: 208.67.222.222
- Secundaria: 208.67.220.220
El servicio secundario es una réplica del primario; si este no puede ser accedido por cualquier motivo, el segundo es la alternativa inmediata.
Estas direcciones pueden ser configuradas en tu propio equipo o en equipos de red, como routers Wi-Fi. Si utilizas Windows 10, por ejemplo, puedes hacer que la configuración de la siguiente manera:
- Presiona Win + X y selecciona «Conexiones de Red».
Ahora, debes hacer click con el botón derecho del ratón en el icono que representa la conexión y elegir Propiedades. A continuación, en la pestaña «Funciones de red», selecciona la opción Protocolo de internet versión 4 (TCP/IPv4) y haz click en Propiedades. Activa la opción «Usar las siguientes direcciones de servidor DNS». En el campo Servidor DNS preferido, introduce la dirección principal del DNS. En el campo justo a continuación, introduce la dirección secundaria.
Obviamente, este tipo de configuración puede ser hecho también en Mac OS X, Linux y otros sistemas operativos, basta ver las instrucciones sobre cómo hacerlo en el manual o los archivos de ayuda. Lo mismo vale para muchos equipos de la red.
El servicio de OpenDNS no requiere registro, pero es posible hacerlo en el sitio web del servicio para poder disfrutar de otros recursos, como el bloqueo de dominios y estadísticas de acceso, por ejemplo.
Google Public DNS
Google Public DNS es otro servicio del tipo que se destaca. A pesar de no ofrecer tantos recursos como OpenDNS, está fuertemente enfocado en la seguridad y el rendimiento, además de, por supuesto, ser parte de una de las mayores empresas de internet del mundo. Sus direcciones tienen una gran ventaja: pueden ser recordadas con más facilidad. Echa un vistazo a:
- Primario: 8.8.8.8
- Secundario: 8.8.4.4
Google Public DNS también tiene direcciones en IPv6:
- Primario: 2001:4860:4860::8888
- Secundario: 2001:4860:4860::8844
Consideraciones finales sobre las DNS
El uso de las DNS no se limita a internet, ya que este recurso tiene la capacidad de ser utilizado en redes locales o extranets, por ejemplo. Puede ser implementado prácticamente en cualquier sistema operativo, como Unix y Windows siendo las plataformas más populares. La herramienta más conocida para DNS es BIND, que es administrada por Internet Systems Consortium.
[irp posts=»37821″]Todo administrador de sistemas (SysAdmin) debe lidiar con las DNS, ya que si están bien configuradas, son la base de una red donde los servicios son ejecutados. Entender cómo funcionan las DNS y cómo podemos mejorarlas es importante para hacer que el servicio funcione correctamente y de forma segura.