Le service DNS est primordial dans le fonctionnement d’Internet. Il permet de résoudre les FQDN (Fully Qualified Domain Names) en adresses IP.

Mon environnement de travail est sur mon serveur Proxmox, dans lequel j’ai créé trois machines: la première sera mon serveur DNS, les deux autres seront des clients que je vais nommer respectivement Web1 et Web2.

Les configurations réseaux seront les suivantes:

  • Réseau LAN: 192.168.15.0/24
  • IP serveur DNS: 192.168.15.102
  • Web1: 192.168.15.108
  • Web2: 192.168.15.109
  • Domaine: manon.tp

Dans un premier temps, modification du resolv.conf et du hostname.

Editer le fichier /etc/hostname dans lequel est ajouté le FQDN du serveur:

bind.manon.tp

Editer le fichier /etc/hosts pour ajouter le FQDN du serveur et l’associer à son adresse IP:

127.0.0.1       localhost
127.0.0.1       bind.manon.tp
192.168.15.102  bind.manon.tp

Editer le fichier /etc/resolv.conf

search manon.tp
domain manon.tp
nameserver 192.168.15.102

Dans le CT serveur DNS, faire les mises à jour puis installer bind:

apt update && apt upgrade -y
apt install bind9 bind9utils bind9-doc

Dès que l’installation est terminée, le service est fonctionnel, vérifier avec la commande:

systemctl status bind9

Edition du fichier /etc/bind/named.conf.options

Editer ce fichier pour ajouter les options de configuration:

  • Une directive acl qui va définir le LAN
  • Une directive allow-query qui indique quelles adresses IP peut envoyer des requêtes DNS au serveur
  • Une directive forwarders qui désigne un autre serveur DNS auquel Bind enverra les requêtes DNS récursives
  • Une directive recursion pour autoriser les requêtes DNS récursives

Le fichier doit ressembler à l’exemple ci-dessous:

//Allow only LAN traffic from 192.168.15.0 - 192.168.15.255
acl LAN {
192.168.15.0/24;
};

options {
        directory "/var/cache/bind";
        allow-query { localhost; LAN; };
        
        forwarders {
                192.168.1.254;
        };

        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
        //========================================================================
        dnssec-validation auto;

        listen-on-v6 { any; };
};

L’adresse IP indiquée à la ligne “forwarders” correspond à l’adresse IP du VMBR1.

Après l’enregistrement des modifications, exécuter la commande:

named-checkconf /etc/bind/named.conf.options

La commande ne retourne rien quand tout est OK.

Editer le fichier /etc/bind/named.conf.local

Ce fichier est utilisé pour définir les zones DNS locales pour un domaine privé. Nous allons le modifier pour inclure les zones forward et les zones reverse DNS.

Ajouter les lignes suivantes dans le fichier:

zone "manon.tp" IN {
       type master;
       file "/etc/bind/zones/manon.tp";
};

zone "15.168.192.in-addr.arpa" IN {
       type master;
       file "/etc/bind/zones/manon.tp.rev";
};

Utiliser la même commande pour vérifier la syntaxe du fichier:

named-checkconf /etc/bind/named.conf.local

Création d’un répertoire pour les fichiers de zones

mkdir /etc/bind/zones

Création du fichier de zone forward en copiant le fichier db.local

cp /etc/bind/db.local /etc/bind/zones/manon.tp

Puis édition de ce fichier:

$TTL    604800
@       IN      SOA     manon.tp. root.manon.tp. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; Enregistrement du nom du serveur
@       IN      NS      bind.manon.tp.
; enregistrement pour le nom du server
bind       IN      A       192.168.15.102

; Enregistrements pour les clients
web1    IN      A       192.168.15.108
web2    IN      A       192.168.15.109

Checker la configuration avec la commande:

named-checkzone manon.tp /etc/bind/zones/manon.tp

Le résultat de la commande doit ressembler à:

# Commande:
named-checkzone manon.tp /etc/bind/zones/manon.tp
# Résultat:
zone manon.tp/IN: loaded serial 2
OK

Création du fichier de zone inverse

Les fichiers de zones inverses permettent la résolution des adresses IP en FQDN.

Dans un premier temps, copier le fichier db.127:

cp /etc/bind/db.127 /etc/bind/zones/manon.tp.rev

Puis modifier la copie afin qu’elle ressemble à ce qui suit:

$TTL    604800
@       IN      SOA     manon.tp. root.manon.tp. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

; enregistrement du nom du serveur
@       IN      NS      bind.manon.tp.

;enregistrement pour le serveur
bind    IN      A       192.168.15.102

; enregistrement inverse (PTR) pour le nom du serveur
102     IN      PTR     bind.manon.tp

;enregistrements PTR pour les clients
108     IN      PTR     web1.manon.tp
109     IN      PTR     web2.manon.tp

Utiliser la commande pour vérifier la configuration:

named-checkzone manon.tp /etc/bind/zones/manon.tp.rev

Le retour de la commande devrait ressembler à:

#CMD
named-checkzone manon.tp /etc/bind/zones/manon.tp.rev 
# retour CMD
zone manon.tp/IN: loaded serial 1
OK

Redémarrer le service Bind:

systemctl restart bind9

Le serveur est prêt et fonctionnel, maintenant configuration des clients.

Configuration des clients web1 et web2

Les clients ne sont pas encore configurés pour utilisés le serveur qui a été mis en place précédemment, ils utilisent toujours la configuration DNS de l’hôte (PMX).

Les commandes / modifications de fichiers sont à effectuer sur les deux serveurs clients.

Modifier le fichier /etc/resolv.conf:

search manon.tp
nameserver 192.168.15.102

Dans un premier temps, récupérer le nom de l’interface réseau en tapant la commande suivante:

ip -brief addr show to 192.168.15.0/24

Dans mon cas, le résultat de la commande est:

eth0@if10        UP             192.168.15.108/24 

Ensuite modifier le fichier yml dans /etc/netplan. Ce fichier ressemble à:

network:
  version: 2
  ethernets:
    eth0@if10:
      addresses: [192.168.15.108/24] # adresse du client
      routes:
      -   to: 0.0.0.0/0
          via:  192.168.1.254 # adresse de la passerelle par defaut (VMBR1)
      dhcp4: false
      nameservers:
        addresses: [192.168.15.102] # adresse du serveur bind
        search: [manon.tp] # zone DNS privee

Pour tester la bonne syntaxe du fichier yml utiliser la commande:

netplan try

La sortie de la commande devrait être similaire à:

Cliquer sur entrer pour accepter la nouvelle configuration.

Tester la configuration des clients

Maintenant que les clients ont leur configuration mise à jour, nous allons la tester avec les commandes suivantes:

nslookup web1
nslookup web2
nslookup bind
nslookup web1.manon.tp
nslookup web2.manon.tp
nslookup bind.manon.tp

Le retour doit être de ce type:

Server:         192.168.15.102
Address:        192.168.15.102#53

Name:   web2.manon.tp
Address: 192.168.15.109

Le serveur DNS Bind9 est maintenant configuré et prêt à être résoudre des noms de domaines en adresses IP.

Catégories : Proxmox