Configurer des adresses statiques de serveurs DNS

Objectif de cet article : configurer les adresses statiques des serveurs DNS utilisés par notre PC. Les manipulations seront réalisées sous Debian Jessy.

Le serveur DNS est un service qui a pour rôle de fournir à votre PC, sur sa demande, l’adresse IP correspondante à un nom de domaine particulier. Sur Internet, il y a divers serveurs prêt à répondre. Le plus connu étant sans doute celui de Google : 8.8.8.8

Pour qu’une machine puisse communiquer sur un réseau, il lui faut disposer d’un certain nombre d’information.

Pour réduire les taches d’administration et les erreurs de configuration, classiquement, c’est votre BOX Internet qui fournit au PC (tablette etc…) ces informations.

Le client DHCP (qui se nomme dhclient sous linux, de l’Internet Systems Consortium), envoi un requête DHCP sur le réseau pour obtenir ces infos listées ci-dessous.

Traditionnellement, les informations demandées sont envoyés dans la réponse du serveur DHCP. A la maison c’est souvent la BOX qui fait office de serveur DHCP.

Voici un exemple d’éléments qui peuvent être présents dans un réponse :

  1. une adresse IP (ex : 192.168.1.10)
  2. un masque de sous réseau (ex : 255.255.255.0)
  3. une passerelle par défaut ( ex : 192.168.1.1 (la box))
  4. une (ou plusieurs) adresse de serveur DNS (souvent par défaut c’est celui de votre opérateur).

Parfois, et pour diverses raisons, on souhaiterait plutôt utiliser des adresses de serveurs DNS personnalisés. En effet, cela peut être utile si l’on souhaite utiliser les mêmes serveurs DNS indépendemment du réseau sur lequel on se trouve. Ca peut également être utile pour des questions de vie privée, contourner de la censure etc…

La solution la plus simple est d’aller modifier manuellement le fichier qui contient les infos relatives aux serveurs DNS utilisés par votre PC, à savoir le fichier /etc/resolv.conf

Le soucis est que ce fichier est modifier dynamiquement par le client DHCP à l’initialisation de la carte réseau. Pour résumer à chaque redémarrage le contenu du fichier est modifié. En effet, par défaut celui-ci récupère les infos DNS envoyés dans la réponse DHCP, puis il renseigne le fichier resolv.conf.

Passons à la pratique :

Voici le contenu du fichier resolv.conf :

tp@debian-vm:~$ cat /etc/resolv.conf
nameserver 192.168.1.1

Dans ce cas, les demandes DNS sont envoyées à la BOX Internet (dont l’adresse est 192.168.1.1) qui est ensuite en charge de les transmettre au serveur DNS de votre fournisseur d’accès.

J’édite le fichier pour en modifier manuellement l’adresse de DNS (la ligne nameserver)

tp@debian-vm:~$ sudo nano /etc/resolv.conf

Puis on modifie l’adresse IP du DNS

nameserver 192.192.192.192

On enregistre puis on quitte.

Je relance le client DHCP à la main :

tp@debian-vm:~$ sudo dhclient eth0

Je consulte le contenu de resolv.conf :

tp@debian-vm:~$ cat /etc/resolv.conf
nameserver 192.168.1.1

On voit bien que l’adresse de serveur DNS a changé. Dhclient l’ayant modifiée pour y inscrire celle reçue dans la réponse du serveur DHCP.

Ok super c’est mignon tout ça, mais comment fait-on alors ? Pas de panique on y arrive -_-‘

Pour personnaliser le fichier resolv.conf et rendre cette configuration persistante indépendemment de la réponse du serveur DHCP, il existe plusieurs méthodes.

  • La première consiste à protéger le fichier resolv.conf contre l’écriture :

Pour ce faire, on utilisera la commande chattr (pour CHange ATTRibute). Bon je procède de la même manière que précédemment; je modifie à la main le fichier resolv.conf :

nameserver 192.192.192.192

On peut à présent “protéger” le fichier :

tp@debian-vm:~$ sudo chattr +i /etc/resolv.conf

L’option +i permet de protéger le fichier passé en paramètre contre toute écriture. Même celle de root -_-‘

On relance le client DHCP :

tp@debian-vm:~$ sudo dhclient eth0
mv: cannot move ‘/etc/resolv.conf.dhclient-new’ to ‘/etc/resolv.conf’: Operation not permitted

Je pense qu’il n’est pas nécessaire de faire de commentaire 

Mais vérifions quand même pour être rigoureux jusqu’au bout :

tp@debian-vm:~$ cat /etc/resolv.conf
nameserver 192.192.192.192

Le fichier n’a pas été modifié. Donc opération réussie 

Alors pour retrouver les attributs antérieurs à la commande chattr, il faut invoquer la même commande avec l’option -i :

tp@debian-vm:~$ sudo chattr -i /etc/resolv.conf

tp@debian-vm:~$ sudo dhclient eth0

tp@debian-vm:~$ cat /etc/resolv.conf
nameserver 192.168.1.1

  • Seconde possibilité, configurer le fameux client DHCP pour lui indiquer quoi faire lorsque la situation se présente :

Le fichier de configuration se trouve dans /etc/dhclient.conf ou /etc/dhcp/dhclient.conf. Pour ma part, sous Debian, il se trouve dans ce dernier répertoire.

En effet, dans ce fichier, nous pourrons dire au client DHCP de ne pas mettre à jour l’adresse (ou les adresses) du serveur DNS.

Pour ce faire, utiliser l’option “supersede” dans le fichier dhclient.conf :

tp@debian-vm:~$ sudo nano /etc/dhcp/dhclient.conf

Puis ajouter cette ligne en personnalisant les adresses de DNS :

supersede domain-name-servers 1.2.3.4, 5.6.7.8;

On redemarre ensuite le service réseau pour forcer la carte à reformuler un demande d’infos IP :

tp@debian-vm:~$ sudo /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.

Résultat :

tp@debian-vm:~$ cat /etc/resolv.conf
nameserver 1.2.3.4
nameserver 5.6.7.8

  • Alternative : adresses personnalisées + celles proposées par le serveur DHCP

En revanche, si vous souhaitez utiliser des adresses personnalisées de serveurs DNS  et garder en repli la ou les adresses fournies par le serveur DHCP, vous devriez plutôt utiliser l’option “prepend” en lieu et place de la commande précédente :

Ajouter au fichier dhclient.conf la ligne suivante :

prepend domain-name-servers 4.3.2.1, 8.7.6.5;

Résultat :

tp@debian-vm:~$ sudo /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.

tp@debian-vm:~$ cat /etc/resolv.conf

nameserver 4.3.2.1
nameserver 8.7.6.5
nameserver 192.168.1.1

Pour plus d’options vous pouvez consulter le manuel de dhclient.conf

Il y a d’autres possibilités mais je pense que ces deux méthodes permettent de répondre aux besoins du plus grand nombre. J’espère que cet article est clair 😉 N’hesitez pas à laisser des commentaires.

Laisser un commentaire