in

Comment utiliser la commande dig sous Linux

Fatmawati Achmad Zaenuri / Shutterstock

Le Linux dig La commande 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 gens utilisent Linux dig commande pour interroger les serveurs DNS (Domain Name System). dig est un acronyme pour Groper d’informations de domaine. 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 messagerie, les serveurs de noms et les informations associées. 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 maintiennent le trafic de routage Internet.

Internet utilise des adresses de protocole Internet (IP) pour identifier des «emplacements» sur le Web, mais les gens utilisent des noms de domaine. Lorsque vous tapez un nom de domaine dans une application, comme un navigateur Web ou un client SSH, quelque chose doit se traduire du nom de domaine vers l’adresse IP réelle. C’est là que le système de noms de domaine entre en jeu.

Lorsque vous utilisez un nom de domaine avec un programme connecté à Internet, votre routeur local ne peut pas le résoudre (sauf s’il est mis en cache à partir d’une demande précédente). Ainsi, votre routeur interroge le serveur DNS de votre fournisseur d’accès Internet (FAI) ou tout autre serveur que vous avez configuré pour votre système. Ces derniers 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 être dans le cache. Si tel est le cas, il renvoie simplement ces mêmes informations à votre programme.

Si le serveur précurseur DNS ne parvient pas à localiser le domaine dans son cache, il contacte un DNS serveur de noms racine. 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 pouvant répondre à votre demande.

Le serveur racine examine le domaine de premier niveau auquel appartient votre nom de domaine, comme .COM, .ORG, .CO.UK, etc. Il envoie ensuite une liste des serveurs de domaine de premier niveau qui gèrent ces types de domaines au serveur précurseur DNS. Le serveur précurseur DNS peut alors effectuer à nouveau sa demande auprès d’un serveur de domaine de premier niveau.

Le serveur de domaine de premier niveau envoie les détails du serveur de noms faisant autorité (où les détails du domaine sont stockés) vers le 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 bind-tools

Premiers pas avec dig

Dans notre premier exemple, nous retournerons 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 le +short option de requête, comme indiqué ci-dessous, qui nous donne une réponse laconique:

dig howtogeek.com +short

Toutes les adresses IP associées au domaine howtogeek.com sont répertoriées pour nous. À l’autre extrémité du spectre, si nous utilisons le +short option de requête, la sortie est assez verbeuse.

Donc, nous tapons ce qui suit pour le faire passer less:

dig howtogeek.com | less

La sortie est affichée dans less, comme indiqué ci-dessous.

Voici la liste complète:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12017
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;howtogeek.com. IN A

;; ANSWER SECTION:
howtogeek.com. 3551 IN A 151.101.194.217
howtogeek.com. 3551 IN A 151.101.130.217
howtogeek.com. 3551 IN A 151.101.66.217
howtogeek.com. 3551 IN A 151.101.2.217

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 22 07:44:37 EDT 2020
;; MSG SIZE rcvd: 106

Disséquons ce morceau par morceau.

Entête

Tout d’abord, jetons un coup d’œil à ce que nous avons dans l’en-tête:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12017
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

Maintenant, voici ce que tout cela signifie:

  • Première ligne: La version de dig et le domaine qui a été interrogé.
  • Options globales: Comme nous le verrons, vous pouvez utiliser dig pour interroger plusieurs domaines simultanément. Cette ligne montre les options qui ont été appliquées à toutes les requêtes de domaine. Dans notre exemple simple, c’était juste la valeur par défaut +cmd (commande) option.
  • Opcode: Requête: C’est le type d’opération qui a été demandé qui, dans ce cas, était un query. Cette valeur peut également être iquery pour une requête inverse, ou status si vous testez simplement l’état du système DNS.
  • Statut: Noerror: Il n’y a eu aucune erreur et la demande a été correctement résolue.
  • ID: 12017: Cet ID aléatoire lie la demande et la réponse ensemble.
  • Drapeaux: qr rd ra: Ceux-ci représentent query, recursion desired, et recursion available. La récursivité est une forme de recherche DNS (l’autre est itérative). Vous pourriez aussi voir AA, 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 un.
  • 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, flags:; udp: 65494

