Services

Problème de dns sur Debian

Dernière mise à jour : 04/09/2022 à 15h29
Table des matières

dns



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 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 :

Code BASH :
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 :

Code BASH :
nameserver 8.8.8.8


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

Code BASH :
ping google.fr


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

La résolution



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 :

Code BASH :
apt install resolvconf


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

Code BASH :
systemctl status resolvconf.service


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

Code BASH :
systemctl start resolvconf.service
systemctl enable resolvconf.service


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

Code BASH :
nameserver 8.8.8.8


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 :

Code BASH :
systemctl restart resolvconf.service


Rebootez pour tester, cela fonctionne :top

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 ?

Code BASH :
cat /etc/resolv.conf


me renvoit la ligne

bash :
nameserver 127.0.0.54


Pour régler cela, deux commandes à taper :

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


Cette page a été vue 379 fois