Le DNS (Domain Name System) est un système dans lequel tous les noms de domaine des serveurs sont organisés selon une hiérarchie spécifique. Pourquoi en avons-nous besoin ? Imaginez devoir vous connecter à un appareil avec l’adresse IP 91.206.179.207. Vous pourriez saisir cette adresse dans la ligne de commande pour obtenir les informations nécessaires, mais mémoriser de nombreuses combinaisons numériques de ce type est très difficile. C’est pourquoi des serveurs spéciaux ont été créés pour convertir les noms de domaine en adresses IP. Ainsi, lorsque vous saisissez hostman.com dans la barre d’adresse de votre navigateur, la requête est envoyée à un serveur DNS, qui recherche une correspondance dans sa base de données. Le serveur DNS renvoie ensuite l’adresse IP requise à votre appareil, et ce n’est qu’alors que le navigateur accède directement à la ressource.
Configurer votre propre DNS permet une configuration du système plus flexible et plus précise, tout en évitant la dépendance à des tiers. Dans cet article, nous allons voir comment configurer le DNS à l’aide du serveur de noms BIND sur Ubuntu.
Zone : Partie de la hiérarchie DNS hébergée sur un serveur DNS. Elle définit les limites dans lesquelles un serveur ou un groupe de serveurs est responsable.
Serveurs racine : Serveurs DNS contenant des informations sur les domaines de premier niveau (.ru, .com, etc.).
Domaine : Partie nommée de la hiérarchie DNS, un nœud spécifique pouvant inclure d’autres nœuds. Les adresses DNS se lisent de droite à gauche et commencent par un point, les domaines étant également séparés par des points. Par exemple, le domaine poddomen.domen.ru doit être lu comme .ru.domen.poddomen. En général, le nom de domaine reflète la structure de la hiérarchie DNS, mais le point final est omis.
FQDN (Fully Qualified Domain Name) : Nom de domaine entièrement qualifié, incluant tous les domaines parents.
Enregistrement de ressource (Resource Record) : Unité de stockage d’informations, c’est-à-dire un enregistrement qui associe un nom à des informations de service. Il se compose de :
Nom (NAME) : Le nom ou l’adresse IP propriétaire de la zone
Time to Live (TTL) : Durée pendant laquelle un enregistrement est conservé dans le cache DNS avant d’être supprimé
Classe (CLASS) : Type de réseau, généralement IN (Internet)
Type (TYPE) : Fonction de l’enregistrement
Données (DATA) : Informations supplémentaires
Enregistrement A : Associe un nom d’hôte à une adresse IPv4. Chaque interface réseau ne peut avoir qu’un seul enregistrement A.
website.com. 520 IN A 91.206.179.207
Enregistrement AAAA : Identique à l’enregistrement A, mais pour IPv6.
CNAME : Enregistrement de nom canonique, alias d’un nom réel utilisé pour la redirection.
MX : Spécifie les serveurs de messagerie du domaine. Le champ NAME contient le domaine de destination et le champ DATA indique la priorité et l’hôte recevant les e-mails.
website.com. 17790 IN MX 10 mx.website.com.
website.com. 17790 IN MX 20 mx2.website.com.
NS : Indique le serveur DNS qui gère le domaine.
PTR : Associe une adresse IP à un nom de domaine (résolution inverse).
SOA : Décrit les paramètres principaux de la zone.
SRV : Contient les adresses des serveurs fournissant des services internes au domaine, comme Jabber.
Pour suivre les instructions de cet article, vous avez besoin d’au moins deux serveurs Ubuntu dans le même centre de données. Chacun de ces serveurs peut être commandé chez Hostman.
Nous utiliserons deux serveurs Ubuntu 20.04 servant de serveurs DNS primaire et secondaire, respectivement ns1 et ns2. De plus, d’autres serveurs utiliseront les serveurs DNS configurés.
Vous devez disposer des privilèges superutilisateur sur chaque serveur.
Nous utiliserons bind9 comme serveur DNS. Installez le paquet bind9 depuis le dépôt Linux :
sudo apt update && sudo apt upgrade -y
sudo apt install bind9
Il est également recommandé d’installer des outils de surveillance réseau :
sudo apt install dnsutils
Après l’installation, démarrez le service bind9 :
sudo service bind9 start
Le fichier de configuration principal du serveur est /etc/bind/named.conf. Il décrit les paramètres généraux et est généralement divisé en plusieurs fichiers pour plus de commodité.
Ce fichier contient les paramètres généraux du serveur :
options {
dnssec-validation auto;
auth-nxdomain no;
directory "/var/cache/bind";
recursion no; # désactiver les requêtes récursives vers le serveur
listen-on {
172.16.0.0/16;
127.0.0.0/8;
};
forwarders {
172.16.0.1;
8.8.8.8;
};
};
Pour vérifier que tout est correctement configuré, utilisez l’utilitaire named-checkconf :
sudo named-checkconf
S’il n’y a pas d’erreurs, le serveur BIND commencera à fonctionner.
Le serveur DNS primaire stocke la copie principale du fichier de zone. Toutes les zones seront stockées dans le répertoire /etc/bind/master-zones. Créez ce répertoire :
sudo mkdir /etc/bind/master-zones
Créez un fichier décrivant la zone :
sudo touch /etc/bind/master-zones/test.example.com.local.zone
Ajoutez ensuite les enregistrements SOA, NS et A :
$ttl 3600
$ORIGIN test.example.com.
test.example.com. IN SOA (
ns.test.example.com.
abuse.test.example.com.
2022041201
10800
1200
604800
3600 )
@ IN NS ns.test.example.com.
@ IN NS ns2.test.example.com.
@ IN A 172.16.101.3
ns IN A 172.16.0.5
ns2 IN A 172.16.0.6
Ensuite, vérifiez la zone avec l’utilitaire named-checkzone :
sudo named-checkzone test.example.com. /etc/bind/master-zones/test.example.com.local.zone
Il s’agit d’un autre fichier inclus dans la configuration principale du serveur. Nous y définissons les zones locales :
zone "test.example.com." {
type master;
file "/etc/bind/master-zones/test.example.com.local.zone";
};
Après avoir saisi les données nécessaires, vérifiez la configuration et redémarrez bind9 (l’option -z vérifie les fichiers de zone) :
sudo named-checkconf
sudo named-checkconf -z
sudo service bind9 restart
sudo service bind9 status
Les views permettent une gestion flexible de la résolution de noms depuis différents sous-réseaux. Dans le fichier /etc/bind/named.conf, ajoutez :
include "/etc/bind/named.conf.options";
acl "local" { 172.16.0.0/16; };
view "local" {
include "/etc/bind/named.conf.local";
match-clients { local; };
};
Redémarrez bind9 :
sudo service bind9 restart
Après le redémarrage du serveur, vous pouvez demander l’enregistrement SOA du serveur 172.16.0.5 depuis un autre ordinateur du réseau local :
dig @172.16.0.5 -t SOA test.example.com
À ce stade, la configuration du serveur DNS primaire est terminée.
Dans ce guide, nous avons configuré le DNS sur un serveur Ubuntu à l’aide du paquet bind9. Après avoir suivi toutes les étapes, les deux serveurs DNS configurés peuvent être utilisés pour la résolution de noms sur le réseau. Pour utiliser ces serveurs DNS personnalisés, configurez vos autres serveurs afin qu’ils utilisent 172.16.0.5 et 172.16.0.6 comme serveurs DNS.
Cette configuration peut servir de base à des améliorations futures, comme la mise en place d’un serveur de messagerie.