Comment configurer la liaison en tant que serveur DNS faisant autorité uniquement sur Ubuntu 14.04

introduction


Le DNS, ou système de noms de domaine, est souvent un composant difficile à maîtriser lorsqu’on apprend à configurer des sites Web et des serveurs. Bien que la plupart des gens choisissent probablement d’utiliser les serveurs DNS fournis par leur société d’hébergement ou leur registraire de domaine, la création de vos propres serveurs DNS présente certains avantages.

Dans ce guide, nous expliquerons comment installer et configurer le serveur DNS Bind9 en tant que serveurs DNS faisant autorité uniquement sur des ordinateurs Ubuntu 14.04. Nous allons configurer ces deux serveurs de liaison pour notre domaine dans une configuration primaire-secondaire.

Prérequis et objectifs

Pour compléter ce guide, vous devez d’abord connaître la terminologie courante du DNS. Consultezthis guide pour en savoir plus sur les concepts que nous mettrons en œuvre dans ce guide.

Vous aurez également besoin d'au moins deux serveurs. L'un sera pour le serveur DNS «principal» d'où proviendront les fichiers de zone de notre domaine et l'autre sera le serveur «secondaire» qui recevra les données de zone par transfert et sera disponible en cas de panne de l'autre serveur. Cela évite le danger d'avoir un point de défaillance unique pour vos serveurs DNS.

Contrairement àcaching or forwarding DNS servers ou à un serveur DNS polyvalent, les serveurs faisant uniquement autorité ne répondent qu'aux requêtes itératives pour les zones pour lesquelles ils font autorité. Cela signifie que si le serveur ne connaît pas la réponse, il dira simplement au client (généralement une sorte de serveur DNS de résolution) qu'il ne connaît pas la réponse et donnera une référence à un serveur susceptible d'en savoir plus.

Les serveurs DNS faisant uniquement autorité constituent souvent une bonne configuration pour des performances élevées, car ils ne nécessitent pas la surcharge de la résolution de requêtes récursives provenant de clients. Ils ne se soucient que des zones pour lesquelles ils sont conçus.

Pour les besoins de ce guide, nous référencerons en fait les serveursthree. Les deux serveurs de noms mentionnés ci-dessus, plus un serveur Web que nous souhaitons configurer en tant qu'hôte dans notre zone.

Nous utiliserons le domaine facticeexample.com pour ce guide. Vous devez le remplacer par le domaine que vous configurez. Voici les détails des machines que nous allons configurer:

Objectif DNS FQDN Adresse IP

Serveur de noms principal

ns1.example.com.

192.0.2.1

Serveur de noms secondaire

ns2.example.com.

192.0.2.2

Serveur Web

www.example.com.

192.0.2.3

Après avoir terminé ce guide, vous devez avoir configuré deux serveurs de noms faisant autorité pour vos zones de domaine. Les noms dans la colonne centrale du tableau ci-dessus pourront être utilisés pour atteindre vos différents hôtes. En utilisant cette configuration, un serveur DNS récursif sera capable de renvoyer aux clients les données relatives au domaine.

Définition du nom d'hôte sur les serveurs de noms

Avant d'entrer dans la configuration de nos serveurs de noms, nous devons nous assurer que notre nom d'hôte est correctement configuré sur nos serveurs DNS principal et secondaire.

Commencez par rechercher le fichier/etc/hosts. Ouvrez le fichier avec les privilèges sudo dans votre éditeur de texte:

sudo nano /etc/hosts

Nous devons le configurer afin qu’il identifie correctement le nom d’hôte et le nom de domaine complet de chaque serveur. Pour le serveur de noms principal, le fichier ressemblera à ceci:

127.0.0.1       localhost
127.0.1.1       ns1 ns1
. . .

Nous devrions modifier la deuxième ligne pour faire référence à notre combinaison hôte / domaine spécifique et pointer celle-ci sur notre adresse IP statique et publique. Nous pouvons ensuite ajouter le nom non qualifié comme un alias à la fin. Pour le serveur principal dans cet exemple, modifiez la deuxième ligne comme suit:

127.0.0.1       localhost
192.0.2.1       ns1.example.com ns1
. . .

Enregistrez et fermez le fichier lorsque vous avez terminé.

Nous devrions également modifier le fichier/etc/hostname pour qu'il contienne notre nom d'hôte non qualifié:

sudo nano /etc/hostname
ns1

Nous pouvons lire cette valeur dans le système en cours d'exécution en tapant:

sudo hostname -F /etc/hostname

Nous voulons effectuer la même procédure sur notre serveur secondaire.

Commencez par le fichier/etc/hosts:

sudo nano /etc/hosts
127.0.0.1       localhost
192.0.2.2       ns2.example.com ns2

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, modifiez le fichier/etc/hostname. N'oubliez pas de n'utiliser que l'hôte réel (uniquementns2 dans notre exemple) pour ce fichier:

sudo nano /etc/hostname
ns2

Encore une fois, lisez le fichier pour modifier le système actuel:

sudo hostname -F /etc/hostname

Vos serveurs doivent maintenant avoir leurs définitions d’hôte correctement définies.

Installer Bind sur les deux serveurs de noms

Sur chacun de vos serveurs de noms, vous pouvez maintenant installer Bind, le serveur DNS que nous utiliserons.

Le logiciel Bind est disponible dans les référentiels par défaut d'Ubuntu, il nous suffit donc de mettre à jour notre index de package local et d'installer le logiciel à l'aide deapt. Nous allons également inclure la documentation et quelques utilitaires courants:

sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc

Exécutez cette commande d'installation sur vos serveurs DNS principal et secondaire pour acquérir les fichiers appropriés.

Configurer le serveur de liaison principal

Maintenant que le logiciel est installé, nous pouvons commencer par configurer votre serveur DNS sur le serveur principal.

Configuration du fichier d'options

La première chose que nous allons configurer pour commencer est le fichiernamed.conf.options.

Le serveur DNS Bind est également appelénamed. Le fichier de configuration principal se trouve dans/etc/bind/named.conf. Ce fichier appelle les autres fichiers que nous allons réellement configurer.

Ouvrez le fichier d'options avec les privilèges sudo dans votre éditeur:

sudo nano /etc/bind/named.conf.options

Ci-dessous, la plupart des lignes commentées ont été supprimées pour des raisons de brièveté, mais en général, le fichier devrait ressembler à ceci après l'installation:

