Accueil
» Comment faire
»
Échecs de résolution DNS sous Debian 12 : réparer systemd-resolved
Échecs de résolution DNS sous Debian 12 : réparer systemd-resolved
Si Debian 12 affiche « Échec temporaire de la résolution de noms », vérifiez le service de résolution, la /etc/resolv.confliaison et les serveurs DNS listés par resolvectlla commande `db`, dans cet ordre. Un redémarrage du service ne résout le problème que si le service est arrêté ; une liaison rompue ou un serveur en amont inaccessible nécessitent une autre solution.
Ces instructions concernent les systèmes Debian 12 (Bookworm) configurés pour utiliser un résolveur DNS systemd-resolvedexterne. Debian a séparé ce résolveur dans un paquet distinct et ne l'a pas défini comme résolveur par défaut, comme indiqué dans les notes de version de Debian 12. Si votre installation utilise un autre gestionnaire DNS, il est préférable de laisser ce dernier gérer les paramètres plutôt que de lui imposer ces paramètres.
1. Identifier les échecs de la résolution de noms
Commencez par configurer la route réseau et effectuer une recherche de nom d'hôte. Exécutez les commandes localement ou dans un terminal qui restera ouvert en cas de modification du réseau :
ip -br address
ip route
ping -c 2 1.1.1.1
resolvectl status
resolvectl query debian.org
getent ahosts debian.org
Une route par défaut et une connexion IP numérique fonctionnelle indiquent que la machine peut accéder au réseau sans passer par un DNS. Un ping infructueux ne prouve pas à lui seul une route défaillante : les réseaux peuvent bloquer les réponses d'écho ICMP. Si l'interface ne possède pas d'adresse ou de route, commencez par corriger la connexion réseau.
resolvectl statusAffiche les serveurs DNS et les domaines attribués globalement ou à des interfaces individuelles. resolvectl queryTeste le résolveur systemd ; getent ahoststeste le chemin de résolution de noms d'hôtes couramment utilisé par les applications Linux. Cette distinction permet d'isoler la panne.
Observation
Prochaine vérification
Aucune adresse ni itinéraire par défaut
Corrigez la configuration de l'interface, de la passerelle ou du DHCP avant celle du DNS.
resolvectlne peut pas se connecter à son service
Vérifiez si le systemd-resolvedlogiciel est installé et en cours d'exécution.
resolvectl queryfonctionne, getentéchoue
Inspectez /etc/resolv.confla configuration des hôtes NSS.
Les deux recherches échouent malgré un itinéraire fonctionnel.
Inspectez les adresses DNS en amont, le routage DNS et l'accès au pare-feu.
Une vue terminale regroupe la route réseau par défaut, l'attribution du serveur DNS et une recherche de nom d'hôte au niveau de l'application pour un diagnostic initial.
2. Assurez-vous que systemd-resolved est installé et actif.
Sur Debian 12, la présence de systemd ne garantit pas l'installation du paquet de résolution DNS. Vérifiez le paquet et l'unité avant de modifier les fichiers DNS.
dpkg-query -W -f='${Status}\n' systemd-resolved
systemctl status systemd-resolved --no-pager
Si le paquet est installé mais que le service est inactif, démarrez-le et activez-le pour les prochains démarrages :
La commande finale devrait afficher un résultat active. En cas de défaillance de l'unité, consultez ses messages d'erreur plutôt que de la redémarrer à répétition :
Si le paquet est manquant, installez-le sudo apt install systemd-resolveduniquement après avoir un accès fonctionnel au dépôt de paquets. Son installation modifie la gestion de ce paquet/etc/resolv.conf ; vérifiez donc au préalable toute configuration de NetworkManager, VPN ou DNS statique. Debian documente cette modification dans ses notes de mise à niveau de Bookworm .
L'affichage de l'état du service indique où trouver l'unité chargée, l'état actif et les messages de démarrage.
3. Ne réparez le lien du résolveur que s'il est défectueux.
Le stub standard systemd-resolvedécoute sur 127.0.0.53. Son fichier de compatibilité recommandé est /run/systemd/resolve/stub-resolv.conf, qui peut être lié depuis /etc/resolv.conf. Vérifiez d'abord votre mode actuel :
ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
resolvectl status
L'utilisation d'un lien direct /run/systemd/resolve/resolv.confest également possible, mais les programmes qui l'utilisent contactent directement le serveur DNS en amont au lieu du serveur DNS local. Ne considérez pas ce lien comme rompu simplement parce qu'il diffère. Le manuel du service systemd-resolved de Debian explique les modes pris en charge.
Si vous utilisez intentionnellement le stub local, que le service est en cours d'exécution, que l'écouteur du stub est activé et que le lien existant /etc/resolv.confest manquant, orphelin ou pointe vers un résolveur obsolète, rétablissez le lien recommandé. Commencez par sauvegarder un fichier ou un lien existant ; ignorez la copie si aucun fichier n'existe.
N’exécutez pas ce remplacement sur un hôte où un autre service gère intentionnellement le DNS /etc/resolv.conf. Une entrée locale nameserver 127.0.0.53nécessite également un écouteur stub fonctionnel ; la simple saisie de cette adresse ne crée pas de service DNS. Sur une machine distante, conservez une autre méthode d’accès avant de modifier les paramètres du résolveur.
La vérification du lien symbolique affiche la cible attendue lorsque Debian est délibérément configuré pour utiliser le stub local résolu par systemd.
4. Corriger un serveur DNS en amont absent ou inaccessible
Si resolvectl statusaucun serveur DNS en amont approprié n'est détecté, ou si un serveur configuré est inaccessible, corrigez la source de cette attribution. Les paramètres DNS dynamiques peuvent provenir de DHCP, NetworkManager, systemd-networkd ou d'un VPN. Vérifiez quelle interface utilise la route par défaut et quel serveur DNS lui est associé.
Pour un test de diagnostic rapide sur un réseau autorisant le DNS public, attribuez des résolveurs publics connus à cette interface. Remplacez ens33par l'interface réelleip -br address :
sudo resolvectl dns ens33 1.1.1.1 1.0.0.1
resolvectl query debian.org
Ces deux adresses sont répertoriées par Cloudflare comme étant ses adresses de résolution DNS publiques . Cette resolvectl dnsmodification est une configuration temporaire ; un administrateur réseau pourra la rétablir une fois la connexion rétablie. Si la résolution fonctionne désormais, il est préférable de corriger la source DNS permanente plutôt que de se fier à cette commande temporaire.
Avec NetworkManager, examinez la connexion active nmcli connection show --activeet ajustez ses paramètres DNS ou son comportement DHCP. Avec systemd-networkd, configurez le réseau DNS=dans le .networkfichier correspondant, puis redémarrez ou reconfigurez-le ultérieurement. Consultez le manuel de systemd.network et le manuel de configuration de NetworkManager pour Debian . La reconnexion d'une interface gérée peut interrompre une session SSH.
Privilégiez les serveurs DNS de votre organisation ou de votre VPN pour les noms internes. Les résolveurs publics ne répondent pas nécessairement aux zones privées ; forcer toutes les requêtes vers eux peut perturber la répartition DNS ou divulguer des noms d'hôtes internes. DNS=Les entrées globales resolved.confpeuvent fonctionner en parallèle du DNS par lien, sans le remplacer automatiquement ; consultez le manuel du fichier resolved.conf de Bookworm .
5. Videz le cache et vérifiez que les deux chemins de recherche fonctionnent.
Après avoir corrigé le service, le lien du résolveur ou la configuration en amont, effacez les réponses mises en cache et effectuez un nouveau test :
La réparation est effective lorsque resolvectl queryles adresses de retour, getent ahostsles enregistrements DNS et les serveurs DNS cibles restent visibles après le rétablissement de la connexion réseau. Les deux commandes testent des interfaces différentes ; par conséquent, la réussite de l’une ne garantit pas la réparation de toutes les applications. Le manuel de resolvectl pour Debian documente les requêtes, l’état et la vidange du cache.
La vue finale du terminal affiche les deux vérifications qui devraient toutes deux renvoyer des enregistrements d'adresse une fois la configuration DNS réparée.
Si resolvectl queryla recherche réussit mais getentéchoue à nouveau, vérifiez grep "^hosts:" /etc/nsswitch.confqu'un module NSS approprié dnset installé resolveest bien présent dans le chemin de résolution. Si l'échec persiste, consultez le journal du résolveur et les éventuelles restrictions de pare-feu sur le trafic DNS, puis effectuez un test avec l'adresse DNS réelle de l'entreprise, du routeur ou du fournisseur. Une résolution réussie isolée ne suffit pas : répétez les vérifications après la reconnexion et après le redémarrage pour confirmer la résolution du problème.