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, podemos acceder a la dirección IP del servidor al que queremos acceder por medio de Internet. Actúa como si fuera una guía telefónica o plataforma que se dedica a traducir los nombres de una web en una IP con la que ubicar el servidor web. Con esto se permite a los usuarios acceder de forma rápida y sencilla a los servicios alojados en servidores conectados a Internet. Los DNS también son conocidos como name server o servidor de nombre.
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 Bit2Me 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.
Funcionamiento de los DNS
La infraestructura de funcionamiento de este tipo de servidores 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: Clientes 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 estos clientes. Esto es así para poder facilitar la navegación en la red. Las tareas de estos clientes son:
- Interrogar al servidor DNS por los dominios a los que accede el usuario.
- Interpretar las respuestas del servidor DNS sobre los dominios solicitados.
- Devolver la información al programa que ha realizado la solicitud (navegadores web, programas P2P, entre otros).
Generalmente estos clientes 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.
Otra función de los clientes es servir de memoria cache para el DNS. Con esta función, los clientes buscan resolver de forma más rápida las direcciones de los servidores y brindar a los usuarios una experiencia de navegación más fluida.
Capa #2: Servidores
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. Por otro lado, también es importante destacas que existen servidores DNS públicos y privados.
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.
Los servidores DNS normalmente están construidos por softwae muy sencillo, asi que carecen de un panel de control gráfico. Esto con la finalidad de crear una pieza de software resistente, con muy poco consumo y que soporte gran cantidad de peticiones por segundos.
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. En pocas palabras, estas zonas son las que delimitan los tipos de registros y dominios de un servidor DNS.
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 mejorarlos?
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 actual ha demostrado ser insuficiente. La facilidad de realizar ataques de denegación de servicios es escalofriante. Pero no es lo único que puede hacerse. El hecho por ejemplo, de que normalmente las peticiones 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.
Ventajas y Desventajas
Ventajas
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
- 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.