cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

Sous Linux avec systemd pour connaßtre votre configuration DNS vous devez utiliser la commande suivante :

resolvectl status --no-pager

Cette commande vous donnera les informations sur les serveurs DNS actuels connu du systÚme et ce pour chaque interface réseau.

Ici le paramĂštre --no-pager est destinĂ© Ă  ne pas mettre en pause l’affichage Ă  chaque fois que la page de la console a Ă©tĂ© remplie, son usage est surtout requis pour les scripts.

Noter que si la commande resolvectl n’est pas disponible, vous devrez utiliser la commande systemd-resolve :

systemd-resolve --status --no-pager

ඏ

Le service systemd-networkd

Le service systemd-networkd gĂšre les configurations rĂ©seau. Il dĂ©tecte et configure les pĂ©riphĂ©riques rĂ©seau Ă  mesure qu’ils apparaissent ; il peut Ă©galement crĂ©er des pĂ©riphĂ©riques rĂ©seau virtuels. Il fait partie du paquet systemd inclus dans la plupart des systĂšmes Linux rĂ©cents.

Ce service permet de prendre en compte la complexitĂ© grandissante des rĂ©seaux modernes, qui ont souvent deux piles IP (IPv4 et IPv6) qui cohabitent et de nombreuses interfaces rĂ©seaux : RJ45, Wifi, USB, mais Ă©galement les rĂ©seaux virtuels locaux (docker) ou distant (sĂ©curitĂ©)


Ce service est hautement configurable ; ce qui a comme consĂ©quence qu’il peut ĂȘtre assez compliquĂ© de modifier la configuration de base.


ඏ

Le service systemd-resolved.service

Pour ceux qui connaissent Linux depuis un petit moment, ce service remplace dnsmasq – et Ă  noter que ces services sont incompatibles l’un avec l’autre, au sens que si vous avez les deux services sur la mĂȘme machine vous risquez que la rĂ©solution DNS ne fonctionne pas.

Vous devez donc vous assurer que la résolution est bien active via ce service :

systemctl status systemd-resolved.service

ඏ

La commande resolvectl

La commande resolvectl permet de résoudre les noms de domaine, les adresses IPV4 et IPv6, les enregistrements de ressources DNS et les services ; introspecter et reconfigurer le résolveur DNS.

Les commandes resolvectl et resolvconf permettent conjointement d’échanger (utilisation, configuration) avec le service (systemd-resolved.service).

Fonctionnement général :

  • Si vous donner un nom d’hĂŽte, vous obtiendrez son adresse IP,
  • Si les paramĂštres spĂ©cifiĂ©s sont formatĂ©s comme des adresses IPv4 ou IPv6, l’opĂ©ration inverse sera effectuĂ©e et un nom d’hĂŽte sera rĂ©cupĂ©rĂ© pour les valeurs spĂ©cifiĂ©es.

L’usage le plus basique de la commande est :

resolvectl query www.example.org

qui produit un résultat du type :

www.example.org: 93.184.216.34                      -- link: enp3s0
                 2606:2800:220:1:248:1893:25c8:1946 -- link: enp3s0

-- Information acquired via protocol DNS in 1.0ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: cache

L’option --cache=BOOL permet de ne pas utiliser le cache (par dĂ©faut la valeur est true), lorsque la valeur est false les rĂ©solutions DNS sont faites Ă  l’aide du rĂ©seau et non pas Ă  l’aide du cache local.

resolvectl --cache=false query www.example.org

qui produit un résultat du type :

www.example.org: 2606:2800:220:1:248:1893:25c8:1946 -- link: enp3s0
                 93.184.216.34                      -- link: enp3s0

-- Information acquired via protocol DNS in 5.0ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network

ඏ

La commande systemd-resolve (est obsolĂšte)

systemd-resolve peut ĂȘtre vu comme le prĂ©dĂ©cesseur de resolvectl puisque c’était cette commande qui Ă©tait disponible jusqu’à la version 239 de systemd.

Si votre systĂšme ne supporte pas encore resolvectl et qu'il utilise systemd rĂ©fĂ©rez-vous au billet 🔧 Systemd et le DNS (ObsolĂšte).


ඏ

Comparaison de résolution avec nslookup et host

On peut noter que le résultat est proche de ce que donne nslookup :

nslookup www.example.org

Qui retourne quelque chose comme :

Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   www.example.org
Address: 93.184.216.34
Name:   www.example.org
Address: 2606:2800:220:1:248:1893:25c8:1946

Ou encore de host :

host example.com

Qui affiche cela :

example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 .

ඏ

 Trouver le ou les DNS utilisés

