Historia de DNS

En los años 70, la gente se cansó de recordar las direcciones IP de los servidores a los que querían acceder. Al mismo tiempo, surgió la idea de usar un nombre más simple y fácil de recordar en lugar de una dirección de host numérica.

Los trabajadores del Instituto de Investigación de Stanford crearon un archivo de texto HOSTS.TXT , que contenía una lista de nombres de cadenas y sus correspondientes direcciones numéricas de computadoras en ARPANET.

Las direcciones se asignaban manualmente. Para solicitar un nombre de host y una dirección o agregar una computadora al archivo maestro, los usuarios se comunicaron con el centro de información de la red de Stanford 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.

En 1984, cuatro estudiantes de UC Berkeley escribieron la primera versión del sistema de nombres de dominio jerárquico. Ahora se usa ampliamente, especialmente en sistemas Unix, y sigue siendo el software de DNS más utilizado en Internet.

Introducción a DNS

El sistema de nombres de dominio (DNS) es un sistema de distribución para almacenar y recuperar 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 servir hosts para protocolos en un dominio.

El sistema está organizado en forma de una determinada jerarquía de servidores DNS que interactúan según un determinado protocolo. La base para comprender el DNS es comprender la estructura jerárquica del nombre y las zonas.

Cada servidor responsable de una zona de dominio puede transferir la responsabilidad de una parte adicional del dominio a otro servidor, lo que permite asignar la responsabilidad de la relevancia de la información a los servidores de varias organizaciones que son responsables solo de "su" parte del nombre de dominio.

El sistema DNS contiene una jerarquía de servidores DNS correspondientes a la jerarquía de zona. Cada zona es compatible con al menos un servidor DNS autorizado que aloja información sobre el dominio.

¡Importante! El nombre y la dirección IP no se relacionan necesariamente como uno a uno. Una dirección IP puede tener muchos nombres de dominio, lo que le permite admitir muchos sitios web en una computadora (esto se denomina alojamiento compartido ).

También puede ser al revés: muchas direcciones IP se pueden asociar con un nombre de dominio: esto le permite crear equilibrio de carga y se usa activamente en redes CDN .

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.

¡Interesante! El protocolo DNS utiliza el puerto 53 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.

registros DNS

El servidor DNS almacena un conjunto de parámetros para cada nombre de dominio. Estos son registros sobre el nombre de dominio, su dirección IP, así como información diversa del servicio.

Hay varias docenas de entradas de este tipo en total, por lo que consideraremos solo las más populares:

A DIRECCIÓN dirección IP
AAAA Dirección IPv6 Dirección en formato IPv6
CNOMBRE Nombre Canonico Nombre canónico para alias
MX intercambiador de correo Dirección de puerta de enlace de correo para el dominio
NS nombre del servidor La dirección del nodo responsable de la zona de dominio.
SOA Comienzo de la autoridad Indicación de la autoridad de la información
SRV selección de servidor Especificación de ubicaciones de servidor para servicios
PTR puntero Coincidencia de nombre de dirección: coincidencia inversa para A y AAAA
TXT cadena de texto Escriba datos binarios arbitrarios, hasta 255 bytes

Los más interesantes aquí son:

  • El registro A le permite especificar una dirección IP que corresponde a un dominio.
  • CNAME le permite establecer un sinónimo para el nombre, por ejemplo, www.codegym.cc == codegym.cc.
  • El registro MX contiene información sobre el servidor de correo: qué hacer si llega una carta a xxx@codegym.cc.
  • NS : indica la dirección del servidor DNS, que contiene información sobre este dominio. Útil cuando los registros se almacenan en caché y en nodos no nativos.

Búsqueda de dirección IP

Veamos cómo funciona el sistema DNS.

Digamos que escribiste api.codegym.cc en tu navegador. El navegador se pondrá en contacto con el servicio de DNS local y le pedirá que le proporcione una dirección IP para el dominio api.codegym.cc. Esto es lo que sucederá a continuación...

Primero, el servicio DNS busca si este dominio está en el archivo de hosts locales en su computadora. Si la hay, toma la dirección IP de la misma. De lo contrario, envía una solicitud al servidor DNS conocido: "¿Cuál es la dirección IP de api.codegym.cc?".

