Comment utiliser la commande dig sous Linux

Contenu

Une fenêtre de terminal stylisée sur un système Linux.

Sous Linux dig La commande vous permet d'interroger les serveurs DNS et d'effectuer des recherches DNS. Vous pouvez également trouver le domaine vers lequel mène une adresse IP. Nous allons vous montrer comment!

Comment fonctionne la commande dig

Les gens utilisent Linux dig commande pour interroger les serveurs du système de noms de domaine (DNS). dig est un acronyme pour Informations sur le domaine Groper. Avec dig, vous pouvez interroger les serveurs DNS pour obtenir des informations sur divers enregistrements DNS, y compris les adresses d'hôte, échanges de courrier, serveurs de noms et informations associées. Il était destiné à être un outil de diagnostic des problèmes DNS. Malgré cela, 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 “Lieux” sur le web, mais les gens utilisent des noms de domaine. Lorsque vous saisissez un nom de domaine dans une application, tel qu'un navigateur Web ou un client SSH, quelque chose doit être traduit du nom de domaine en adresse IP réelle. C'est là qu'intervient le système de noms de domaine..

Lorsque vous utilisez un nom de domaine avec n'importe quel programme connecté à Internet, votre routeur local ne peut pas le résoudre (à moins d'être mis en cache à partir d'une requête précédente). Pour cela, votre routeur consulte le serveur DNS de votre fournisseur d'accès Internet (FAI) ou toute autre personne pour laquelle vous avez configuré 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 solution pourrait être dans son cache. Si c'est le cas, envoyez simplement les mêmes informations à votre programme.

Si le serveur DNS précurseur ne peut pas localiser le domaine dans son cache, 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 contribuer à votre demande.

Le serveur racine regarde 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 niveau supérieur qui gèrent ces types de domaines au serveur précurseur DNS.. Le serveur précurseur DNS peut faire votre demande une fois de plus, vers 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) au serveur DNS précurseur. Après, le serveur DNS interroge 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é envoie l'adresse IP au serveur DNS, Quoi, en même temps, vous l'envoie.

Installation d'excavation

dig il était déjà installé sur nos ordinateurs Ubuntu 18.04 et Fedora 30. Malgré cela, nous avons dû l'installer sur l'ordinateur Manjaro 18.04 avec la commande suivante:

sudo pacman -Sy bind-tools

Initiation au creusement

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 le +short option de requête, comme il est montré dans ce qui suit, ce qui nous donne une réponse concise:

vous systempeaker.com + court

Toutes les adresses IP associées au domaine systempeaker.com sont répertoriées pour nous. A l'autre bout du spectre, et non Utilisez le +short option de requête, la sortie est assez détaillée.

Ensuite, nous écrivons ce qui suit pour le canaliser less:

vous systempeaker.com | moins

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

Voici la liste complète:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> systempeaker.com
;; options globales: +cmd
;; Réponse obtenue:
;; ->>ENTÊTE<<- code opération: METTRE EN DOUTE, statut: PAS D'ERREUR, identifiant: 12017
;; drapeaux: qr rd ra; METTRE EN DOUTE: 1, RÉPONSE: 4, AUTORITÉ: 0, ADDITIONNEL: 1

;; OPTER LA PSEUDOSECTION:
; EDNS: version: 0, drapeaux:; UDP: 65494
;; SECTION DES QUESTIONS:
;systempeaker.com. DANS UN

;; SECTION RÉPONSE:
systempeaker.com. 3551 DANS UN 151.101.194.217
systempeaker.com. 3551 DANS UN 151.101.130.217
systempeaker.com. 3551 DANS UN 151.101.66.217
systempeaker.com. 3551 DANS UN 151.101.2.217

;; Heure de la requête: 0 ms
;; SERVEUR: 127.0.0.53#53(127.0.0.53)
;; LORSQUE: dim mars 22 07:44:37 EDT 2020
;; MSG TAILLE rcvd: 106

Passons en revue cette pièce par pièce.

Entête

Premier, regardons ce que nous avons dans l'en-tête:

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> systempeaker.com
;; options globales: +cmd
;; Réponse obtenue:
;; ->>ENTÊTE<<- code opération: METTRE EN DOUTE, statut: PAS D'ERREUR, identifiant: 12017
;; drapeaux: qr rd ra; METTRE EN DOUTE: 1, RÉPONSE: 4, AUTORITÉ: 0, ADDITIONNEL: 1

