Recherche de site Web

Configurer le serveur DNS maître-esclave à l'aide des outils « Lier » dans RHEL/CentOS 6.5


Serveur de noms de domaine (DNS) utilisé pour la résolution de noms sur n'importe quel hôte. Les serveurs DNS maîtres (Serveur primaire) sont les gestionnaires de données de zone d'origine et le serveur DNS esclave (Serveur secondaire) n'est qu'un serveur de sauvegarde utilisé pour copier les mêmes informations de zone à partir de les serveurs maîtres. Le serveur maître résoudra les noms de chaque hôte que nous avons défini dans la base de données de zone et utilisera le protocole UDP, car les protocoles UDP n'utilisent jamais le processus d'accusé de réception alors que TCP utilise l'accusé de réception. Les serveurs DNS utilisent également les protocoles UDP pour résoudre la demande de requête au plus tôt.

Comment fonctionne le DNS ?

Comprendre le DNS peut être un peu déroutant pour les débutants. Voici une brève explication du fonctionnement du DNS.

Disons, si nous devons accéder à un site Web, que ferons-nous ? Tapez simplement www.google.com dans le navigateur et appuyez sur Entrée. Hmm, c'est tout ce que nous savons, mais le fait est à quel point le DNS le traverse lorsqu'il interroge pour nous. Pendant que nous tapons www.google.com, le système recherchera www.google.com. Chaque fois que nous tapons un nom de domaine, il y a un . (point) à la fin de www.google.com qui indique de rechercher le serveur racine de l'espace de noms.

Globalement, il existe 13 serveurs racine disponibles pour résoudre la requête. Au début, lorsque nous appuyons sur Entrée en tant que www.google.com, notre navigateur transmettra une requête à notre résolveur local, qui contient des informations sur nos serveurs DNS maître et esclave. S'ils n'ont pas d'informations sur une telle requête demandée, ils transmettront la requête au domaine de premier niveau (TLD). Si le TLD dit que je ne connais pas la requête, il se peut que le serveur faisant autorité connaisse votre demande, il sera transmis à des serveurs faisant autorité, ici seul www.google.com a été défini comme adresse 72.36.15.56.

En attendant, le serveur faisant autorité donnera la réponse au TLD et TLD transmettra au serveur racine et root fournira les informations au navigateur, le navigateur mettra donc en cache la requête DNS pour une utilisation future. Ainsi, ces longs processus se résoudront en quelques millisecondes. S'ils ne connaissent pas la demande, ils répondront en tant que NXDOMAIN. Cela signifie qu'aucun enregistrement n'a été trouvé dans la base de données Zone. J'espère que cela vous fera comprendre comment fonctionne le DNS.

Lire aussi : Configurer le serveur de cache DNS dans Ubuntu

Mon environnement de test

Pour cet article, j'utilise 3 machines, 2 pour la configuration du serveur (maître et esclave) et 1 pour le client.

---------------------------------------------------
Master DNS Server
---------------------------------------------------

IP Address	:	192.168.0.200
Host-name	:	masterdns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------

IP Address	:	192.168.0.201
Host-name	:	slavedns.tecmintlocal.com
OS		:	Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------

IP Address	:	192.168.0.210
Host-name	:	node1.tecmintlocal.com
OS		:	Centos 6.5 Final
Forfaits d’exigences
bind, bind-utils, bind-chroot
Fichiers de configuration utilisés
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Port et protocoles utilisés
53, UDP

Configurer le serveur DNS maître

Tout d’abord, vérifiez l’adresse IP, le nom d’hôte et la version de distribution du serveur DNS maître, avant de procéder à la configuration.

sudo ifconfig | grep inet
hostname
cat /etc/redhat-release

Une fois que vous confirmez que les paramètres ci-dessus sont corrects, il est temps de procéder à l’installation des packages requis.

sudo yum install bind* -y

Installation et configuration de Bind

Après avoir installé les packages requis, définissez maintenant les fichiers de zone dans le fichier de configuration principale « named.conf ».

sudo vim /etc/named.conf

Vous trouverez ci-dessous mon entrée de fichier named.conf, modifiez le fichier de configuration selon vos besoins.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
        allow-transfer     { localhost; 192.168.0.201; };  # Here we need to our Slave DNS server IP.
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our forward & reverse Zone file here for tecmintlocal.com.


zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};

zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Voici l'explication de chaque configuration que nous avons utilisée dans le fichier ci-dessus.

  1. port d'écoute 53 – Ceci est utilisé pour que le DNS écoute dans les interfaces disponibles.
  2. Master DNS – Définissez votre adresse IP Master DNS pour écouter la requête.
  3. DNS esclave – Définissez votre DNS esclave, qui est utilisé pour synchroniser nos informations de zone afin de résoudre les hôtes du maître.
  4. récursivité non – Si la valeur est oui, les requêtes récursives transformeront le serveur en attaque DDOS.
  5. Nom de zone – Définissez ici le nom de votre zone défini comme tecminlocal.com.
  6. type master – Comme ce système a été configuré pour un serveur maître, pour le prochain serveur esclave, ce sera esclave.
  7. tecmintlocal.fwd.zone – Ce fichier contient les informations sur l'hôte pour cette zone.
  8. allow-update none – Si aucun n'est défini. il n'utilisera pas le DNS dynamique (DDNS).

Création de fichiers de zone maître

Tout d’abord, définissons l’entrée de la zone de recherche directe. Ici, nous devons créer les fichiers de zone au nom de ce que nous avons défini dans le fichier named.conf comme ci-dessous.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Nous utilisons des exemples de fichiers de configuration pour créer des fichiers de zone avant, pour cela, nous devons copier les exemples de fichiers de configuration.

sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Une fois que vous avez copié les fichiers de configuration, éditez maintenant ces fichiers de zones à l'aide de l'éditeur vim.

sudo vim /var/named/tecmintlocal.fwd.zone

Avant de définir nos informations d'hôte dans le fichier de zone de transfert, jetez d'abord un coup d'œil rapide à l'exemple de fichier de zone.

Ceci est ma configuration de zone avant, ajoutez l'entrée ci-dessous et apportez les modifications selon vos besoins.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com.     root.tecmintlocal.com. (
                                  2014090401    ; serial
                                        3600    ; refresh
                                        1800    ; retry
                                      604800    ; expire
                                       86400 )  ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.

; Name server hostname to IP resolve.

@       IN      A       192.168.0.200
@       IN      A       192.168.0.201

; Hosts in this Domain

@       IN      A       192.168.0.210
@       IN      A       192.168.0.220
masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201
node1           IN      A       192.168.0.210
rhel1           IN      A       192.168.0.220

Enregistrez et quittez le fichier en utilisant wq!. Après avoir modifié la recherche directe, cela ressemble à ci-dessous : utilisez TAB pour obtenir un format décent dans le fichier de zone.

Maintenant, créez le fichier de recherche inversée, nous avons déjà fait une copie du fichier de bouclage au nom de tecmintlocal.rev.zone. Nous utilisons donc ce fichier pour configurer notre recherche inversée.

sudo vim /var/named/tecmintlocal.rev.zone

Avant de définir nos informations d'hôte dans le fichier de zone inversée, jetez un coup d'œil rapide à un exemple de fichier de recherche inversée, comme indiqué ci-dessous.

Ceci est ma configuration de zone inversée, ajoutez l'entrée ci-dessous et apportez les modifications selon vos besoins.

$TTL 86400
@       IN SOA  masterdns.tecmintlocal.com. root.tecmintlocal.com. (
                                2014090402      ; serial
                                      3600      ; refresh
                                      1800      ; retry
                                    604800      ; expire
                                     86400 )    ; minimum

; Name server's

@       IN      NS      masterdns.tecmintlocal.com.
@       IN      NS      slavedns.tecmintlocal.com.
@       IN      PTR     tecmintlocal.com.

; Name server hostname to IP resolve.

masterdns       IN      A       192.168.0.200
slavedns        IN      A       192.168.0.201

;Hosts in Domain 

node1           IN      A       192.168.0.210
rhel            IN      A       192.168.0.220
200             IN      PTR     masterdns.tecmintlocal.com.
201             IN      PTR     slavedns.tecmintlocal.com.
210             IN      PTR     node1.tecmintlocal.com.
220             IN      PTR     rhel1.tecmintlocal.com.

Enregistrez et quittez le fichier en utilisant wq!. Après avoir modifié la recherche inversée, cela ressemble à ci-dessous : utilisez TAB pour obtenir un format décent dans le fichier de zone.

Vérifiez la propriété du groupe des fichiers de recherche directe et de recherche inversée, avant de rechercher d'éventuelles erreurs de configuration.

sudo ls -l /var/named/

Ici, nous pouvons voir que les deux fichiers appartiennent aux utilisateurs root, car les fichiers que nous faisons une copie à partir d'exemples de fichiers sont disponibles sous /var/named/. Modifiez le groupe en nommé sur les deux fichiers à l'aide des commandes suivantes.

sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone

Après avoir défini la propriété correcte des fichiers, vérifiez-les à nouveau.

sudo ls -l /var/named/

Maintenant, vérifiez les erreurs dans les fichiers de zone avant de démarrer le service DNS. Vérifiez d'abord le fichier named.conf, puis vérifiez les autres fichiers de zone.

sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone

Par défaut, iptables était en cours d'exécution et notre serveur DNS est limité à localhost. Si le client souhaite résoudre le nom de notre serveur DNS, nous devons alors autoriser la requête entrante. Pour cela, nous devons ajouter une règle entrante iptables pour le port 53.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Maintenant, vérifiez que les règles ont été ajoutées correctement dans la chaîne INPUT.

sudo iptables -L INPUT

Ensuite, enregistrez les règles et redémarrez le pare-feu.

sudo service iptables save
sudo service iptables restart

Démarrez le service nommé et rendez-le persistant.

sudo service named start
sudo chkconfig named on
sudo chkconfig --list named

Enfin, testez les fichiers de zone Master DNS configurés (avant et arrière), à l'aide des outils dig et nslookup.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Cool! nous avons configuré un DNS maître, nous devons maintenant configurer un serveur DNS esclave. Passons à la configuration d'un serveur esclave. Cela ne prendra pas beaucoup de temps en tant que configuration principale.

Configurer le serveur DNS esclave

Sur la machine esclave, nous devons également installer les mêmes packages de liaison que ceux indiqués dans Master, installons-les donc à l'aide de la commande suivante.

sudo yum install bind* -y

Ouvrez et modifiez le fichier « named.conf » pour notre base de données de zone et l'écoute du port.

sudo vim /etc/named.conf

Apportez les modifications comme indiqué, selon vos besoins.

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 192.168.0.0/24; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

## Define our slave forward and reverse zone, Zone files are replicated from master.

zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};

zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};

#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

Démarrez le service DNS en utilisant.

sudo service named start

Après avoir redémarré le service de liaison, nous n'avons pas besoin de définir les informations de zone individuellement, car notre allow-transfer répliquera les informations de zone du serveur maître, comme indiqué dans l'image ci-dessous.

sudo ls -l /var/named/slaves

Vérifiez les informations de zone à l’aide de la commande cat.

sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone

Ensuite, ouvrez le port DNS 53 sur iptables pour autoriser la connexion entrante.

sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Enregistrez les règles iptables et redémarrez le service iptables.

sudo service iptables save
sudo service iptables restart

Rendre le service persistant au démarrage du système.

sudo chkconfig iptables on
Check whether persistent set for run-levels .
sudo chkconfig --list iptables

C'est ça!. Il est maintenant temps de configurer nos machines clientes et de vérifier le nom d'hôte.

Configurer la machine client

Côté client, nous devons attribuer l'entrée DNS primaire (192.168.0.200) et secondaire (192.168.0.201) dans les paramètres réseau pour obtenir un nom d'hôte. Pour ce faire, exécutez la commande setup pour définir toutes ces entrées comme indiqué dans l'image.

setup

Sinon, modifiez le fichier « /etc/reslov.conf » et ajoutez les entrées suivantes.

vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Maintenant, vérifiez la recherche de l'adresse IP, du nom d'hôte et du serveur de noms.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Maintenant, vérifiez la recherche DNS directe et inversée en utilisant.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Comprendre le résultat des fouilles :

  1. En-tête – Cela dit tout ce que nous avons demandé et quel a été le résultat.
  2. Statut – Le statut était AUCUNE ERREUR, cela signifie que la demande de requête envoyée par nous a réussi sans aucune ERREUR.
  3. Question – La requête que nous avons faite, ici ma requête était masterdns.tecmintlocal.com.
  4. Réponse – La demande de requête est résolue si des informations sont disponibles.
  5. Autorité – La réponse des serveurs de noms pour le domaine et la zone.
  6. Supplémentaire – Informations supplémentaires concernant les serveurs de noms telles que le nom d'hôte et l'adresse IP.
  7. Durée de requête – Combien de temps il a fallu pour résoudre les noms des serveurs ci-dessus.

Enfin, vérifiez notre nœud et effectuez un ping.

dig node1.tecmintlocal.com

ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2

Enfin, la configuration est terminée, nous avons configuré ici avec succès les serveurs DNS primaire (maître) et esclave (secondaire). J'espère que tout le monde a été configuré sans aucun problème, n'hésitez pas à laisser un commentaire si vous rencontrez un problème lors de la configuration.