Sin embargo, el servidor DNS puede no saber nada no solo sobre el nombre solicitado, sino incluso sobre todo el dominio codegym.cc. 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 ru".

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 responsable de la zona codegym.cc". Finalmente, la misma solicitud se envía a un tercer servidor DNS y recibe una respuesta, una dirección IP, que se transmite al cliente, es decir, al navegador.

En este caso, en el proceso de búsqueda de una IP por nombre, funcionaron las siguientes reglas:

  • El navegador envió una solicitud recursiva a un servidor DNS conocido (en respuesta a este tipo de solicitud, el servidor debe devolver una dirección IP o una respuesta vacía y un código de error NXDOMAIN).
  • El servidor DNS que recibió la solicitud del navegador envió solicitudes no recursivas en sucesión, a las que recibió respuestas de otros servidores DNS, hasta que recibió una respuesta del servidor responsable de la zona solicitada.
  • El resto de los servidores DNS mencionados estaban procesando solicitudes de forma no recursiva (y lo más probable es que no hubieran procesado solicitudes de forma recursiva, incluso si tal requisito estuviera en la solicitud).

A veces es posible que el servidor solicitado envíe una consulta recursiva a un servidor DNS "upstream" y espere una respuesta lista.

¡Importante! 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 de dominio generalmente no va más allá del caché del servidor y las llamadas a otros servidores no ocurren en absoluto.

El tiempo de caché permitido para las respuestas viene con las respuestas (campo TTL del registro de recursos).

archivo de hosts

Notamos que la primera búsqueda está en el archivo de hosts locales. Este es el heredero del archivo HOSTS.TXT, que se inventó en los días de ARPANET. Sí, todavía existe y todavía está en uso.

Se encuentra a lo largo del camino:

  • /etc/hosts en Linux.
  • %SystemRoot%\system32\drivers\etc\hosts en Windows.
  • /sistema/etc/hosts en android.

Normalmente, el archivo incluye una definición de ubicación para el nodo localhost:

127.0.0.1   	localhost

Su estructura es muy simple: primero viene la dirección IP, luego el nombre de dominio.

Útil

Usando el archivo de hosts, es posible filtrar anuncios redirigiendo las direcciones de dominio de los banners a la dirección 127.0.0.0, 127.0.0.1 o 0.0.0.0.

Por lo general, no se recomienda el uso de 127.0.0.1, ya que genera un tiempo de espera de respuesta y demoras asociadas si el servidor no existe o está mal configurado. Y si asigna cualquier dominio de publicidad a la dirección IP 0.0.0.0, todas las solicitudes caerán inmediatamente).

Servidores DNS públicos

Por lo general, obtiene un servidor DNS junto con su servicio de Internet cuando lo conecta. Pero un servidor DNS gratuito de este tipo no siempre es la mejor opción. Además, es posible que no desee enviar una consulta con el nombre de dominio cada vez que visite un sitio al servidor DNS de su ISP.

Por lo tanto, muchas personas prefieren cambiar a servidores DNS públicos gratuitos. Primero, son muy rápidos y tienen un gran caché de nombres de dominio. Obtendrá una carga del sitio y un tiempo de actividad más rápidos con una posibilidad mínima de problemas técnicos.

En segundo lugar, la seguridad. Algunos servicios de DNS pueden bloquear el acceso a sitios maliciosos y de phishing y ofrecer filtrado de contenido para proteger a los niños del contenido inapropiado en línea.

Dichos servidores DNS pueden incluso combatir a los estafadores. Por ejemplo, usted va a un sitio web de un banco falso y el servidor DNS no le dará la dirección IP de los estafadores, sino su servicio de seguridad.

Lista de tales servidores

llamarada de nube 1.1.1.1
1.0.0.1
Cloudflare promete que no utilizará los datos de los visitantes para publicar anuncios y nunca grabará las direcciones IP de origen de las solicitudes en el disco.
DNS público de Google 8.8.8.8
8.8.4.4
Almacena información completa sobre la dirección IP del dispositivo solicitante durante aproximadamente 24 a 48 horas para la resolución de problemas y diagnósticos.
DNS seguro de Comodo 8.26.56.26
8.20.247.20
Bloquea sitios de phishing, pero también advierte si está intentando visitar sitios con malware, spyware
Yandex.DNS 77.88.8.8
77.88.8.1
Servicio de DNS gratuito de un popular motor de búsqueda ruso