Dig effectue des recherches DNS et affiche les réponses renvoyées par le ou les serveurs de noms interrogés. Dig est la forme courte de 'Domain Information Groper'.
Cet outil est un outil de recherche DNS alternatif, nslookup. À moins qu'il ne lui soit demandé d'interroger un serveur de noms spécifique, dig essaiera chacun des serveurs répertoriés dans '/etc/resolv.conf'.
Dans le tutoriel, j'expliquerai comment utiliser la commande dig sous Linux avec des exemples.
commande creuser
Exécuter dig sans aucune option (par défaut)
Sans aucune option, dig effectuera une requête NS pour "." (la racine).
Voici un exemple de sortie.
$ dig
; <> DiG 9.9.2-P1 <> linux.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21655
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;linux.com. IN A
;; ANSWER SECTION:
linux.com. 1786 IN A 140.211.167.51
linux.com. 1786 IN A 140.211.167.50
;; AUTHORITY SECTION:
linux.com. 86386 IN NS ns1.linux-foundation.org.
linux.com. 86386 IN NS ns2.linux-foundation.org.
;; ADDITIONAL SECTION:
ns1.linux-foundation.org. 261 IN A 140.211.169.10
ns2.linux-foundation.org. 262 IN A 140.211.169.11
;; Query time: 258 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sat Feb 8 21:35:35 2014
;; MSG SIZE rcvd: 158
Nous allons maintenant lire la sortie :
; <> DiG 9.9.2-P1 <> linux.com
;; global options: +cmd
Cette section nous parle de creuser lui-même. Nous savons que la version de dig que nous avons utilisée est 9.9.2 et que l'option globale que nous avons utilisée est +cmd.
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21655
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
Cette section nous parlera de la réponse technique du DNS.
;; QUESTION SECTION:
;linux.com. IN A
Cette section nous indique quelle requête nous avons demandé de creuser
.;; ANSWER SECTION:
linux.com. 1786 IN A 140.211.167.51
linux.com. 1786 IN A 140.211.167.50
Cette section nous informe sur la réponse de la requête que nous avons faite. 'Linux.com' a deux adresses. L'IP 140.211.167.51 et 140.211.167.50.
;; AUTHORITY SECTION:
linux.com. 86386 IN NS ns1.linux-foundation.org.
linux.com. 86386 IN NS ns2.linux-foundation.org.
Cette section nous indique quel DNS (ou qui) a le pouvoir de répondre à la question "quelle est l'adresse IP de Linux.com ?"
;; ADDITIONAL SECTION:
ns1.linux-foundation.org. 261 IN A 140.211.169.10
ns2.linux-foundation.org. 262 IN A 140.211.169.11
Cette section nous renseigne sur l'adresse IP de l'autorité DNS ci-dessus. Nous pouvons désactiver ces informations par +[aucune]option supplémentaire.
;; Query time: 258 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sat Feb 8 21:35:35 2014
;; MSG SIZE rcvd: 158
Cette section nous donne quelques informations statistiques. Nous pouvons désactiver ces informations en utilisant l'option +[‘no]stats.
Requête de commande de creusement (la plus courante)
Les pages de manuel de Dig vous montreront de nombreuses requêtes valides. Mais en pratique, il existe 5 requêtes courantes.
1) Interroger le NS
NS est l'abréviation de Name Server. Cela vous montrera le nom du serveur responsable du domaine linux.com
$ dig linux.com NS
2) Interroger le MX
MX est court de Mail Exchanger. Interroger MX vous montrera le nom du SMTP de linux.com
$ dig linux.com MX
3) Interroger l'adresse
Pour afficher l'adresse IP de linux.com, nous pouvons utiliser A mot-clé. A est un raccourci pour Adresse
$ dig linux.com A
4) Requête TXT
TXT est une annotation textuelle.
$ dig linux.com TXT
5) Interrogez tout
Si vous n'êtes pas sûr de ce que vous recherchez, vous pouvez TOUT mot-clé.
Options de requête de commande Dig
Lors de l'exécution d'une requête, dig fournit des options pour personnaliser la sortie. Voici quelques cas populaires au quotidien.
6) Afficher uniquement la réponse de la requête
$ dig linux.com +noall +answer
7) Afficher la réponse et la question
$ dig ubuntu.com MX +noall +answer +question
8) Affichage en mode court
Cette option sera utilisée si vous voulez une réponse rapide
$ dig linux.com +short
9) Afficher uniquement la réponse et l'autorité
Pour cela nous pouvons combiner ces options :
$ dig ubuntu.com MX +noall +answer +authority
10) Afficher les requêtes multilignes
Cette +multiligne L'option vous montrera des enregistrements comme les enregistrements SOA dans un format multiligne détaillé avec des commentaires lisibles par l'homme. En voici un exemple.
$ dig ibm.com +multiline +noall +answer
Faire une recherche inversée
Dig n'est pas seulement pour interroger un nom dans une adresse IP. Dig peut faire une recherche inversée qui interroge l'adresse IP dans un nom. Pour ce faire, utilisez -x option.
$ dig -x 140.211.167.51 +noall +answer
La sortie nous montre que l'IP '140.211.167.51' appartient à 'load2d.linux-foundation.org'
Utilisez un DNS spécifique pour effectuer la requête
Par défaut, dig utilisera les serveurs DNS définis dans votre /etc/resolv.conf
Si vous souhaitez utiliser un autre serveur DNS pour effectuer votre requête, vous pouvez utiliser le mot-clé @name_of_DNS_server. Voici un exemple.
$ dig @ns2.google.com gmail.com +nostat
Effectuer des recherches groupées
Pour ce faire, nous pouvons le faire de 2 manières. Tout d'abord, utilise la ligne de commande.
$ dig linux.com +noall +answer ubuntu.com +noall +answer
Deuxième , nous pouvons mettre les noms d'hôtes ou les domaines dans un fichier texte. Utilisez ensuite -f option pour inclure le fichier.
$ dig -f hostnames.txt +noall +answer
Le fichier hostnames.txt contient ces lignes :
linux.com
ubuntu.com
Si une ligne vide existe après ubuntu.com, alors dig interrogera le NS pour le "." (racine) aussi.
Conclusion
Dig est l'un des outils disponibles dans le système d'exploitation Linux pour interroger les serveurs DNS. Grâce à la flexibilité de fouille, les administrateurs peuvent l'utiliser pour personnaliser la sortie de fouille. Comme d'habitude, nous pouvons toujours taper man dig ou dig -h pour explorer plus de détails sur la commande dig.