Las siglas DNS son las iniciales de Domain Name System (Sistema de Nombres de Dominio). Este sistema de nomenclatura jerárquica para redes, además de ser distribuido, hace de traductor para los nombres de los dominios.

El sistema DNS es una de las tecnologías fundamentales en el funcionamiento de Internet tal cual lo conocemos ahora. Gracias a este sistema, las computadoras son capaces de resolver (o encontrar) las direcciones IP de las distintos servidores que prestan servicios en Internet. Actúa como si fuera una guía telefónica, en donde podemos buscar los nombres de las personas y los números telefónicos asociados a estas. Con esto se permite a los usuarios acceder de forma rápida y sencilla a los servicios alojados en servidores conectados a Internet.

Cuando nos conectamos a Internet, nuestro ISP (proveedor de servicio de Internet) nos asigna una dirección IP. Esta dirección puede ser una serie de 12 números (en el caso de IPv4) o de 32 caracteres en formato hexadecimal (en el caso de IPv6). En ambos casos, un pc puede manejar fácilmente estos formatos de direcciones. En cambio, para una persona esto no sería una tarea nada fácil.

Resulta muy difícil memorizar por ejemplo, una dirección como 172.217.3.78, la cual es la dirección IPv4 de Google. O la dirección 91.121.161.210, que corresponde a la dirección IPv4 de este Academy. La cosa se complica más, cuando como usuarios accedemos a varias webs y servicios. Y se vuelve todo un reto cuando las direcciones de esos servicios son dinámicas (cambian con el pasar de los días).

Frente a esta situación, la mejor manera es tener una base de datos de nombres de dominios a los que le relaciona con una dirección IP. Los nombres de dominio son más sencillos de recordar y nos facilitan la tarea de navegar por Internet. Por ejemplo, no es lo mismo escribir Wikipedia.com que escribir 208.80.154.224.

dns-estructura-arbol

Funcionamiento de los DNS

La infraestructura de funcionamiento de los DNS está dividida en una serie de capas con funciones bien definidas. Estas capas son las responsables de registrar, solicitar y resolver los nombres de dominio.

Estas capas de funcionamiento son las siguientes:

Capa #1: Cliente DNS o resolvers

Esta es la primera capa del funcionamiento DNS. Esta es la más cercana a los computadores de los usuarios. Los clientes DNS tienen como función principal realizar las peticiones (queries) para resolver dominios a los servidores DNS. Es decir, son los responsables de solicitar la información para que podamos navegar en Internet resolviendo los dominios.

Todo sistema operativo con capacidad de conectarse a Internet, cuenta con funciones de cliente DNS. Esto es así para poder facilitar la navegación en la red. Las tareas de estos clientes son:

  1. Interrogar al servidor DNS por los dominios a los que accede el usuario.
  2. Interpretar las respuestas del servidor DNS sobre los dominios solicitados.
  3. Devolver la información al programa que ha realizado la solicitud (navegadores web, programas P2P, entre otros).

Generalmente estos clientes DNS aplican ciertas técnicas como el caché DNS, para permitir que la navegación sea mucho más rápido. Esto gracias a que las peticiones correctamente respondidas por el servidor DNS son almacenadas en local. De esta manera, la resolución de nombres tarda mucho menos que enviar información a un servidor remoto y esperar la respuesta del mismo.

Otras capacidades mostradas por estos clientes son DNS-over-TLS (DNS mediante TLS) y DNSSEC (DNS Security Extensions). Ambas son capas de seguridad que dependen de un funcionamiento bipartita (servidor y cliente deben soportar las opciones). Con esto se busca evitar que el tráfico DNS sea analizado o corrompido por terceros maliciosos. En el caso de DNS-over-TLS, este encripta la conexión del cliente con los servidores remotos. Mientras que DNSSEC, asegura criptográficamente las respuestas de los servidores DNS, gracias a un sistema de cifrado asimétrico.

Capa #2: Servidores DNS

Los servidores DNS, son computadores que contestan las peticiones y resuelven los nombres de dominio mediante un sistema estructurado en árbol. Estos servidores, cuentan con una base de datos con nombres de dominios y su correspondiente dirección IP registrada. De esta forma, cada vez que un cliente DNS hace una petición (query), el servidor la recibe, busca el dominio en cuestión en su base de datos y envía una respuesta. Esta respuesta, es la dirección IP del dominio del cual el cliente ha solicitado información. Gracias a este funcionamiento, podemos navegar tranquilamente por Internet escribiendo sencillos nombres en nuestros navegadores.

Generalmente, estos servidores están conectados a Internet utilizando direcciones IP estáticas (nunca cambian). Estas direcciones IP, son las que normalmente se configuran de forma automática cuando nos conectamos a Internet por medio de nuestro ISP. Sin embargo, también podemos cambiarlas por direcciones de otros servidores IP de nuestro gusto. Un ejemplo de esto, son las direcciones IP 8.8.8.8 y 8.8.4.4. Ambas direcciones corresponden a los DNS del servicio Google DNS. También existe la posibilidad de usar las direcciones 1.1.1.1 y 1.0.0.1 de Cloudflare DNS , estos últimos con soporte para DNSSEC y DNS-over-TLS.

En este caso podemos observar, que las opciones de seguridad deben ser provistas del lado servidor para contar con las mismas. De nada nos sirve tener un cliente DNS con soporte DNSSEC, si el servidor no ofrece soporte para el mismo. Esta falta en características es solo una de las muchas falencias del modelo cliente-servidor. Un modelo centralizado que se presta para acciones como el espionaje, el phishing o la censura.

Capa #3: Zonas de Autoridad

Debido a la estructura en árbol sobre la cual ha sido diseñada el sistema DNS, este podría subdividirse. Cada una de estas divisiones recibe el nombre de Zonas de Autoridad. Una zona de autoridad, es una base de datos completa par un sub-árbol que forma parte del árbol root del sistema DNS.

Cada zona está bajo una autoridad y puede delegar la gestión de una parte del árbol. El origen del árbol del DNS contiene la zona raíz que contiene las delegaciones para los TLDs (dominio de nivel superior). Cada TLD constituiría a su vez una zona del DNS, al igual que los dominios de segundo nivel y así sucesivamente. Cada una de estas zonas puede estar bajo una autoridad distinta. Estos servidores o grupos de ellos, son los que por ejemplo, manejan la resolución de nombre de subdominios como .es o .org.

Importancia de los DNS en la infraestructura de Internet

En este punto podemos decir que la utilidad e importancia de los DNS es incuestionable. Gracias a la infraestructura de los DNS es que podemos disfrutar de Internet y sus servicios. Facilitar el acceso de los usuarios a las plataformas es clave para su masificación, y en este punto DNS ha cumplido a la perfección con esta premisa. El hecho, de que solo tengamos que escribir el nombre de un dominio (por ejemplo, bit2me.com) y llegar al sitio es muy relevante. En especial, cuando la opción inicial es escribir una serie de número o caracteres hexadecimales bastante crípticos.

Además la apertura y distribución del sistema permite hacer crecer Internet de forma continua. Por ejemplo, una empresa puede crear un servidor DNS que puede ser usado para resolver los recursos internos de la misma. Pero al mismo, tiempo es capaz de resolver (o no) los recursos externos de esa misma empresa (propios o no). Esta flexibilidad es única y es una de las razones del rápido y continuo crecimiento de la red.

Sin embargo, pese a su importancia, el esquema centralizado y de autoridad ha supuesto graves problemas. Por ejemplo, la manipulación de registros DNS es la forma más común de censura que existe en el mundo. Gobiernos de todo el mundo la aplican par evitar que determinados sitios webs o servicios puedan ser accedidos desde un determinado territorio. Frente a esta situación, podemos ver porque es importante también contar con opciones descentralizadas que eviten este tipo de acciones. No solo con el fin de otorgar libertad, sino también para brindar más transparencia y un acceso más universal.

¿Descentralizado o distribuido?

Solemos decir que el DNS es ‘centralizado’ debido a que tiene una componente centralizada cliente servidor. Además dispone de un punto central por donde poder fallar. Este punto débil se sitúa en la gestión de su estructura raíz, realizada por IANA/ICANN.

Por otro lado el DNS es también un sistema distribuido ya que involucra a multitud de computadores a lo largo y ancho del mundo. Es por esto que, al igual que la mayoría de redes, DNS es un sistema distribuido.

¿Cómo la blockchain puede ayudar a mejorar los DNS?

