Comment configurer un serveur DNS avec Bind à l'aide de serveurs Linux

DNS Les serveurs (Domain Name System) nous permettent d'atteindre une adresse IP spécifique à partir d'un nom de domaine, de cette façon, nous pouvons accéder à différents sites Web en mettant votre nom de domaine directement dans la barre d'adresse du navigateur Web. Nous avons également la possibilité de mettre en place un serveur DNS dans le réseau local domestique ou professionnel, pour atteindre les différents ordinateurs du réseau local via un nom de domaine spécifique, sans avoir toujours à se souvenir des adresses IP privées. Aujourd'hui, dans cet article, nous allons vous montrer comment configurer un serveur DNS sur un Linux/Unix serveur utilisant Bind9, le serveur DNS le plus populaire et le plus utilisé.

Configurer un serveur DNS avec Bind à l'aide de serveurs Linux

Qu'est-ce que la liaison ?

Bind, ou également connu sous le nom de Berkeley Internet Name Domain, est un logiciel chargé d'effectuer la tâche de serveur DNS. Bind est actuellement une norme, et il est largement utilisé dans les systèmes d'exploitation Linux et également sous Unix, par conséquent, si vous avez un serveur basé sur Linux ou Unix et que vous avez besoin d'un serveur DNS pour gérer les requêtes du réseau local, alors Bind est ce que vous devez utiliser. La version actuelle de Bind est la version Bind9, et c'est celle couramment utilisée sur tous les serveurs, les versions précédentes sont considérées comme non sécurisées et « obsolètes », il n'est donc pas recommandé de les utiliser.

Bind ne remplace pas les serveurs DNS comme ceux que nous pouvons utiliser de Google (8.8.8.8), Cloudflare (1.1.1.1) ou autres, mais les complète plutôt. Les clients du réseau local auront comme serveur DNS le serveur Bind que nous configurons dans un serveur Linux, plus tard, dans ce Bind, nous pourrons configurer différentes règles pour atteindre les ordinateurs locaux via leurs adresses IP privées. Si un client du réseau local fait une requête DNS à un site Internet, logiquement le serveur DNS n'aura pas toutes les adresses IP Internet dans sa base de données, dans ce cas, des serveurs DNS publics sont configurés pour traiter ces requêtes, en transmettant les serveur avec Bind la demande et nous le renverrons automatiquement au client qui a fait la demande.

DNS de Windows

La version actuellement utilisée est Bind 9, elle a été écrite à partir de zéro pour éviter les problèmes des versions précédentes, en outre, elle inclut des fonctionnalités très importantes telles que DNSSEC pour assurer la sécurité des domaines utilisant la cryptographie, elle inclut également des améliorations dans le traitement parallèle de différents Requêtes DNS, prise en charge complète des réseaux IPv6 et bien plus encore. Bien sûr, cette dernière version de Bind a des améliorations de sécurité très importantes, de cette façon, nous serons protégés contre d'éventuelles attaques qui pourraient se produire dans les versions précédentes.

Prérequis avant d'installer Bind

Avant de commencer la configuration du serveur DNS avec Bind9 dans notre système d'exploitation, il est conseillé de mettre une IP fixe sur notre serveur, sinon, si le serveur DHCP change notre adresse IP, les clients du réseau local perdront l'accès à notre DNS du serveur car ils ne "pointeront" pas vers notre adresse IP privée. Pour mettre une IP fixe nous avons deux possibilités :

  • Configurez le DHCP statique dans le routeur / pare-feu dont nous disposons, en mettant notre adresse MAC de la carte réseau et l'adresse IP que nous voulons qu'elle obtienne toujours.
  • Configurez statiquement notre serveur Linux, dans ce cas, le serveur DHCP du routeur / pare-feu doit avoir une plage DHCP qui se trouve en dehors de notre adresse IP privée que nous avons définie.

Pour configurer statiquement une adresse IP sous Linux, il faut éditer le fichier de configuration « /etc/network/interfaces » et mettre ceci :

