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.