Aller au contenu

Résoudre les problèmes de DNS sur Debian

failure_dns_debian

Un serveur DNS ?

Je ne vais pas vous expliquer ce qu'est un serveur DNS ni comment il fonctionne, beaucoup d'articles l'expliquent très bien ainsi que des vidéos. Pour faire simple, c'est l'annuaire d'internet qui permet de dire à notre ordinateur que le site web lemonde.fr a pour adresse IP 151.101.194.217 ou que duckduckgo.com a pour adresse IP 40.114.177.156.

Le problème à résoudre

Si comme moi vous avez des soucis sur Debian avec les serveurs DNS, voici la solution à vos problèmes. Probablement que ce problème est spécifique aux conteneurs LXC sous Debian, il n'y a que dans ce cas que j'ai des soucis.

Simple à diagnostiquer, si par exemple lorsque vous souhaitez faire un update, cela ne fonctionne pas, tapez les commandes suivantes :

ping 8.8.8.8
ping google.fr

Si la première commande fonctionne (vous avez une succession de lignes du type 64 bytes from 8.8.8.8: icmp_seq=5 ttl=115 time=4.15 ms) mais que la seconde renvoi un message d'erreur :

ping: google.fr: Temporary failure in name resolution

c'est qu'on est face à un problème de serveur dns.

Afin de vous assurer que le problème se situe bien à ce niveau, modifiez le fichier /etc/resolv.conf et ajoutez la ligne suivante :

nameserver 8.8.8.8

Note

8.8.8.8 est le serveur DNS de google, cette ligne permet de spécifier au système d'utiliser ce serveur

Retentez la commande

ping google.fr

Si cette fois cela fonctionne, on a bien diagnostiqué le problème.

La résolution durable

Vous allez me dire "c'est résolu, si je lance un apt update, cela fonctionne !" Oui mais non, car lorsque vous allez redémarrer votre système, le fichier resolv.conf aura repris sa version d'avant... 🤕

Pour cela, on installe resolvconf :

apt install resolvconf

Puis on vérifie que le service est bien démarré :

systemctl status resolvconf.service

Si ce n'est pas le cas, on le démarre :

systemctl enable --now resolvconf.service

Puis on modifie le fichier /etc/resolvconf/resolv.conf.d/head et on y ajoute la ligne précédente :

nameserver 8.8.8.8

Note

Vous pouvez adapter au serveur DNS que vous souhaitez. Certains sont réputés plus rapides ou plus sécurisés

Une dernière commande :

systemctl restart resolvconf.service

Rebootez pour tester, cela fonctionne 🏆

Une autre méthode sur Ubuntu et ses dérivés

Je me suis également retrouvé avec un problème sur Linux Mint. Dans la configuration de ma carte réseau, le serveur DNS était bien celui spécifié par mon routeur (à savoir un serveur DNS local pour gérer mes serveurs locaux sans avoir à connaitre leurs adresses IP). Cependant, Mint n'utilisait pas ce serveur DNS. Comment le vérifier ?

cat /etc/resolv.conf

me renvoit la ligne

nameserver 127.0.0.54

Pour régler cela, deux commandes à taper :

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf