Si vous êtes utilisateur d'Ubuntu, vous avez probablement déjà rencontré la situation où "le nom de domaine ne fonctionne pas, mais l'accès par IP est possible". Dans ce cas, la cause du problème réside principalement dans les paramètres DNS. En particulier, Ubuntu utilise maintenant par défaut le démon de résolveur DNS systemd-resolved, ce qui rend la compréhension de sa structure essentielle.


1. Flux de requêtes DNS

Si vous lisez et comprenez attentivement le résumé ci-dessous, presque tous les problèmes seront résolus.

  1. L'utilisateur fait une demande de domaine via une application comme un navigateur.
  2. Linux lit par défaut /etc/resolv.conf pour résoudre le DNS (ce fichier est lié symboliquement à /run/systemd/resolve/stub-resolv.conf).
  3. /run/systemd/resolve/stub-resolv.conf est configuré sur 127.0.0.53, ce qui signifie que le systemd-resolved entre en jeu.
  4. Le systemd-resolved du système est contrôlé par le fichier de configuration /etc/systemd/resolved.conf.
  5. Cela signifie que systemd-resolved interroge le serveur DNS configuré dans /etc/systemd/resolved.conf,
  6. reçoit la réponse et termine la conversion du domaine vers l'adresse IP.

2. Résumé des composants clés

Comme expliqué ci-dessus, systemd-resolved a quatre fichiers de configuration clés. Comprendre le rôle de ces fichiers est essentiel.

2-1. /etc/resolv.conf

  • Emplacement traditionnel pour lire la liste des serveurs DNS dans le système Linux
  • Cependant, il doit exister en tant que lien symbolique pour des raisons de compatibilité avec systemd.
  • Doit être configuré comme suit pour fonctionner correctement : bash /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  • Ce fichier joue donc un rôle de médiateur entre les "applications traditionnelles et systemd-resolved" dans le système actuel.

2-2. /run/systemd/resolve/stub-resolv.conf

  • Contient les informations du serveur DNS local (127.0.0.53) géré par systemd-resolved.
  • Lorsque /etc/resolv.conf pointe vers ce fichier, toutes les requêtes DNS passent par systemd-resolved.

2-3. /etc/systemd/resolved.conf

  • Fichier de configuration principal de systemd-resolved.
  • Il permet de définir des éléments tels que DNS= et FallbackDNS= pour spécifier les priorités.
  • Un paramétrage permanent qui persiste après le redémarrage.

2-4. /run/systemd/resolve/resolv.conf

  • Fichier contenant la liste réelle des serveurs DNS gérée par systemd-resolved.
  • Les utilisateurs avancés peuvent relier ce fichier à /etc/resolv.conf pour faire des demandes directement au serveur DNS (configuration de contournement).

3. Exemples de problèmes : lorsque le serveur DNS configuré sur le routeur fourni par l'ISP est instable

  • Le serveur DNS de l'ISP principal de Corée, KT (par exemple : 168.126.63.1) est configuré sur le routeur, mais si je n'ai pas le droit de contrôler ce routeur directement, des problèmes DNS peuvent survenir de manière sporadique.
  • Le DNS de KT a une vitesse de réponse instable ou échoue souvent lors de la poignée de main UDP/TCP.
  • Si des messages comme ceux-ci apparaissent plusieurs fois dans les journaux de systemd-resolved, c'est un signe de problème : Using degraded feature set TCP instead of UDP for DNS server 168.126.63.1. Using degraded feature set UDP instead of TCP for DNS server 168.126.63.1.
  • En conséquence, l'échec de la résolution de domaine se traduit par l'impossibilité d'accéder au site web.

4. Serveurs DNS recommandés

Nom Adresse Caractéristiques
Google DNS 8.8.8.8, 8.8.4.4 Rapide et stable
Cloudflare DNS 1.1.1.1, 1.0.0.1 Rapidité et excellente protection de la vie privée
Quad9 9.9.9.9 Fournit un filtrage des menaces de sécurité

5. Comment configurer un DNS stable

  1. Ouvrir le fichier /etc/systemd/resolved.conf.
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
  1. Appliquer les paramètres.
sudo systemctl restart systemd-resolved
  1. Vérifiez que /etc/resolv.conf est correctement lié.
ls -l /etc/resolv.conf

→ Cela doit être lié à /run/systemd/resolve/stub-resolv.conf.

Si nécessaire, réinitialisez de force :

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

6. Faites attention à l'intervention de NetworkManager

Dans un environnement graphique, il peut arriver que NetworkManager écrase les DNS sur Ubuntu.

  • Si la configuration automatique du DNS est activée, il se peut que les paramètres de systemd-resolved soient ignorés.
  • Pour y remédier : bash nm-connection-editor → Éditer la connexion → Onglet IPv4 → Désactiver le DNS automatique → Saisir le DNS manuellement.

7. Conclusion

  • Comme des instabilités sont souvent signalées pour le DNS de KT, il vaut mieux éviter de l'utiliser.
  • La configuration DNS via systemd-resolved est un moyen puissant d'améliorer la stabilité sur Ubuntu.
  • En comprenant et en appliquant correctement les paramètres, vous pouvez réduire le stress causé par les échecs de résolution de domaine.

8. Commentaire de Jesse

Une configuration basée sur la compréhension est la plus puissante pour la sécurité et la maintenance. J'espère que cet article sera d'une aide précieuse pour ceux qui sont confus au sujet de la configuration DNS sur Ubuntu.