Décomposons cela:

  • EDNS: version 0: La version de Système d’extension pour DNS qui est utilisé. EDNS transmet des données étendues et des drapeaux en étendant la taille du Protocole de datagramme utilisateur (UDP) paquets. Ceci est indiqué par un drapeau de taille variable.
  • drapeaux: Aucun indicateur n’est utilisé.
  • udp: 4096: La taille du paquet UDP.

Section des questions

Dans la section Question, nous voyons ce qui suit:

;; QUESTION SECTION:
;howtogeek.com. IN A

Voici ce que cela signifie:

  • howtogeek.com: Le nom de domaine que nous interrogeons.
  • DANS: Nous faisons une requête de classe Internet.
  • UNE: Sauf indication contraire, dig demandera un enregistrement A (adresse) au serveur DNS.

Section réponse

La section Réponse contient les quatre réponses suivantes que nous avons reçues du serveur DNS:

howtogeek.com. 3551 IN A 151.101.194.217
howtogeek.com. 3551 IN A 151.101.130.217
howtogeek.com. 3551 IN A 151.101.66.217
howtogeek.com. 3551 IN A 151.101.2.217

Voici ce que signifient ces réponses:

  • 3551: Il s’agit du Time to Live (TTL), un entier signé 32 bits qui contient l’intervalle de temps pendant lequel un enregistrement peut être mis en cache. Lorsqu’elles expirent, les données doivent être utilisées dans une réponse à une demande jusqu’à ce qu’elles soient actualisées par le serveur DNS.
  • DANS: Nous avons fait une requête de classe Internet.
  • UNE: Nous avons demandé un enregistrement A au serveur DNS.

Section des statistiques

Statistiques est la dernière section et contient les informations suivantes:

;; Query time: 0 msec 
;; SERVER: 127.0.0.53#53(127.0.0.53) 
;; WHEN: Sun Mar 22 07:44:37 EDT 2020 
;; MSG SIZE rcvd: 106

Voici ce que nous avons:

  • Temps de requête: 0 ms: Le temps qu’il a fallu pour obtenir la réponse.
  • SERVEUR: 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 transfère les requêtes DNS vers les serveurs DNS en amont configurés. Sur l’ordinateur de test Manajro, l’adresse indiquée ici était 8.8.8.8 # 53, qui est Service DNS public de Google.
  • QUAND: Dim 22 mars 07:44:37 HAE 2020: Quand la demande a été faite.
  • MSG TAILLE rcvd: 106: La taille du message reçu du serveur DNS.

Être sélectif

Vous n’avez pas à vous contenter des deux extrêmes: les lèvres serrées et les bavards. La dig La commande vous permet d’inclure ou d’exclure de manière sélective des sections des résultats.

Les options de requête suivantes supprimeront cette section des résultats:

  • + nocomments: N’affichez pas les lignes de commentaire.
  • + noauthority: Ne montrez pas la section d’autorité.
  • + non supplémentaire: N’affichez pas la section supplémentaire.
  • + nostats: N’affichez pas la section des statistiques.
  • + no de réponse: N’affichez pas la section de réponse.
  • + noall: Ne montrez rien!

La +noall L’option de requête 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 taper une longue chaîne d’options de requête pour désactiver plusieurs sections, vous pouvez utiliser +noall pour les éteindre tous.

Vous pouvez ensuite utiliser les options de requête inclusives suivantes pour réactiver celles que vous souhaitez voir:

  • + commentaires: Afficher les lignes de commentaires.
  • + autorité: Montrez la section d’autorité.
  • + supplémentaire: Afficher la section supplémentaire.
  • + statistiques: Afficher la section des statistiques.
  • + réponse: Afficher la section de réponse.
  • + tout: Montrez tout.

Nous tapons ce qui suit pour faire une demande et exclure les lignes de commentaire:

dig howtogeek.com +nocomments

Si nous utilisons le +noall option de requête seule, comme indiqué ci-dessous, nous n’obtiendrons aucune sortie utile:

dig howtogeek.com +noall

Nous pouvons ajouter de manière sélective les sections que nous voulons voir. Pour ajouter la section de réponse, nous tapons ce qui suit:

dig howtogeek.com +noall +answer

Si nous tapons ce qui suit pour activer +stats, nous verrons également la section statistiques:

dig howtogeek.com +noall +answer +stats

La +noall +answer la combinaison est souvent utilisée. Vous pouvez ajouter d’autres sections à la ligne de commande si nécessaire. 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 +answer" > $HOME/.digrc

