Pourquoi DNS Renvoie un nom de domaine complet avec un enregistrement d'adhésif à la place IP

Quand j'envoie une demande DNS pour

my.example.net

Mon serveur DNS récursif va à la zone racine DNS (ou au lieu de faire une signification mise en cache). Ce serveur de noms dit: "Allez regarder

.net

Noms de serveurs ", et ceux à leur tour disent" Regarder

example.net

Noms de serveurs "et ceux à leur tour disent"

my.example.net

Je me suis assis

xxx.xxx.xxx.xxx

".

Wikipedia dit "Les serveurs de noms de délégation sont identifiés par nom, non par adresse IP" et le besoin
https://serverfault.com/questi ... ecord
Le soutient.

Question 1:

Je ne comprends pas comment la zone racine DNS me dit d'aller à

a.gtld-servers.net

(ou tout autre serveur de noms .net) Pour la permission

my.example.net

peut aider depuis

.net

Les serveurs de noms ont

.net

Je n'ai aucune adresse IP. C'est juste un liant au niveau TLD?

Question 2:

Si les enregistrements de liants sont une partie si nécessaire DNS, Pourquoi la délégation survient-elle par le nom d'hôte et non par l'adresse IP?
Invité:

Christine

Confirmation de:

Les personnes qui lancent des convertisseurs récursifs (par exemple, Google de 8.8.8.8 ou votre fournisseur Internet), Vous devez fournir une adresse IP d'au moins un serveur racine. - Généralement à travers le fichier d'invite. Adresses IP du serveur racine
https://www.iana.org/domains/root/servers
Et ils changent rarement.

Facilite les serveurs DNS non nominés modifiant l'adresse IP, créant plusieurs adresses IP ou attribuer différentes adresses IP à différentes régions, etc.

Blanche

Confirmation de:

Tous les programmes de serveurs de noms récursives sont fournis avec une liste de noms root actuels et de leurs adresses IP.

Cela donne la base car cela peut changer, mais lentement.

Lors du démarrage, le serveur connectera l'une des adresses IP ci-dessus pour obtenir via

. NS

DNS Demande la liste actuelle des serveurs de noms root, puis met ensuite à jour sa liste interne et l'utilise pour tous les besoins supplémentaires. Ce processus s'appelle "Remplir".

Si vous avez besoin de détails, tout cela est expliqué dans
https://tools.ietf.org/html/rfc8109
Quant à votre question sur les colles, rappelez-vous que les adhésifs - Ceci est un avantage spécial. Si vous avez un domaine

adomain.example

par

ns1.anotherdomain.test

Ce n'est pas un enregistrement de colle. Voir la définition de «Connexion des enregistrements» dans ce nouveau document sur la terminologie DNS:
https://tools.ietf.org/html/rfc7719#section-6
:

Enregistrements associés: "[Entrées de ressources] qui ne font pas partie de données autoritatives [zones] et sont des enregistrements d'entrées pour [noms de noms en souszones]. Ces entrées RR sont nécessaires uniquement si le nom du serveur de noms est "ci-dessous » Réduction et utilisée uniquement dans le cadre d'une réponse de référence ". Sans colle "nous pourrions faire face à la situation quand NS RR Nous nous informons que pour connaître le nom du serveur de noms, nous devons contacter le serveur à l'aide de l'adresse que nous souhaitons savoir. " (Définition de [RFC1034], section 4.2.1)

Comme pour "quand j'envoie une demande DNS pour my.example.net, Il tombe dans la zone racine DNS», alors c'est incorrect. Votre système utilise un (ou plusieurs) Serveurs DNS récursifs, locaux ou disponibles au public. Vous leur envoyez toutes vos demandes DNS. Ils répondent, comme suit leur nom, pour effectuer des requêtes itératives à plusieurs serveurs de noms avec une manière récursive, à partir de la racine, s'il n'y a pas de données dans leur Keshe actuel pour répondre à votre demande.

Donc, décrivons un exemple en utilisant un vrai nom, par exemple

www.stackexchange.com

.

Tu peux faire

dig +trace www.stackexchange.com A

Pour voir ce qui se passe exactement

+trace

Exécute un mode récursif complet et montre que tout serveur de noms récursif fait lorsque son cache est vide.

Mais nous pouvons le refaire manuellement. Et si vous voulez suivre un algorithme spécifique, lisez «4.3.2. Algorithme "B.
https://tools.ietf.org/html/rfc1034
(Mais notez qu'il y a des ajouts ultérieurs, en particulier pour DNSSEC et d'autres enregistrements tels que DNAME)

