¿Cómo funciona el servidor de nombres DNS?

14

Tenemos dos servidores DNS listados en nuestro registro NS. Anoche, uno de nuestros servidores DNS se cayó. Como se esperaba, algunos servidores DNS no estaban resolviendo nuestros nombres de host. Supuse que esto sería temporal y comenzaría a funcionar una vez que el TTL de nuestros registros NS expire (1 hora).

Más de una hora después, todavía recibía tiempos de espera de DNS de los escritorios que usaban servidores Earthlink, Verizon y OpenDNS. Probé para ver si el otro servidor DNS estaba respondiendo:

dig @ns2.example.com www.example.com +short

Esto funcionó.

Mis preguntas:

  1. ¿Alguien tiene una respuesta de por qué otros servidores DNS no estaban llegando a nuestro otro servidor DNS incluso después de que expiró el TTL?
  2. ¿Los servidores DNS prefieren el servidor DNS principal de un dominio (del SOAregistro)?
  3. ¿Hay algún algoritmo utilizado para elegir un servidor de nombres de los registros NS disponibles? Supongo que esto es específico de la implementación, pero tal vez hay algunos estándares que se aplican aquí.
Belmin Fernandez
fuente
El TTL no tiene nada que ver con nada. Como no se modificaron los registros, no tiene ningún efecto relevante.
David Schwartz el
Ah, ya veo eso ahora. Doh
Belmin Fernández el

Respuestas:

17

Esta es una desafortunada irritación. Se supone que varios servidores DNS deben aumentar la confiabilidad, pero en la práctica con frecuencia tiene el efecto inverso.

El problema es que el cliente solo espera tanto tiempo por una respuesta, y el servidor espera aproximadamente la misma cantidad de tiempo. Digamos que tiene dos servidores DNS, A y B. Digamos que A está funcionando y B ha fallado. Esto pasa:

  1. El cliente se conecta al servidor de nombres Z y le solicita la información. Z elige B y envía una consulta.

  2. El cliente agota el tiempo de espera porque el servidor de nombres Z no respondió.

  3. El cliente intenta el servidor de nombres Y. Y elige B y envía una consulta.

  4. El servidor de nombres Z agota el tiempo de espera e intenta A. Obtiene la respuesta correcta, pero el cliente ya no espera.

  5. El cliente agota el tiempo de espera porque el servidor de nombres Y no respondió.

  6. El cliente se da por vencido y sus dos servidores de nombres no responden.

  7. El servidor de nombres Y agota el tiempo de espera e intenta A. Obtiene la respuesta correcta, pero el cliente ya no espera.

Y no hay una buena solución. Cuanto más espere para ver si un servidor de nombres responde, más tiempo tendrá que esperar porque el servidor de nombres que está esperando espera más. Podría decirse que el problema era que Y y Z no renunciaron a B lo suficientemente rápido.

Esencialmente, si alguno de sus servidores de nombres está fuera, algunos clientes, por pura mala suerte, se quedarán sin tiempo porque probaron solo los malos.

En el lado positivo, si tiene dos servidores de nombres y uno falla, aproximadamente el 75% de los servidores de nombres obtendrán una respuesta, en lugar del 0%.

David Schwartz
fuente
Veo a que te refieres. Eek Entonces, ¿el servidor de nombres del cliente ( Z) no almacenará en caché qué servidor de nombres utilizó por última vez que funcionó?
Belmin Fernández el
1
Algunos servidores de nombres hacen eso y, a veces, eso ayuda. A menudo depende de la forma precisa en que falló el servidor de nombres. Debe recordar que todo esto está por encima de UDP, por lo que el hecho de no obtener una respuesta (incluso después de una retransmisión o dos) no prueba que el servidor de nombres tenga algún problema.
David Schwartz el
Leí en mi copia de DNS y BIND (Paul Albitz y Cricket Lui, O'Rielly p278) que los servidores Bind 8.2.3 eligen el servidor que responde más rápido de su lista de reenviadores, lo que significa que si el servidor en la lista falla, se descarta casi automáticamente. Bind 9 aún no implementa esto, consulta los servidores de reenvío en orden de lista. ¿Alguien sabe si esto ha cambiado?
Jaydee
Solo para aclarar, para aquellos menos versados ​​en configuraciones de DNS (me tomó un tiempo entender esto), los servidores de nombres DNS Z e Y en este ejemplo son probablemente servidores de nombres recursivos basados ​​en la red del cliente, por ejemplo, los servidores DNS que proporciona un ISP a sus clientes a través de DHCP. Y el problema surge cuando estos servidores tienen un valor de tiempo de espera mayor que la resolución DNS del cliente (por ejemplo, el sistema operativo del dispositivo)
Jordan Rieger