Pour pouvoir communiquer, chaque machine présente sur un réseau doit avoir un identifiant unique, on parle alors d’adresses IP. Cependant pour un utilisateur, il est impensable de retenir les adresses IP de chaque ordinateur. C’est pourquoi des mécanisme de résolution de noms ont été mis en place. Un mécanisme de résolution de noms permet de traduire des noms en adresses IP et inversement.

Configuration de base du serveur

Avant d’installer le service DNS sur le serveur, il est nécessaire de paramétrer quelque fichier de configuration.

On commence par modifier le fichier hostnamequi permet de définir le nom de la machine. Il sera nécessaire d’y placer le nom FQDN du serveur(serveurDNS.sio.tp)

vim /etc/hostname

serveurDNS.sio.tp # Ajout du nom FQDN du serveur

On redémarre ensuite le service hostname.sh

service hostname.sh stop
service hostname.sh start

Nous allons ensuite modifier le fichier/etc/hosts. Ce fichier permet une résolution locale des noms à partir des adresses IP sans utiliser le service DNS.

vim /etc/hosts

127.0.0.1       localhost
127.0.1.1       serveurDNS.sio.tp # On modifie le hostname de la machine par le nom FQDN de celle-ci
172.16.94.241 	serveurDNS.sio.tp # On ajoute l'adresse de notre machine.

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Enfin, il est également nécessaire de configurer le fichier /etc/resolv.conf pour que le serveur soit intégré à la future zone DNS.

Pour l’instant, seul le serveur DNS actuel sera précisé ici.

vim /etc/resolv.conf

domain sio.tp
search sio.tp
nameserver 172.16.94.241

Installation de Bind9 et DNSutils:

apt install bind9 dnsutils

On va ensuite sauvegarder notre fichier d’origine:

cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak

Maintenant nous allons déclarer les deux zones DNS dans le fichier /etc/bind/named.conf.local. Ici nous déclarons deux zones, la zone sio.tp et la zone inverse associée 94.16.172.in-addr.arpa. qui va permettre effectuer la traduction des adresse en nom de domaine

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "sio.tp" {
        type master;
        file "/etc/bind/db.sio.tp";
};

zone "94.16.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.94.16.172.in-addr.arpa";
};

Nous allons ensuite modifier la configuration du fichier /etc/bind/named.conf.options . Ces options sont là pour indiquer au service la manière dont il doit se comporter. Ici, nous allons rajouter les directives version none; pour masquer la version du service et recursion none; pour que le serveur ne soit pas récursif et ainsi se prémunir du risque d’utilisation malveillante du serveur DNS, par exemple pour des attaques par amplification DNS.

vim /etc/bind/named.conf.local

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        listen-on-v6 { any; };
        version none; #masque la version du service
        recursion none; # bloque la récursivité du service
};

Nous allons maintenant créer les zones. Pour ce faire, il faut créer un fichier de zone.

  • fichier de zone /etc/bind/db.sio.tp
vim /etc/bind/db.sio.tp

$TTL 10800
$ORIGIN sio.tp.
@	IN SOA serveurDNS.sio.tp. root.sio.tp. (
	2019091101; # Numéro de série
	3h; # temps de rafraichissement
	1h; # temps entre les essais
	1w; # temps d'expiration
	1h); # valeur TTL minimum
@	IN NS serveurDNS.sio.tp.

# On ajoute ensuite les enregistrements DNS
serveurDNS			IN A 172.16.94.241
stationLinux		IN A 172.16.94.81
stationW7			IN A 172.16.94.82
  • fichier de zone /etc/bind/db.94.16.172.in-addr.arpa

Toute la première partie, est identique au fichier précèdent.

vim /etc/bind/db.94.16.172.in-addr.arpa

$TTL 10800
$ORIGIN 94.16.172.in-addr.arpa.
@	IN SOA serveurDNS.sio.tp. root.sio.tp. (
	2019091101; # Numéro de série
	3h; # temps de rafraichissement
	1h; # temps entre les essais
	1w; # temps d'expiration
	1h); # valeur TTL minimum
@	IN NS serveurDNS.sio.tp.

# Traduction de l'adresse IP en nom d'hôte
241			IN 		PTR 	serveurDNS.sio.tp.
81			IN		PTR		stationLinux.sio.tp.
82			IN 		PTR		stationW7.sio.tp.

Les fichiers de zones DNS directes et inverses sont à présent créés, il ne reste plus qu’a tester leur configuration et leur fonctionnement.

Pour ce faire, on peut utiliser la commande named-checkconf -z. Cette commande permet de détecter les erreurs. Ci-dessous un exemple de retour de la commande avec une bonne configuration.

checkconfzone

Nous pouvons dès à présent recharger la configuration de BIND avec la commande suivante:

/etc/init.d/bind9 restart

Dès à présent notre service DNS fonctionne et permet aux machines d’obtenir la résolution des zones définies en utilisant le serveur DNS.

Pour tester le bon fonctionnement du service, on utilise la commande dig.

dig serveurDNS.sio.tp # test de la résolution DNS vers le nom d'hôte
dig 172.16.94.241.sio.tp # test de la résolution DNS vers l'adresse IP

digserveurDNS

La résolution DNS s’effectue bien, je test maintenant sur les autres machines que j’ai déclarées.

Le test est positif, je vais maintenant effectuer un ping depuis une machine cible déclarer dans notre zone DNS.

ping 172.16.94.241 # test de ping sur l'IP du serveur DNS
ping serveurDNS # test de ping sur le nom d'hôte du serveur DNS

testpingAddr