Ceci est une question canonique sur le DNS (service de noms de domaine).
Si ma compréhension du système DNS est correcte, le registre .com contient un tableau qui mappe les domaines (www.example.com) aux serveurs DNS.
Quel est l'avantage? Pourquoi ne pas mapper directement à une adresse IP?
Si le seul enregistrement qui doit changer lorsque je configure un serveur DNS pour qu'il pointe vers une adresse IP différente se trouve sur le serveur DNS, pourquoi le processus n'est-il pas instantané?
Si les caches DNS sont la seule raison du retard, est-il possible de les contourner afin que je puisse voir ce qui se passe en temps réel?
domain-name-system
sabof
la source
la source
You can not able full understand DNS unless you are name Paul Mockapetris, Paul Vixie or Cricket Liu.
twitter.com/DEVOPS_BORAT/status/249006925767909376Réponses:
En fait, c'est plus compliqué que cela - plutôt qu'un "registre central (qui) contient un tableau qui mappe les domaines (www.mysite.com) sur des serveurs DNS", il existe plusieurs niveaux de hiérarchie
Il y a un registre central (les serveurs racine) qui contiennent seulement un petit ensemble d'entrées: les enregistrements NS (nameserver) pour tous les domaines de premier niveau supérieur -
.com
,.net
,.org
,.uk
,.us
,.au
, et ainsi de suite.Ces serveurs ne contiennent que des enregistrements NS pour le niveau suivant. Pour choisir un exemple, les serveurs de noms pour le
.uk
domaine vient des entrées pour.co.uk
,.ac.uk
et les autres zones de second niveau en usage au Royaume - Uni.Ces serveurs ne contiennent que des enregistrements NS pour le niveau suivant - pour continuer l’exemple, ils vous indiquent où trouver les enregistrements NS
google.co.uk
. C'est sur ces serveurs que vous trouverez enfin un mappage entre un nom d'hôtewww.google.co.uk
et une adresse IP.Comme couche supplémentaire, chaque couche servira également des disques "collés". Chaque enregistrement NS mappe un domaine à un nom d'hôte - par exemple, les enregistrements NS pour la
.uk
liste ennsa.nic.uk
tant que l'un des serveurs. Pour passer au niveau suivant, nous devons trouver les enregistrements NSnic.uk
, et ils se révèlent inclurensa.nic.uk
également. Alors maintenant, nous devons connaître l'adresse IP densa.nic.uk
, mais pour le savoir, nous devons faire une requêtensa.nic.uk
, mais nous ne pouvons pas le faire avant de connaître l'adresse IP densa.nic.uk
...Pour résoudre ce problème, les serveurs ont
.uk
ajouté l’enregistrement Ansa.nic.uk
dansADDITIONAL SECTION
la réponse (réponse ci-dessous réduite pour des raisons de concision):Sans ces enregistrements de colle supplémentaires, nous ne serions jamais en mesure de trouver les serveurs de noms
nic.uk.
et, par conséquent, nous ne pourrions jamais rechercher les domaines hébergés.Pour revenir à vos questions ...
D'une part, cela permet aux éditions de chaque zone d'être distribuées. Si vous souhaitez mettre à jour l'entrée pour
www.mydomain.co.uk
, il vous suffit de modifier les informations sur votremydomain.co.uk
serveur de noms. Il n'est pas nécessaire de notifier les.co.uk
serveurs centraux , ni les.uk
serveurs, ni les serveurs de noms racine. S'il n'y avait qu'un seul registre central qui mappait tous les niveaux de la hiérarchie à notifier à chaque changement d'entrée DNS tout au long de la chaîne, le trafic serait absolument saturé.Avant 1982, c’était en fait la résolution de noms. Un registre central a été informé de toutes les mises à jour et a distribué un fichier appelé
hosts.txt
contenant le nom d'hôte et l'adresse IP de chaque machine sur Internet. Une nouvelle version de ce fichier était publiée toutes les quelques semaines et chaque machine sur Internet devrait télécharger une nouvelle copie. Bien avant 1982, cela commençait à devenir problématique et c'est ainsi que DNS a été inventé pour fournir un système plus distribué.D'autre part, il s'agirait d'un point de défaillance unique: si le registre central unique s'effondrait, tout Internet était hors ligne. Avoir un système distribué signifie que les échecs ne concernent que de petites parties de l'internet, pas le tout.
(Pour offrir une redondance supplémentaire, il existe actuellement 13 clusters de serveurs distincts qui desservent la zone racine. Toute modification apportée aux enregistrements de domaine de niveau supérieur doit être étendue à l'ensemble des 13; imaginez qu'il soit nécessaire de coordonner la mise à jour des 13 d'entre eux pour chaque modification. vers n'importe quel nom d'hôte partout dans le monde ...)
Parce que DNS utilise beaucoup de cache pour accélérer les choses et réduire la charge sur les NS. Sans la mise en cache, chaque fois que vous visiterez
google.co.uk
votre ordinateur, vous devrez vous rendre sur le réseau pour rechercher les serveurs.uk
, puis.co.uk
, ensuite.google.co.uk
, ensuitewww.google.co.uk
. Ces réponses ne changent pas beaucoup, donc les consulter à chaque fois est une perte de temps et de trafic sur le réseau. Au lieu de cela, lorsque le NS retourne des enregistrements sur votre ordinateur, il inclut une valeur TTL, qui indique à votre ordinateur de mettre en cache les résultats pendant plusieurs secondes.Par exemple, les enregistrements NS pour
.uk
un TTL de 172800 secondes - 2 jours. Google est encore plus conservateur - les enregistrements NS pourgoogle.co.uk
un TTL de 4 jours. Les services qui dépendent d’une mise à jour rapide peuvent choisir une durée de vie beaucoup plus basse. Par exemple,telegraph.co.uk
la durée de vie n’est que de 600 secondes sur leurs enregistrements NS.Si vous souhaitez que les mises à jour de votre zone soient quasi instantanées, vous pouvez choisir d'abaisser votre durée de vie aussi loin que vous le souhaitez. Plus votre valeur est basse, plus vos serveurs verront de trafic, car les clients actualiseront leurs enregistrements plus souvent. Chaque fois qu'un client doit contacter vos serveurs pour effectuer une requête, cela entraîne un certain retard, car il est plus lent que de rechercher la réponse sur leur cache local. Vous devez donc également prendre en compte le compromis entre mise à jour rapide et service rapide.
Oui, c'est facile si vous testez manuellement avec
dig
des outils similaires - indiquez-lui simplement le serveur à contacter.Voici un exemple de réponse en cache:
La section flags ici ne contient pas le
aa
drapeau, nous pouvons donc voir que ce résultat provient d'un cache plutôt que directement d'une source faisant autorité. En fait, nous pouvons voir qu'il provient97.107.133.4
, qui se trouve être l'un des résolveurs DNS locaux de Linode. Le fait que la réponse ait été notifiée dans une mémoire cache très proche de moi signifie qu'il m'a fallu 0 ms pour obtenir une réponse. mais comme nous le verrons dans un instant, le prix que je paye pour cette vitesse est que la réponse est presque 5 minutes périmée.Pour contourner le résolveur de Linode et aller directement à la source, sélectionnez simplement l'un de ces NS et dites à dig de le contacter directement:
Vous pouvez voir que cette fois-ci, les résultats ont été servis directement à partir de la source. Notez l'
aa
indicateur, qui indique que les résultats proviennent d'une source faisant autorité. Dans mon exemple précédent, les résultats provenaient de mon cache local. Par conséquent, l'aa
indicateur leur manquait . Je peux voir que la source faisant autorité pour ce domaine définit une durée de vie de 600 secondes. Les résultats obtenus précédemment d'une mémoire cache locale ne comportaient qu'une durée de vie de 319 secondes, ce qui m'indique qu'ils étaient restés dans la mémoire cache pendant (600 à 319) secondes, presque 5 minutes, avant que je les voie.Bien que la durée de vie ne soit que de 600 secondes, certains FAI tenteront de réduire davantage leur trafic en forçant leurs résolveurs DNS à mettre les résultats en cache plus longtemps, dans certains cas, pendant 24 heures ou plus. Il est de tradition (de manière générale - de manière générale - de ne pas savoir si ceci est vraiment nécessaire - mais soyons sûrs) de supposer que tout changement de DNS que vous apportez ne sera pas visible partout dans le monde. Internet pendant 24 à 48 heures.
la source
aa
(réponse faisant autorité)flag
dans la réponse. Siaa
est présent, la réponse est venue directement d'un serveur de noms faisant autorité. (Si elle manque, la réponse peut encore être récente; certains serveurs de noms récursifs effacent l'aa
indicateur avant de transmettre la réponse au résolveur client.).uk
serveurs. À l'heure actuelle, les domaines de second niveau gérés par Nominet se trouvent sur les mêmes serveurs que ceux-ciuk.
. Par conséquent, une requête adresséeexample.co.uk
auxuk
serveurs recevra immédiatement une délégation sans avoir à passer par une délégation préalable auxco.uk
serveurs.+trace
option de dig interrogera votre serveur de noms configuré pour les serveurs de noms racine, afin qu'il puisse commencer la recherche. Si votre serveur de noms local estdnsmasq
(comme sur Ubuntu), il ne le supporte pas, vous obtiendrez donc une erreur. Utilisezdig +trace @8.8.8.8 www.example.com
. 8.8.8.8 est le service DNS public de Google. Utilisez 1.1.1.1 pour l’équivalent de Cloudflare.a) Le nombre de mappages IP -> de noms d'hôte dans le monde est VRAIMENT grand. Ce système répartit la responsabilité de l'hébergement de tous les enregistrements de sous-domaine et MX ainsi que de tous les autres enregistrements DNS vers le propriétaire du nom de domaine. C'était à peu près le point du nom de domaine.
.com
est détenu par un registre où, comme.uk
peut l'être par un autre. De mêmeexample.com
, ilsotherexample.com
peuvent être hébergés séparément pour que les ressources puissent être distribuées.b) Il est mis en cache, ce qui réduit le nombre de hits sur votre hôte DNS à une petite fraction de ce qu'il serait autrement. Par défaut, il enregistre 2 jours dans le cache avant d’être mis au rebut. Cela peut être changé en modifiant la durée de vie de l'enregistrement.
c) Vous pouvez effectivement empêcher la mise en cache des enregistrements en définissant une durée de vie très courte. Ceci n'est PAS recommandé sauf si vous l'utilisez pour un DNS dynamique. La mise en cache laisse beaucoup tomber les hits sur le serveur DNS. Pour choisir un nombre approximatif, nous parlons de supprimer 95% des demandes.
la source
yourdomain.com
c’est un sous-domaine de.com
. Si c'était juste un gros "fichier hôtes" (comme avant DNS et les elfes marchaient toujours dans la Terre du milieu), alors oui. Vous auriez juste un gros fichier et tout le monde le mettrait en cache.local
) n'a probablement qu'un sens limité.Si vous utilisez un système * nix, téléchargez une copie des djbdns de Dan Bernstein à l' adresse http://cr.yp.to/djbdns.html et exécutez son programme dnstrace pour voir le fonctionnement du système de requête récursif. C'est très instructif.
la source
a) Le nombre de noms de domaine possibles est beaucoup trop grand pour un serveur à gérer. Et il n'y a pas que du .com; il y a .net, .org, .se, .info et un nombre quelconque d'autres. Ajoutez à cela, vous pouvez déléguer la responsabilité d’un sous-domaine (c’est-à-dire
com
passe). DNS étant moins centralisé, tout cela est plus facile à gérer.b) Les machines qui se trouvent entre l'utilisateur et vous ont des caches DNS afin de minimiser le nombre de demandes nécessaires. Cela évite, par exemple, de spammer le réseau en demandant l'adresse de "serverfault.com" chaque fois que vous recevez une page de SF. Ces serveurs peuvent même mettre en cache les résultats "le domaine n'existe pas", c'est pourquoi il faut parfois un certain temps pour qu'un nouveau domaine apparaisse.
c) Bien que vous puissiez désactiver votre cache, il existe souvent d'autres serveurs DNS entre votre machine et le serveur DNS de votredomaine.com. Le serveur DNS de votre fournisseur de services Internet, par exemple, essaiera de mettre en cache autant que possible. Les seuls enregistrements mis à jour assez rapidement sur le réseau sont ceux avec un TTL court (qui dit en gros "je ne suis valide que pendant quelques secondes; après cela, demandez-moi à nouveau pour les informations actuelles"). Cependant, la raison pour laquelle les TTL sont si élevées est que le serveur responsable du domaine peut se décharger d'une partie du travail sur d'autres serveurs. Si tout le réseau communiquait avec votre ou vos deux serveurs DNS rinky-dink à chaque visite sur votre site Web, ils seraient pratiquement inutilisables à la seconde où quelqu'un verrait votre site sur /., Digg, etc.
la source