Le fichier « resolv.conf » permet d’indiquer le ou les domaines de recherche et les différents serveurs DNS à utiliser.
Ainsi, lorsqu’un client recherche une adresse en dehors du nom de domaine local (google.fr par exemple), dnsmasq (l’application que nous allons utiliser pour les services de DHCP et de DNS) va interroger les serveurs listés dans resolv.conf. Dnsmasq va alors garder le résultat dans un cache pour les requêtes futures
Par exemple, dans un réseau local, nous pourrions avoir un serveur DNS à l’adresse 192.168.1.2 chargé de gérer le domaine « exemple.fr ». En cas de défaillance du DNS local, nous pourrions faire appel aux serveurs DNS de Google (ou du fournisseur d’accès). Dans ce cas, le contenu du fichier « /etc/resolv.conf », pourrait ressembler à cela :
nameserver 192.168.1.2
nameserver 8.8.8.8
nameserver 8.8.4.4
search exemple.fr
La première ligne indique l’adresse du serveur DNS du réseau local. En cas de défaillance de ce serveur, les serveurs suivants seront utilisés.
La dernière ligne permet d’indiquer le nom du domaine géré par le serveur DNS local. Par exemple, si nous cherchons à contacter le serveur « MonServeur », le système cherchera en fait à contacter l’adresse complète « MonServeur.exemple.fr », car le nom du serveur indiqué ne comportait pas le domaine de recherche.
Présentation et installation de resolvconf
Le paquet « resolvconf » permet de gérer très finement le contenu du fichier « /etc/resolv.conf » servant à la résolution des noms en fonction du type de connexion utilisé et en récupérant les informations à différents endroits statiques ou dynamiques (clients ppp, dhcp ou autres).
sudo aptitude install resolvconf
Sur ma machine, le paquet était déjà installé.
Une fois le paquet « resolvconf » installé, il ne faut plus modifier le fichier « /etc/resolv.conf », car le contenu de celui-ci sera automatiquement géré et remplacé par « resolvconf ».
Utilisation de resolvconf avec une interface de type « eth0 »
Le configuration de ce type d’interface est faite dans le fichier « /etc/network/interfaces ».
Par exemple, pour une interface de type « eth0 », il faut ajouter les lignes « dns-nameservers » et « dns-search » au contenu du fichier « /etc/network/interfaces ». Exemple
iface eth0 inet dhcp
dns-nameservers 192.168.1.2 8.8.8.8 8.8.4.4
dns-search exemple.fr
Pour vérifier que tout fonctionne correctement, il faut commencer par désactiver l’interface « eth0 » :
sudo ifdown eth0
Après cette commande, le fichier « /etc/resolv.conf » doit être vidé et devrait donc ressembler à cela :
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
Et après l’activation de l’interface « eth0 » :
sudo ifup eth0
Le fichier « /etc/resolv.conf » devrait ressembler à cela :
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.2
nameserver 8.8.8.8
nameserver 8.8.4.4
search exemple.fr
Remarque : Il est possible de personnaliser le message d’avertissement des deux premières lignes (pour le mettre par exemple en français) en modifiant le contenu du fichier « /etc/resolvconf/resolv.conf.d/head »