options {
        directory "/var/cache/bind";

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

La principale chose que nous devons configurer dans ce fichier est la récursivité. Étant donné que nous essayons de configurer un serveur faisant uniquement autorité, nous ne souhaitons pas activer la récursion sur ce serveur. Nous pouvons désactiver cette option dans le blocoptions.

Nous allons également par défaut pour ne pas autoriser les transferts. Nous remplacerons cela ultérieurement dans les spécifications de chaque zone:

options {
        directory "/var/cache/bind";
        recursion no;
        allow-transfer { none; };

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Configuration du fichier local

L'étape suivante consiste à spécifier les zones sur lesquelles nous souhaitons contrôler ce serveur. Une zone est une partie du domaine qui est déléguée pour la gestion à un serveur de noms qui n'a pas été sous-délégué à d'autres serveurs.

Nous configurons le domaineexample.com et nous n'allons pas sous-déléguer la responsabilité d'aucune partie du domaine à d'autres serveurs. La zone couvrira donc tout notre domaine.

Pour configurer nos zones, nous devons ouvrir le fichier/etc/bind/named.conf.local avec les privilèges sudo:

sudo nano /etc/bind/named.conf.local

Ce fichier sera initialement vide à côté des commentaires. Il existe d'autres zones que notre serveur connaît pour la gestion générale, mais celles-ci sont spécifiées dans le fichiernamed.conf.default-zones.

Pour commencer, nous devons configurer la zone de transfert pour notre domaineexample.com. La zone de transfert est la résolution classique nom-à-IP à laquelle la plupart d'entre nous pensons quand nous discutons de DNS. Nous créons un bloc de configuration qui définit la zone de domaine que nous souhaitons configurer:

zone "example.com" {
};

[.note] #Note:Many DNS tools, their configuration files, and documentation use the terms “master” and “slave” while DigitalOcean generally prefers alternative descriptors. To avoid confusion we’ve chosen to use the terms “primary” and “secondary” to denote relationships between servers, and only use “master” or “slave” where a configuration directive requires it.
#

À l'intérieur de ce bloc, nous ajoutons les informations de gestion concernant cette zone. Nous spécifions la relation de ce serveur DNS avec la zone. Il s'agit detype master; dans l'exemple de zone qui suit puisque nous configurons cette machine comme serveur de noms principal pour toutes nos zones. Nous pointons également Bind vers le fichier qui contient les enregistrements de ressources qui définissent la zone.

Nous allons conserver nos fichiers de zone primaire dans un sous-répertoire appelézones dans le répertoire de configuration Bind. Nous appellerons notre fichierdb.example.com pour emprunter la convention des autres fichiers de zone dans le répertoire Bind. Notre bloc va ressembler à ça maintenant:

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

Nous voulons autoriser le transfert de cette zone sur notre serveur secondaire, nous devons ajouter une ligne comme celle-ci:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { 192.0.2.2; };
};

Ensuite, nous allons définir la zone inverse de votre domaine.

Un peu sur les zones inversées

Si l'organisation qui vous a fourni vos adresses IP ne vous a pas attribué de plage de réseau et ne vous a pas délégué la responsabilité de cette plage, votre fichier de zone inversée ne sera pas référencé et sera géré par l'organisation elle-même.

Avec les fournisseurs d’hébergement, la cartographie inverse est généralement prise en charge par la société elle-même. Par exemple, avec DigitalOcean, les mappages inverses pour vos serveurs seront automatiquement créés si vous utilisez le nom de domaine complet de l’ordinateur comme nom de serveur dans le panneau de configuration. Par exemple, les mappages inverses de ce didacticiel peuvent être créés en nommant les serveurs de la manière suivante:

DigitalOcean auto reverse DNS mapping

Dans de tels cas, comme il ne vous a pas été attribué de bloc d’adresses à administrer, vous devez utiliser cette stratégie. La stratégie décrite ci-dessous est couverte pour être complète et pour la rendre applicable si vous avez été délégué à un contrôle sur des groupes d'adresses plus grands contigus.

Les zones inversées sont utilisées pour connecter une adresse IP à un nom de domaine. Cependant, le système de noms de domaine a été conçu à l'origine pour les mappages directs, il est donc nécessaire de l'adapter pour permettre les mappages inverses.

Les informations que vous devez garder à l'esprit pour comprendre les correspondances inverses sont les suivantes:

  • Dans un domaine, la partie la plus spécifique est l'adresse est à gauche. Pour une adresse IP, la partie la plus spécifique est à droite.

  • La partie la plus spécifique d'une spécification de domaine est un sous-domaine ou un nom d'hôte. Ceci est défini dans le fichier de zone du domaine.

  • Chaque sous-domaine peut, à son tour, définir plusieurs sous-domaines ou hôtes.

Tous les mappages de zones inversées sont définis sous le domaine spécialin-addr.arpa, qui est contrôlé par l’IANA (Internet Assigned Numbers Authority). Sous ce domaine, il existe une arborescence qui utilise des sous-domaines pour mapper chacun des octets d'une adresse IP. Pour vous assurer que la spécificité des adresses IP correspond à celle des domaines normaux, les octets des adresses IP sont en fait inversés.

Ainsi, notre serveur DNS principal, avec une adresse IP de192.0.2.1, serait retourné pour se lire comme1.2.0.192. Lorsque nous ajoutons cette spécification d'hôte en tant que hiérarchie existant sous le domainein-addr.arpa, l'hôte spécifique peut être référencé en tant que1.2.0.192.in-addr.arpa.

Puisque nous définissons des hôtes individuels (comme le premier «1» ici) dans le fichier de zone lui-même lors de l'utilisation de DNS, la zone que nous configurerions serait2.0.192.in-addr.arpa. Si notre fournisseur de réseau nous a donné un bloc d'adresses / 24, disons192.0.2.0/24, il nous aurait délégué cette partie dein-addr.arpa.

Maintenant que vous savez comment spécifier le nom de la zone inversée, la définition réelle est exactement identique à la zone de transfert. Sous la définition de zoneexample.com, créez une zone inversée pour le réseau qui vous a été donné. Encore une fois, cela n’est probablement nécessaire que si vous avez le contrôle délégué sur un bloc d’adresses:

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

Nous avons choisi de nommer le fichierdb.192.0.2. Ceci est spécifique à ce que la zone configure et est plus lisible que la notation inverse.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Créer le fichier de zone de transfert

Nous avons déjà parlé à Bind de nos zones de transfert et de retour, mais nous n’avons pas encore créé les fichiers qui définiront ces zones.

Si vous vous souvenez bien, nous avons spécifié les emplacements des fichiers comme étant dans un sous-répertoire appelézones. Nous devons créer ce répertoire:

sudo mkdir /etc/bind/zones

Désormais, nous pouvons utiliser certains des fichiers de zone préexistants du répertoire Bind comme modèles pour les fichiers de zone à créer. Pour la zone avant, le fichierdb.local sera proche de ce dont nous avons besoin. Copiez ce fichier dans le sous-répertoirezones avec le nom utilisé dans le fichiernamed.conf.local.

sudo cp /etc/bind/db.local /etc/bind/zones/db.example.com

Ce faisant, nous pouvons également copier un modèle pour la zone inverse. Nous utiliserons le fichierdb.127, car il correspond étroitement à ce dont nous avons besoin:

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.0.2

Ouvrez maintenant le fichier de zone de transfert avec les privilèges sudo dans votre éditeur de texte:

sudo nano /etc/bind/zones/db.example.com

Le fichier ressemblera à ceci:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1

La première chose que nous devons faire est de modifier l'enregistrementSOA (début d'autorité) qui commence par le premier symbole@ et continue jusqu'à la parenthèse fermante.

