Logo DNS

Clientes DNS, Proceso de resolución, Caché, TTL y Recursividad

publicado en: DNS, Redes, Servicios de Red | 0
 
 

Este es el cuarto de los artículos dedicados al DNS publicados en ZeppelinuX. En este artículo se define que es un Cliente DNS, se explica brevemente el Proceso de resolución de nombres de dominio, tipos de consultas, se afianzarán los conceptos de delegación, autoridad, caché, reenviadores (forwarders), utilidad de los servidores raíz, y aprenderemos que es el TTL (Time To Live) y la recursividad. Si te interesa ver el artículo anterior, Servidores de nombres, sus tipos y zonas, solo tienes que pinchar aquí.

Índice General

  1. Clientes DNS.
  2. Proceso de resolución.
  3. Memoria caché y TTL.
  4. Recursividad y caché.

 

  1. Clientes DNS (Volver al índice General)
    Podemos definir Cliente DNS o resolver como todo programa capaz de preguntar a un servidor DNS e interpretar sus respuestas.

    Los sistemas operativos incluyen o permiten instalar un conjunto de librerías que se encargan de realizar estas funciones. Dichas librerías son invocadas por las aplicaciones (clientes FTP, navegadores web, clientes de correo, etc.) cuando estas manejan nombres de dominio. Los clientes DNS mantienen una memoria caché de respuestas, al igual que los servidores DNS, de tal manera que minimizan el uso de la red y aumentan el rendimiento.

    La forma en la que los clientes DNS resuelven los nombres de dominio es configurable. En la mayoría de sistemas operativos existen ficheros de texto en los que se pueden asociar direcciones IP a nombres de dominio o de hosts, y se puede configurar si el cliente DNS consultará, en primer lugar, estos archivos para hacer la resolución. También es posible habilitar o no la caché de respuestas.

    Cuando una aplicación quiere resolver un nombre invoca al cliente DNS. La configuración habitual es de la siguiente forma:

    1. La aplicación pregunta al cliente DNS (resolver) por un nombre de dominio o de host.
    2. El resolver, si así está configurado, consulta la caché que se almacena en memoria. Si el nombre ya está almacenado en la caché, entrega la respuesta a la aplicación.
    3. Si el nombre a buscar no se encuentra en la caché, el resolver buscará en el fichero hosts del equipo. En sistemas UNIX/Linux el archivo es /etc/hosts y en los sistemas Windows el archivo es %SYSTEMROOT%\system32\drivers\etc\hosts. Si el nombre está almacenado en el archivo hosts, entrega la respuesta a la aplicación.
    4. Si el nombre a buscar no se encuentra en el archivo hosts, el resolver realiza una consulta recursiva al servidor DNS que esté configurado y entregará la respuesta de este a la aplicación.

    Funcionamiento de clientes DNS (resolvers)
    Existen programas que funcionan como clientes DNS (resolvers) y permiten definir que tipo de consulta se quiere realizar a un servidor DNS. Son utilizados para depurar u obtener información de servidores DNS y del proceso de resolución. Algunos de estos programas son nslookup, dig y host.

  2. Proceso de resolución (Volver al índice General)
    Tanto los clientes DNS como los servidores DNS consultan a otros servidores DNS para resolver nombres de dominio. En este apartado veremos los tipos de consultas que existen. Las consultas a un servidor DNS pueden ser recursivas o iterativas:

    • Consultas recursivas (Volver al índice General)
      Una consulta recursiva es aquella en la que el servidor DNS da una respuesta completa o exacta. Pueden darse tres tipos de respuesta:

      • Respuesta positiva: El servidor da la información del nombre por el que se le ha preguntado. En la respuesta, se indica si el servidor es autorizado o no autorizado. No es posible saber si el servidor que responde con autoridad es maestro o esclavo para el dominio por el que se le pregunta.
      • Respuesta negativa: El servidor indica que el nombre no se pudo resolver (NXDOMAIN). NXDOMAIN no es más que un nombre de dominio de Internet o Intranet que no existe. Si el nombre de dominio no se puede resolver utilizando el DNS, se produce una condición llamada NXDOMAIN.
      • Indicación de error: Por ejemplo, no se puede preguntar a otros servidores DNS por un fallo en la red, caída del servidor, etc.

      Cuando un servidor recibe una consulta recursiva:

      1. Si es autorizado para alguna zona, ya sea maestro o esclavo, consulta sus archivos de zona. Si encuentra la respuesta, responde indicando que la respuesta es autoritativa.
      2. Si no encuentra la respuesta o no es autorizado y actúa como caché, consulta caché de respuestas anteriores. Si encuentra la respuesta, responde indicando que la respuesta no es autoritativa.
      3. En cualquier otro caso:
        1. Si tiene configurado servidores DNS reenviadores (forwarders), entonces reenvía la consulta recursiva a otro servidor DNS. La respuesta que obtiene del forwarder la reenvía al cliente o servidor DNS que formuló la pregunta.
        2. Si no tiene configurado forwarders:
          • Inicia una serie de consultas iterativas a otros servidores DNS.
          • Los servidores DNS consultados devuelven referencias a otros servidores DNS que se usarán para realizar otra pregunta.
          • La recursividad finaliza cuando un servidor DNS autorizado proporciona una respuesta positiva o negativa.

      Nota: Si un servidor DNS que actúa como caché obtiene la respuesta de un servidor DNS maestro o esclavo dará una respuesta autoritativa. Si la obtiene de la caché, dará una respuesta no autoritativa.

      A continuación se muestran un par ejemplos de resolución DNS:

      Primer ejemplo de resolución DNS:

      Ejemplo 1 de resolucion DNS

      1. El cliente DNS del equipo envía una consulta recursiva al servidor DNS. En este caso, como el servidor DNS no es autorizado para la zona «zeppelinux.es» (en sus archivos de zona no está la información sobre el dominio por el que le han preguntado), no está configurado para reenviar consultas y además está configurado como caché, es decir, tiene la recursividad activada y es capaz de realizar consultas recursivas. Para resolver la consulta inicia una serie de consultas iterativas.
      2. La primera consulta iterativa se envía a un servidor raíz de la lista de servidores raíz que tiene almacenada en el fichero hint file.
      3. El servidor raíz que recibe la consula iterativa responde con una referencia al servidor autorizado para el dominio «es». El servidor raíz ha delegado la autoridad del dominio «es» en otros servidores DNS. Realmente el servidor raíz envía al servidor DNS referencia de todos los que existan, pero en el ejemplo lo simplificamos mostrando solo uno. Observese que en el fichero de la zona raíz «.» se indica cual es el servidor autorizado para el dominio «es», en el que se delega con un registro de recursos (RR) de tipo NS (servidor DNS para una zona).
      4. A continuación, el servidor DNS envía una consulta iterativa al servidor autorizado para el dominio «es».
      5. El servidor autorizado para el dominio «es» responde con una referencia al servidor autorizado para el dominio «zeppelinux.es». El servidor autorizado para el dominio «es» ha delegado la autoridad del dominio «zeppelinux.es», en otros servidores DNS. Realmente el servidor autorizado envía al servidor DNS referencia de todos los que existan, pero en el ejemplo lo simplificamos mostrando solo uno. Observese que en el fichero de la zona «es» se indica cual es el servidor autorizado para el dominio «zeppelinux.es», en el que se delega con un registro de recursos (RR) de tipo NS (servidor DNS para una zona).
      6. Posteriormente, el servidor DNS envía una consulta iterativa al servidor autorizado del dominio «zeppelinux.es».
      7. El servidor autorizado para el dominio «zeppelinux.es» consulta sus ficheros de zona y como existe el nombre de dominio «www.zeppelinux.es», responde con la información asociada a él. Si no existiese el nombre en los archivos de zona, informaría que no puede resolver el nombre respondiendo de forma negativa.
      8. El servidor DNS que recibió la consulta recursiva responde al resolver con la información por la que se le preguntó.

      Nota: Si a continuación un cliente DNS pregunta al servidor DNS del ejemplo 1 por un nombre de dominio, por ejemplo, «www.once.es», este no preguntará de nuevo a un servidor raíz ya que tiene almacenadas en caché las direcciones de los servidores DNS autorizados para el dominio «es».

      Nota: Las consultas recursivas son iniciadas por un cliente DNS (resolver) o por un servidor DNS que reenvía la consulta recursiva a otro servidor (reenviador o forwarder).

      Segundo ejemplo de resolución DNS:
      El servidor DNS que recibe la consulta está configurado como reenviador y por ello, reenvía la consulta a otro servidor DNS.
      Ejemplo 2 de resolución DNS
      Las consultas recursivas son costosas para los servidores DNS por ello es habitual que los servidores DNS autorizados para alguna zona no respondan a consultas recursivas. Los servidores DNS raíz y los servidores DNS autorizados para los dominios TLD no responden a consultas recursivas.

    • Consultas iterativas (Volver al índice General)
      Una consulta iterativa es aquella en la que el servidor DNS proporciona una respuesta parcial. Existen cuatro posibles respuestas.

      • Respuesta positiva: el servidor DNS da la información del nombre por el que se ha preguntado. En ella se indica si es autorizado o no.
      • Respuesta negativa: el servidor DNS indica que el nombre no se pudo resolver (NXDOMAIN).
      • Respuesta indicando una referencia: el servidor DNS indica a otros servidores, autorizados o no, a los que se puede preguntar para resolver la pregunta (una referencia no es válida como respuesta a una consulta recursiva).
      • Indicación de algún tipo de error.

       
      Cuando un servidor DNS recibe una consulta iterativa:

      1. Si es autorizado para alguna zona, ya sea maestro o esclavo, comprueba sus archivos de zona. Si encuentra la respuesta, responde indicando que la respuesta es autoritativa.
      2. Si no encuentra la respuesta o no es autorizado y actúa como caché, consulta su caché de respuestas anteriores y si encuentra la respuesta responde indicando que la respuesta no es autoritativa.
      3. Si no se encuentra una respuesta exacta, devuelve una referencia que apunta a un servidor DNS que está autorizado para un nivel inferior del espacio de nombres de dominio. Esta información es usada por el servidor que realizó la consulta iterativa para continuar su proceso de resolución (proceso recursivo).

      Las consultas iterativas son realizadas por servidores DNS a otros servidores DNS después de haber recibido una consulta recursiva, y no encontrar respuesta en sus archivos de zona o caché.

  3. Memoria caché y TTL (Volver al índice General)
    Tanto clientes DNS como servidores DNS mantienen en memoria caché, si es que están configurados para ello, las respuestas a las preguntas que realizan a otros servidores. El tiempo que guardan las respuestas encaché se denomina TTL (Time To Live) y se define en los archivos de zona de los servidores DNS preguntados.
     
    Los clientes DNS y los servidores DNS almacenan en caché:

    En los archivos de zona se define el tiempo que se guardarán en caché las respuestas positivas y el tiempo que se guardan en caché las respuestas negativas. Por lo tanto, se diferencia entre TTL de respuestas positivas y TTL de respuestas negativas.

    La RFC 1912 recomienda que el valor TTL positivo sea de 1 día o mayor, y para los registros de recursos (RR) que cambien poco se usen valores de 2 o 3 semanas.

    La RFC 2308 indica que el máximo valor del TTL negativo sea de 3 horas.

    Será tarea del administrador del servidor DNS calcular la frecuencia con la que cambian los registros de recursos (RR), la carga de los servidores DNS y el tráfico de red. Los valores TTL pequeños aseguran que la información acerca de un dominio sea más coherente, en caso de que estos datos cambien a menudo, pero incrementan la carga en los servidores e incrementan el tráfico de red.

  4. Recursividad y caché (Volver al índice General)
    Cuando un servidor DNS recibe consultas recursivas, preguntará a otros servidores DNS si tiene activada la recursividad. La recursividad está asociada al comportamiento del servidor DNS como servidor caché. Para que un servidor DNS pregunte a otros y almacene las respuestas en su caché, tiene que resolver consultas recursivas.

Aquí termina el cuarto de los artículos dedicado al Sistema de Nombres de Dominio (DNS). En breve, continuaremos publicando más sobre DNS, en concreto sobre Resolución inversa DNS.
 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
  Configuración de privacidad y de cookies.
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.