¿Por qué nuestros registros DNS no se propagan a Internet?

22

Ejecutamos los servidores de nombres para nuestro dominio en nuestra red. Usamos bind / named. Llamemos al dominio example.com . Una cosa que noté recientemente, cuando voy a un sitio web como http://network-tools.com y ejecuto consultas en las URL definidas en nuestros servidores de nombres, veo cambios al instante.

Por ejemplo, si agrego una entrada a nuestro servidor DNS para la url funny.example.com y luego busco esa url en http://network-tools.com , veo la IP estática externa adecuada listada de inmediato.

Eso me dice que todas las solicitudes de DNS relacionadas con example.com llegan directamente a nuestros servidores de DNS cada vez.

Mis sospechas se confirmaron a principios de semana cuando nuestros servidores DNS se cayeron por un período muy corto. Y durante ese período de tiempo, si usara http://network-tools.com para consultar example.com o cualquiera de sus subdominios, obtendría cero resultados. Obviamente es porque los servidores DNS estaban caídos y no se podía llegar a ellos.

Entonces esto me lleva a mi pregunta. Pensé que los cambios en nuestros servidores DNS deberían estar propagándose en Internet a otros servidores DNS. De esa manera, si nuestro DNS se cae temporalmente, otros servidores en Internet aún saben a qué dirección IP apunta example.com .

¿Estoy malinterpretando estas cosas de DNS? ¿No se permite que los servidores DNS controlados por terceros como el nuestro propaguen información DNS a otros servidores en la red?

¿Dónde debería comenzar a investigar por qué los cambios no se están haciendo realidad? Puedo ver en nuestro firewall que el tráfico del puerto 53 está llegando correctamente a nuestros servidores DNS.

ACTUALIZAR

  1. Sé que ustedes dicen que es imposible publicar su configuración de DNS instantáneamente, pero todo lo que sé es esto: si hago un cambio de DNS en nuestros servidores DNS y luego lo verifico inmediatamente en http: // network-tools. com , veo los cambios de inmediato.

  2. Si apago nuestros servidores DNS y luego trato de verificar cualquiera de las URL usando http://network-tools.com , el sitio no puede encontrar ninguna de las URL. Pero si vuelvo a poner en línea los servidores DNS, de repente http://network-tools.com puede encontrar las URL nuevamente ... Esto me dice que los servidores NO están almacenando en caché nuestra configuración de DNS. ¿Me equivoco? Además, nuestra configuración TTL está establecida en 900 (15 minutos) en este momento y nuestros servidores DNS han estado funcionando durante más de un año. Por lo tanto, no es que los servidores DNS en Internet aún no hayan tenido la oportunidad de almacenarlo en caché. ¿Es la razón por la que los servidores no almacenan en caché la configuración porque el TTL es muy bajo en este momento? Eso tiene sentido si esa es la razón.

Jake Wilson
fuente
77
Dado que jokerville.com es un nombre de dominio registrado real, a menos que sea realmente su dominio, úselo en su example.comlugar; está oficialmente reservado para ese propósito.
mattdm
99
La razón por la que network-tools.com está viendo cambios de inmediato es porque es una herramienta de red, y DELIBERADAMENTE no está almacenando en caché los resultados. Es una herramienta para mirar sus servidores de nombres, no un cliente DNS normal, por lo que obedece a diferentes reglas.
Michael Kohne

Respuestas:

42

Sí, no estás entendiendo cómo funciona DNS. Voy a usar un poco de énfasis aquí, pero no se ofenda ya que ninguno está destinado.

LOS REGISTROS DNS NO SON PROPAGADOS. ESTÁN CACHEADOS.

Dicho esto, aquí hay una explicación simplificada de lo que sucede:

  1. Crea un nuevo registro DNS (A, CNAME, etc.)

  2. Un usuario remoto (más específicamente un proceso \ aplicación iniciada por el usuario) intenta acceder a un servicio al que se accede a través de ese registro DNS (un navegador web que intenta acceder al sitio web que se ejecuta en funny.example.com, por ejemplo)

  3. El cliente DNS de los usuarios envía una consulta DNS a su servidor DNS, el servidor DNS luego encuentra sus servidores de nombres (generalmente a través de una serie de consultas DNS recursivas) y les pide información sobre funny.example.com

  4. Sus servidores de nombres responden con las respuestas

  5. El servidor DNS de los usuarios luego envía esta información al usuario (más específicamente a la resolución del cliente DNS de los usuarios), que a su vez devuelve la información al proceso \ aplicación. Esta información viene con lo que se llama un TTL (Time To Live) que le dice al cliente DNS que resuelve cuánto tiempo se puede mantener esta información en su caché DNS (en la memoria) y durante cuánto tiempo la información puede considerarse actual y precisa

  6. La resolución del cliente DNS del usuario luego vacía esta información cuando expira el TTL. Cualquier solicitud nueva para los registros DNS en cuestión requiere una nueva búsqueda de DNS y se repite el proceso anterior.

En resumen, esto es esto:

Sus registros DNS no se propagan. Ningún otro servidor DNS tiene una copia de sus registros o zonas DNS. Un cliente o servidor DNS puede almacenar información sobre sus registros o zonas DNS (en función de sus consultas DNS de sus registros y zonas DNS) en su caché DNS. Esta información se almacena temporalmente en caché y se eliminará de su caché DNS cuando caduque el TTL.

Si sus servidores de nombres están inactivos, solo aquellos clientes DNS que tengan alguno de sus registros DNS en su caché podrán resolver esos registros DNS y solo hasta que caduque el TTL. Además, cuando caduca el TTL (que necesita un nuevo DNS lokkup), esos clientes DNS ya no podrán resolver sus registros DNS.

joeqwerty
fuente
Buena explicación y puedo agregar un ejemplo de un protocolo donde hay propagación (a diferencia de DNS): BGP.
bortzmeyer
11

Sería de gran ayuda si nos dijera su nombre de dominio real, entonces podríamos responder su pregunta con referencia a su configuración real y señalar cualquier falla.

Tiendo a confiar en http://dns.squish.net/ para diagnosticar problemas de DNS rápidamente. Eso le dirá con certeza cuáles son sus problemas después de que haya realizado un cambio, básicamente si su delegación de upstream es correcta, y sus servidores de nombres 2-3 dan la misma respuesta, y alguien no está viendo el nuevo registro, solo tendrán que esperar a que su red local vea los cambios. Si ese verificador le dice que uno de sus servidores no está dando la misma respuesta que los demás, debe solucionar ese problema.

No hay forma de que pueda publicar los cambios de DNS al instante; bueno, puede publicarlos al instante, pero el resto del mundo se retrasará de acuerdo con la configuración TTL de cada registro, por ejemplo, si ha establecido un registro TTL de 86400 segundos ( un día) y realiza un cambio, otros verán el registro anterior durante un día entero, porque su caché local no le preguntará hasta que caduque su copia del registro.

Sugeriría que antes de cualquier cambio importante en el DNS, reduzca su TTL a 600 (10 minutos) para alentar a los cachés en Internet a no conservar los registros antiguos durante mucho tiempo. Pero algunos cachés ignorarán esto, o supondrán 1 día, o incluso 1 semana.

Una respuesta divagante a una pregunta divagante, aunque espero que haya algo útil en ella.

Matthew Bloch
fuente
1
+1. Para ser claros, solo los clientes DNS que ya tienen la información en su caché, para los cuales el TTL no ha expirado, se verán afectados por un cambio. Cualquier solicitud nueva, para la cual no hay datos en caché, se resolverá de inmediato.
joeqwerty
digo: enlace muerto - squish.net/dnscheck
Aaron Esau
8

Sí, el viejo dicho: "Los cambios de DNS pueden tardar entre 24 y 48 horas en propagarse a través de Internet" sería más exacto "Los cambios de DNS pueden almacenarse en caché en cualquier servidor DNS que haya consultado este registro en los últimos 86400 segundos".

Si desea garantizar la redundancia de su DNS en caso de que su servidor se desconecte, debe buscar el servicio DNS de respaldo (como en dyndns.com) o crear su propio NS secundario.

Willbradley
fuente
5

Todos los servidores DNS en Internet están "controlados por terceros" (supongo que podría considerar que los servidores DNS raíz son de alguna manera "propietarios" de Internet, pero no hay ninguna razón técnica por la que pueda instalar su propia raíz privada).

Su servidor DNS proporciona un "tiempo de vida" sugerido (TTL) en cada respuesta que proporciona. Se supone que los solucionadores remotos (otros servidores DNS que realizan resolución recursiva para clientes, bibliotecas de resolución de clientes, etc.) almacenan en caché la respuesta hasta ese TTL antes de descartarla de su caché.

Si no ve que los cambios que está realizando en los registros existentes se reflejan en consultas del mundo real, probablemente significa que sus valores TTL son lo suficientemente altos como para que no esté esperando lo suficiente para ver que las respuestas existentes caducan del resolutor cachés alrededor de la red.

Algunos antecedentes de Falla del servidor: ¿Por qué se llama DNS "Propagación"?

Evan Anderson
fuente
2

Cuando alguien (o alguna computadora) en Internet, por así decirlo, quiere conectarse a una de sus máquinas, le pide a su servidor de nombres local una dirección IP que coincida con el nombre de host que le interesa.

Entonces, si le dice a alguien "hey, eche un vistazo a mi sitio web genial http://www.example.com ", la computadora del otro tipo preguntará a su servidor de nombres local "hey, ¿cuál es la dirección IP de www.example.com?"

Suponiendo que el servidor de nombres local nunca haya buscado la respuesta a esa pregunta antes, le pedirá a los servidores de nombres raíz que descubran qué servidor (s) manejan las búsquedas de ".com". Cuando obtenga esa respuesta, preguntará a esos servidores qué servidores manejan las búsquedas de "example.com". Cuando obtenga esa respuesta, le pedirá a esos servidores una dirección IP para "www.example.com".

