La résolution de nom est le processus en charge de faire correspondre les noms logiques (plus simple à utiliser pour désigner des ressources réseau) aux adresses IP nécessaire aux communications.
En amont de l'usage du service DNS, le système peut utiliser des fichiers locaux pour résoudre des noms de machine : l'ordre de consultation des services de résolution est définit dans le fichier de configuration /etc/nsswitch.conf
Traditionnellement le fichier de configuration statique permettant de définir quels serveurs de noms (DNS) doivent être utilisés par le système est /etc/resolv.conf
Dans sa forme la plus simple, le fichier peut avoir le contenu suivant:
nameserver 208.67.222.222
Dans ce premier exemple un seul serveur de nom est déclaré, il est possible d'en déclarer un deuxième qui sera utilisé par le système si le premier n'est pas accessible:
nameserver 208.67.222.222 nameserver 208.67.220.220
La directive search permet de définir un ou plusieurs nom de domaines à accoler à un nom qui n'est pas pleinement qualifié.
search example.lan lan nameserver 127.0.0.1
Dans certains cas, il peut être utile d'interdire la modification du fichier:
chattr +i /etc/resolv.conf
Après arrêt et redémarrage de l'interface via les commandes ifdown et ifup, le client DHCP ne peut plus modifier le fichier /etc/resolv.conf, un message de la forme suivante est retourné
mv: cannot move '/etc/resolv.conf.dhclient-new.39068' to '/etc/resolv.conf': Operation not permitted bound to 192.168.1.33 -- renewal in 34120 seconds
Si on affiche
# Le fichier resolv.conf n'est pas modifié mais le fichier temporaire existe toujours: ls /etc/resolv.* /etc/resolv.conf /etc/resolv.conf.dhclient-new.39068 # contenu du fichier temporaire cat /etc/resolv.conf.dhclient-new.39068 nameserver 192.168.1.1
Pour éviter la création de fichiers temporaire a chaque renouvellement du bail DHCP, il faut modifier le fonctionnement du client DHCP.
Le client DHCP invoque un script lui permettant de configurer les interfaces réseaux. Ce script a pour rôle de demander une adresse IP au serveur, de tester la connectivité et de finaliser les paramétrages. Son fonctionnement est critique pour le service, il ne doit pas être directement modifié. Si des paramétrages spécifiques doivent être apportés localement, ils peuvent être apportés grâce aux fonctions d'accroche fournies (hooks). Ces hooks permet à l'utilisateur de redéfinir le comportement du client DHCP qui par défaut crée un fichier /etc/resolv.conf lorsqu'il démarre via une fonction shell nommée make_resolv_conf. Pour éviter la modification du fichier resolv.conf on va redéfinir la fonction dans le
vim /etc/dhcp/dhclient-enter-hooks.d/no-dns-update
!/bin/sh make_resolv_conf(){ : }
Rendre le script exécutable
chmod go+rx no-dns-update