Nous devons remplacer leslocalhost. par le nom du FQDN de cette machine. Cette partie de l'enregistrement est utilisée pour définir tout serveur de noms qui répondra avec autorité pour la zone en cours de définition. Ce sera la machine que nous configurons maintenant,ns1.example.com. dans notre cas (notez le point de fin. Ceci est important pour que notre entrée s’inscrive correctement!).

Nous voulons également changer l'élément suivant, qui est en fait une adresse e-mail spécialement formatée avec les@ remplacés par un point. Nous voulons que nos e-mails soient envoyés à un administrateur du domaine, donc l'e-mail traditionnel est[email protected]. Nous traduirions ceci pour qu'il ressemble àadmin.example.com.:

@       IN      SOA     ns1.example.com. admin.example.com. (

La prochaine pièce à éditer est le numéro de série. La valeur du numéro de série est la suivante: Bind indique s'il doit envoyer des informations mises à jour au serveur secondaire.

Note: ne pas incrémenter le numéro de série est l'une des erreurs les plus courantes qui entraîne des problèmes avec les mises à jour de zone. Chaque fois que vous effectuez une modification, vousmustbosse le numéro de série.

Une pratique courante consiste à utiliser une convention pour incrémenter le nombre. Une approche consiste à utiliser la date au format AAAAMMJJ avec un numéro de révision pour le jour ajouté à la fin. Ainsi, la première révision effectuée le 5 juin 2014 pourrait avoir un numéro de série de 2014060501 et une mise à jour effectuée plus tard dans la journée pourrait avoir un numéro de série de 2014060502. La valeur peut être un nombre à 10 chiffres.

Il vaut la peine d'adopter une convention pour la facilité d'utilisation, mais pour garder les choses simples pour notre démonstration, nous allons simplement définir la nôtre sur5 pour l'instant:

@       IN      SOA     ns1.example.com. admin.example.com. (
                              5         ; Serial

Ensuite, nous pouvons nous débarrasser des trois dernières lignes du fichier (celles du bas qui commencent par@) car nous allons créer les nôtres.

La première chose que nous souhaitons établir après l'enregistrement SOA, ce sont les serveurs de noms de notre zone. Nous spécifions le domaine, puis nos deux serveurs de noms qui font autorité pour la zone, par nom. Étant donné que ces serveurs de noms seront des hôtes au sein du domaine même, il semblera un peu auto-référentiel.

Pour notre guide, cela ressemblera à ceci. Encore une fois, faites attention aux points de fin!

; Name servers
example.com.    IN      NS      ns1.example.com.
example.com.    IN      NS      ns2.example.com.

Dans la mesure où l'objectif d'un fichier de zone est principalement de mapper les noms d'hôtes et les services sur des adresses spécifiques, nous n'avons pas encore terminé. Tout logiciel lisant ce fichier de zone va vouloir savoir où se trouvent les serveursns1 etns2 afin d'accéder aux zones faisant autorité.

Ensuite, nous devons créer les enregistrementsA qui associeront ces noms de serveurs de noms aux adresses IP réelles de nos serveurs de noms:

; A records for name servers
ns1             IN      A       192.0.2.1
ns2             IN      A       192.0.2.2

Maintenant que nous avons les enregistrements A pour résoudre avec succès nos serveurs de noms en adresses IP correctes, nous pouvons ajouter des enregistrements supplémentaires. N'oubliez pas que nous souhaitons utiliser un serveur Web sur l'un de nos hôtes pour servir notre site. Nous dirigerons les requêtes pour le domaine général (example.com dans notre cas) vers cet hôte, ainsi que les requêtes pour l'hôtewww. Il ressemblera à ceci:

; Other A records
@               IN      A       192.0.2.3
www             IN      A       192.0.2.3

Vous pouvez ajouter tous les hôtes supplémentaires que vous devez définir en créant des enregistrementsA supplémentaires. Consultez nosDNS basics guide pour vous familiariser avec certaines de vos options de création d'enregistrements supplémentaires.

Lorsque vous avez terminé, votre fichier devrait ressembler à ceci:

$TTL    604800
@       IN      SOA     ns1.example.com. admin.example.com. (
                              5         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; Name servers
example.com.    IN      NS      ns1.example.com.
example.com.    IN      NS      ns2.example.com.

; A records for name servers
ns1             IN      A       192.0.2.1
ns2             IN      A       192.0.2.2

; Other A records
@               IN      A       192.0.2.3
www             IN      A       192.0.2.3

Enregistrez et fermez le fichier lorsque vous avez terminé.

Créer le fichier de zone inversée

Nous avons maintenant la zone de transfert configurée, mais nous devons configurer le fichier de zone inverse spécifié dans notre fichier de configuration. Nous avons déjà créé le fichier au début de la dernière section.

Ouvrez le fichier dans votre éditeur de texte avec les privilèges sudo:

sudo nano db.192.0.2

Le fichier devrait ressembler à ceci:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
1.0.0   IN      PTR     localhost.

Nous allons suivre à peu près la même procédure que nous avons fait avec la zone avancée. Tout d’abord, ajustez le nom de domaine, le courrier électronique de l’administrateur et le numéro de série de manière à ce qu'ils correspondent exactement à ce que vous aviez dans le dernier fichier (le numéro de série peut être différent, mais doit être incrémenté):

@       IN      SOA     example.com. admin.example.com. (
                              5         ; Serial

Encore une fois, effacez les lignes sous la parenthèse fermante de l'enregistrementSOA. Nous allons prendre le dernier octet de chaque adresse IP de notre plage de réseau et le mapper vers le FQDN de cet hôte en utilisant un enregistrementPTR. Chaque adresse IP ne doit avoir qu'un seul enregistrementPTR pour éviter des problèmes dans certains logiciels, vous devez donc choisir le nom d'hôte vers lequel vous souhaitez inverser le mappage.

Par exemple, si vous avez un serveur de messagerie configuré, vous souhaiterez probablement configurer le mappage inverse sur le nom de messagerie, car de nombreux systèmes utilisent le mappage inverse pour valider les adresses.

Premièrement, nous devons redéfinir nos serveurs de noms:

; Name servers
        IN      NS      ns1.example.com.
        IN      NS      ns2.example.com.

Vous utiliserez ensuite le dernier octet de l’adresse IP à laquelle vous faites référence et vous le dirigerez vers le nom de domaine complet avec lequel vous souhaitez retourner. Pour notre exemple, nous allons utiliser ceci:

; PTR Records
1       IN      PTR      ns1.example.com.
2       IN      PTR      ns2.example.com.
3       IN      PTR      www.example.com.

Lorsque vous avez terminé, le fichier devrait ressembler à ceci:

$TTL    604800
@       IN      SOA     example.com. admin.example.com. (
                              5         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; Name servers
        IN      NS      ns1.example.com.
        IN      NS      ns2.example.com.

; PTR records
1       IN      PTR      ns1.example.com.
2       IN      PTR      ns2.example.com.
3       IN      PTR      www.example.com.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Test des fichiers et redémarrage du service

La configuration du serveur principal est maintenant terminée, mais nous devons toujours implémenter nos modifications.

Avant de redémarrer notre service, nous devrions tester tous nos fichiers de configuration pour nous assurer qu’ils sont correctement configurés. Nous avons des outils qui peuvent vérifier la syntaxe de chacun de nos fichiers.

Tout d'abord, nous pouvons vérifier les fichiersnamed.conf.local etnamed.conf.options en utilisant la commandenamed-checkconf. Puisque ces deux fichiers sont source par le fichier squelettenamed.conf, il testera la syntaxe des fichiers que nous avons modifiés.

sudo named-checkconf

Si cela renvoie sans aucun message, cela signifie que les fichiersnamed.conf.local etnamed.conf.options sont syntaxiquement valides.

Ensuite, vous pouvez vérifier vos fichiers de zone individuels en passant le domaine géré par la zone et l'emplacement du fichier de zone à la commandenamed-checkzone. Donc, pour notre guide, vous pouvez vérifier le fichier de zone de transfert en tapant:

sudo named-checkzone example.com /etc/bind/zones/db.example.com

Si votre fichier n'a pas de problèmes, il devrait vous dire qu'il a chargé le bon numéro de série et donner le message «OK»;

zone example.com/IN: loaded serial 5
OK

Si vous rencontrez d'autres messages, cela signifie que vous avez un problème avec votre fichier de zone. Habituellement, le message décrit assez bien quelle partie est invalide.

Vous pouvez vérifier la zone inverse en passant l'adressein-addr.arpa et le nom du fichier. Pour notre démonstration, nous aimerions taper ceci:

sudo named-checkzone 2.0.192.in-addr.arpa /etc/bind/zones/db.192.0.2

Encore une fois, cela devrait vous donner un message similaire à propos du chargement du numéro de série correct:

zone 2.0.192.in-addr.arpa/IN: loaded serial 5
OK

Si tous vos fichiers sont en cours d'extraction, vous pouvez redémarrer votre service Bind:

sudo service bind9 restart

Vous devriez vérifier les journaux en tapant:

sudo tail -f /var/log/syslog

Gardez un œil sur ce journal pour vous assurer qu'il n'y a pas d'erreur.

Configurer le serveur de liaison secondaire

Maintenant que le serveur principal est configuré, nous pouvons aller de l'avant et configurer le serveur secondaire. Ce sera beaucoup plus facile que le serveur principal.

Configuration du fichier d'options

Encore une fois, nous allons commencer avec le fichiernamed.conf.options. Ouvrez-le avec les privilèges sudo dans votre éditeur de texte:

sudo nano /etc/bind/named.conf.options

Nous apporterons exactement les mêmes modifications à ce fichier que celles de notre serveur principal.

options {
        directory "/var/cache/bind";
        recursion no;
        allow-transfer { none; };

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

Enregistrez et fermez le fichier lorsque vous avez terminé.

Configuration du fichier de configuration local

Ensuite, nous allons configurer le fichiernamed.conf.local sur le serveur secondaire. Ouvrez-le avec les privilèges sudo dans votre éditeur de texte:

sudo nano /etc/bind/named.conf.local

Ici, nous allons créer chacune de nos spécifications de zone comme nous l’avons fait sur notre serveur principal. Cependant, les valeurs et certains paramètres seront différents.

Nous allons d’abord travailler sur la zone avancée. Commencez de la même manière que dans le fichier principal:

zone "example.com" {
};

Cette fois, nous allons définir lestype surslave puisque ce serveur agit en tant que secondaire pour cette zone. Cela signifie simplement qu'il reçoit ses fichiers de zone par transfert plutôt qu'un fichier sur le système local. De plus, nous allons simplement spécifier le nom de fichier relatif au lieu du chemin absolu du fichier de zone.

La raison en est que, pour les zones secondaires, Bind stocke les fichiers/var/cache/bind. Bind est déjà configuré pour rechercher dans cet emplacement de répertoire. Il n'est donc pas nécessaire de spécifier le chemin.

Pour notre zone avancée, ces détails ressembleront à ceci:

zone "example.com" {
    type slave;
    file "db.example.com";
};

Enfin, au lieu de la directiveallow-transfer, nous spécifierons les serveurs primaires, par adresse IP, depuis lesquels ce serveur acceptera les transferts de zone. Ceci est fait dans une directive appeléemasters:

zone "example.com" {
    type slave;
    file "db.example.com";
    masters { 192.0.2.1; };
};

Ceci complète notre spécification de zone de transfert. Nous pouvons utiliser le même format exact pour prendre en charge notre spécification de zone inversée:

zone "2.0.192.in-addr.arpa" {
    type slave;
    file "db.192.0.2";
    masters { 192.0.2.1; };
};

Lorsque vous avez terminé, vous pouvez enregistrer et fermer le fichier.

Test des fichiers et redémarrage du service

En réalité, nous n’avons pas à créer le fichier de zone sur la machine secondaire, car, comme nous l’avons déjà mentionné, ce serveur recevra les fichiers de zone du serveur principal. Nous sommes donc prêts à tester.

Encore une fois, nous devrions vérifier la syntaxe du fichier de configuration. Étant donné que nous n’avons aucun fichier de zone à vérifier, nous devons uniquement utiliser l’outilnamed-checkconf:

sudo named-checkconf

Si cela retourne sans erreur, cela signifie que les fichiers que vous avez modifiés ne contiennent pas d'erreur de syntaxe.

Si tel est le cas, vous pouvez redémarrer votre service Bind:

sudo service bind9 restart

Vérifiez les journaux sur les serveurs principal et secondaire en utilisant:

sudo tail -f /var/log/syslog

Certaines entrées devraient indiquer que les fichiers de zone ont été transférés correctement.

Déléguer l'autorité à vos serveurs de noms

Vos serveurs de noms faisant uniquement autorité doivent maintenant être complètement configurés. Cependant, vous devez toujours déléguer l'autorité de votre domaine à vos serveurs de noms.

Pour ce faire, vous devrez vous rendre sur le site Web où vous avez acheté votre nom de domaine. L'interface et peut-être la terminologie seront différentes selon le registraire de nom de domaine que vous avez utilisé.

Dans les paramètres de votre domaine, recherchez une option vous permettant de spécifier les serveurs de noms que vous souhaitez utiliser. Puisque nos serveurs de noms sontwithin notre domaine, c'est un cas particulier.

Au lieu que le registraire délègue simplement l'autorité pour la zone via l'utilisation d'enregistrements NS, il devra créer unglue record. Un enregistrement collé est un enregistrement A qui spécifie les adresses IP des serveurs de noms après avoir spécifié les serveurs de noms auxquels il délègue des droits.

En règle générale, la délégation répertorie uniquement les serveurs de noms qui gèrent l'autorité du domaine. Toutefois, lorsque les serveurs de noms font partie du domaine lui-même, un enregistrement A est nécessaire pour les serveurs de noms de la zone parent. Si cela ne se produisait pas, les résolveurs DNS resteraient bloqués dans une boucle car ils ne pourraient jamais trouver l’adresse IP des serveurs de noms du domaine qui suivrait le chemin de délégation.

Vous devez donc trouver une section du panneau de configuration de votre registraire de domaine qui vous permet de spécifier les adresses IP des serveurs de nomsand.

À titre de démonstration, le registraireNamecheap a deux sections de serveur de noms différentes.

Il existe une section intitulée «Enregistrement du serveur de noms» qui vous permet de spécifier les adresses IP des serveurs de noms de votre domaine:

NameCheap register name servers

À l'intérieur, vous pourrez entrer les adresses IP des serveurs de noms existant dans le domaine:

NameCheap internal name server

Cela créera l'enregistrement A qui servira d'enregistrements de liaison dont vous avez besoin dans le fichier de zone parent.

Ceci fait, vous devriez pouvoir changer les serveurs de noms actifs en serveurs de votre domaine. Dans NameCheap, cela s’effectue à l’aide de l’option de menu «Domain Name Server Setup»:

NameCheap domain name setup

Ici, vous pouvez lui indiquer d'utiliser les serveurs de noms que vous avez ajoutés en tant que serveurs faisant autorité pour votre site:

NameCheap use name servers

Les modifications peuvent prendre un certain temps à se propager, mais vous devriez voir les données de vos serveurs de noms utilisées au cours des prochaines 24 à 48 heures pour la plupart des bureaux d'enregistrement.

Conclusion

Vous devez maintenant avoir deux serveurs DNS faisant uniquement autorité qui sont configurés pour servir vos domaines. Ceux-ci peuvent être utilisés pour stocker des informations de zone pour des domaines supplémentaires à mesure que vous en acquérez d'autres.

La configuration et la gestion de vos propres serveurs DNS vous donnent le plus de contrôle sur la façon dont les enregistrements DNS sont gérés. Vous pouvez apporter des modifications et vous assurer que toutes les données DNS pertinentes sont à jour à la source. Bien que d'autres solutions DNS puissent faciliter ce processus, il est important de savoir que vous avez des options et de comprendre ce qui se passe dans des solutions davantage empaquetées.

Related