web-dev-qa-db-fra.com

Découvrez quel serveur DNS a répondu à votre requête

J'ai une question apparemment simple mais je n'ai pas pu trouver la réponse à cette question précisément après une recherche:
Je sais que, si je veux rechercher l'adresse IP d'un nom de domaine, je tape, par exemple:

nslookup google.de

et obtenir

Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   google.de
Address: 172.217.18.3

Cependant, je ne sais pas d'où j'ai obtenu cette réponse. Pour autant que je sache au début, mon résolveur essaie de demander à mon serveur DNS local (qui est sur Ubuntu dnsmasq) et si celui-ci n'a pas la réponse, il demande au serveur suivant et ainsi de suite. Mais je veux savoir quel serveur exact avait finalement la réponse. Est-ce possible?
J'ai aussi essayé

Dig +trace www.google.com

qui fournit toutes les informations sur les serveurs émis mais effectue une recherche entièrement itérative. Je voudrais essentiellement une réponse comme ça, mais avec une recherche normale.

9
Staki42

Je veux savoir quel serveur exact avait finalement la réponse. Est-ce possible?

Ce n'est pas réalisable. Vous ne trouverez pas le serveur faisant autorité spécifique qui a été consulté nommé n'importe où dans la charge utile d'une réponse DNS. Il existe des requêtes CHAOS qui visent à identifier le serveur récursif spécifique qui vous a répondu, mais aucun équivalent pour extraire le nom du serveur faisant autorité dont un récurseur a obtenu les données.

Le Q&A StackOverflow auquel Phillip a lié fournit des instructions sur la façon d'identifier la liste des enregistrements NS qui étaient présents dans la section d'autorité d'une réponse DNS récursive. C'est la liste complète des serveurs, pas le serveur spécifique. Même si elles étaient suffisantes pour vos utilisations, ces informations sont considérées comme facultatives par les normes DNS et il est de plus en plus rare de les voir dans des réponses récursives afin de réduire la taille de la charge utile des attaques par réflexion de source interne.

Si vous connaissez le nom de la zone, vous pouvez demander la liste complète des enregistrements NS via une demande explicite pour eux. Cela nécessite de savoir que vous êtes au sommet de la zone; une demande de example.com NS renverront la réponse souhaitée mais www.example.com ne le sera pas, sauf si www a été délégué à un autre ensemble de serveurs. Dans ce cas, vous n'avez pas d'autre choix que de travailler en arrière de manière itérative jusqu'à ce que vous découvriez le sommet de la zone.

Pour faire court, il n'y a pas de chemin court fiable (c'est-à-dire une seule requête) pour obtenir des informations sur tout l'autorité en amont d'un serveur récursif, et il y a no moyen d'apprendre le serveur faisant autorité spécifique qui a répondu à une requête sans également contrôler le serveur faisant autorité et créer des données uniques sur chaque serveur. (si vous faites cela, veuillez créer une zone unique à cet effet afin qu'elle n'interfère pas avec vos transferts de zones de production plus sensibles)

5
Andrew B

Voir ceci https://stackoverflow.com/questions/38021/how-do-i-find-the-authoritative-name-server-for-a-domain-name

en bref, nslookup définit le type de requête sur SOA

une seule ligne:

 nslookup -querytype=soa google.de
 nslookup -d2 -type=ANY google.de
 nslookup -d2 -type=ANY google.de 8.8.8.8

recherchez: serveur de noms principal

command line> nslookup
> set querytype=soa
> google.de
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Non-authoritative answer:
google.de
    primary name server = ns2.google.com 
    responsible mail addr = dns-admin.google.com
    serial  = 160093636
    refresh = 900 (15 mins)
    retry   = 900 (15 mins)
    expire  = 1800 (30 mins)
    default TTL = 60 (1 min)

>

MODIFIER:

On me dit que l'enregistrement SOA n'est peut-être pas la meilleure méthode. Qu'il peut même ne pas être défini correctement. Ainsi, l'enregistrement NS aurait été un meilleur choix:

Où se trouve le serveur nameserver pour le domaine ...

  nslookup  -type=NS google.de

Ou avec beaucoup d'informations de débogage pour trouver le nameserver

  nslookup -d2 -type=NS google.de
6
Phillip Williams

Lorsque vous utilisez Dig dans la réponse par défaut, vous aurez l'IP du serveur de noms répondant, qui devrait être le serveur de noms récursif configuré dans votre système (/etc/resolv.conf généralement).

1
Patrick Mevzek