
Écrits · 24 mai 2019
Dig pour les nuls
Explication d'un outil réseau très utile
Quand tu crées des sites web, des applis ou des services de messagerie, tu tombes forcément sur les noms de domaine et leurs configurations. Quand tout fonctionne comme il faut, tout ça reste invisible. Mais pour dépanner la configuration d'un nom de domaine, il faut parfois creuser un peu plus... suis-moi pour apprendre comment !
Le système de noms de domaine (DNS)
Internet fonctionne avec des adresses numériques de protocole internet (IP) pour localiser et identifier les ordinateurs, les services (cloud) et les appareils en ligne. Au lieu de mémoriser toutes ces adresses IP, le système de noms de domaine est devenu l'annuaire mondial indispensable, qui relie des noms à des numéros.
Tu lis ceci sur willem.com, mais en réalité ce nom de domaine n'est qu'un pointeur vers une vraie machine, connectée à internet (avec des fils, vraiment !). L'un de ces fils est relié à l'adresse IP 87.253.135.162. Le serveur DNS a la responsabilité de garder les bons numéros (adresses IP) en face des noms (de domaine).

Distribué et décentralisé
Quand les Américains ont conçu leur ARPANET au début des années soixante-dix, l'une des exigences militaires était que le réseau survive à des attaques (d'ennemis). Ils y sont arrivés grâce à la commutation de paquets, une façon de partager et de réutiliser les câbles du réseau entre plusieurs personnes de plusieurs manières. Si une partie du réseau est endommagée, les paquets d'information sont réacheminés par d'autres parties du réseau.

Pour une survie maximale, il n'existe pas de serveur DNS racine unique. À la place, le système de noms de domaine délègue la responsabilité d'attribuer les noms de domaine et leurs correspondances en désignant un serveur de noms faisant autorité pour chaque nom de domaine.
Voilà pourquoi il existe tant de serveurs DNS et de configurations différents. Avec autant de façons et d'endroits où ça peut mal tourner, il te faut un outil pour fouiller.
dig (domain information groper)
La commande « dig » est un outil pour interroger les serveurs de noms DNS sur les adresses IP, les noms d'hôtes, les serveurs de messagerie et d'autres types de paramètres réseau. La commande dig est disponible sous Unix, macOS, GNU/Linux et Windows.
Utiliser dig pour interroger les serveurs de noms de domaine
Tu peux utiliser dig pour obtenir des informations sur un nom de domaine en tapant simplement : « dig willem.com ». Regarde la capture d'écran suivante, avec explications :

- 1) dig willem.com renvoie toutes les informations sur la question, la réponse, l'autorité (celle qui a répondu à la question) et les statistiques de la requête (comme le temps mis pour obtenir une réponse).
- 2) dig +short willem.com supprime toutes les informations en plus et ne renvoie que la réponse. Ici, tu vois que willem.com pointe vers l'adresse IP 87.253.135.162.
- 3) dig +short willem.com MX t'affiche les enregistrements « mailer exchange » (MX). Les enregistrements MX sont indispensables pour que le courrier arrive au bon serveur. En gros, c'est la désignation du bureau de poste chargé du courrier lié au nom de domaine. Pour willem.com, c'est un service de messagerie appelé online.lemmid.com. D'autres services de messagerie populaires sont Office365 et Google Gmail. Avec dig, tu peux découvrir quel service de messagerie quelqu'un utilise.
- 4) dig +short willem.com NS t'affiche les serveurs de noms chargés de traiter les requêtes pour ce nom de domaine. Ce sont en général les serveurs gérés par le bureau d'enregistrement, ton fournisseur de noms de domaine. Avec dig, tu peux découvrir quel genre de fournisseur de noms de domaine quelqu'un utilise (pour willem.com, c'est Lemmid).
- 5) dig +short willem.com TXT renvoie l'enregistrement texte lié au nom de domaine, c'est là que tu trouves l'enregistrement SPF. L'enregistrement SPF est un autre élément crucial du courrier, et il vaut le coup de creuser un peu le SPF.
Sender Policy Framework (SPF)
Pour détecter les adresses d'expéditeur falsifiées dans les e-mails (ce qu'on appelle l'usurpation d'e-mail), le standard SPF a été défini en 2004. À l'origine appelé « Sender Permitted From », le SPF est une façon de vérifier si quelqu'un a le droit d'envoyer du courrier au nom d'un nom de domaine donné. Le SPF permet au propriétaire d'un nom de domaine d'indiquer quels ordinateurs sont autorisés à envoyer des e-mails avec des adresses FROM de ce domaine.
Si le propriétaire d'un nom de domaine publie un enregistrement SPF, les spammeurs et les hameçonneurs sont moins susceptibles d'(ab)user de ce nom de domaine pour envoyer de faux e-mails prétendant venir de ce domaine. Un domaine protégé par SPF risque donc moins d'être mis sur liste noire par les filtres anti-spam, et les e-mails légitimes du domaine ont plus de chances de passer. Un enregistrement SPF mal configuré peut en revanche perturber la distribution du courrier.
Utiliser dig pour interroger les enregistrements SPF
Avec la commande dig, tu peux interroger un enregistrement SPF et voir quelle est exactement la politique d'expéditeur. Regarde la capture d'écran suivante, avec explications :

- 1) dig +short TXT google.com nous montre l'enregistrement TXT configuré pour google.com, l'endroit où trouver l'enregistrement SPF (entre autres). L'enregistrement SPF de google.com est "v=spf1 include:_spf.google.com ~all". La partie include: signifie que pour ce nom de domaine, des valeurs SPF externes doivent aussi être chargées.
- 2) dig +short TXT _spf.google.com montre ce que sont réellement ces valeurs SPF externes pour google.com. Ici, il révèle trois autres « include » : "_netblocks.google.com", "_netblocks2.google.com" et (quelle originalité..) "_netblocks3.google.com".
- 3) dig +short TXT _netblocks.google.com (et les variantes 2 + 3) donne les adresses IP réellement autorisées à envoyer du courrier au nom de google.com. Comme Google est une grande entreprise d'internet, il y a beaucoup d'adresses IP dans ces listes. Si tu regardes bien, tu verras que certaines de ces adresses ont un suffixe « / », comme « /24 ». C'est la notation d'un bloc entier (par exemple une rue) d'adresses IP.
Les blocs IP expliqués
Le plus simple pour comprendre la notation des blocs d'adresses IP, ce sont ces exemples :
- /8 = 255.0.0.0
- /16 = 255.255.0.0
- /24 = 255.255.255.0
- /32 = 255.255.255.255
Là où tu vois « 0 » dans les adresses ci-dessus, d'autres valeurs sont incluses. Ainsi, 173.194.0.0/16 veut dire en fait « toutes les adresses qui commencent par "173.194" ». Avec 255 positions possibles dans chaque octet, ça fait 255x255=65025 adresses différentes !
Conclusion
Pour résoudre des problèmes, il faut savoir où est le problème. Avec la commande dig, tu peux en apprendre davantage sur un réseau et une configuration de domaine donnés.
Les réponses d'une commande à l'autre te permettent de creuser profondément dans les entrailles de l'incroyable toile. Bonne chance !