Par exemple, voir
https://gitlab.isc.org/isc-pro ... tns.c
Cela fait partie du code source. BIND. Mais fondamentalement, c'est le contenu de la réponse à

. NS

avec adresses IP, c'est-à-dire la liste actuelle des serveurs de noms root et de leur IPv4- et adresse IPv6.

Ici, nous ignorons la phase de préparation DNS (Mettre à jour la liste ci-dessus)

Étape 1

Sélectionnez l'une des adresses IP et de la requête ci-dessus:

$ dig @192.112.36.4 www.stackexchange.com A +nodnssec

; <<>> DiG 9.12.0 <<>> @192.112.36.4 www.stackexchange.com A +nodnssec
; (1 server found)
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59725
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.stackexchange.com. IN A

;; QUERY SIZE: 62

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59725
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 27
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.stackexchange.com. IN A

;; AUTHORITY SECTION:
com. 2d IN NS k.gtld-servers.net.
com. 2d IN NS e.gtld-servers.net.
com. 2d IN NS g.gtld-servers.net.
com. 2d IN NS c.gtld-servers.net.
com. 2d IN NS l.gtld-servers.net.
com. 2d IN NS j.gtld-servers.net.
com. 2d IN NS h.gtld-servers.net.
com. 2d IN NS a.gtld-servers.net.
com. 2d IN NS b.gtld-servers.net.
com. 2d IN NS m.gtld-servers.net.
com. 2d IN NS d.gtld-servers.net.
com. 2d IN NS f.gtld-servers.net.
com. 2d IN NS i.gtld-servers.net.

;; ADDITIONAL SECTION:
a.gtld-servers.net. 2d IN A 192.5.6.30
b.gtld-servers.net. 2d IN A 192.33.14.30
c.gtld-servers.net. 2d IN A 192.26.92.30
d.gtld-servers.net. 2d IN A 192.31.80.30
e.gtld-servers.net. 2d IN A 192.12.94.30
f.gtld-servers.net. 2d IN A 192.35.51.30
g.gtld-servers.net. 2d IN A 192.42.93.30
h.gtld-servers.net. 2d IN A 192.54.112.30
i.gtld-servers.net. 2d IN A 192.43.172.30
j.gtld-servers.net. 2d IN A 192.48.79.30
k.gtld-servers.net. 2d IN A 192.52.178.30
l.gtld-servers.net. 2d IN A 192.41.162.30
m.gtld-servers.net. 2d IN A 192.55.83.30
a.gtld-servers.net. 2d IN AAAA 2001:503:a83e::2:30
b.gtld-servers.net. 2d IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 2d IN AAAA 2001:503:83eb::30
d.gtld-servers.net. 2d IN AAAA 2001:500:856e::30
e.gtld-servers.net. 2d IN AAAA 2001:502:1ca1::30
f.gtld-servers.net. 2d IN AAAA 2001:503:d414::30
g.gtld-servers.net. 2d IN AAAA 2001:503:eea3::30
h.gtld-servers.net. 2d IN AAAA 2001:502:8cc::30
i.gtld-servers.net. 2d IN AAAA 2001:503:39c1::30
j.gtld-servers.net. 2d IN AAAA 2001:502:7094::30
k.gtld-servers.net. 2d IN AAAA 2001:503:d2d::30
l.gtld-servers.net. 2d IN AAAA 2001:500:d937::30
m.gtld-servers.net. 2d IN AAAA 2001:501:b1f9::30

;; Query time: 121 msec
;; SERVER: 192.112.36.4#53(192.112.36.4)
;; WHEN: Tue Mar 26 12:22:23 EST 2019
;; MSG SIZE rcvd: 874

Donc, le serveur sur

192.112.36.4

Répond à nous:


NOERROR

: Notre demande était valide

ne pas

aa

Enregistrement dans les drapeaux, nous n'avons pas reçu de réponse réputée à notre réponse, seulement des pointeurs où continuer

"ATTENTION: la récursion est demandée, mais non disponible": comme prévu, les noms de serveur plénipotentiaires pour

.

Nous demandons, la récursion ne nous a-t-elle pas pour nous

Donc, ce serveur sait aider notre demande, uniquement des serveurs de noms faisant autorité sur

.COM

