Dernière mise à jour : 04/09/2022 à 15h29
Table des matières
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 :
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
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
Une dernière commande :
Code BASH :
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 ?
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