Installation de dig
Vérifiez que dig est installé en contrôlant la version du logiciel. Pour ce faire, ouvrez un terminal et entrez ce qui suit :
$ dig -v
Le système doit répondre par un code numérique. Si le système ne trouve pas la commande spécifiée, installez dig en entrant ce qui suit :
$ sudo apt-get install dnsutils
Utilisation de dig
dig est un outil flexible pour 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 qui ont été interrogés. La plupart des administrateurs DNS utilisent dig pour résoudre les problèmes de DNS en raison de sa flexibilité, de sa facilité d'utilisation et de la clarté de ses résultats. Les autres outils de consultation ont tendance à avoir moins de fonctionnalités que dig.
Une invocation typique de dig ressemble à ceci :
$ dig @server name type
server: Le nom d'hôte ou l'adresse IP du serveur de noms (DNS) vers lequel la requête est dirigée. Il peut s'agir d'une adresse IPv4 en notation décimale pointillée ou d'une adresse IPv6 en notation délimitée par deux points. Lorsque l'argumentserverfourni est un nom d'hôte,digrésout ce nom avant d'interroger ce serveur de noms. Si aucun argumentservern'est fourni,digconsulte/etc/resolv.conf; si une adresse y est trouvée, il interroge le serveur de noms à cette adresse. Si l'une des options -4 ou -6 est utilisée, seules les adresses pour le transport correspondant sont essayées. Si aucune adresse utilisable n'est trouvée,digenvoie la requête à l'hôte local. La réponse du serveur de noms qui répond est affichée.name: Le nom de l'enregistrement de la ressource (resource record) qui doit être recherchétype: Le type d'enregistrement DNS à récupérer. Par défaut (ou s'il est laissé vide),digutilise le type d'enregistrementA. indique quel type de requête est requis -ANY,A,MX,SIG,SOA, etc. type peut être n'importe quel type de requête valide.
Types d'enregistrements DNS courants :
A- Enregistrement d'adresse qui associe directement un nom d'hôte à une adresse IP.MX-Mail Exchange(échange de courrier) qui associe des agents de transfert de messages (MTA) pour le domaine.SIG- Enregistrement de signature utilisé dans les protocoles de cryptage.
Exemples d'utilisation
Recherche DNS
La commande dig permet de rechercher un nom de domaine. Pour effectuer une recherche DNS, ouvrez le terminal et tapez :
$ dig google.com
Vous devriez voir quelque chose de similaire à ce qui suit :
La section la plus importante est la section ANSWER :
- La première colonne indique le nom du serveur qui a été interrogé.
- La deuxième colonne indique le temps de vie (
Time to Live), c'est-à-dire le délai après lequel l'enregistrement est actualisé. - La troisième colonne indique la classe de la requête - dans ce cas, "
IN" signifieInternet. - La quatrième colonne indique le type de requête - dans ce cas, "
A" correspond à unenregistrement A(adresse). - La dernière colonne indique l'
adresse IPassociée au nom de domaine.
D'autres informations se trouvent dans cette réponse. La première ligne affiche la version de la commande dig :
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> google.com
La section HEADER indique les informations que la commande a reçues du serveur. Les flags font référence au format de la réponse :
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33818
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
La section OPT PSEUDOSECTION affiche des données avancées :
EDNS- Système d'extension pour DNS, si utilisé.Flags- vide car aucun drapeau n'a été spécifié.UDP- Taille des paquets UDP.
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
La section QUESTION affiche les données de la requête qui ont été envoyées :
- La première colonne est le nom de domaine interrogé.
- La deuxième colonne indique le type de requête (
IN=Internet). - La troisième colonne indique l'enregistrement (
A=Address), sauf indication contraire.
;; QUESTION SECTION:
;google.com. IN A
La section STATISTIQUES présente des métadonnées sur la requête :
Query time- Le temps qu'il a fallu pour obtenir une réponse.SERVER- L'adresse IP et le port du serveur DNS qui a répondu. Vous pouvez remarquer une adresse de bouclage dans cette ligne - cela fait référence à un paramètre local qui traduit les adresses DNS.WHEN- Horodatage de l'exécution de la commande.MSG SIZE rcvd- La taille de la réponse du serveur DNS.
;; Query time: 4 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Wed Feb 15 12:39:00 CET 2023
;; MSG SIZE rcvd: 55
La commande dig ci-dessus comprend beaucoup d'informations utiles dans différentes sections, mais il peut arriver que vous souhaitiez uniquement le résultat de la requête. Vous pouvez le faire en utilisant l'option +short, qui affichera uniquement l'adresse IP (enregistrement A) du nom de domaine :
$ dig google.com +short
142.250.178.142
Parfois, vous voulez voir la section des réponses en détail. Par conséquent, pour obtenir des informations détaillées sur la section des réponses, vous pouvez arrêter d'afficher toutes les sections en utilisant l'option +noall et interroger la section des réponses uniquement en utilisant l'option +answer avec la commande dig.
$ dig google.com +noall +answer
google.com. 175 IN A 142.250.178.142
Spécifier le nom du serveur DNS
Par défaut, les commandes dig interrogent les serveurs de noms répertoriés dans /etc/resolv.conf pour effectuer une recherche DNS à votre place. Vous pouvez modifier ce comportement par défaut en utilisant le symbole @ suivi du nom d'hôte ou de l'adresse IP du serveur de noms.
La commande dig suivante envoie la requête DNS au serveur de noms de Google (8.8.8.8) en utilisant l'option @8.8.8.8.
$ dig @8.8.8.8 free.fr +noall +answer
free.fr. 17267 IN A 212.27.48.10
Interroger tous les types d'enregistrement DNS
Pour interroger tous les types d'enregistrement DNS disponibles associés à un domaine, utilisez l'option ANY. L'option ANY inclura tous les types d'enregistrement disponibles dans le résultat :
$ dig @8.8.8.8 free.fr ANY
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> @8.8.8.8 free.fr ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5860
;; flags: qr rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;free.fr. IN ANY
;; ANSWER SECTION:
free.fr. 20048 IN NS freens2-g20.free.fr.
free.fr. 20048 IN TXT "google-site-verification= \
t11beEEtTGbjTRaHIR3ZAde9bcpIueH4i3Qn0orBExQ"
free.fr. 20048 IN SOA freens1-g20.free.fr. hostmaster.proxad.net. \
2023020801 10800 3600 604800 86400
free.fr. 20048 IN AAAA 2a01:e0c:1::1
free.fr. 20048 IN NS freens3-scw.free.fr.
free.fr. 2048 IN TXT "v=spf1 include:_spf.free.fr ?all"
free.fr. 20048 IN MX 20 mx2.free.fr.
free.fr. 20048 IN A 212.27.48.10
free.fr. 20048 IN NS freens1-g20.free.fr.
free.fr. 20048 IN MX 10 mx1.free.fr.
;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (TCP)
;; WHEN: Wed Feb 15 13:26:14 CET 2023
;; MSG SIZE rcvd: 381
Recherche par type d'enregistrement
Si vous souhaitez rechercher un enregistrement spécifique, il suffit d'ajouter le type à la fin de la commande.
Par exemple, pour rechercher uniquement la section de réponse de l'échange de courrier - MX - associée à un domaine, vous pouvez utiliser la commande dig suivante :
$ dig free.fr MX +noall +answer
free.fr. 7164 IN MX 20 mx2.free.fr.
free.fr. 7164 IN MX 10 mx1.free.fr.
De même, pour afficher les autres enregistrements associés à un domaine, spécifiez le type d'enregistrement à la fin de la commande dig :
$ dig instagram.com txt (Query TXT record)
$ dig instagram.com cname (Query CNAME record)
$ dig instagram.com ns (Query NS record)
$ dig instagram.com A (Query A record)
Tracer le chemin DNS
Dig permet de tracer le chemin de la recherche DNS en utilisant l'option +trace. L'option effectue des requêtes itératives pour résoudre la recherche de nom. Elle interroge les serveurs de noms en commençant par la racine, puis descend dans l'arbre des espaces de noms en utilisant des requêtes itératives et en suivant les références tout au long du chemin :
$ dig free.fr +trace
; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> free.fr +trace
;; global options: +cmd
. 7282 IN NS h.root-servers.net.
. 7282 IN NS l.root-servers.net.
. 7282 IN NS j.root-servers.net.
. 7282 IN NS b.root-servers.net.
. 7282 IN NS e.root-servers.net.
. 7282 IN NS m.root-servers.net.
. 7282 IN NS a.root-servers.net.
. 7282 IN NS d.root-servers.net.
. 7282 IN NS c.root-servers.net.
. 7282 IN NS i.root-servers.net.
. 7282 IN NS g.root-servers.net.
. 7282 IN NS f.root-servers.net.
. 7282 IN NS k.root-servers.net.
;; Received 239 bytes from 127.0.0.53#53(127.0.0.53) in 4 ms
fr. 172800 IN NS d.nic.fr.
fr. 172800 IN NS g.ext.nic.fr.
fr. 172800 IN NS f.ext.nic.fr.
fr. 172800 IN NS e.ext.nic.fr.
fr. 86400 IN DS 51508 13 2 1B3386864D30CCC8F4541B985BF2CA320E4F52C57C53353F6D29C9AD
58A5671F
fr. 86400 IN RRSIG DS 8 1 86400 20230228050000 20230215040000 951 .
HNl7scb6qz3BegwXpOs9/GSSYims3Z0YHxlefqWyzKPrnNi2NpC+29Rd
dX59FVG1UlydjelIR9vB/LziCl7f2q3JdTNuOCuRRM5ZxsIXc2OML31v
f4ScaEPWue8Y2xKRAk+cVQgWzsyCO7OtY2zPDDP5eCbczxYNeUs/KHNf
X57Gaj+j7hEHsMyNY7TE1ptN499D+26sWSFnlqzl4+zw9whByysBFfRO
2wISEVeM6i7nXb3/9IJN+gZrU25IdhjyFkAlIeZ5FnRME/UPhjuSqRag
2Vl3U8ord8mm6yFj1HP7fExHFvphwvpQDTTG/2DNcYQlLV+JJ/P+0hDJ p/+VMw==
;; Received 655 bytes from 192.36.148.17#53(i.root-servers.net) in 20 ms
free.fr. 172800 IN NS freens1-g20.free.fr.
free.fr. 172800 IN NS freens3-scw.free.fr.
free.fr. 172800 IN NS freens2-g20.free.fr.
SFBLG7NFATQ81CQJGT5Q91BQS3H9V6ND.fr. 5400 IN NSEC3 1 1 0 - SFBLRCMSK8J9AI9L3LOU8QA817LT46NS
NS SOA TXT NAPTR RRSIG DNSKEY NSEC3PARAM TYPE65534
SFBLG7NFATQ81CQJGT5Q91BQS3H9V6ND.fr. 5400 IN RRSIG NSEC3 13 2 5400 20230306101829 20230105091829
10935 fr. JG+0rCIS3Cx0r2a51vnP45d1+b4+IIGXLIwE4N0UtKhfbHy4hpvWEI2v
CcUwQhygH4rnRAfNcPzOlgmsILRKEw==
4ST6T2SHO85C0KJINGR2I3F0S5IB9MNI.fr. 5400 IN NSEC3 1 1 0 - 4STDLGL6KPMGCP7RJVBC0I6Q10UUP8IQ NS DS RRSIG
4ST6T2SHO85C0KJINGR2I3F0S5IB9MNI.fr. 5400 IN RRSIG NSEC3 13 2 5400 20230314111903 20230113111139 10935 fr.
fLhOsBtKN/cUO43kxt7z0WOlV3V8ntLTBnp5iM/iF0hdJkSd+o8jqzQ4
jnLM1makwEWpXE0wRxJoPk2f9WlMrQ==
;; Received 663 bytes from 194.0.36.1#53(g.ext.nic.fr) in 0 ms
Recherche DNS inversée
La recherche DNS inversée vous permet de rechercher le domaine et le nom d'hôte associés à une adresse IP. Pour effectuer une recherche DNS inverse à l'aide de la commande dig, utilisez l'option -x suivie de l'adresse IP de votre choix. Dans l'exemple suivant, dig effectuera une recherche DNS inverse pour l'adresse IP associée à free.fr :
# -c class : Cette option définit la classe de la requête. La classe par défaut est "IN" ;
# les autres classes sont "HS" pour les enregistrements "Hesiod"
# ou "CH" pour les enregistrements "Chaosnet".
#
# -x addr : Cette option permet d'effectuer des recherches inversées simplifiées, pour mettre
# en correspondance des adresses IP et des noms.
# "addr" est une adresse IPv4 en notation décimale pointée, ou une adresse IPv6 délimitée par
# deux points. Lorsque l'option -x est utilisée, il n'est pas nécessaire de fournir les arguments
# "name", "class" et "type". dig effectue automatiquement une recherche pour un nom tel que
# 94.2.0.192.in-addr.arpa et définit le type de requête et la classe à "PTR" et "IN" respectivement.
# Les adresses IPv6 sont recherchées en utilisant le format nibble sous le domaine IP6.ARPA.
#
$ dig +noall +answer -x 212.27.48.10
10.48.27.212.in-addr.arpa. 77669 IN PTR www.free.fr.