Cuando los servidores, por ejemplo ,.com respondan con una dirección IP para www.example.com, también le darán una pista al servidor de nombres solicitante sobre cuánto tiempo debe recordar la respuesta a esta pregunta. Esa pista se llama "TTL", o "tiempo de vida", y se mide en segundos. No hay garantía de que ningún servidor preste atención al TTL: algunos servidores de nombres pueden estar configurados para no recordar nunca las respuestas a las búsquedas, y siempre repetirán el proceso incluso si se les pregunta varias veces por segundo. Se pueden configurar otros servidores de nombres para mantener la respuesta durante mucho tiempo, incluso si ha sugerido que los datos solo se conserven por un corto tiempo, tal vez porque quieren minimizar el tráfico de red. El TTL es solo una sugerencia, no un requisito o una garantía.

La respuesta literal a su pregunta, ¿por qué no se propagan sus registros DNS en Internet? Es que no lo hacen porque se supone que no deben hacerlo.

Además, si está buscando su propia información de DNS utilizando un sitio diseñado para investigar o depurar información de DNS, es probable que ese sitio no almacene datos en caché por mucho tiempo, o en absoluto, independientemente de cuál sea su sugerencia TTL, porque El objetivo del sitio es probablemente proporcionar información sobre lo que dice el sistema DNS AHORA MISMO, no hace 5, 50 o 500 segundos. Es por eso que sus cambios se reflejan de inmediato, y por qué el servicio deja de funcionar tan pronto como desconecta sus servidores de nombres.

Sospecho que su pregunta subyacente podría ser "¿cómo puedo configurar las cosas para que si mi servidor DNS se reinicia o su disco duro se apaga, otras personas en Internet todavía podrán ver mis páginas web?"

La respuesta a esa pregunta es configurar varios servidores de nombres para su dominio y hacer que se ejecuten en diferentes máquinas, idealmente, no solo en diferentes computadoras físicas, sino con diferentes conexiones de red, tal vez incluso en diferentes ciudades o estados o países o continentes. La mayoría de estos servidores de nombres se configurarán como "esclavos", lo que significa que buscan información en un servidor de nombres "maestro" y luego repiten esa información a cualquiera que les pida datos.

Entonces, en sus datos de WHOIS con su registrador de nombres de dominio, puede configurar cuatro servidores de nombres para su dominio:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

donde ns1.example.com es su servidor DNS actual. ns2.example.com podría ser otra máquina en su empresa / organización, idealmente no en la misma subred y en el mismo bastidor del servidor (o debajo del mismo escritorio) que ns1.example.com.

ns1.example.com se considerará el servidor "maestro", y cuando desee cambiar su DNS, realizará los cambios en esa máquina.

ns2.example.com se configurará como un servidor "esclavo", que solo copia cualquier dato que haya configurado en ns1.example.com, pero al mundo exterior no le importa la distinción maestro / esclavo, ns2.example .com se considerará tan "oficial" como ns1.example.com.

ns1.otherguy.com y ns2.otherguy.com son máquinas que están configuradas en otro lugar, tal vez haga un acuerdo con un amigo / colega en otra organización para ejecutar servidores de nombres, o tal vez se configure con dyndns.com o everydns.net o cualquiera de los otros proveedores de DNS gratuitos o comerciales. Independientemente de cómo lo resuelva, obtendrá esas máquinas configuradas como esclavas, de modo que obtengan la información de DNS, por ejemplo, de ns1.example.com (su "maestro"), y enviarán esa información de DNS a cualquier máquina en el Internet que lo pide.

Una vez que su registrador de dominios publique los nuevos registros NS para su dominio (que debería ser aproximadamente instantáneamente), cuando alguien en Internet le pregunte qué servidor de nombres de dominio maneja "example.com", obtendrá cuatro respuestas:

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

Dependiendo de cómo esté configurado el servidor de nombres del otro tipo, podría tratar a esos cuatro como una lista y preguntarles uno a uno cómo llegar a "www.example.com", o podría hacerles a los cuatro la misma pregunta en el al mismo tiempo, y simplemente tome la respuesta de la máquina que responda primero. De cualquier manera, si ns1.example.com está caído porque el disco duro murió o si decidió reiniciar o lo que sea, entonces las otras 3 máquinas estarán disponibles para responder la pregunta y su sitio web seguirá siendo visible.

La forma más fácil de resolver este problema es registrarse con un proveedor de servicios de DNS que se encargará de DNS para su dominio; el precio de esto varía de gratis a miles (probablemente incluso decenas o cientos de miles) de dólares por mes, dependiendo de nivel de servicio que desea Puede obtener un servicio razonablemente confiable por $ 30 / año más o menos. Los servicios gratuitos no son horribles y, por lo tanto, tienen una buena relación calidad-precio, pero si depende de su sitio web para ganar dinero, debería poder obtener $ 30 por un año de DNS .

Luego, siga las instrucciones del proveedor de servicios DNS para cambiar los registros NS en su registrador de nombres de dominio, y estará listo.

gbroiles
fuente
0

El almacenamiento en caché realizado por otros servidores DNS depende del TTL asignado al registro. En su caso puede ser el TTL es muy bajo o alto. ¿Podría darnos más información sobre su configuración de DNS?

radio
fuente