Aller au contenu principal

Création d'un serveur DNS

Pour ce tutoriel je me suis basé sur le tutoriel d'it-connect : https://www.it-connect.fr/dns-avec-bind-9/ pour plus de détails je vous invite grandement à suivre son tutoriel ! Je vais adapter à mon lab qui aura comme zone local : topaze.local mon serveur DNS dans le tuto sera vm-dns

Mise en place du serveur DNS Bind

# Installation de bind 9
sudo apt-get update
sudo apt-get install bind9 dnsutils

Les fichiers de configuration de Bind9

Les fichiers de configuration de Bind se trouvent dans le répertoire "/etc/bind" :

Par défaut, ce répertoire contient déjà un ensemble de fichiers de cofniguration. Vous devez savoir que :

Les fichiers "db.<nom>" correspondent aux fichiers de zones intégrés par défaut dans Bind. Vous pouvez vous en inspirer en tant que modèle pour la création de vos fichiers de zones.

Le fichier "named.conf" est le fichier de configuration principal de Bind9. Il contient des directives "include" pour charger 3 autres fichiers :

"named.conf.options" contient les options de configuration de Bind

"named.conf.local" sert à déclarer des zones

"named.conf.default-zones" contient la définition des zones inclus par défaut avec Bind.

Sauvegarde des fichiers de base

cd /etc/bind
cp named.conf.options named.conf.options.bkp
cp named.conf.local named.conf.local.bkp

La configuration globale de Bind

les options de configuration de Bind sont définies dans le fichier "named.conf.options".

On va éditer ce fichier pour lui donner cette forme là :

// Autoriser uniquement certains réseaux à solliciter ce DNS
acl "lan" {
192.168.1.0/24;
localhost;
localnets;
};

options {
directory "/var/cache/bind";

// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113

// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0s placeholder.

// forwarders {
// 192.168.1.1;
// };

// Mode récursif, pour résoudre les noms externes
recursion yes;
//========================================================================
// 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
//========================================================================
// Active la validation DNSSEC (verifier authenticité des réponses DNS signées)
dnssec-validation auto;


// Ecouter sur toutes les interfaces réseau en IPv4 et IPv6
listen-on { any; };
listen-on-v6 { any; };


// Autoriser les requêtes pour les hôtes de lACL "lan"
allow-query { lan; };
};

Créer une nouvelle zone DNS

Déclarer la zone DNS

sudo nano /etc/bind/named.conf.local

Voici le contenu du fichier :

//
// 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 dns créée
zone "topaze.local" {
type master;
file "/etc/bind/db.topaze.local";
allow-update { none; };
};

Désormais, vous allez copier le fichier "db.local" pour l'utiliser comme base pour votre nouvelle zone :

sudo cp /etc/bind/db.local /etc/bind/db.topaze.local

Configurer la zone DNS

Nous allons modifier le fichier de zone pour le configurer et créer nos premiers enregistrements DNS. Nous verrons comment créer un enregistrement A, ainsi qu'un alias CNAME.

# ouvrir le fichier de zone
nano /etc/bind/db.topaze.local

Contenu du fichier :

; BIND data file for topaze.local
$TTL 604800
@ IN SOA vm-dns.topaze.local. dns.topaze.local (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS vm-dns.topaze.local.
vm-dns IN A 192.168.1.37
dns IN CNAME vm-dns

Enregistrez et fermez le fichier. Désormais, testez sa syntaxe avec la commande "named-checkzone"

named-checkzone topaze.local /etc/bind/db.topaze.local zone topaze.local/IN: loaded serial 2 OK

Démarrage de Bind9

La configuration est terminée, nous allons démarrer notre serveur Bind9 et activer son démarrage automatique. Exécutez les commandes suivantes :

sudo systemctl start bind9
sudo systemctl enable named.service
sudo systemctl status bind9

Tester la résolution de noms Bind

Sur le serveur DNS lui-même, vous pouvez modifier la configuration réseau pour qu'il sollicite son propre résolveur DNS local pour la résolution des noms. Vous devez modifier le fichier de configuration "resolv.conf"

sudo nano /etc/resolv.conf

Contenu du fichier :

domain topaze.local
search topaze.local
nameserver 127.0.0.1

On peut ensuite tester avec l'outil nslookup

Créer une zone de recherche inversée

Pour finir, nous allons créer une zone de recherche inversée pour le réseau "192.168.1.0/24", correspondant au réseau local utilisé pour cette mise en pratique. Ceci permettra d'obtenir un nom d'hôte à partir d'une adresse IP, soit l'inverse du fonctionnement d'une zone de recherche directe.

Sur le même principe que pour la zone de recherche directe, nous allons créer cette fameuse zone. Commencez par éditer le fichier "named.conf.local" pour déclarer la zone :

sudo nano /etc/bind/named.conf.local

Contenu du fichier a ajouter :

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.reverse.topaze.local";
allow-update { none; };
};

puis il faut créer le fichier de la zone inversée :

sudo cp /etc/bind/db.topaze.local /etc/bind/db.reverse.topaze.local
sudo nano /etc/bind/db.reverse.topaze.local

contenu du fichier :

; BIND data file for topaze.local
$TTL 604800
@ IN SOA vm-dns.topaze.local. dns.topaze.local (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS vm-dns.topaze.local.
37 IN PTR vm-dns.topaze.local.

Quand c'est fait, enregistrez et fermez le fichier. Vérifiez la syntaxe du fichier :

named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.reverse.topaze.local
# puis on relance bind9
sudo systemctl restart bind9