Menu Fermer

Le fichier /etc/resolv.conf dans Linux

Chaque fois que des applications effectuent une recherche DNS dans le système d’exploitation Linux, les fichiers de configuration tels que /etc/hosts et /etc/resovl.conf entrent en jeu pour résoudre le nom DNS.
Dans Linux pour l’ordre de recherche DNS, il utilise le fichier /etc/nswitch.conf.

Dans ce tutoriel, nous allons nous intéresser aux fichier /etc/resolv.conf.
Notamment, qu’est-ce que /etc/resolv.conf et à quoi sert ce fichier système.

Le fichier /etc/resolv.conf dans Linux

Qu’est-ce que et à quoi sert le fichier /etc/resolv.conf

Le fichier /etc/resolv.conf est un fichier texte qui stocke les adresses des serveurs DNS du système.
Chaque ligne du fichier représente un serveur DNS différent.
L’ordre des lignes de ce fichier détermine l’ordre dans lequel les serveurs DNS sont interrogés lors de la résolution des noms d’hôte. Par exemple, si vous avez deux serveurs DNS répertoriés dans votre fichier /etc/resolv.conf, le premier serveur sera interrogé en premier, et s’il n’est pas en mesure de résoudre le nom d’hôte, le deuxième serveur sera interrogé.

En plus de la liste des serveurs DNS, vous pouvez également utiliser le fichier /etc/resolv.conf pour configurer d’autres aspects de la résolution DNS sur votre système. Par exemple, vous pouvez utiliser ce fichier pour spécifier quel serveur DNS doit être utilisé pour résoudre certains types de requêtes, ou pour configurer la durée du système pour attendre une réponse d’un serveur DNS avant de retirer.

En résumé :

  • /etc/resolv.conf est un fichier de configuration utilisé pour résoudre les DNS pour les systèmes d’exploitation Linux et UNIX
  • Il est utilisé pour configurer les serveurs de noms DNS
  • Le fichier fichier /etc/resolv.conf contient des informations lues par les routines de résolution DNS du système
  • Le fichier est conçu pour être lisible par l’homme et contient une liste de mots clés avec des valeurs qui fournissent différents types d’informations de résolveur
  • Vous devez mettre à jour ce fichier avec votre propre serveur DNS de mise en cache ou serveur DNS de mise en cache ISPS que vous souhaitez utiliser le résolveur devrait interroger

Exemple de /etc/resolv.conf file dans Linux

La syntaxe du fichier /etc/resolv.conf est très simple :

nameserver <serveur DNS Primaire>
nameserver <serveur DNS Seconde>
search malekal.com

Par exemple avec les DNS Google :

nameserver 8.8.8.8
nameserver 8.8.4.4
search malekal.com

Les deux premières lignes indiquent via nameserver l’adresse des serveurs DNS du système.
Ils sont utilisés dans l’ordre.
Si le premier ne fonctionne pas (timeout), le second est pris. Vous pouvez en déclarer autant que vous voulez.
Il faut, au minimum, une entrée nameserver pour avoir un serveur DNS valide.

La troisième ligne de ce fichier est la ligne search, qui indique au système quel domaine doit être utilisé lors de la résolution des noms d’hôte qui ne sont pas entièrement qualifiés.
Par exemple, si vous essayez de pinguer “hôte” sans spécifier un domaine, le système va automatiquement rechercher «hote.malekal.com».
Vous pouvez supprimer cette ligne de votre fichier si vous ne souhaitez pas que le système effectue ce type de recherche. En effet, cette entrée search est facultative.

Connaître les serveurs DNS sur Linux dans /etc/résolv.conf

Visualiser le contenu du fichier vous permet de connaître les serveurs DNS dans Linux facilement.

Comment modifier /etc/resolv.conf

Un administrateur peut modifier /etc/resolv.conf à tout moment à l’aide d’un éditeur de texte.
Bien entendu, il faut respecter la syntaxe sous peine de rencontrer des erreurs DNS.