auto lo
iface lo inet loopback

voiture ens33
iface eth0 inet statique
adresse 192.168.1.2
masque de réseau 255.255.255.0
passerelle 192.168.1.1
DNS-nameservers 192.168.1.2

Ensuite, nous devons redémarrer le service pour appliquer correctement les modifications (si nous avons changé l'IP que nous avons actuellement) :

sudo service networking restart

Une fois notre adresse IP du réseau local fixée, nous pouvons installer Bind.

Lier l'installation sur Linux et le démarrage

La première chose que nous devons faire pour configurer un serveur DNS (bind) sous Linux est de l'installer à partir des référentiels, nous allons installer à la fois le serveur DNS Bind9 ainsi que les packages suggérés par le système d'exploitation Debian, par conséquent, nous faut le mettre dans la console la suivante :

sudo apt install bind9 bind9-doc resolvconf python-ply-doc

Une fois que nous avons installé tous les packages précédents, nous devons aller dans le répertoire du programme, où nous devrons commencer à configurer les fichiers nécessaires :

cd /etc/bind/

Il est conseillé de accéder à ce répertoire en tant que root (sudo su) pour éviter d'avoir des problèmes d'autorisations refusés lors de la copie de fichiers ou de la modification de fichiers existants. Si nous faisons un "ls -l" pour lister tous les fichiers que nous avons ici, nous verrons ce qui suit :

Comme vous pouvez le voir, nous avons un grand nombre de fichiers de configuration différents, chacun d'eux est spécifiquement orienté vers une tâche, dans la documentation officielle de Bind9, vous pouvez trouver à quoi sert chacun d'eux. Supposons désormais que vous soyez toujours en mode super utilisateur (root) pour éditer ou copier des fichiers sans restrictions.

Configurer les redirecteurs de liaison à l'aide de serveurs DNS publics

La première chose que nous allons faire est de configurer les serveurs DNS de transfert, c'est-à-dire les serveurs DNS publics pour transférer les requêtes vers Internet. Le fichier de configuration qui est responsable de cette tâche est "named.conf.options", la première chose que nous faisons est de faire une copie de sauvegarde du fichier, au cas où nous l'éditerions mal et que tout cesserait de fonctionner :

cp /etc/bind/named.conf.options /etc/bind/named.conf.options.copia

Maintenant, nous éditons le fichier en ajoutant les serveurs DNS dans la section redirecteurs, comme vous pouvez le voir ici :

forwarders {
8.8.8.8;
1.1.1.1;
};

Ce serait comme suit :

Une fois que nous l'avons modifié, nous redémarrons le service Bind9 pour vérifier que tout fonctionne correctement et ne renvoie aucune erreur :

sudo service bind9 restart

Maintenant, nous allons vérifier s'ils fonctionnent correctement, pour ce faire, nous exécutons une commande nslookup, et nous devrions voir que notre serveur DNS a correctement résolu un domaine, dans notre cas l'adresse IP du serveur est 192.168.231.130 :

Une fois que nous avons configuré Bind pour transmettre les résolutions des sites Internet au DNS public, nous allons voir comment le configurer pour résoudre les domaines internes.

Configurer Bind pour les résolutions locales

Le fichier de configuration que nous devons configurer maintenant est nommé.conf.local, il est conseillé de faire une copie de sauvegarde en cas de problème lors de la configuration, pour cela nous exécutons :

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

Une fois la sauvegarde effectuée, nous devrons éditer le fichier de configuration named.conf.local pour procéder à la configuration. Dans ce fichier de configuration, nous devrons mettre la zone à laquelle nous faisons référence, ainsi que le fichier de configuration de liaison qui contient toutes les configurations, nous pourrions donc le laisser comme ceci :

zone "redlocal.com" {
type master;
file "/etc/bind/db.redlocal";
};

Il est important que le « fichier » fasse référence au fichier de configuration que nous importons et que nous allons configurer tout de suite.

Maintenant, nous devons copier la base de données que nous avons dans "db.local" lui donner le nom de " db.redlocal ” que nous avons défini dans le fichier précédent.

cp /etc/bind/db.local /etc/bind/db.redlocal

Maintenant, nous éditons ce fichier de configuration qui vient par défaut avec beaucoup d'informations, et nous l'adaptons à nos intérêts.

La première chose que nous devons faire est de modifier le SOA qui vient dans la partie supérieure par le nom de domaine que nous avons choisi localement, dans ce cas, ce serait « red.redlocal.com », puis nous éditerons le fichier de configuration général avec les domaines et sous-domaines que nous voulons. Notre fichier de configuration serait le suivant :

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.redlocal.com. root.red.redlocal.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;

@ EN NS ns1.redlocal.com.
@ DANS UN 192.168.231.130
ns1 DANS UN 192.168.231.130
routeur IN A 10.11.1.1
pc1 DANS UN 10.11.1.2

Une fois que nous avons enregistré le fichier de configuration, nous vérifions la syntaxe avec la commande suivante :

named-checkzone redlocal.com /etc/bind/db.redlocal

Maintenant, nous redémarrons le processus de liaison avec la commande suivante :

sudo service bind9 restart

Nous avons tout prêt pour démarrer la batterie de tests et vérifier que nous avons tout fait correctement. Pour vérifier que tout fonctionne bien, nous devons exécuter les commandes suivantes :

host router.redlocal.com

Il nous montrera ce qui suit, l'adresse IP du routeur :

root@bron-debian:/etc/bind# host router.redlocal.com
router.redlocal.com has address 10.11.1.1

On peut aussi faire la même chose avec PC1 :

host pc1.redlocal.com

Nous verrons ceci :

root@bron-debian:/etc/bind# host pc1.redlocal.com
pc1.redlocal.com has address 10.11.1.2

Une fois que nous avons réussi à résoudre correctement les domaines locaux, en retournant l'adresse IP correspondante, nous pouvons effectuer un ping sans problème via le domaine :

root@bron-debian:/etc/bind# ping router.redlocal.com
PING router.redlocal.com (10.11.1.1) 56(84) bytes of data.
64 bytes from 10.11.1.1 (10.11.1.1): icmp_seq=1 ttl=128 time=0.413 ms
64 bytes from 10.11.1.1 (10.11.1.1): icmp_seq=2 ttl=128 time=0.401 ms
^C
--- router.redlocal.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 28ms
rtt min/avg/max/mdev = 0.401/0.407/0.413/0.006 ms

Nous allons maintenant configurer la résolution inverse des domaines.

Résolution de domaine inverse

Nous allons maintenant configurer le serveur DNS pour résoudre les domaines à l'envers, en mettant l'adresse IP et en nous indiquant à quel domaine appartient cette adresse IP. Pour atteindre notre objectif, nous devons ajouter le lignes suivantes dans le fichier /etc/bind/named.conf.local que nous avons utilisé précédemment :

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

Il faut aussi copier le fichier de configuration par défaut pour l'éditer. À partir du fichier db.127, nous créons le db.192 :

cp /etc/bind/db.127 /etc/bind/db.192

Une fois que nous l'avons créé, il suffit de le modifier avec les informations suivantes :

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns1.redlocal.com. root.red.redlocal.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.redlocal.com.
ns1 IN A 192.168.231.130
130.231.168 IN PTR redlocal.com

Une fois que nous avons enregistré le fichier de configuration, nous vérifions la syntaxe avec la commande suivante :

named-checkzone 192.168.231.130 /etc/bind/db.192

Nous devrions obtenir quelque chose comme ceci :

named-checkzone 168.192.in-addr.arpa db.192
zone 168.192.in-addr.arpa/IN: loaded serial 1
OK

Maintenant, nous redémarrons le processus de liaison avec la commande suivante :

sudo service bind9 restart

Et on vérifie qu'il a bien fonctionné :

host 192.168.231.130

Nous espérons que ce didacticiel Bind complet vous a aidé à configurer votre propre serveur DNS localement.