256 votes

Comment puis-je lister TOUS les enregistrements DNS ?

Existe-t-il un moyen de lister TOUS les enregistrements DNS d'un domaine ?

Je connais des outils tels que dig et nslookup, mais ils n'ont qu'une portée limitée. Par exemple, si j'ai un enregistrement A de sous-domaine en tant que

test A somedomain.co.uk

à moins que je ne le demande expressément, par exemple.

dig any test.somedomain.co.uk

Je ne le vois pas.

Existe-t-il un moyen (autre que de consulter les enregistrements en allant dans le gestionnaire DNS) de voir exactement quels sont tous les enregistrements DNS ?

254voto

denis phillips Points 7349

La réponse courte est que ce n'est généralement pas possible, à moins que vous ne contrôliez le domaine.

Option 1 : Toute requête

Lorsque vous effectuez une requête pour ANY, vous obtenez une liste de tous les enregistrements à ce niveau, mais pas en dessous.

# try this
dig google.com any

Cela peut donner des enregistrements A, des enregistrements TXT, des enregistrements NS, des enregistrements MX, etc. si le nom de domaine est exactement "google.com". Cependant, il ne renverra pas d'enregistrements enfants (par ex, www.google.com ). Plus précisément, vous PEUVEZ obtenir ces enregistrements s'ils existent.

Le serveur de noms n'est pas tenu de renvoyer ces enregistrements s'il choisit de ne pas le faire (par exemple, pour réduire la taille de la réponse). La plupart des serveurs DNS rejettent les requêtes ANY.

Option 2 : Requête AXFR

Un AXFR est un transfert de zone, et c'est probablement ce que vous voulez. Toutefois, ces transferts sont généralement limités et ne sont disponibles que si vous contrôlez la zone. Vous effectuerez généralement un transfert de zone directement à partir du serveur faisant autorité (le @ns1.google.com ci-dessous) et souvent à partir d'un serveur de noms qui n'est peut-être pas publié (un serveur de noms furtif).

# This will return "Transfer failed"
dig @ns1.google.com google.com axfr

Si vous avez le contrôle de la zone, vous pouvez la configurer pour obtenir des transferts protégés par une clé TSIG. Il s'agit d'un secret partagé que le client peut envoyer au serveur pour autoriser le transfert.

Option 3 : Scraper avec un script

Une autre option consiste à récupérer tous les enregistrements DNS à l'aide d'un script. Vous devrez itérer à travers tous les types d'enregistrements DNS, et aussi à travers les sous-domaines communs, en fonction de vos besoins.

Option 4 : utiliser un outillage spécialisé

Il existe des outils en ligne qui énumèrent les sous-domaines, ainsi que des outils en ligne qui liste de tous les enregistrements DNS pour un nom DNS. Notez que l'énumération des sous-domaines n'est généralement pas exhaustive.

42voto

dan3 Points 1210

J'ai amélioré Josh La réponse de l'auteur de l'article. J'ai remarqué que dig n'affiche que les entrées déjà présentes dans le cache du serveur de noms interrogé. Il est donc préférable de faire appel à un serveur de noms faisant autorité dans la SOA (plutôt que de se fier au serveur de noms par défaut). J'ai également désactivé le filtrage des adresses IP de type "wildcard", car je suis généralement plus intéressé par l'exactitude de la configuration.

Le nouveau script prend un fichier -x pour la sortie étendue et un argument -s NS pour choisir un serveur de noms spécifique : dig -x example.com

#!/bin/bash
set -e; set -u
COMMON_SUBDOMAINS="www mail mx a.mx smtp pop imap blog en ftp ssh login"
EXTENDED=""

while :; do case "$1" in
  --) shift; break ;;
  -x) EXTENDED=y; shift ;;
  -s) NS="$2"; shift 2 ;;
  *) break ;;
esac; done
DOM="$1"; shift
TYPE="${1:-any}"

test "${NS:-}" || NS=$(dig +short  SOA "$DOM" | awk '{print $1}')
test "$NS" && NS="@$NS"

if test "$EXTENDED"; then
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
  wild_ips=$(dig +short "$NS" "*.$DOM" "$TYPE" | tr '\n' '|')
  wild_ips="${wild_ips%|}"
  for sub in $COMMON_SUBDOMAINS; do
    dig +nocmd $NS "$sub.$DOM" +noall +answer "$TYPE"
  done | cat  #grep -vE "${wild_ips}"
  dig +nocmd $NS "*.$DOM" +noall +answer "$TYPE"
else
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
fi

28voto

Datavar Points 381

host -a fonctionne bien, à l'instar de dig any .

EG :

$ host -a google.com
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10403
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.            IN  ANY

;; ANSWER SECTION:
google.com.     1165    IN  TXT "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
google.com.     53965   IN  SOA ns1.google.com. dns-admin.google.com. 2014112500 7200 1800 1209600 300
google.com.     231 IN  A   173.194.115.73
google.com.     231 IN  A   173.194.115.78
google.com.     231 IN  A   173.194.115.64
google.com.     231 IN  A   173.194.115.65
google.com.     231 IN  A   173.194.115.66
google.com.     231 IN  A   173.194.115.67
google.com.     231 IN  A   173.194.115.68
google.com.     231 IN  A   173.194.115.69
google.com.     231 IN  A   173.194.115.70
google.com.     231 IN  A   173.194.115.71
google.com.     231 IN  A   173.194.115.72
google.com.     128 IN  AAAA    2607:f8b0:4000:809::1001
google.com.     40766   IN  NS  ns3.google.com.
google.com.     40766   IN  NS  ns4.google.com.
google.com.     40766   IN  NS  ns1.google.com.
google.com.     40766   IN  NS  ns2.google.com.

21voto

Josh Points 3539

En l'absence de la possibilité de faire des transferts de zone, j'ai écrit ce petit script bash script, dg :

#!/bin/bash
COMMON_SUBDOMAINS=(www mail smtp pop imap blog en ftp ssh login)
if [[ "$2" == "x" ]]; then
    dig +nocmd "$1" +noall +answer "${3:-any}"
    wild_ips="$(dig +short "*.$1" "${3:-any}" | tr '\n' '|')"
    wild_ips="${wild_ips%|}"
    for sub in "${COMMON_SUBDOMAINS[@]}"; do
        dig +nocmd "$sub.$1" +noall +answer "${3:-any}"
    done | grep -vE "${wild_ips}"
    dig +nocmd "*.$1" +noall +answer "${3:-any}"
else
    dig +nocmd "$1" +noall +answer "${2:-any}"
fi

J'utilise maintenant dg example.com pour obtenir une belle liste d'enregistrements DNS, ou dg example.com x pour inclure un certain nombre d'autres sous-domaines populaires.

grep -vE "${wild_ips}" filtre les enregistrements qui pourraient être le résultat d'une entrée DNS générique telle que * 10800 IN A 1.38.216.82 . Dans le cas contraire, un caractère générique donnerait l'impression qu'il y a des enregistrements pour chaque $COMMON_SUBDOMAN .

Note : Ceci repose sur ANY Les requêtes, qui sont bloqué par certains fournisseurs de DNS tels que CloudFlare .

18voto

Kervin L Points 92

Pour Windows :

Il se peut que vous deviez vérifier l'état des enregistrements DNS de votre domaine, ou vérifier les serveurs de noms pour voir quels enregistrements sont extraits par les serveurs.

  1. Lancez l'Invite de commande Windows en naviguant vers Démarrer > Invite de commande ou via Exécuter > CMD.

  2. Tapez NSLOOKUP et appuyez sur Entrée. Le serveur par défaut est défini sur votre DNS local, l'adresse sera votre IP locale.

  3. Définissez le type d'enregistrement DNS que vous souhaitez consulter en tapant set type=## où ## est le type d'enregistrement, puis appuyez sur Entrée. Vous pouvez utiliser ANY, A, AAAA, A+AAAA, CNAME, MX, NS, PTR, SOA ou SRV comme type d'enregistrement.

  4. Entrez maintenant le nom de domaine que vous souhaitez interroger et appuyez sur Entrée. Dans cet exemple, nous utiliserons Managed.com.

  5. NSLOOKUP renverra maintenant les entrées d'enregistrement pour le domaine que vous avez saisi.

  6. Vous pouvez également modifier les serveurs de noms que vous interrogez. Ceci est utile si vous vérifiez les enregistrements avant que le DNS ne se soit entièrement propagé. Pour modifier le serveur de noms, tapez server [name server]. Remplacez [name server] par les serveurs de noms que vous souhaitez utiliser. Dans cet exemple, il s'agit de NSA.managed.com.

  7. Une fois modifié, changez le type de requête (étape 3) si nécessaire, puis entrez un nouveau domaine (étape 4).

Pour Linux :

1) Vérifier les enregistrements DNS à l'aide de la commande Dig Dig (domain information groper) est un outil flexible permettant d'interroger les serveurs de noms DNS. Il effectue des recherches DNS et affiche les réponses renvoyées par le(s) serveur(s) de noms interrogé(s). La plupart des administrateurs DNS utilisent dig pour résoudre les problèmes DNS en raison de sa flexibilité, de sa facilité d'utilisation et de la clarté de ses résultats. Les autres outils de recherche ont tendance à avoir moins de fonctionnalités que dig.

2) Vérifier les enregistrements DNS à l'aide de la commande NSlookup Nslookup est un programme qui permet d'interroger les serveurs de noms de domaine Internet. Nslookup a deux modes : interactif et non interactif.

Le mode interactif permet à l'utilisateur d'interroger les serveurs de noms pour obtenir des informations sur divers hôtes et domaines ou d'imprimer une liste d'hôtes dans un domaine.

Le mode non interactif est utilisé pour imprimer uniquement le nom et les informations demandées pour un hôte ou un domaine. Il s'agit d'un outil d'administration de réseau qui les aidera à vérifier et à résoudre les problèmes liés au DNS.

3) Vérifier les enregistrements DNS à l'aide de la commande Host host est un utilitaire simple permettant d'effectuer des recherches DNS. Il est normalement utilisé pour convertir des noms en adresses IP et vice versa. Lorsqu'aucun argument ou option n'est fourni, host affiche un bref résumé des arguments et options de la ligne de commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X