Nous pouvons ensuite taper ce qui suit pour vérifier son contenu:

cat .digrc

Ces deux options seront désormais appliquées à toutes les utilisations futures de dig, comme indiqué ci-dessous:

dig ubuntu.org
dig linux.org
dig github.com

Cette dig Le fichier de configuration sera utilisé pour les exemples restants de cet article.

Enregistrements DNS

Les informations renvoyées à votre dig les requêtes sont extraites de différents types d’enregistrements détenus 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: Lie le domaine à une adresse IP version 4.
  • Enregistrement MX: L’échange de courrier enregistre les e-mails directs envoyés aux domaines vers le serveur de messagerie approprié.
  • 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. En règle générale, ils peuvent être utilisés pour supprimer les e-mails falsifiés ou falsifiés.
  • Enregistrement SOA: Les notices 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 changements, 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. À l’expiration de ce délai, les données doivent être actualisées pour les demandes suivantes.
  • TOUT: Cela raconte dig pour renvoyer tous les types d’enregistrement DNS possibles.

La spécification du type d’enregistrement A ne change pas l’action par défaut, qui consiste à interroger l’enregistrement d’adresse et à obtenir l’adresse IP, comme indiqué ci-dessous:

dig redhat.com A

Pour interroger les enregistrements d’échange de courrier, nous utilisons l’indicateur MX suivant:

dig yahoo.com MX

L’indicateur de serveur de noms renvoie le nom suivant des serveurs de noms racine associés au domaine de niveau supérieur:

dig fedora.com NS

Pour interroger le début de la notice d’autorité, nous saisissons l’indicateur SOA suivant:

dig manjaro.com SOA

Le drapeau TTL nous montrera le temps de vie des données dans le cache du serveur DNS. Si nous faisons une série de requêtes, nous voyons le temps de vivre se réduire à rien, puis revenons à sa valeur de départ.

Nous tapons ce qui suit:

dig usa.gov TTL

Pour voir les enregistrements de texte, nous tapons le drapeau TX:

dig usa.gov TXT

Spécification du serveur DNS

Si vous souhaitez utiliser un serveur DNS particulier pour votre demande, vous pouvez utiliser le signe arobase (@) pour le transmettre à dig comme paramètre de ligne de commande.

Avec le serveur DNS par défaut (voir ci-dessous), dig fait référence au résolveur de stub de mise en cache local à 127.0.0.53.

dig usa.gov +stats

Maintenant, nous tapons ce qui suit pour utiliser le serveur DNS public de Google à 8.8.8.8:

dig @8.8.8.8 usa.gov +stats

Utilisation de dig avec plusieurs domaines

Nous pouvons transmettre plusieurs domaines à dig sur la ligne de commande, comme indiqué ci-dessous:

dig ubuntu.org fedora.org manjaro.com

Si vous vérifiez 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 à tour.

Notre fichier s’appelle «domaines.txt». Nous utiliserons cat pour afficher son contenu, puis le transmettre à dig avec le -f (fichier) option. Nous tapons ce qui suit:

cat domains.txt
dig -f domains.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 s’agit d’un serveur enregistré auprès d’un serveur DNS, vous pourrez peut-être trouver son domaine.

La possibilité de le faire dépend de la présence d’un PTR (enregistrement de pointeur). Les PTR résolvent une adresse IP en 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 le -x (recherche inversée):

dig -x 209.51.188.148

Presto! L’adresse IP se résout en gnu.org.

Parce qu’un PTR est un enregistrement DNS, et nous savons dig peut demander des enregistrements DNS spécifiés, ne pourrions-nous pas simplement demander dig 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 dans l’ordre inverse .in-addr.arpa à la fin, comme indiqué ci-dessous:

dig ptr 148.188.51.209.in-addr.arpa

Nous obtenons le même résultat; cela a juste demandé un peu plus d’efforts.

Pouvez-vous le creuser?

Nous utilisons tous Internet quotidiennement, et les esprits curieux se sont souvent demandé comment la magie se produit lorsque nous tapons le nom d’un site Web dans un navigateur. Avec dig, vous pouvez explorer les processus de création de réseau.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment ajouter un fichier de configuration à votre application Windows Forms

Comment ajouter un fichier de configuration à votre application Windows Forms

À quoi servait le porte-documents Windows, de toute façon?

À quoi servait le porte-documents Windows, de toute façon?