Assurez-vous de sauvegarder votre fichier /etc/resolv.conf avant d’apporter des modifications, car une erreur dans ce fichier peut causer de graves problèmes avec la résolution DNS sur votre système.
Une fois que vous avez apporté vos modifications, assurez-vous d’enregistrer le fichier et de redémarrer toutes les applications qui peuvent l’utiliser, telles que votre navigateur Web ou votre client de messagerie.

Vous pouvez aussi installer le paquet resolvonf.
Le package RESOLVCONF comprend une base de données simple pour les informations sur le serveur de noms d’exécution et un cadre simple pour notifier les applications des modifications de ces informations.
Pour cela, Resolvconf s’établit ainsi comme l’intermédiaire entre les programmes qui fournissent un serveur de noms informations et applications qui utilisent ces informations.

[//su_lien]Comment changer la configuration des serveurs DNS sur Linux[/su_lien]

Comment est généré /etc/resolv.conf

Le fichier /etc/resolv.conf peut être généré automatiquement au démarrage du système selon la configuration des interfaces réseaux.
Ainsi, les modifications effectuées manuellement peuvent être écrasées à chaque redémarrage.
La génération dépend de la distribution Linux et du système utilisé (systemd, NetworkManager, etc)

par systemd avec /etc/systemd/resolved.conf

Systemd peut générer un fichier /etc/resolv.conf à chaque démarrage de Linux en suivant les instructions contenues dans /etc/systemd/resolved.conf.
Cela se fait par les directives DNS et FallbackDNS :

[Resolve]
DNS=8.8.8.8
#FallbackDNS=

Par la configuration des interfaces réseaux (Debian)

Le fichier de configuration des interfaces différents d’une distribution Linux à l’autre.
Dans les distributions Debian, Ubuntu, Mint etc, il s’agit du fichier : /etc/network/interfaces

Dans ce dernier, on déclare les interfaces et dans celle-ci on peut déclarer les serveurs DNS avec dns-nameservers.
Par exemple ci-dessous, l’interface eth0 :

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search exemple.com
    dns-nameservers 192.168.3.45 192.168.8.10

Lorsque l’on redémarre le service networking, cela réinitialise le fichier /etc/resolv.conf.
Le contenu est alors à nouveau généré.

sudo service networking restart

Il est aussi possible de générer u nouveau fichier /etc/resolv.conf à l’aide de la commande resolvconf.

resolvconf -d eth0

NetworkManager

La configuration des DNS peut se faire aussi dans ce dernier et notamment dans le /etc/NetworkManager/NetworkManager.conf ou dans un sous-officier avec le nom de l’interface se trouvant dans /etc/NetworkManager/system-connections

Voici un exemple de fichier /etc/NetworkManager/system-connections/eno1.
Les serveurs DNS sont à modifier dans l’entrée dns=8.8.8.8;.

[connection]
id=eno1
uuid=4518f0a6-0500-4848-a849-85c0c6c389b6
type=802-3-ethernet
permissions=
secondaries=

[802-3-ethernet]
duplex=full
mac-address=XX:XX:XX:XX:XX:XX

[ipv4]
method=manual
addresses1=192.168.10.251;24;192.168.10.1;
dns=8.8.8.8;

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

Cas des serveurs DNS locaux (en 127.0.0.1)

Le fichier /etcresolv.conf peut retourner un nameserver avec une adresse loopback, par exemple 127.0.0.1.
Cela ne permet donc pas de savoir quels serveurs DNS sont utilisés par le système.

Connaître les serveurs DNS sur Linux dans /etc/résolv.conf

Lorsque l’adresse du serveur de nom est locale, un résolveur DNS interne au système est installé.
En général, il s’agit de Bind ou systemd-resolved
Par exemple, systemd-resolved est un service système qui fournit une résolution du nom de réseau aux applications locales. Il met en œuvre un résolveur de talons DNS / DNSSEC de mise en cache et de validation, ainsi qu’un LLMNR et Résolver et répondeur de MulticastDNS.
Dans ce cas là, vérifiez le contenu de /etc/systemd/resolved.conf si des serveurs DNS sont configurés dans ce dernier.

Si Bind est installé, vérifiez /etc/bind/named.conf.options et les forwarders.