Pourquoi nos enregistrements DNS ne se propagent-ils pas sur Internet?

22

Nous exécutons les serveurs de noms de notre domaine sur notre réseau. Nous utilisons bind / named. Appelons le domaine example.com . Une chose que j'ai remarquée récemment, lorsque je suis sur un site Web comme http://network-tools.com et que j'exécute des requêtes sur des URL définies sur nos serveurs de noms, je vois des changements instantanément.

Par exemple, si j'ajoute une entrée à notre serveur DNS pour l'url funny.example.com et que je recherche ensuite cette url sur http://network-tools.com , je vois immédiatement l'IP statique externe appropriée.

Cela me dit que toutes les demandes DNS liées à example.com arrivent directement à nos serveurs DNS à chaque fois.

Mes soupçons ont été confirmés plus tôt dans la semaine lorsque nos serveurs DNS sont tombés en panne pendant une très courte période. Et pendant cette période, si j'utilisais http://network-tools.com pour interroger example.com ou l'un de ses sous-domaines, je n'obtiendrais aucun résultat. Évidemment, c'est parce que les serveurs DNS étaient en panne et ne pouvaient pas être atteints.

Cela m'amène donc à ma question. Je pensais que les modifications apportées à nos serveurs DNS devraient se propager sur Internet à d'autres serveurs DNS. De cette façon, si notre DNS tombe temporairement en panne, les autres serveurs sur Internet savent toujours vers quelle adresse IP example.com pointe.

Suis-je mal compris ce truc DNS? Les serveurs DNS contrôlés par des tiers comme le nôtre ne sont-ils pas autorisés à propager des informations DNS à d'autres serveurs sur le net?

Où dois-je commencer à chercher pourquoi les changements ne se font pas sentir? Je peux voir sur notre pare-feu que le trafic du port 53 parvient correctement à nos serveurs DNS.

MISE À JOUR

  1. Je sais que vous dites qu'il est impossible de publier vos paramètres DNS instantanément, mais tout ce que je sais, c'est ceci: si je fais un changement DNS sur nos serveurs DNS, puis le vérifie immédiatement sur http: // network-tools. com , je vois les changements immédiatement.

  2. Si je désactive nos serveurs DNS et que j'essaie de vérifier l'une des URL à l'aide de http://network-tools.com , le site ne trouve aucune des URL. Mais si je remets les serveurs DNS en ligne, tout d'un coup, http://network-tools.com peut retrouver les URL ... Cela me dit que les serveurs NE mettent PAS en cache nos paramètres DNS. Ai-je tort? De plus, nos paramètres TTL sont actuellement définis sur 900 (15 minutes) et nos serveurs DNS fonctionnent depuis plus d'un an. Donc, ce n'est pas comme les serveurs DNS sur Internet n'ont pas encore eu la possibilité de le mettre en cache. Est-ce la raison pour laquelle les serveurs ne mettent pas en cache les paramètres parce que le TTL est si bas pour le moment? C'est un peu logique si c'est la raison.

Jake Wilson
la source
7
Étant donné que jokerville.com est un vrai nom de domaine enregistré, sauf s'il s'agit en fait de votre domaine, veuillez l'utiliser à la example.complace - il est officiellement réservé à cet effet.
mattdm
9
La raison pour laquelle network-tools.com constate immédiatement des changements est qu'il s'agit d'un outil réseau et qu'il ne met pas délibérément en cache les résultats. C'est un outil pour regarder vos serveurs de noms, pas un client DNS normal, donc il obéit à des règles différentes.
Michael Kohne

Réponses:

42

Oui, vous comprenez mal le fonctionnement du DNS. Je vais utiliser une certaine emphase ici, mais s'il vous plaît ne soyez pas offensé car aucun n'est prévu.

LES ENREGISTREMENTS DNS NE SONT PAS PROPAGÉS. ILS SONT CACHÉS.