Maintenant, c'est ce que tout ça veut dire:

  • Première ligne: La version de dig et le domaine consulté.
  • Options globales: Comme nous le verrons, Vous pouvez utiliser dig pour interroger plusieurs domaines simultanément. Cette ligne montre les alternatives qui ont été appliquées à toutes les requêtes de domaine. Dans notre exemple simple, c'était juste la valeur par défaut +cmd (commander) option.
  • Code d'opération: Mettre en doute: C'est le type d'opération qui a été demandé, dans cette circonstance, Ce était une query. Cette valeur peut également être iquery pour une requête inversée, O status si vous testez simplement la santé du système DNS.
  • État: Pas d'erreur: Il n'y a eu aucune erreur et la demande a été résolue avec succès.
  • identifiant: 12017: Cet identifiant aléatoire rejoint la requête et la solution.
  • Banderas: 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ératif). Vous pouvez également voir AA, Que signifie la réponse autorisée ?, ce qui signifie qu'un serveur de noms autorisé a fourni la solution.
  • Mettre en doute: 1: Le nombre de requêtes dans cette session, qu'était-ce qu'un.
  • Réponse: 4: Le nombre de réponses dans cette réponse, qu'est-ce que quatre.
  • Autorité: 0: Le nombre de réponses provenant d'un serveur de noms faisant autorité, qui était nul dans cette circonstance. La solution a été renvoyée depuis le cache d'un serveur DNS précurseur. Il n'y aura pas de section autorisée dans la solution.
  • Supplémentaire: 1: Il y a une information supplémentaire. (avec curiosité, rien n'est inclus sauf si cette valeur est de deux ou plus).

Pseudosection décanter

Ensuite, nous voyons ce qui suit dans la pseudosection Opt:

;; OPTER LA PSEUDOSECTION:
; EDNS: version: 0, drapeaux:; UDP: 65494

Analysons ça:

  • EDNS: version 0: La version de Système d'extension DNS qui utilise. EDNS transmet des données étalées et des drapeaux élargissant la taille du Protocole de datagramme utilisateur (UDP) paquets. Ceci est indiqué par un drapeau redimensionnable.
  • banderas: Aucun drapeau utilisé.
  • UDP: 4096: Taille de paquet UDP.

Rubrique questions

Dans la rubrique Questions, on voit ce qui suit:

;; SECTION DES QUESTIONS:
;systempeaker.com. DANS UN

C'est ce que cela signifie:

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

Rubrique de réponse

La section Réponse contient les quatre réponses suivantes que nous recevons du serveur DNS:

systempeaker.com. 3551 DANS UN 151.101.194.217
systempeaker.com. 3551 DANS UN 151.101.130.217
systempeaker.com. 3551 DANS UN 151.101.66.217
systempeaker.com. 3551 DANS UN 151.101.2.217

C'est ce que signifient ces réponses:

  • 3551: C'est le temps de la vie (TTL), un entier de 32 bits signés contenant l'intervalle de temps pendant lequel un enregistrement peut être mis en cache. Quand il expire, les données doivent être utilisées dans une réponse à une demande jusqu'à ce que le serveur DNS les mette à jour.
  • AU: Nous exécutons une requête de classe Internet.
  • UNE: Nous demandons un enregistrement A au serveur DNS.

Section des statistiques

Les statistiques sont la dernière section et contiennent les informations suivantes:

;; Heure de la requête: 0 ms 
;; SERVEUR: 127.0.0.53#53(127.0.0.53) 
;; LORSQUE: dim mars 22 07:44:37 EDT 2020 
;; MSG TAILLE rcvd: 106

C'est ce que nous avons:

  • Temps de consultation: 0 mseg: Le temps qu'il a fallu pour obtenir la solution.
  • 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. Pour ce cas, pointe vers le 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 de Manajro, l'adresse qui apparaît ici était 8.8.8.8 # 53, Qu'est que c'est Service DNS public de Google.
  • LORSQUE: Jugement 22 de mars 07:44:37 EDT 2020: Lorsque la demande a été faite.
  • TAILLE DU MESSAGE Rcvd: 106: La taille du message reçu du serveur DNS.

Soyez sélectif

Il ne faut pas se contenter des deux bouts de lèvres serrées et bavardes. Les 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:

  • + pas de commentaires: Ne pas afficher les lignes de commentaires.
  • + sans autorité: Ne pas afficher la section d'autorité.
  • + pas de supplément: Ne pas afficher la section supplémentaire.
  • + nos statistiques: Ne pas afficher la section des statistiques.
  • + pas de réponse: Ne pas afficher la section des réponses.
  • + notodos: Ne rien montrer!

Les +noall L'option de requête en général est combinée avec l'une des options ci-dessus pour inclure une section dans les résultats. Ensuite, au lieu d'écrire une longue chaîne d'alternatives de requête pour désactiver plusieurs sections, vous pouvez utiliser +noall pour les éteindre tous.

Après, vous pouvez utiliser les options de requête inclusives suivantes pour réactiver celles que vous souhaitez voir:

  • + commentaires: Afficher les lignes de commentaires.
  • + autorité: Afficher la section d'autorité.
  • + Additionnel: Afficher la section supplémentaire.
  • + statistiques: Afficher la section des statistiques.
  • + réponse: Afficher la section des réponses.
  • + tout: Tout afficher.

Nous écrivons ce qui suit pour faire une demande et exclure les lignes de commentaires:

vous systempeaker.com + aucun commentaire

Si nous utilisons le +noall option de requête seule, comme il est montré dans ce qui suit, nous n'obtiendrons aucun résultat utile:

creuser systempeaker.com + noall

Nous pouvons ajouter sélectivement les sections que nous voulons voir. Pour ajouter la section réponse, nous écrivons ce qui suit:

creuser systempeaker.com +noall +répondre

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

creuser systempeaker.com +noall +répondre +stats

Les +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 d'écrire +noall +answer sur la ligne de commande chaque fois que vous utilisez dig, vous pouvez les placer dans un fichier de configuration appelé “.digrc”. Il se trouve dans votre répertoire personnel.

Nous écrivons ce qui suit pour en créer un avec echo:

écho "+non + réponse" > $ACCUEIL/.digrc

Ensuite, nous pouvons écrire ce qui suit pour vérifier son contenu:

chat .digrc

Ces deux options s'appliqueront désormais à toutes les utilisations futures de dig, Comme indiqué ci-dessous:

creuser ubuntu.org
creuser linux.org
creuser github.com

Cette dig Le fichier de configuration sera utilisé pour les exemples restants dans ce post.

Enregistrements DNS

Informations renvoyées à votre dig les demandes sont extraites de différents types d'enregistrements stockés sur le serveur DNS. Sauf si nous demandons quelque chose de différent, dig vérifier l'enregistrement A (adresse). Voici les types d'enregistrements couramment utilisés avec dig:

  • Un fichier: Lier le domaine à une adresse IP de version 4.
  • Enregistrement MX: L'échange de courrier enregistre les e-mails directs envoyés aux domaines vers le bon serveur de messagerie.
  • Registre NS: Les registres de serveurs 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 sur le domaine. En général, peut être utilisé pour supprimer les e-mails falsifiés ou falsifiés.
  • Enregistrement SOA: Le début des notices d'autorité peut contenir beaucoup d'informations sur le domaine. Ici, peut trouver le serveur de noms principal, la partie responsable, un horodatage pour les changements, la fréquence des mises à jour de zone et une série de délais pour les nouvelles tentatives et les abandons.
  • TTL: La durée de vie est un paramètre pour chaque enregistrement DNS qui spécifie combien de temps un serveur DNS précurseur peut mettre en cache chaque requête DNS. Quand ce temps expire, les données doivent être mises à jour pour les demandes ultérieures.
  • QUELQUE: Cela dit dig pour renvoyer tous les types d'enregistrement DNS qu'il peut.

La spécification du type d'enregistrement A ne modifie pas l'action par défaut, qui consiste à vérifier l'enregistrement de l'adresse et à obtenir l'adresse IP, comme il est montré dans ce qui suit:

creuser redhat.com A

Pour consulter les journaux d'échange de courrier, nous utilisons le prochain drapeau MX:

creuse 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:

vous fedora.com NS

Pour vérifier le début de la notice d'autorité, nous écrivons le prochain drapeau SOA:

creuser manjaro.com SOA

Le drapeau TTL nous montrera la durée de vie des données dans le cache du serveur DNS. Si nous faisons une série de demandes, on voit que la durée de vie est réduite à zéro et plus tard on revient à sa valeur initiale.

Nous écrivons ce qui suit:

creuser utiliza.gov TTL

Pour afficher les enregistrements de texte, nous écrivons le drapeau TX:

creuser utiliza.gov TXT

Spécifier le serveur DNS

Si vous souhaitez utiliser un serveur DNS particulier pour votre requête, vous pouvez utiliser le signe at (@) le passer à dig comme paramètre de ligne de commande.

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

creuser utiliza.gov + statistiques

Maintenant, nous écrivons ce qui suit pour utiliser le serveur DNS public de Google dans 8.8.8.8:

creuser @ 8.8.8.8 utiliza.gov + stats

Utilisation de dig avec plusieurs domaines

Nous pouvons passer plusieurs domaines à dig sur la ligne de commande, comme il est montré dans ce qui suit:

vous 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 successivement.

Notre fichier s’appelle “domaines.txt”. nous utiliserons cat pour montrer son contenu et le transmettre plus tard à dig avec lui -f (déposer) option. Nous écrivons 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ù vous allez, vous pouvez essayer une recherche DNS inversée. S'il se résout sur un serveur enregistré auprès d'un serveur DNS, il est possible que vous puissiez trouver votre domaine.

Si vous le pouvez, dépend de la présence d'un PTR (registre de pointeur). Les PTR résolvent une adresse IP en un nom de domaine complet. Malgré cela, car ils ne sont pas obligatoires, ne sont pas toujours présents dans un domaine.

Voyons si nous pouvons comprendre où l'adresse IP nous mène 209.51.188.148. Nous écrivons ce qui suit, en utilisant le -x (recherche inversée) option:

creuser -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écifiques, Ne pourrions-nous pas simplement demander dig récupérer le PTR pour nous? Oui, pouvons, mais il faut un peu plus de travail.

Nous devons fournir l'adresse IP dans l'ordre inverse et virer .in-addr.arpa à la fin, comme il est montré dans ce qui suit:

creuser ptr 148.188.51.209.in-addr.arpa

On obtient le même résultat; ça a juste demandé un peu plus d'efforts.

Pouvez-vous creuser?

Nous utilisons tous Internet tous les jours, et les esprits curieux se sont souvent demandé comment la magie se produit lorsque nous tapons le nom d'un portail Web dans un navigateur. Avec dig, peut explorer les processus de conjuration de réseau.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.