; Il fournit des noms et des adresses IP.

Maintenant, le serveur de noms récursif n'est pas obligé de faire confiance au contenu de la "section supplémentaire". Il peut répéter de

m.gtld-servers.net.

Par exemple, posez le même serveur de noms faisant autorité. De la même manière, il retournera les données qu'il n'est pas autorisée pour ce nom, mais connaît les serveurs de noms

.NET

et retourner votre nom et vos adresses IP. Ici parce que leurs noms sont à nouveau dans

.NET

, Ils sont sécurisés et le serveur doit faire confiance aux adresses IP fournies.

Étape 2

Sélection de l'une des adresses IP ci-dessus, nous effectuons à nouveau notre demande:

$ dig @ 192.26.92.30 www.stackexchange.com A + nodnssec

; <<>> DiG 9.12.0 <<>> @192.26.92.30 www.stackexchange.com A +nodnssec
; (1 server found)
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45273
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.stackexchange.com. IN A

;; QUERY SIZE: 62

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45273
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 5
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.stackexchange.com. IN A

;; AUTHORITY SECTION:
stackexchange.com. 2d IN NS ns-925.awsdns-51.net.
stackexchange.com. 2d IN NS ns-1029.awsdns-00.org.
stackexchange.com. 2d IN NS ns-cloud-d1.googledomains.com.
stackexchange.com. 2d IN NS ns-cloud-d2.googledomains.com.

;; ADDITIONAL SECTION:
ns-cloud-d1.googledomains.com. 2d IN AAAA 2001:4860:4802:32::6d
ns-cloud-d1.googledomains.com. 2d IN A 216.239.32.109
ns-cloud-d2.googledomains.com. 2d IN AAAA 2001:4860:4802:34::6d
ns-cloud-d2.googledomains.com. 2d IN A 216.239.34.109

;; Query time: 108 msec
;; SERVER: 192.26.92.30#53(192.26.92.30)
;; WHEN: Tue Mar 26 12:35:56 EST 2019
;; MSG SIZE rcvd: 273

Ici serveur B.

192.26.92.30

Auparavant, cela nous a donné à propos de la même réponse: elle n'est pas autorisée pour le nom que nous recherchons, mais renvoie votre nom de serveur et vos adresses IP.

Encore, namserver Je ne pouvais pas demander au nom

ns-cloud-d1.googledomains.com.

Mais cela viendra évidemment du même serveur. namserver, comme le même TLD, Par conséquent, il peut utiliser les adresses IP ci-dessus. Ou il peut faire une résolution de zéro pour les noms

ns-925.awsdns-51.net.

ou

ns-1029.awsdns-00.org.

qui sont externes par rapport à

.COM

La zone, par conséquent, les adresses IP ne sont pas spécifiées.

Étape 3

Donc, pour simplifier l'utilisation de l'une des adresses IP ci-dessus et de la répétition de la demande:

$ dig @216.239.34.109 www.stackexchange.com A +nodnssec

; <<>> DiG 9.12.0 <<>> @216.239.34.109 www.stackexchange.com A +nodnssec
; (1 server found)
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16720
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.stackexchange.com. IN A

;; QUERY SIZE: 62

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16720
;; flags: qr aa rd; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.stackexchange.com. IN A

;; ANSWER SECTION:
www.stackexchange.com. 5m IN CNAME stackexchange.com.
stackexchange.com. 5m IN A 151.101.1.69
stackexchange.com. 5m IN A 151.101.65.69
stackexchange.com. 5m IN A 151.101.129.69
stackexchange.com. 5m IN A 151.101.193.69

;; Query time: 149 msec
;; SERVER: 216.239.34.109#53(216.239.34.109)
;; WHEN: Tue Mar 26 12:38:34 EST 2019
;; MSG SIZE rcvd: 128

Faites attention à une différence importante: drapeau AA, Ce qui signifie que le serveur de serveur que nous venons de demander est vraiment faisant autorité pour le nom demandé, ses résultats sont donc "finaux". En fait, cela montre que notre nom

CNAME

Type d'enregistrement, mais il fournit une adresse IP de la cible, notre demande est donc complétée, nous avons pu résoudre ce problème.

www.stackexchange.com

En ce moment et à partir de l'endroit où il a été fait, c'est des adresses IP

151.101.1.69

et

151.101.65.69

et

151.101.129.69

et

151.101.193.69

.

Pour répondre aux questions, connectez-vous ou registre