Cela étant dit, voici une explication simplifiée de ce qui se passe:

  1. Vous créez un nouvel enregistrement DNS (A, CNAME, etc.)

  2. Un utilisateur distant (plus précisément un processus \ application lancée par l'utilisateur) essaie d'accéder à un service accessible via cet enregistrement DNS (un navigateur Web essayant d'accéder au site Web fonctionnant sur funny.example.com par exemple)

  3. Le client DNS des utilisateurs envoie une requête DNS à son serveur DNS, le serveur DNS trouve ensuite vos serveurs de noms (généralement via une série de requêtes DNS récursives) et leur demande les informations concernant funny.example.com

  4. Vos serveurs de noms répondent avec les réponses

  5. Le serveur DNS des utilisateurs envoie ensuite ces informations à l'utilisateur (plus précisément au résolveur client DNS des utilisateurs), qui à son tour renvoie les informations au processus \ application. Ces informations sont fournies avec ce qu'on appelle un TTL (Time To Live) qui indique au résolveur client DNS combien de temps ces informations peuvent être conservées dans son cache DNS (en mémoire) et combien de temps les informations peuvent être considérées comme actuelles et précises

  6. Le résolveur client DNS de l'utilisateur vide ensuite ces informations lorsque le TTL expire. Toute nouvelle demande pour le ou les enregistrements DNS en question nécessite une nouvelle recherche DNS et le processus ci-dessus se répète.

Donc, le long et le court est le suivant:

Vos enregistrements DNS ne se propagent pas. Aucun autre serveur DNS n'a de copie de vos enregistrements ou zones DNS. Un client ou un serveur DNS peut mettre en cache des informations sur vos enregistrements ou zones DNS (en fonction de leurs requêtes DNS de vos enregistrements et zones DNS) dans leur cache DNS. Ces informations sont temporairement mises en cache et seront supprimées de leur cache DNS à l'expiration du TTL.

Si vos serveurs de noms sont en panne, seuls les clients DNS qui ont l'un de vos enregistrements DNS dans leur cache pourront résoudre ces enregistrements DNS et uniquement jusqu'à l'expiration du TTL. De plus, à l'expiration du TTL (nécessitant un nouveau lokkup DNS), ces clients DNS ne pourront plus résoudre vos enregistrements DNS.

joeqwerty
la source
Bonne explication et je peux ajouter un exemple de protocole où il y a propagation (contrairement au DNS): BGP.
bortzmeyer
11

cela nous aiderait beaucoup si vous nous indiquiez votre nom de domaine réel, nous pourrions alors répondre à votre question en vous référant à votre configuration actuelle et signaler tout défaut.

J'ai tendance à faire confiance à http://dns.squish.net/ pour diagnostiquer rapidement les problèmes DNS. Cela vous indiquera avec certitude où se situent vos problèmes après avoir effectué un changement - en gros, si votre délégation en amont est correcte et que vos serveurs de noms 2-3 donnent tous la même réponse, et que quelqu'un ne voit pas le nouvel enregistrement, ils n'auront qu'à attendre que leur réseau local voie les changements. Si ce vérificateur vous indique qu'un de vos serveurs ne donne pas la même réponse que les autres, vous devez résoudre ce problème.

Il n'y a aucun moyen de publier des modifications DNS instantanément - eh bien, vous pouvez les publier instantanément, mais le reste du monde sera en retard en fonction du paramètre TTL de chaque enregistrement, donc par exemple si vous avez défini un enregistrement TTL de 86400 secondes ( un jour) et que vous apportez une modification, d'autres verront l'ancien enregistrement pendant une journée entière, car leur cache local ne vous le demandera pas avant l'expiration de leur copie de l'enregistrement.

Je suggère qu'avant toute modification majeure du DNS, vous réduisiez votre TTL à 600 (10 minutes) pour encourager les caches sur Internet à ne pas conserver les anciens enregistrements très longtemps. Mais certains caches l'ignoreront ou supposeront 1 jour, voire 1 semaine.

Une réponse décousue à une question décousue, j'espère cependant qu'il y avait quelque chose d'utile.

Matthew Bloch
la source
1
+1. Juste pour être clair, seuls les clients DNS qui ont déjà les informations dans leur cache, pour lesquels le TTL n'a pas expiré, seront affectés par une modification. Toute nouvelle demande, pour laquelle il n'y a pas de données dans le cache, sera résolue immédiatement.
joeqwerty
fyi: lien mort - squish.net/dnscheck
Aaron Esau
8

Oui, le vieil adage, "Les modifications DNS peuvent prendre 24 à 48 heures pour se propager sur Internet" serait plus précis "Les modifications DNS peuvent être mises en cache sur tous les serveurs DNS qui ont interrogé cet enregistrement au cours des 86400 dernières secondes."

Si vous souhaitez assurer la redondance de votre DNS dans le cas où votre serveur se déconnecte, vous devriez examiner le service DNS de sauvegarde (comme sur dyndns.com) ou créer votre propre NS secondaire.

Willbradley
la source
5

Tous les serveurs DNS sur Internet sont "contrôlés par des tiers" (je suppose que vous pouvez considérer que les serveurs DNS racine sont en quelque sorte "propriétaires" d'Internet, mais il n'y a aucune raison technique pour que vous puissiez créer votre propre racine privée).

Votre serveur DNS fournit une "durée de vie" (TTL) suggérée dans chaque réponse qu'il fournit. Les résolveurs distants (autres serveurs DNS exécutant une résolution récursive pour les clients, les bibliothèques de résolveurs clients, etc.) sont censés mettre en cache la réponse jusqu'à ce TTL avant de la supprimer de leur cache.

Si vous ne voyez pas les modifications que vous apportez aux enregistrements existants se refléter dans les requêtes du monde réel, cela signifie probablement que vos valeurs TTL sont suffisamment élevées pour que vous n'attendiez pas assez longtemps pour voir les réponses existantes vieillir hors du résolveur. caches autour du net.

Quelques antécédents de Server Fault: Pourquoi est-il appelé DNS "Propagation"?

Evan Anderson
la source
2

Quand quelqu'un (ou un ordinateur) sur Internet, pour ainsi dire, veut se connecter à l'une de vos machines, il demande à son serveur de noms local une adresse IP correspondant au nom d'hôte qui l'intéresse.

Donc, si vous dites à quelqu'un "hé, jetez un œil à mon site Web sympa http://www.example.com ", l'ordinateur de l'autre type demandera à son serveur de noms local "hé, qu'est-ce qu'une adresse IP pour www.example.com?"

En supposant que le serveur de noms local n'a jamais recherché la réponse à cette question auparavant, il demandera aux serveurs de noms racine de savoir quel (s) serveur (s) gère les recherches pour ".com". Quand il obtient cette réponse, il demandera à ces serveurs quels serveurs gèrent les recherches pour "example.com". Quand il obtient cette réponse, il demandera à ces serveurs une adresse IP pour "www.example.com".

Lorsque les serveurs de example.com répondent avec une adresse IP pour www.example.com, ils donnent également au serveur de noms demandeur une indication de la durée pendant laquelle il doit se souvenir de la réponse à cette question. Cet indice est appelé le "TTL", ou "temps de vivre", et il est mesuré en secondes. Il n'y a aucune garantie que n'importe quel serveur prêtera attention au TTL - certains serveurs de noms peuvent être configurés pour ne jamais se souvenir des réponses aux recherches, et répéteront toujours le processus même s'ils sont demandés plusieurs fois par seconde. D'autres serveurs de noms peuvent être configurés pour conserver la réponse pendant une longue période, même si vous avez suggéré que les données ne soient conservées que pendant une courte période, peut-être parce qu'elles souhaitent réduire le trafic réseau. Le TTL est juste une suggestion, pas une exigence ou une garantie.

La réponse littérale à votre question - pourquoi vos enregistrements DNS ne se propagent-ils pas sur Internet - est qu'ils ne le font pas parce qu'ils ne sont pas censés le faire.

De plus, si vous consultez vos propres informations DNS à l'aide d'un site conçu pour rechercher ou déboguer des informations DNS, il est probable que le site ne mettra pas en cache les données pendant longtemps, ou pas du tout, quelle que soit votre suggestion TTL, car l'objectif du site est probablement de fournir des informations sur ce que le système DNS dit MAINTENANT, pas il y a 5, 50 ou 500 secondes. C'est pourquoi vos modifications sont immédiatement reflétées et pourquoi le service cesse de fonctionner dès que vous déconnectez vos serveurs de noms.

Je soupçonne que votre question sous-jacente pourrait être "comment puis-je configurer les choses pour que si mon serveur DNS redémarre ou que son disque dur meure, d'autres personnes sur Internet pourront toujours voir mes pages Web?"

La réponse à cette question est de configurer plusieurs serveurs de noms pour votre domaine et de les faire fonctionner sur différentes machines - idéalement, pas seulement différents ordinateurs physiques, mais avec différentes connexions réseau, peut-être même dans différentes villes ou états ou pays ou continents. La plupart de ces serveurs de noms seront configurés comme des «esclaves», ce qui signifie qu'ils se tournent vers un serveur de noms «maître» pour leurs informations, puis répètent ces informations à toute personne qui leur demande des données.

Ainsi, dans vos données WHOIS avec votre bureau d'enregistrement de noms de domaine, vous pouvez configurer quatre serveurs de noms pour votre domaine:

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

où ns1.example.com est votre serveur DNS actuel. ns2.example.com peut être une autre machine de votre entreprise / organisation - idéalement pas sur le même sous-réseau et dans le même rack de serveur (ou sous le même bureau de gars) que ns1.example.com.

ns1.example.com sera considéré comme le serveur "maître" et lorsque vous souhaitez modifier votre DNS, vous effectuerez vos modifications sur cette machine.

ns2.example.com sera configuré comme un serveur "esclave", qui copie simplement les données que vous avez configurées sur ns1.example.com - mais le monde extérieur ne se soucie pas de la distinction maître / esclave, ns2.example .com sera considéré comme aussi "officiel" que ns1.example.com.

ns1.otherguy.com et ns2.otherguy.com sont des machines qui sont installées ailleurs - peut-être que vous prenez un arrangement avec un ami / collègue dans une autre organisation pour exécuter des serveurs de noms les uns pour les autres, ou peut-être que vous vous installez avec dyndns.com ou everydns.net ou l'un des autres fournisseurs DNS gratuits ou commerciaux. Quelle que soit la manière dont vous travaillez, vous obtenez ces machines configurées en tant qu’esclaves, afin qu’elles tirent les informations DNS pour example.com de ns1.example.com (votre «maître»), et elles serviront ces informations DNS à n’importe quelle machine du Internet qui le demande.

Une fois que votre registraire de domaine publie les nouveaux enregistrements NS pour votre domaine (qui devraient être approximativement instantanément), puis quand quelqu'un sur Internet demande quel serveur de nom de domaine gère "example.com", il obtiendra quatre réponses -

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

Selon la façon dont le serveur de noms de l'autre type est configuré, il peut traiter ces quatre en tant que liste et leur demander un à la fois comment atteindre "www.example.com" - ou il peut leur poser la même question à tous les quatre au en même temps, et prenez simplement la réponse de la machine qui répond en premier. Quoi qu'il en soit, si ns1.example.com est en panne parce que le disque dur est mort ou que vous avez décidé de redémarrer ou quoi que ce soit, les 3 autres machines seront disponibles pour répondre à la question à la place, et votre site Web restera visible.

Le moyen le plus simple de résoudre ce problème est de vous inscrire auprès d'un fournisseur de services DNS qui gérera le DNS pour votre domaine - le prix de celui-ci varie de gratuit à des milliers (probablement même des dizaines ou des centaines de milliers) de dollars par mois, selon le niveau de service que vous souhaitez. Vous pouvez obtenir un service raisonnablement fiable pour 30 $ / an environ. Les services gratuits ne sont pas terribles et, par conséquent, ont un très bon rapport qualité-prix, mais si vous dépendez de votre site Web pour gagner de l'argent, vous devriez pouvoir trouver 30 $ pour une année de DNS .

Ensuite, suivez les instructions du fournisseur de services DNS pour modifier les enregistrements NS chez votre registraire de nom de domaine, et vous serez prêt.

gbroiles
la source
0

La mise en cache effectuée par d'autres serveurs DNS dépend du TTL affecté à l'enregistrement. Dans votre cas, le TTL peut être très faible ou élevé. Pourriez-vous nous donner plus d'informations sur votre configuration DNS?

rayon
la source