Requête DNS pour les CNAME pour un serveur

Réponses:

6

Vous n'avez pas spécifié votre environnement mais si vous utilisez Unix, je pense qu'une combinaison de dig et grep devrait fonctionner. ns.example.comdoit être le nom d'hôte de votre serveur de noms, example.comest le domaine dont votre hôte fait partie et HOST est l'hôte pour lequel vous souhaitez trouver tous les enregistrements CNAME. Il s'agit en fait d'un caractère de tabulation dans la commande grep, pas littéralement <TAB>(vous devrez peut-être ajuster la chaîne grep).

Votre serveur de noms doit également être configuré pour autoriser les transferts de zone, dont les détails dépendent de l'implémentation.

dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'

Ou si vous êtes sous Windows, vous pouvez utiliser nslookup :

C:\> nslookup
> name ns.example.com
> ls -a example.com FILE

Cela devrait sortir tous les enregistrements du domaine example.comqui ns.example.com"connaît" dans FILE. Vous pouvez ensuite utiliser l'outil que vous souhaitez pour trier le fichier texte à la recherche du CNAMES correspondant.

Ou avec ce script perl non testé (mais d'aspect correct) :

#!/usr/bin/perl

use Net::DNS;

($target, $zone) = @ARGV;

$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
     print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}

Quelques points pour l'exhaustivité:

  • Comme l'a indiqué @womble, il n'y a pas d'équivalent d'un enregistrement PTR pour un CNAME. Vous devrez utiliser une certaine conscience contextuelle en triant toutes les informations de zone pour CNAMES qui correspondent aux enregistrements A de votre hôte.
  • Cela ne fonctionne que pour votre serveur DNS (et si vous êtes autorisé à afficher les informations de zone). Il n'y a aucun moyen de "tracer" les CNAMES de votre hôte appartenant à d'autres zones.
  • Comme l'indique @BillThor, il existe d'autres façons d'aliaser un nom d'hôte au-delà de CNAMES. Encore une fois, vous aurez besoin d'une certaine conscience contextuelle.

la source
Question mise à jour, nous sommes sur Windows.
PhilPursglove
4

Si vous avez accès à votre configuration DNS, il est plutôt trivial de découvrir ces données. Cependant, n'importe qui peut avoir un CNAME pointant vers votre serveur. Vous ne pourrez pas les retracer.

Comme l'a souligné @wombie, vous ne pouvez pas effectuer de recherche inversée pour CNAMES. Il n'y a pas d'équivalent PTR pour CNAMES, et même s'il existait probablement, seuls certains enregistrements existeraient. Une vérification rapide d'une sélection aléatoire de domaines montrerait que les enregistrements PTR ne pointent souvent pas vers l'enregistrement A. De même, la recherche inversée d'enregistrements PTR pour des adresses aléatoires ne trouve souvent pas l'enregistrement A correspondant.

EDIT: les CNAME ne sont pas le seul moyen d'aliaser un système. DNS permet à plusieurs enregistrements A de pointer vers la même adresse. Fonctionnellement, cela revient à ajouter un CNAME mais la méthode est différente. Les mêmes problèmes s'appliquent en dehors de votre domaine. Pour rechercher les différents enregistrements A, vous devez rechercher la ou les adresses IP du système en question.

BillThor
la source
3

Le protocole DNS ne vous permet pas d'effectuer ce type de recherche "inversée". Vous devrez sortir du protocole, par exemple en utilisant les suggestions de grep fournies par kce.

womble
la source
2

utiliser PowerShell:

vérifiez le nom principal sur votre serveur DNS Microsoft:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername

obtenez tous les noms de domaine de cet hôte à partir de votre serveur DNS Microsoft:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_CNAMEType -Filter "primaryname = 'primaryname de la première requête terminée par un point.'" -ComputerName mydnsservername | select ownername, primaryname

Josef Aschauer
la source
1
  1. Retrouvez toutes les zones desservies par vos machines.
  2. Pour chaque zone, utilisez dnscmdpour exporter les données de zone:
    dnscmd a.ns.example.com / zoneexport zone.example.com nom-de-fichier-pour-cette-zone
  3. Recherchez dans les fichiers exportés des enregistrements de CNAMEressources qui pointent vers le nom de domaine cible.
JdeBP
la source