systemd et DNS /etc/resolv.conf

Lieu "à la mode" pour discuter et débattre sur les logiciels libres, les distributions linux, etc...
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 532
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

systemd et DNS /etc/resolv.conf

Message par le Manchot Masqué » ven. 01 juin 2018, 11:36

Aux temps préhistoriques des premiers ordinosaures, /etc/resolv.conf contenait quelque chose du genre

Code : Tout sélectionner

search mondomaine.lan
nameserver vers_ip_dns_1
nameserver vers_ip_dns_2
C'était simple à comprendre et à utiliser pour les administrateurs, et ça suffisait largement.

Puis est venu le paquet resolvconf, qui était déjà une surcouche inutile.

Puis sont venus le couple network-manager/dnsmasq, avec un network-manager qui centralisait visuellement les configurations (progrès non négligeable), et qui gardait l'intelligence de proposer d'ignorer dnsmasq pour la résolution des noms.

Mais depuis avec la Ubuntu 18.04, voilà que les nouvelles distributions GNU/Linux en remettent une couche, avec les démons systemd-networkd et system-resolved, intégrés dans le paquet systemd de base, et qui transforment le /etc/resolv.conf en :

Code : Tout sélectionner

nameserver 127.0.0.53
le 127.0.0.53 étant fourni par system-resolved

En clair, systemd, sensé s'occuper uniquement des services au démarrage de la machine, bafoue ouvertement la philosophie KISS (Keep is Simple Stupid = gardez le simplement stupide = faire une chose et une seule, mais la faire bien) historique d'UNIX, qui a largement démontré sa supériorité dans la pratique.

En faisant cela, le promoteur principal de systemd (RedHat pour ne pas le nommer), se permet ici d'imposer un nouveau système de gestion des DNS, encore très loin d'être au point dans la pratique, car créant pas mal de conflits avec l'existant.
Exemple constaté : le nouvel outil n'est même pas capable de tenir des DNS renseignés en static dans /etc/network/interfaces ! Lamentable ! Il faut se farcir les modifs dans /etc/systemd/resolved.conf, et autres configurations spécifiques dans /etc/systemd/network/, avec toute la complexité inutile que cela amène en sus.

Heureusement : on peut virer ce bousin avec :

Code : Tout sélectionner

systemctl stop systemd-resolved
systemctl stop systemd-networkd
systemctl disable systemd-resolved
systemctl disable systemd-networkd
mais le mal est fait : RedHat commence à aller trop loin, et systemd à devenir emmerdant. Or nous n'aimons pas les emmerdes sous GNU/Linux, mais les choses qui fonctionnent, et qui sont simples à maintenir.
Raison pour laquelle garder un oeil sur le fork Devuan (clone de Debian qui utilise encore initd à la place de systemd) pourrait s'avérer très utile dans les prochaines années...

Mais pour en venir à notre Ubuntu, pour le moment, deux solutions simples s'offrent à nous :
- soit on a une configuration serveur statique, et dans cas, de toute façon, le network-manager et les deux services systemd concernés sont inutiles de fait, donc on les vire. Le plus simple est alors de construire son /etc/resolv.conf à la main.
- soit on a une configuration client classique (la machine de Mme Michu), et on veut garder son network-manager pour surfer dans différents endroits. On force alors l'utilisation des DNS indiqués dans les configurations du Network Manager en rajoutant la ligne

Code : Tout sélectionner

dns=default
dans la section [main] de /etc/NetworkManager/NetworkManager.conf, et en relançant le service avec :

Code : Tout sélectionner

service network-manager restart
On va bien voir comment les choses évolueront dans les prochains mois, mais en attendant, on a vraiment cette mauvaise impression que les concepteurs de systemd veulent désormais contrôler tous les autres services, en éradiquant un network-manager qui a fait ses preuves, et s'avère indispensable dans la pratique aux nomades sous ordinateurs portables.

Mais peut-être y a t'il des avis moins tranchés que le mien ?
En tout cas, si vous rencontrez aussi des problèmes de DNS, c'est le bon endroit pour déballer ! ;)

Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 532
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Re: systemd et DNS /etc/resolv.conf

Message par le Manchot Masqué » lun. 04 janv. 2021, 20:01

Je déterre ce post qui a 2,5 ans mais le fait est que la guerre continue entre l'équipe de Gnome, l'équipe de Redhat/IBM, et les autres pour savoir qui contrôlera les interfaces réseau, et notamment le fichier clef /etc/resolv.conf, qui s'occupe de la résolution de noms de domaines (DNS).

J'ai récemment découvert par hasard, avec le pinephone, que network-manager avait son dhclient interne (ça doit dater d'un moment déjà j'imagine, mais je n'avais pas noté la possibilité), ce qui complique encore les choses, puisqu'on perd le dhclient dans la liste des processus.

Pour en revenir au fonctionnement classique, (après avoir viré dnsmasq, resolvconf, netplan, et désactivé systemd-resolved), avec un network-manager qui arrête d'emmerder le monde avec son nameserver 127.0.0.53, et retrouver directement les DNS propagés par DHCP
il suffit de rajouter les lignes

Code : Tout sélectionner

dhcp=dhclient
dns=default
dans la section [main] de /etc/NetworkManager/NetworkManager.conf, et de relancer évidemment le service...

Répondre