Il y avait un gros manque depuis l’arrivĂ©e de systemd autour de la vĂ©rification de quel DNS Ă©tait pris en compte par le systĂšme. Il n’y avait pas vraiment de moyen de le savoir, puisque les mĂ©thodes utilisĂ©es au paravant donne comme rĂ©sultat 127.0.0.1 (qui et en fait le service systemd-resolved.service).

resolvectl résout ce manque :

resolvectl dns

Qui vous donnera quelque chose comme :

Global:
Link 2 (enp3s0): 192.168.1.90
Link 3 (wlo1):
Link 4 (docker0):
Global:
Link 2 (enp3s0): 8.8.8.8 fd0f:ee:b0::1
Link 3 (wlo1):
Link 4 (docker0):

mieux encore, vous pouvez limiter l’affichage à une seule interface :

resolvectl dns enp3s0 # ici 'enp3s0' Ă©tant le nom de l’interface

qui produit un résultat du type :

Link 2 (enp3s0): 192.168.1.90

Notez que les écritures suivantes sont parfaitement identiques :

resolvectl dns enp3s0
resolvectl -i enp3s0 dns
resolvectl --interface=enp3s0 dns

ඏ

Changer le ou les DNS d’une interface temporairement

sudo resolvectl dns LINK SERVER


par exemple :

sudo resolvectl dns enp3s0 8.8.8.8 1.1.1.1

Ce changement sera temporaire, il ne rĂ©sistera pas Ă  un redĂ©marrage ou Ă  une rĂ©initialisation de l’interface.


ඏ

 Utiliser un DNS qui n'est pas connu du systÚme pour résoudre une adresse

Dans ce cas, on souhaite utilisé un DNS qui n'est pas connu du service systemd-resolved.service. La solution se trouve donc ailleurs:

Avec nslookup c’est possible et fort simple, la syntaxe est la suivante :

nslookup HOTE_A_RESOUDRE SERVEUR_DNS_A_UTILISER

Par exemple :

nslookup www.example.org 8.8.8.8

Le rĂ©sultat est le mĂȘme, mais la rĂ©solution DNS est alors traitĂ©e par le serveur donné :

Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   www.example.org
Address: 93.184.216.34
Name:   www.example.org
Address: 2606:2800:220:1:248:1893:25c8:1946

ඏ

Vider le cache DNS

Pour vider le cache DNS, il suffit d’utiliser :

resolvectl flush-caches

ඏ

Les commandes de contrĂŽle du DNS

Pour une rĂ©paration et diagnostique rapide (en mode j’ai autre chose Ă  faire), je vous propose la sĂ©quence de commande suivante :

resolvectl flush-caches ; systemctl status --no-pager -l systemd-resolved.service

Pour faire un diagnostic un peu plus sérieux, voici comment obtenir quelques informations utiles :

  • Identifier les DNS utilisĂ©s (par interface) :
resolvectl --no-pager status
  • Vous pouvez Ă©galement avoir les statistiques de rĂ©solution Ă  l’aide de :
resolvectl statistics

Vous pouvez avoir besoin de réinitialiser ces statistiques, pour cela utilisez :

resolvectl reset-statistics
  • VĂ©rifier la configuration

La configuration est accessible via le fichier /etc/resolv.conf mais pour systemd, et particuliÚrement en conjonction avec une configuration réseau basée sur un DHCP, vous devez que ce fichier est un lien symbolique vers la configuration de systemd.

Typiquement, la commande :

ls -la --color /etc/resolv.conf

doit avoir comme résultat du type :

lrwxrwxrwx 1 root root 39 mars  16  2019 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Il est probablement pas une bonne idĂ©e de modifier le contenu de etc/systemd/resolved.conf surtout si votre machine doit supporter le protocole DHCP (ce qui est normalement le cas sur un rĂ©seau domestique). D’ailleurs en entreprise, cela me semble Ă©galement une mauvaise idĂ©e que d’intervenir sur ce fichier. Les problĂ©matiques d’infrastructure devant ĂȘtre rĂ©glĂ©es au niveau de l’infrastructure.

  • Pensez Ă©galement Ă  vĂ©rifier votre configuration rĂ©seau Ă  l’aide de comme simple comme ping et traceroute (ou traceroute6).

A notez qu’il est dĂ©conseillĂ© d’utiliser les outils graphiques prenant en charge le rĂ©seau en mĂȘme temps que vous modifier votre configuration manuellement, c’est pourquoi ce billet n’ira pas plus loin sur ce sujet.

Juste une derniĂšre remarque cependant, dans un environnement graphique, on s’attend gĂ©nĂ©ralement Ă  ce que le WIFI soit automatiquement connecter sur les rĂ©seaux connus, et sans intervention de l’utilisateur. Dans ce cas, notez que la configuration est modifiĂ©e par les outils qui prennent en charge cette fonctionnalitĂ©.


ඏ

Liens

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog