web-dev-qa-db-fra.com

Comment puis-je lister TOUS les enregistrements DNS?

Est-il possible de répertorier TOUS les enregistrements DNS d'un domaine?

Je sais des choses telles que Dig et nslookup mais elles ne vont que très loin. Par exemple, si j’ai un sous-domaine, un enregistrement comme

test A somedomain.co.uk

alors à moins que je le demande spécifiquement, par exemple. 

Dig any test.somedomain.co.uk

Je ne peux pas le voir.

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

138
Ken

Lorsque vous interrogez sur TOUT, vous obtiendrez une liste de tous les enregistrements de ce niveau mais pas en dessous.

# try this
Dig google.com any

Cela peut renvoyer des enregistrements A, TXT, NS, MX, etc. si le nom de domaine est exactement "google.com". Toutefois, les enregistrements enfants ne seront pas renvoyés (par exemple, www.google.com). Plus précisément, vous pouvez obtenir ces enregistrements s'ils existent. Le serveur de noms n'a pas à renvoyer ces enregistrements s'il le souhaite (par exemple, pour réduire la taille de la réponse).

Un AXFR est un transfert de zone et correspond probablement à ce que vous voulez. Cependant, ceux-ci sont généralement restreints et ne sont disponibles que si vous contrôlez la zone. En règle générale, vous effectuez un transfert de zone directement à partir du serveur faisant autorité (@ ns1.google.com ci-dessous) et souvent à partir d'un serveur de noms non publié (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 avec une clé TSIG. Il s'agit d'un secret partagé que le client peut envoyer au serveur pour autoriser le transfert.

158
denis phillips

J'ai amélioré la réponse de Josh . 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 d'extraire un serveur de noms faisant autorité à partir de SOA (plutôt que de s'appuyer sur le serveur de noms par défaut). J'ai également désactivé le filtrage des adresses IP génériques car d'habitude, je m'intéresse davantage à l'exactitude de la configuration.

Le nouveau script prend un argument -x pour la sortie développée 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
20
dan3

En l'absence de la possibilité de faire des transferts de zone, j'ai écrit ce petit script bash, 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 liste propre et agréable d'enregistrements DNS, ou dg example.com x pour inclure un groupe d'autres sous-domaines populaires.

grep -vE "${wild_ips}" filtre les enregistrements pouvant résulter d'une entrée DNS générique telle que * 10800 IN A 1.38.216.82. Sinon, une entrée générique donnerait l'impression qu'il y avait des enregistrements pour chaque $COMMON_SUBDOMAN.

Remarque: Cela repose sur les requêtes ANY, bloquées par par certains fournisseurs DNS, tels que CloudFlare .

15
Zaz
  1. Un transfert de zone est le seul moyen de vous assurer que vous avez tous les enregistrements de sous-domaine. Si le DNS est correctement configuré, vous ne devriez normalement pas pouvoir effectuer de transfert de zone externe.

  2. Le projet scans.io dispose d’une base de données d’enregistrements DNS pouvant être téléchargée et recherchée pour les sous-domaines. Cela nécessite le téléchargement de 87 Go de données DNS. Vous pouvez également essayer la recherche en ligne à l'adresse suivante: https://hackertarget.com/find-dns-Host-records/

12
squizzy99

Ce que vous voulez s'appelle un transfert de zone . Vous pouvez demander un transfert de zone en utilisant Dig -t axfr.

Un zone est un domaine et tous les domaines inférieurs qui ne sont pas délégués à un autre serveur.

Notez que les transferts de zone ne sont pas toujours pris en charge. Ils ne sont pas utilisés dans la recherche normale, mais uniquement dans la réplication de données DNS entre serveurs. mais il existe d’autres protocoles pouvant être utilisés à cet effet (comme rsync sur ssh), l’exposition des noms peut poser un risque pour la sécurité et les réponses de transfert de zone coûtent plus cher à générer et à envoyer que les recherches DNS habituelles.

11
deltab

Host -a fonctionne bien, similaire à Dig any.

PAR EXEMPLE:

$ 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.
10
Datavar

Pour les fenêtres:

Vous pouvez être amené à vérifier le statut des enregistrements DNS de vos domaines ou à consulter les serveurs de noms pour connaître les enregistrements extraits par ceux-ci.

  1. Lancez l'invite de commande Windows en accédant à Démarrer> Invite de commandes 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 adresse IP locale.

  3. Définissez le type d’enregistrement DNS que vous souhaitez rechercher en saisissant set type=## où ## est le type d’enregistrement, puis appuyez sur Entrée. Vous pouvez utiliser TOUT, 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, puis appuyez sur Entrée. Dans cet exemple, nous utiliserons Managed.com.

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

  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 soit complètement propagé. Pour changer le serveur de type de serveur de noms [serveur de noms]. Remplacez [serveur de noms] par les serveurs de noms que vous souhaitez utiliser. Dans cet exemple, nous les définirons comme NSA.managed.com.

  7. Une fois la modification effectuée, modifiez 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 signifie nom de domaine. 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 ou les serveurs 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 généralement moins de fonctionnalités que Dig.

2) Vérification des enregistrements DNS à l'aide de la commande NSlookup Nslookup est un programme permettant 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 différents 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. C’est un outil d’administration réseau qui les aidera à vérifier et à résoudre les problèmes liés au DNS.

3) Vérification des enregistrements DNS à l'aide de Host Command Host est un utilitaire simple permettant d'effectuer des recherches DNS. Il est normalement utilisé pour convertir les noms en adresses IP et inversement. Lorsqu'aucun argument ou aucune option n'est fourni, l'hôte imprime un bref résumé de ses arguments et options de ligne de commande.

2
Kervin L

Il n’existe pas de moyen simple d’obtenir tous les enregistrements DNS d’un domaine en une seule instance . Vous ne pouvez afficher certains enregistrements, par exemple. Si vous souhaitez voir un enregistrement A pour un certain domaine, vous pouvez utiliser la commande d’enregistrement) domain.com. C'est la même chose pour tous les autres types d'enregistrements que vous voulez voir pour ce domaine. 

Si vous n'êtes pas familier avec l'interface de ligne de commande, vous pouvez également utiliser un site tel que mxtoolbox.com. C'est un outil très pratique pour obtenir des enregistrements d'un domaine.

J'espère que cela répond à votre question.

0
Mike Fraanje