Résolution DNS échouée : temporary failure in name resolution
Temporary failure in name resolution signifie que le systeme n’a pas pu traduire un nom de domaine en adresse IP. Le programme demande a resolver (la couche qui interroge les serveurs DNS) de trouver l’adresse de example.com, et resolver renvoie une erreur au lieu d’une adresse. L’erreur est dite temporary parce que le systeme suppose que le serveur DNS est temporairement indisponible, pas que le nom est inexistant.
Sommaire
- Le processus de résolution en quatre étapes
- Cause 1 : le serveur DNS est indisponible
- Cause 2 : NetworkManager a ecrase resolv.conf
- Cause 3 : le pare-feu bloque le port 53
- Cause 4 : systemd-resolved n’est pas actif
- Cause 5 : le reseau n’est pas encore pret
- Diagnostic rapide en cinq commandes
- Repères pour aller plus loin
Le processus de résolution en quatre étapes
Quand vous tapez curl https://cybersdf.org, le systeme :
- Consulte
/etc/hosts— correspondances statiques, pas de reseau - Consulte
/etc/nsswitch.conf— determine l’ordre des sources (files, dns, mDNS) - Interroge les serveurs DNS listes dans
/etc/resolv.conf - Attend la reponse pendant un delai (generalement 5 secondes)
L’erreur temporary failure se produit a l’etape 3 ou 4 : les serveurs DNS ne repondent pas, ou le delai est depasse. L’erreur Name or service not known est differente : elle signifie que le serveur DNS a repondu que le nom n’existe pas (NXDOMAIN).
Cause 1 : le serveur DNS est indisponible
Verifiez les serveurs DNS configures :
cat /etc/resolv.conf
resolvectl status
Le fichier /etc/resolv.conf contient les adresses IP des serveurs DNS. Si le fichier est vide, mal forme ou contient des adresses inaccessibles, la resolution echoue. Verifiez que les serveurs sont joignables :
ping -c 2 8.8.8.8
dig +short cybersdf.org
Si ping 8.8.8.8 fonctionne mais dig echoue, le serveur DNS est le probleme. Passez aux serveurs Google (8.8.8.8) ou Cloudflare (1.1.1.1) temporairement en editant /etc/resolv.conf.
Cause 2 : NetworkManager a ecrase resolv.conf
Sur les postes de travail, NetworkManager genere automatiquement /etc/resolv.conf. Si la connexion reseau coupe l’acces au serveur DNS, NetworkManager peut ecraser le fichier avec des serveurs indisponibles. Verifiez :
ls -la /etc/resolv.conf
readlink -f /etc/resolv.conf
Si le fichier est un lien symbolique vers /run/systemd/resolve/stub-resolv.conf ou /run/NetworkManager/resolv.conf, c’est NetworkManager qui le gere. Dans ce cas, configurez les DNS via NetworkManager (nmcli) plutot qu’en editant le fichier directement.
Cause 3 : le pare-feu bloque le port 53
Le DNS utilise les ports 53 UDP et 53 TCP. Si le pare-feu local bloque ces ports, la resolution echoue meme si les serveurs DNS sont corrects :
sudo ufw status | grep 53
sudo iptables -L OUTPUT -n | grep 53
Ajoutez une regle pour autoriser le trafic DNS sortant : sudo ufw allow out 53. Cette regle est differente de ufw allow 53 qui autorise le trafic entrant.
Cause 4 : systemd-resolved n’est pas actif
Sur les distributions recentes (Ubuntu 22.04+, Debian 13), systemd-resolved gere la resolution DNS. Si le service n’est pas actif, la resolution echoue :
systemctl status systemd-resolved
resolvectl status
Si le service est inactif, demarrez-le : sudo systemctl start systemd-resolved. Le fichier /etc/resolv.conf doit pointer vers le resolver local : nameserver 127.0.0.53.
Cause 5 : le reseau n’est pas encore pret
Au demarrage, le service reseau peut ne pas etre pret quand un autre service tente de resoudre un nom. C’est frequent avec les conteneurs Docker et les services systemd qui dependent de la connectivite. Ajoutez une attente dans le fichier d’unite :
[Unit]
After=network-online.target
Wants=network-online.target
Pour un script shell, ajoutez une boucle d’attente avant la premiere resolution DNS :
for i in 1 2 3 4 5; do
dig +short cybersdf.org && break
echo "Attente reseau... ($i)"
sleep 2
done
Diagnostic rapide en cinq commandes
cat /etc/resolv.conf # serveurs DNS configures ?
ping -c 2 8.8.8.8 # reseau fonctionne ?
dig +short cybersdf.org # resolution reussit ?
sudo ufw status | grep 53 # pare-feu bloque le port 53 ?
systemctl status systemd-resolved # resolver actif ?
Ces cinq verifications couvrent les causes les plus courantes. Si toutes sont normales, le probleme est probablement un serveur DNS distant temporairement indisponible — d’ou le mot temporary dans le message d’erreur. Reessayez apres quelques secondes, ou passez a un autre serveur DNS.
Repères pour aller plus loin
- Diagnostiquer une connexion reseau : quand le probleme est reseau, pas DNS
- Services et journaux systemd : comprendre le cycle de vie d’un service
- ufw et Docker : quand Docker contournait le pare-feu
- Fail2ban : proteger SSH sans bloquer les connexions legitimes