Comment utiliser la commande dig sous Linux
Publié: 2022-01-29 La commande Linux dig
vous permet d'interroger les serveurs DNS et d'effectuer des recherches DNS. Vous pouvez également trouver le domaine auquel une adresse IP renvoie. Nous allons vous montrer comment !
Fonctionnement de la commande dig
Les utilisateurs utilisent la commande Linux dig
pour interroger les serveurs DNS (Domain Name System). dig
est un acronyme pour Domain Information Groper. Avec dig
, vous pouvez interroger les serveurs DNS pour obtenir des informations sur divers enregistrements DNS, notamment les adresses d'hôte, les échanges de courrier, les serveurs de noms et les informations connexes. Il était destiné à être un outil de diagnostic des problèmes DNS. Cependant, vous pouvez l'utiliser pour fouiller et en savoir plus sur le DNS, qui est l'un des systèmes centraux qui conserve le trafic de routage Internet.
Internet utilise des adresses de protocole Internet (IP) pour identifier les « emplacements » sur le Web, mais les gens utilisent des noms de domaine. Lorsque vous saisissez un nom de domaine dans une application, comme un navigateur Web ou un client SSH, quelque chose doit être traduit du nom de domaine à l'adresse IP réelle. C'est là qu'intervient le système de noms de domaine.
Lorsque vous utilisez un nom de domaine avec un programme connecté à Internet, votre routeur local ne peut pas le résoudre (à moins qu'il ne soit mis en cache à partir d'une requête précédente). Ainsi, votre routeur interroge soit le serveur DNS de votre fournisseur d'accès Internet (FAI), soit tout autre serveur que vous avez configuré sur votre système. Ceux-ci sont appelés serveurs précurseurs DNS.
Si le serveur DNS a récemment reçu la même demande de quelqu'un d'autre sur le même ordinateur, la réponse peut se trouver dans son cache. Si tel est le cas, il renvoie simplement les mêmes informations à votre programme.
Si le serveur précurseur DNS ne parvient pas à localiser le domaine dans son cache, il contacte un serveur de noms racine DNS. Un serveur racine ne contiendra pas les informations requises pour résoudre les noms de domaine en adresses IP, mais il contiendra des listes de serveurs qui peuvent vous aider avec votre demande.
Le serveur racine examine le domaine de premier niveau auquel appartient votre nom de domaine, tel que .COM, .ORG, .CO.UK, etc. Il renvoie ensuite une liste des serveurs de domaine de niveau supérieur qui gèrent ces types de domaines au serveur précurseur DNS. Le serveur précurseur DNS peut alors refaire sa demande auprès d'un serveur de domaine de premier niveau.
Le serveur de domaine de niveau supérieur renvoie les détails du serveur de noms faisant autorité (où les détails du domaine sont stockés) au serveur précurseur DNS. Le serveur DNS interroge ensuite le serveur de noms faisant autorité qui héberge la zone du domaine que vous avez initialement entré dans votre programme. Le serveur de noms faisant autorité renvoie l'adresse IP au serveur DNS, qui, à son tour, vous la renvoie.
Installation de creuser
dig
était déjà installé sur nos ordinateurs Ubuntu 18.04 et Fedora 30. Cependant, nous avons dû l'installer sur l'ordinateur Manjaro 18.04 avec la commande suivante :
sudo pacman -Sy outils de liaison
Commencer à creuser
Dans notre premier exemple, nous renverrons les adresses IP associées à un nom de domaine. Souvent, plusieurs adresses IP sont associées à un seul nom de domaine. Cela se produit souvent si l'équilibrage de charge est utilisé, par exemple.
Nous utilisons l'option +short
, comme indiqué ci-dessous, qui nous donne une réponse concise :
creuser howtogeek.com + court
Toutes les adresses IP associées au domaine howtogeek.com sont répertoriées pour nous. À l'autre extrémité du spectre, si nous n'utilisons pas l'option +short
, la sortie est assez détaillée.
Donc, nous tapons ce qui suit pour le diriger vers less
:
creuser howtogeek.com | moins
La sortie est affichée en less
, comme indiqué ci-dessous.
Voici la liste complète :
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; options globales : +cmd ;; J'ai eu la réponse : ;; ->>HEADER<<- opcode : QUERY, statut : NOERROR, id : 12017 ;; drapeaux : qr rd ra ; REQUÊTE : 1, RÉPONSE : 4, AUTORITÉ : 0, SUPPLÉMENTAIRE : 1 ;; OPT PSEUDOSECTION : ; EDNS : version : 0, drapeaux : ; UDP : 65494 ;; SECTION DES QUESTIONS : ;howtogeek.com. DANS UN ;; SECTION DE RÉPONSE : howtogeek.com. 3551 DANS UN 151.101.194.217 howtogeek.com. 3551 DANS UN 151.101.130.217 howtogeek.com. 3551 DANS UN 151.101.66.217 howtogeek.com. 3551 DANS UN 151.101.2.217 ;; Temps de requête : 0 ms ;; SERVEUR : 127.0.0.53#53(127.0.0.53) ;; QUAND : Dim 22 mars 07:44:37 HAE 2020 ;; TAILLE MSG reçu : 106
Disséquons cela morceau par morceau.
Entête
Tout d'abord, regardons ce que nous avons dans l'en-tête :
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; options globales : +cmd ;; J'ai eu la réponse : ;; ->>HEADER<<- opcode : QUERY, statut : NOERROR, id : 12017 ;; drapeaux : qr rd ra ; REQUÊTE : 1, RÉPONSE : 4, AUTORITÉ : 0, SUPPLÉMENTAIRE : 1
Maintenant, voici ce que tout cela signifie :
- Première ligne : la version de
dig
et le domaine interrogé. - Options globales : comme nous le verrons, vous pouvez utiliser
dig
pour interroger plusieurs domaines simultanément. Cette ligne affiche les options qui ont été appliquées à toutes les requêtes de domaine. Dans notre exemple simple, il s'agissait simplement de l'option par défaut+cmd
(commande). - Opcode : Query : il s'agit du type d'opération qui a été demandé, qui, dans ce cas, était une
query
. Cette valeur peut également êtreiquery
pour une requête inverse, oustatus
si vous testez simplement l'état du système DNS. - Statut : Aucune erreur : Il n'y a eu aucune erreur et la demande a été correctement résolue.
- ID : 12017 : cet ID aléatoire relie la demande et la réponse.
- Indicateurs : qr rd ra : ils représentent la
query
,recursion desired
etrecursion available
. La récursivité est une forme de recherche DNS (l'autre est itérative). Vous pouvez également voirAA
, qui signifie Réponse faisant autorité, ce qui signifie qu'un serveur de noms faisant autorité a fourni la réponse. - Requête : 1 : le nombre de requêtes dans cette session, qui était de 1.
- Réponse : 4 : Le nombre de réponses dans cette réponse, qui est de quatre.
- Autorité : 0 : le nombre de réponses provenant d'un serveur de noms faisant autorité, qui était de zéro dans ce cas. La réponse a été renvoyée depuis le cache d'un serveur précurseur DNS. Il n'y aura pas de section faisant autorité dans la réponse.
- Supplémentaire : 1 : Il y a une information supplémentaire. (Étrangement, rien n'est répertorié à moins que cette valeur ne soit supérieure ou égale à deux.)
Opt Pseudosection
Ensuite, nous voyons ce qui suit dans la pseudosection Opt :
;; OPT PSEUDOSECTION : ; EDNS : version : 0, drapeaux : ; UDP : 65494
Décomposons cela :
- EDNS : version 0 : La version du système d'extension pour DNS qui est utilisée. EDNS transmet des données et des drapeaux étendus en étendant la taille des paquets UDP (User Datagram Protocol). Ceci est indiqué par un drapeau de taille variable.
- flags : aucun drapeau n'est utilisé.
- udp : 4096 : La taille du paquet UDP.
Section des questions
Dans la section Question, nous voyons ce qui suit :
;; SECTION DES QUESTIONS : ;howtogeek.com. DANS UN
Voici ce que cela signifie :
- howtogeek.com : le nom de domaine que nous interrogeons.
- IN : Nous effectuons une requête de classe Internet.
- R : Sauf indication contraire,
dig
demandera un enregistrement A (adresse) au serveur DNS.
Section de réponse
La section Réponse contient les quatre réponses suivantes que nous avons reçues du serveur DNS :
howtogeek.com. 3551 DANS UN 151.101.194.217 howtogeek.com. 3551 DANS UN 151.101.130.217 howtogeek.com. 3551 DANS UN 151.101.66.217 howtogeek.com. 3551 DANS UN 151.101.2.217
Voici ce que signifient ces réponses :
- 3551 : il s'agit de la durée de vie (TTL), un entier signé 32 bits qui contient l'intervalle de temps pendant lequel un enregistrement peut être mis en cache. Lorsqu'il expire, les données doivent être utilisées dans une réponse à une requête jusqu'à ce qu'elles soient rafraîchies par le serveur DNS.
- IN : Nous avons effectué une requête de classe Internet.
- R : Nous avons demandé un enregistrement A au serveur DNS.
Section des statistiques
Les statistiques constituent la dernière section et contiennent les informations suivantes :
;; Temps de requête : 0 ms ;; SERVEUR : 127.0.0.53#53(127.0.0.53) ;; QUAND : Dim 22 mars 07:44:37 HAE 2020 ;; TAILLE MSG reçu : 106
Voici ce que nous avons :
- Query Time : 0 msec : Le temps qu'il a fallu pour obtenir la réponse.
- SERVER : 127.0.0.53#53(127.0.0.53) : l'adresse IP et le numéro de port du serveur DNS qui a répondu. Dans ce cas, il pointe vers le résolveur de stub de mise en cache local. Cela transmet les requêtes DNS aux serveurs DNS en amont qui sont configurés. Sur l'ordinateur de test Manajro, l'adresse indiquée ici était 8.8.8.8#53, qui est le service DNS public de Google.
- QUAND : Dim 22 mars 07:44:37 EDT 2020 : Lorsque la demande a été faite.
- MSG SIZE rcvd : 106 : La taille du message reçu du serveur DNS.
Être sélectif
Vous n'avez pas à vous contenter des deux extrêmes de bavardage et de bavardage. La commande dig
vous permet d'inclure ou d'exclure sélectivement des sections des résultats.
Les options de requête suivantes supprimeront cette section des résultats :
- +nocomments : ne pas afficher les lignes de commentaires.
- +noauthority : n'affiche pas la section d'autorité.
- +noadditional : n'affiche pas la section supplémentaire.
- +nostats : n'affiche pas la section des statistiques.
- +noanswer : ne pas afficher la section de réponse.
- +noall : ne montre rien !
L'option de requête +noall
est généralement combinée avec l'une de celles ci-dessus pour inclure une section dans les résultats. Ainsi, au lieu de saisir une longue chaîne d'options de requête pour désactiver plusieurs sections, vous pouvez utiliser +noall
pour toutes les désactiver.
Vous pouvez ensuite utiliser les options de requête inclusives suivantes pour réactiver celles que vous souhaitez voir :
- +commentaires : affiche les lignes de commentaire.
- +autorité : affiche la section d'autorité.
- +supplémentaire : affiche la section supplémentaire.
- +stats : affiche la section des statistiques.
- +réponse : affiche la section de réponse.
- +all : tout afficher.
Nous tapons ce qui suit pour faire une demande et exclure les lignes de commentaire :
creuser howtogeek.com + aucun commentaire
Si nous utilisons l'option de requête +noall
seule, comme indiqué ci-dessous, nous n'obtiendrons aucune sortie utile :
creuser howtogeek.com + noall
Nous pouvons ajouter sélectivement les sections que nous voulons voir. Pour ajouter la section de réponse, nous tapons ce qui suit :
creuser howtogeek.com +noall +réponse
Si nous tapons ce qui suit pour activer +stats
, nous verrons également la section des statistiques :
creuser howtogeek.com +noall +réponse +stats
La +noall +answer
est souvent utilisée. Vous pouvez ajouter d'autres sections à la ligne de commande selon vos besoins. Si vous voulez éviter de taper +noall +answer
sur la ligne de commande à chaque fois que vous utilisez dig
, vous pouvez les mettre dans un fichier de configuration appelé « .digrc ». Il se trouve dans votre répertoire personnel.
Nous tapons ce qui suit pour en créer un avec echo
:
echo "+noall +réponse" > $HOME/.digrc
On peut alors taper ce qui suit pour vérifier son contenu :
chat .digrc
Ces deux options seront désormais appliquées à toutes les utilisations futures de dig
, comme indiqué ci-dessous :
creuser ubuntu.org
creuser linux.org
creuser github.com
Ce fichier de configuration de dig
sera utilisé pour les exemples restants de cet article.
Enregistrements DNS
Les informations renvoyées à vos demandes de dig
sont extraites de différents types d'enregistrements conservés sur le serveur DNS. À moins que nous ne demandions quelque chose de différent, dig
interroge l'enregistrement A (adresse). Voici les types d'enregistrements couramment utilisés avec dig
:
- Un enregistrement : relie le domaine à une adresse IP version 4.
- Enregistrement MX : Mail Exchange enregistre les e-mails directs envoyés aux domaines vers le bon serveur de messagerie.
- Enregistrement NS : les enregistrements de serveur de noms délèguent un domaine (ou sous-domaine) à un ensemble de serveurs DNS.
- Enregistrement TXT : les enregistrements de texte stockent des informations textuelles concernant le domaine. Généralement, ils peuvent être utilisés pour supprimer les e-mails usurpés ou falsifiés.
- Enregistrement SOA : les enregistrements de début d'autorité peuvent contenir de nombreuses informations sur le domaine. Ici, vous pouvez trouver le serveur de noms principal, la partie responsable, un horodatage pour les modifications, la fréquence des actualisations de zone et une série de délais pour les tentatives et les abandons.
- TTL : la durée de vie est un paramètre pour chaque enregistrement DNS qui spécifie la durée pendant laquelle un serveur précurseur DNS est autorisé à mettre en cache chaque requête DNS. Lorsque ce délai expire, les données doivent être actualisées pour les demandes ultérieures.
- ANY : cela indique à
dig
de renvoyer tous les types d'enregistrement DNS possibles.
La spécification du type d'enregistrement A ne modifie pas l'action par défaut, qui consiste à interroger l'enregistrement d'adresse et à obtenir l'adresse IP, comme indiqué ci-dessous :
creuser redhat.com A
Pour interroger les enregistrements d'échange de courrier, nous utilisons l'indicateur MX suivant :
creuser yahoo.com MX
L'indicateur de serveur de noms renvoie le nom suivant des serveurs de noms racine associés au domaine de premier niveau :
creuser fedora.com NS
Pour interroger le début de la notice d'autorité, nous tapons l'indicateur SOA suivant :
creuser manjaro.com SOA
Le drapeau TTL nous indiquera la durée de vie des données dans le cache du serveur DNS. Si on fait une succession de requêtes, on voit la durée de vie se réduire à néant, puis revenir à sa valeur de départ.
Nous tapons ce qui suit :
creuser usa.gov TTL
Pour voir les enregistrements de texte, nous tapons le drapeau TX :
creuser usa.gov TXT
Spécification du serveur DNS
Si vous souhaitez utiliser un serveur DNS particulier pour votre requête, vous pouvez utiliser le signe arobase ( @
) pour le transmettre à dig
en tant que paramètre de ligne de commande.
Avec le serveur DNS par défaut (voir ci-dessous), dig
référence le résolveur de stub de mise en cache local à 127.0.0.53.
creuser usa.gov +stats
Maintenant, nous tapons ce qui suit pour utiliser le serveur DNS public de Google à 8.8.8.8 :
creuser @ 8.8.8.8 usa.gov +stats
Utilisation de dig avec plusieurs domaines
Nous pouvons passer plusieurs domaines à dig
sur la ligne de commande, comme indiqué ci-dessous :
creuser ubuntu.org fedora.org manjaro.com
Si vous consultez régulièrement un ensemble de domaines, vous pouvez les stocker dans un fichier texte et le transmettre à dig
. Tous les domaines du fichier seront vérifiés à tour de rôle.
Notre fichier s'appelle "domains.txt". Nous utiliserons cat
pour afficher son contenu, puis le passerons à dig
avec l'option -f
(fichier). Nous tapons ce qui suit :
chat domaines.txt
dig -f domaines.txt
Recherches DNS inversées
Si vous avez une adresse IP et que vous voulez savoir où elle va, vous pouvez essayer une recherche DNS inversée. S'il se résout en un serveur enregistré auprès d'un serveur DNS, vous pourrez peut-être découvrir son domaine.
Si vous pouvez dépendre de la présence d'un PTR (enregistrement de pointeur). Les PTR résolvent une adresse IP en un nom de domaine complet. Cependant, comme ils ne sont pas obligatoires, ils ne sont pas toujours présents sur un domaine.
Voyons si nous pouvons savoir où nous mène l'adresse IP 209.51.188.148. Nous tapons ce qui suit, en utilisant l'option -x
(recherche inversée) :
creuser -x 209.51.188.148
Presto! L'adresse IP se résout en gnu.org.
Étant donné qu'un PTR est un enregistrement DNS et que nous savons que dig
peut demander des enregistrements DNS spécifiques, ne pourrions-nous pas simplement demander à dig
de récupérer le PTR pour nous ? Oui, nous pouvons, mais cela demande un peu plus de travail.
Nous devons fournir l'adresse IP dans l'ordre inverse et .in-addr.arpa
à la fin, comme indiqué ci-dessous :
creuser ptr 148.188.51.209.in-addr.arpa
Nous obtenons le même résultat; il a juste fallu un peu plus d'effort.
Pouvez-vous le creuser?
Nous utilisons tous Internet quotidiennement, et les esprits curieux se demandent souvent comment la magie opère lorsque nous tapons le nom d'un site Web dans un navigateur. Avec dig
, vous pouvez explorer les processus de conjuration de réseau.
Commandes Linux | ||
Des dossiers | tar · pv · chat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · plier · uniq · journalctl · queue · stat · ls · fstab · echo · moins · chgrp · chown · rev · regarder · chaînes · type · renommer · zip · décompresser · monter · umount · installer · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convertir · rclone · déchiqueter · srm | |
Processus | alias · écran · top · sympa · renice · progrès · strace · systemd · tmux · chsh · historique · at · batch · gratuit · lequel · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · mur · oui · kill · sleep · sudo · su · time · groupadd · usermod · groupes · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
La mise en réseau | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · creuser · doigt · nmap · ftp · curl · wget · qui · whoami · w · iptables · ssh-keygen · ufw |
CONNEXION: Meilleurs ordinateurs portables Linux pour les développeurs et les passionnés