Comment puis-je trouver l'origine des enregistrements DNS en conflit?
Comment puis-je trouver l'origine des enregistrements DNS en conflit?
Réponses:
Vous aurez besoin de l'enregistrement SOA (début de l'autorité) pour un nom de domaine donné, et voici comment vous pouvez l'accomplir en utilisant l' outil de ligne de commande nslookup universellement disponible :
command line> nslookup
> set querytype=soa
> stackoverflow.com
Server: 217.30.180.230
Address: 217.30.180.230#53
Non-authoritative answer:
stackoverflow.com
origin = ns51.domaincontrol.com # ("primary name server" on Windows)
mail addr = dns.jomax.net # ("responsible mail addr" on Windows)
serial = 2008041300
refresh = 28800
retry = 7200
expire = 604800
minimum = 86400
Authoritative answers can be found from:
stackoverflow.com nameserver = ns52.domaincontrol.com.
stackoverflow.com nameserver = ns51.domaincontrol.com.
La ligne d' origine (ou serveur de noms principal sous Windows) vous indique que ns51.domaincontrol est le serveur de noms principal pour stackoverflow.com .
À la fin de la sortie, tous les serveurs faisant autorité, y compris les serveurs de sauvegarde pour le domaine donné, sont répertoriés.
dig
semble, pour moi (voir la réponse ci-dessous)
nslookup -type=soa stackoverflow.com
Linux aujourd'hui (2019-février), la section faisant autorité est vide.
Vous avez utilisé le singulier dans votre question, mais il existe généralement plusieurs serveurs de noms faisant autorité, le RFC 1034 en recommande au moins deux.
Sauf si vous voulez dire «serveur de noms principal» et non «serveur de noms faisant autorité». Les serveurs de noms secondaires font autorité.
Pour connaître les serveurs de noms d'un domaine sous Unix:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
Pour découvrir le serveur répertorié comme principal (la notion de "principal" est assez floue ces jours-ci et n'a généralement pas de bonne réponse):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
Pour vérifier les écarts entre les serveurs de noms, ma préférence va à l'ancien check_soa
outil, décrit dans le livre Liu & Albitz "DNS & BIND" (éditeur O'Reilly). Le code source est disponible sur http://examples.oreilly.com/dns5/
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
Ici, les deux serveurs de noms faisant autorité ont le même numéro de série. Bien.
www.pressero.com
, qui est un CNAME pour un autre site - dig + short SOA renvoie simplement la cible CNAME.
www.pressero.com
, vous pensiez probablement aux enregistrements A (qui est le type d'enregistrement par défaut dig
si vous ne le spécifiez pas). Mais si nécessaire, ajoutez simplement un tail -1
pour récupérer le résultat final.
dig +short SOA www.pressero.com
. Cela renvoie uniquement la cible CNAME - pas l'enregistrement SOA pour le pressero.com
domaine, ce que j'attendais. tail -1
n'aide pas les choses; dig +short SOA
n'émet qu'une seule ligne.
Sur * nix:
$ dig -t ns <domain name>
J'ai un outil de propagation DNS conçu pour répondre à ce genre de questions.
La source est publiée sous AGPLv3.
(Oui, l'interface est plutôt basique pour le moment :))
Vous pouvez également trouver les serveurs de noms pour un domaine avec la commande "host":
[davidp @ supernova: ~] $ host -t ns stackoverflow.com serveur de noms stackoverflow.com ns51.domaincontrol.com. serveur de noms stackoverflow.com ns52.domaincontrol.com.
J'ai trouvé que la meilleure façon d'ajouter toujours l'option + trace:
dig SOA +trace stackoverflow.com
Il fonctionne également avec CNAME récursif hébergé dans un fournisseur différent. + trace trace implique + norecurse donc le résultat est juste pour le domaine que vous spécifiez.
Le terme que vous devriez rechercher sur Google est «faisant autorité» et non «définitif».
Sous Linux ou Mac , vous pouvez utiliser les commandes whois
, dig
, host
, nslookup
ou plusieurs autres. nslookup
peut également fonctionner sous Windows.
Un exemple:
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Quant au crédit supplémentaire: Oui, c'est possible.
aryeh a définitivement tort, car sa suggestion ne vous donne généralement que l'adresse IP du nom d'hôte. Si vous utilisez dig
, vous devez rechercher des enregistrements NS, comme ceci:
dig ns stackoverflow.com
Gardez à l'esprit que cela peut demander à votre serveur DNS local et donc donner des réponses incorrectes ou obsolètes qu'il a dans son cache.
Nous avons créé un outil de recherche DNS qui vous donne les serveurs de noms faisant autorité du domaine et ses enregistrements DNS communs en une seule demande.
Exemple: https://www.misk.com/tools/#dns/stackoverflow.com
Notre outil recherche les serveurs de noms faisant autorité en effectuant une recherche DNS en temps réel (non mise en cache) sur les serveurs de noms racine, puis en suivant les références de serveurs de noms jusqu'à ce que nous atteignions les serveurs de noms faisant autorité. C'est la même logique que les résolveurs DNS utilisent pour obtenir des réponses faisant autorité. Un serveur de noms faisant autorité au hasard est sélectionné (et identifié) sur chaque requête, ce qui vous permet de trouver des enregistrements DNS conflictuels en effectuant plusieurs requêtes.
Vous pouvez également afficher le chemin de délégation du serveur de noms en cliquant sur "Serveurs de noms faisant autorité" en bas des résultats de la recherche DNS de l'exemple ci-dessus.
Exemple: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net
Vous pouvez utiliser le service whois. Sur un système d'exploitation de type UNIX, vous exécuteriez la commande suivante. Vous pouvez également le faire sur le Web à l' adresse http://www.internic.net/whois.html .
whois stackoverflow.com
Vous obtiendriez la réponse suivante.
... texte supprimé ici ...
Serveurs de domaine dans l'ordre indiqué: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
Vous pouvez utiliser nslookup ou creuser pour en savoir plus sur les enregistrements d'un domaine donné. Cela pourrait vous aider à résoudre les conflits que vous avez décrits.
Malheureusement, la plupart de ces outils ne renvoient que l'enregistrement NS fourni par le serveur de noms lui-même. Pour être plus précis dans la détermination des serveurs de noms qui sont réellement responsables d'un domaine, vous devez soit utiliser "whois" et vérifier les domaines qui y sont répertoriés OU utiliser "dig [domaine] NS @ [serveur de noms racine]" et l'exécuter récursivement jusqu'à ce que vous obteniez les listes de serveurs de noms ...
Je souhaite qu'il y ait une simple ligne de commande que vous pourriez exécuter pour obtenir CE résultat de manière fiable et dans un format cohérent, pas seulement le résultat qui est donné par le serveur de noms lui-même. Le but de cela est pour moi de pouvoir interroger environ 330 noms de domaine que je gère afin de pouvoir déterminer exactement vers quel serveur de noms chaque domaine pointe (selon leurs paramètres de bureau d'enregistrement).
Quelqu'un connaît une commande utilisant "dig" ou "host" ou autre chose sur * nix?
Les enregistrements SOA sont présents sur tous les serveurs plus haut dans la hiérarchie, sur lesquels le propriétaire du domaine n'a AUCUN contrôle, et ils pointent tous vers le seul serveur de noms faisant autorité sous le contrôle du propriétaire du domaine.
En revanche, l'enregistrement SOA sur le serveur faisant autorité n'est pas strictement nécessaire pour résoudre ce domaine et peut contenir de fausses informations (ou des serveurs principaux masqués ou autrement limités) et ne doit pas être utilisé pour déterminer le serveur de noms faisant autorité. pour un domaine donné.
Vous devez interroger le serveur faisant autorité pour le domaine de premier niveau pour obtenir des informations SOA fiables pour un domaine enfant donné.
(Les informations sur quel serveur fait autorité pour quel TLD peut être interrogé à partir des serveurs de noms racine).
Lorsque vous avez des informations fiables sur le SOA du serveur faisant autorité TLD, vous pouvez alors interroger le serveur de noms principal lui-même faisant autorité (celui qui se trouve dans l'enregistrement SOA sur le serveur de noms gTLD!) Pour tout autre enregistrement NS, puis procéder à la vérification de tous ces serveurs de noms que vous avez obtenus en interrogeant les enregistrements NS, pour voir s'il y a une incohérence pour tout autre enregistrement particulier, sur l'un de ces serveurs.
Tout cela fonctionne beaucoup mieux / fiable avec Linux et Dig qu'avec Nslookup / Windows.
Un moyen simple consiste à utiliser un outil de domaine en ligne. Mon préféré est Domain Tools (anciennement whois.sc). Je ne sais pas s'ils peuvent résoudre les enregistrements DNS conflictuels. Par exemple, les serveurs DNS pour stackoverflow.com sont
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
J'ai constaté que pour certains domaines, les réponses ci-dessus ne fonctionnent pas. Le moyen le plus rapide que j'ai trouvé est de vérifier d'abord un enregistrement NS. Si cela n'existe pas, recherchez un enregistrement SOA. Si cela n'existe pas, résolvez récursivement le nom en utilisant dig et prenez le dernier enregistrement NS retourné. Un exemple qui correspond à cela estanalyticsdcs.ccs.mcafee.com.
host -t NS analyticsdcs.ccs.mcafee.com.
host -t SOA analyticsdcs.ccs.mcafee.com.
dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1
host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.