La tecnología blockchain ha demostrado grandes capacidades para transformar distintos escenarios en el mundo actual. Y precisamente uno de esos escenarios es la tecnología detrás de los DNS. La estructura centralizada, basada en autoridad y criptográficamente débil del sistema DNS actual ha demostrado ser insuficiente. La facilidad de realizar ataques de denegación de servicios sobre DNS es escalofriante. Pero no es lo único que puede hacerse. El hecho por ejemplo, de que normalmente las peticiones DNS de nuestros equipos se hagan en texto plano y sin uso de la criptografía, ya es de preocupación. Cualquiera con conocimiento puede espiar qué hacemos con nuestros equipos (computadoras o smartphones).  De hecho, pueden redirigir nuestra navegación a sitios con la capacidad de robar nuestros datos sin darnos cuenta hasta que ya es demasiado tarde. Ante esta situación, la blockchain se erige como una forma de solucionar definitivamente estos problemas.

Un servicio DNS sobre blockchain sería criptográficamente seguro, descentralizado, sin autoridad, resistente a ataques, inmutable y no censurable. Eso es por mucho, mejor que lo que tenemos ahora con el servicio DNS actual. Un buen ejemplo de este tipo de sistema lo podemos observar en Namecoin, una blockchain dedicada a convertirse en un sistema DNS funcionando sobre tecnología blockchain.

Teniendo en cuenta esto es comprensible decir que la tecnología blockchain puede ayudar a mejorar la tecnología DNS. Mejoras en pro de la seguridad, la privacidad y la no censura por parte de grupos de poder.

¿Cuánto sabes, criptonauta?

¿La creación de los servicios DNS fue crucial para la masificación del Internet y los servicios asociados a este?

¡CIERTO!

Gracias a la creación y puesta en marcha de los servicios DNS, Internet tuvo las herramientas necesarias para convertirse en una red masiva. El hecho de poder localizar sitios webs, servicios y más usando nombres sencillos y fácil de recordar fue vital para masificar el Internet y convertirlo en lo que es ahora en la actualidad.

Ventajas y Desventajas

Ventajas

  1. El sistema resulta fácil de implementar y escalar. La capacidad de crear réplicas, balancear cargas de red y ser tolerante a fallos ha convertido al DNS en pilar fundamental de Internet.
  2. Requiere de poca potencia de cómputo. La recepción y respuesta a los clientes DNS no es un trabajo computacionalmente costoso. Debido a ello, las necesidades de hardware para establecer servicios DNS masivos es baja.
  3. El impacto en la navegación es mínimo. Normalmente un servicio DNS bien configurado toma menos de 1 segundo en responder. De esa forma, el impacto en tiempo para el establecimiento de conexión entre el usuario y la máquina final se mantiene al mínimo.
  4. Ofrece un servicio que “estabiliza” el acceso a los servicios en Internet. Muchos servidores en Internet ofrecen sus servicios usando direcciones IP dinámicas. Esto significa que sus direcciones IP cambian al cabo de pocas horas o días. Sin embargo, pese a esto el servicio puede actualizar los registros de la IP de un dominio. Gracias a esto, el nombre de dominio apuntará a la nueva IP y podremos seguir accediendo a él usando el mismo.

Desventajas

  1. Su esquema centralizado lo hace especialmente vulnerable. Un actor malicioso por ejemplo puede interceptar las comunicaciones entre el cliente y el servidor y alterar la misma. Con ello logra redirigir al cliente (usuario) hacia donde desee pudiendo robar datos.
  2. El sistema por defecto envía información en texto plano sin cifrado. Cuando DNS nació la preocupación por la seguridad era mínima y el uso de cifrado era reservado. Por esa razón, DNS es un protocolo que envía y recibe información en texto plano. Cualquiera puede interceptar la comunicación y saber que pedimos (como clientes) y que nos responde el servidor.
  3. No es descentralizado y su seguridad criptográfica es compleja de implementar. Esto significa por ejemplo, que el sistema no es resistente a ataques de denegación de servicio. Además, su capacidad de protección es compleja y esto evita que se masifique su uso. Esta es la principal razón por la que DNS-over-TLS y DNSSEC no se usen ampliamente.

Aprende sobre Bitcoin y criptomonedas gratis
Suscríbete y recibirás nuestro mejor contenido en tu mail

SÍ, ENVÍADME EL CONTENIDO
Bit2Me Academy le desea feliz viaje al Universo Bitcoin
¿Te resultó útil este artículo?
Puntuación media: 0
➜ ¡Comparte el conocimiento y promueve la revolución descentralizada!