Vous êtes sur la page 1sur 26

Tutoriel 1 :

Installation et configuration d’un serveur DNS (Bind) (CentOS 7.2)


Posted on 21 juillet 2016 by elie
Un serveur DNS (Domain Name Server) permet en autre de faire la relation
entre un nom de domaine et son adresse IP. Il en existe plusieurs sur Linux.

Installation de Bind
Bind (Berkeley Internet Name Daemon, parfois Berkeley Internet Name Domain)
étant disponible dans les dépots CentOS, nous allons donc l’installer via la
commande suivante :

1 yum install bind bind-utils

Configuration de Bind
Avant de modifier le fichier de configuration de Bind nous allons le sauvegarder
via la commande suivante :

1 cp /etc/named.conf{,.ori}

On édite le fichier via la commande suivante :

1 vi /etc/named.conf

On modifie le fichier comme ci-dessous :

1 //
2 // named.conf
3 //
4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
5 // server as a caching only nameserver (as a localhost DNS resolver only).
6 //
7 // See /usr/share/doc/bind*/sample/ for example named configuration files.
8 //
9
10 options {
11 // On indique à bind d’écouter sur l’adresse IP externe en plus l’adresse IP
12 // de loopbak
13 listen-on port 53 { 127.0.0.1; 192.168.0.1; };
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 // On indique à Bind de répondre aux requêtes locale ainsi que celle venant
20 // du réseau local
21 allow-query { localhost; 192.168.0.0/24; };
22 // On indique à Bind d’envoyer la demande aux serveurs de Google s’il n’a
23 // pas l’information demandée
24 forwarders { 8.8.8.8; 8.8.4.4; };
25
26 /*
27 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
28 - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion.
29 - If your recursive DNS server has a public IP address, you MUST enable access
30 control to limit queries to your legitimate users. Failing to do so will
31 cause your server to become part of large scale DNS amplification
32 attacks. Implementing BCP38 within your network would greatly
33 reduce such attack surface
34 */
35 recursion yes;
36
37 dnssec-enable yes;
38 dnssec-validation yes;
39
40 /* Path to ISC DLV key */
41 bindkeys-file "/etc/named.iscdlv.key";
42
43 managed-keys-directory "/var/named/dynamic";
44
45 pid-file "/run/named/named.pid";
46 session-keyfile "/run/named/session.key";
47 // On indique que le version de Bind ne soit pas indiqué pour limiter les
48 // risques d’attaques
49 version none;
50 ;
51
52 logging {
53 channel default_debug {
54 file "data/named.run";
55 severity dynamic;
56 };
57 };
58
59 zone "." IN {
60 type hint;
61 file "named.ca";
62 };
63
64 zone "mon-domaine.fr" IN {
65 type master;
66 file "/var/named/mon-domaine.fr.zone";
67 allow-update { none; };
68 };
69 zone "0.168.192.in-addr.arpa" IN {
70 type master;
71 file "/var/named/mon-domaine.fr.reverse";
72 allow-update { none; };
73 ;
74
75 include "/etc/named.rfc1912.zones";
76 include "/etc/named.root.key";

Création du fichier de zone pour le domaine « mon-


domaine.fr »
Un fichier de zone contient l’ensemble des services lié au domaine « mon-
domaine.fr ». Nous allons créer un fichier « mon-domaine.fr.zone » via la
commande suivante :

1 vi /var/named/mon-domaine.fr.zone

On y inscrit les lignes suivantes (les points après le domaine sont obligatoires) :

1 $TTL 3600
2 @ IN SOA srv1.mon-domaine.fr. root.mon-domaine.fr. (
3 2016071901 ; Serial
4 3600 ; Refresh [1h]
5 600 ; Retry [10m]
6 86400 ; Expire [1d]
7 600 ) ; Negative Cache TTL [1h]
8 ;
9 @ IN NS srv1.mon-domaine.fr.
10 @ IN MX 10 srv1.mon-domaine.fr.
11
12 srv1 IN A 192.168.0.1
13 srv2 IN A 192.168.0.2
14
15 mail IN CNAME srv1
16 pop IN CNAME srv1
17 www IN CNAME srv2

Afin de trouver le nom de domaine correspondant à une adresse IP, nous


devons créer un fichier de zone inverse via la commande suivante :

1 vi /var/named/mon-domaine.fr.reverse

On y inscrit les lignes suivantes (les points après le domaine sont obligatoires) :

1 $TTL 3600
2 @ IN SOA srv1.mon-domaine.fr. root.mon-domaine.fr. (
3 2016071901 ; Serial
4 3600 ; Refresh [1h]
5 600 ; Retry [10m]
6 86400 ; Expire [1d]
7 600 ) ; Negative Cache TTL [1h]
8 ;
9 @ IN NS srv1.mon-domaine.fr.
10 @ IN PTR mon-domaine.fr.
11
12 centos IN A 192.168.0.1
13 1 IN PTR srv1.mon-domaine.fr.
14 2 IN PTR srv2.mon-domaine.fr.

Maintenant que nous avons créer nos fichiers de zone et de zone inverse, je vais
vous expliquer à quoi correspondent les différents champs :
$TTL : (Time To Live) exprime la durée (en secondes) de validité, pendant
laquelle sont conservées en cache les réponses. Une fois ce délai expiré, il est
nécessaire de vérifier à nouveau les données. Les différents types :
SOA : permet de définir les informations relatives à la zone. En l’occurrence le
nom du serveur DNS primaire « srv1.mon-domaine.fr. » et l’adresse mail du
contact technique (root.mon-domaine.fr. ; le @ est remplace par un point). Il est
compose de plusieurs champs :
1. Serial : est un entier non signé 32 bits. C’est le numéro de série à incrémenter
à chaque modification du fichier. Il permet au serveur secondaire de recharger
les informations qu’ils ont. L’usage général vient à le formater de cette manière
YYYYMMDDXX, soit pour la première modification du 01/04/2007 ->
2016071901, pour la seconde 2016071902.
2. Refresh : définit la période de rafraîchissement des données (s’exprime en
secondes)
3. Retry : défini le délai que doivent attendre les ou les serveurs secondaires
pour réessayer si une erreur survient au cours du dernier rafraîchissement
(s’exprime en secondes)
4. Expire : défini le délai au bout duquel la zone sera considéré comme non
disponible si le ou les serveurs secondaires ne peuvent pas joindre le serveur
primaire (s’exprime en secondes)
5. Negative cache TTL : définit la durée de conservation des réponses pour des
enregistrements inexistants (s’exprime en secondes)
NS (Name Server) : renseigne le nom des serveurs de noms pour le domaine
MX (Mail eXchanger): renseigne sur le serveur de messagerie. Plusieurs peuvent
être définis. Ainsi, il est possible de leur donner une priorité en leur affectant un
numéro. Plus bas est le numéro, plus haute est la priorité
A (Address) : associe une nom d’hôte à une adresse ipv4 (32 bits)
AAAA (Address IPv6): associe une nom d’hôte à une adresse ipv6 (128 bits)
CNAME (Canonical NAME) : identifie le nom canonique d’un alias (un nom
pointant sur un autre nom)
PTR (Pointer Record) : c’est simplement la résolution inverse (le contraire du
type A)
Maintenant que nous avons configuré et créé les différents fichiers de zone,
nous allons vérifier que nous n’avons pas oublié un caractère ou fait d’erreur de
frappe afin de pouvoir démarrer Bind.
Pour vérifier la configuration de Bind proprement dite, nous allons taper la
commande suivante :

1 named-checkconf -z

Voici ce que devrait retourner la commande si tout est bon :

1 zone mon-domaine.fr/IN: loaded serial 2016071901


2 zone 0.168.192.in-addr.arpa/IN: loaded serial 2016071901
3 zone localhost.localdomain/IN: loaded serial 0
4 zone localhost/IN: loaded serial 0
5 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
6 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
7 zone 0.in-addr.arpa/IN: loaded serial 0

Pour vérifier les fichiers de zone, nous allons taper les commandes suivantes :

1 named-checkzone mon-domaine.fr /var/named/mon-domaine.fr.zone


2 named-checkzone 0.168.192.in-addr.arpa /var/named/mon-domaine.fr.reverse

Voici ce que devrait respectivement retourner les commandes si tout est bon :

1 zone mon-domaine.fr/IN: loaded serial 2016071901


2 OK

et

1 zone 0.168.192.in-addr.arpa/IN: loaded serial 2016071901


2 OK

Si tout est bon, nous pouvons lancer le service Bind via les commandes
suivantes :

1 systemctl enable named.service


2 systemctl start named.service
Nous devons configurer notre nouveau serveur DNS sur notre machine. Pour
cela, nous tapons la commande suivante :

1 vi /etc/sysconfig/network-scripts/ifcfg-XXXX

On modifie le fichier comme ci-dessous :

1 TYPE="Ethernet"
2 BOOTPROTO="none"
3 DEFROUTE="yes"
4 IPV4_FAILURE_FATAL="no"
5 IPV6INIT="yes"
6 IPV6_AUTOCONF="yes"
7 IPV6_DEFROUTE="yes"
8 IPV6_FAILURE_FATAL="no"
9 NAME="eno16777736"
10 UUID="d3f499e2-8908-4464-ba1b-4243c8c011c1"
11 DEVICE="eno16777736"
12 ONBOOT="yes"
13 IPADDR="192.168.0.1"
14 PREFIX="16"
15 GATEWAY="192.168.0.254"
16 DNS1="192.168.0.1"
17 SEARCH="mon-domaine.fr"
18 IPV6_PEERDNS="yes"
19 IPV6_PEERROUTES="yes"
20 IPV6_PRIVACY="no"

On doit redémarrer le service réseau pour prendre en compte les modifications.


Pour cela on tape la commande suivante :

1 systemctl restart network.service

Afin d’autoriser les requêtes DNS sur notre serveur, nous devons ouvrir les ports
correspondant sur le firewall. Pour cela nous tapons les commandes suivantes :

1 firewall-cmd --permanent --zone=public --add-service=dns


2 firewall-cmd --reload

Nous pouvons maintenant vérifier que notre serveur DNS répond bien aux
requêtes.
Vérifions le fonctionnement du MX :

1 host -t MX mon-domaine.fr

Résultat :
1 mon-domaine.fr mail is handled by 10 srv1.mon-domaine.fr.

Vérifions le fonctionnement des résolutions inverse :

1 dig -x 192.168.0.1

Résultat :

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -x 192.168.0.1


1
2
;; global options: +cmd
3
;; Got answer:
4
5
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 10245
6
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
7
8
;; OPT PSEUDOSECTION:
9
; EDNS: version: 0, flags:; udp: 4096
10
11
;; QUESTION SECTION:
12
;1.0.168.192.in-addr.arpa. IN PTR
13
14
;; AUTHORITY SECTION:
15
0.168.192.in-addr.arpa. 600 IN SOA srv1.mon-domaine.fr. root.mon-domaine.fr. 2016071901 3600 600
16
86400 600
17
18
;; Query time: 1 msec
19
;; SERVER: 192.168.0.1#53(192.168.0.1)
20
;; WHEN: mar. juil. 19 18:38:56 CEST 2016
21
;; MSG SIZE rcvd: 113

Vérifions la résolution de nom via NSLOOKUP :

1 nslookup srv1.mon-domaine.fr

Résultat :

1 Server: 192.168.0.1
2 address: 192.168.0.1#53
3
4 Name: srv1.mon-domaine.fr
5 Address: 192.168.0.1
Tutoriel 2 :
Introduction
Le DNS (Domain Name Service) est un service Internet qui trace les adresses IP en
fonction du FQDN (Fully Qualified Domain Names) et vice versa.
BIND signifie Berkley Internet Naming Daemon.
BIND est le programme le plus communément utilisé pour faire la maintenance d’un serveur
DNS sous Linux.
Dans cet article, nous verrons comment installer et configurer un serveur DNS.

Informations réseau
Nous allons mettre en place un serveur local DNS pour le réseau montré sur le schéma ci -
dessous.
Nous utiliserons le domaine « supinfo.net » comme exemple pour cette installation DNS. «
mail », « web », « ns » sont les hôtes qui sont sur le domaine.
Il est possible de configurer un simple système pour agir en tant que serveur DNS cache,
Primaire/Master (Le serveur Primaire/Master est le serveur principale qui fonctionne tout le
temps) et Secondaire/Slave (Le serveur Secondaire/Slave est un serveur qui peut être
utiliser pour déléguer des tâches du serveur principale ou encore prendre le relais si le
principale meurt). Nous configurons ce serveur DNS en tant que Master ainsi qu’en tant
que serveur DNS cache.
Nous installerons les serveurs DNS sur l’adresse « 10.42.0.83 ».
Installation de Bind
Installez le package bind9 en utilisant le package approprié pour votre distribution Linux.
Sur Debian/Ubuntu utilisez la commande suivante :
$ sudo apt-get install bind9
Sur Red Hat/cent OS/Fedora utilisez la commande suivante :
# yum install bind9
Toutes les configurations DNS sont stockées sous le répertoire /etc/bind. La configuration
primaire est /etc/bind/named.conf, laquelle inclura les autres fichiers nécessaires. Le fichier
nommé /etc/bind/db.root décrit les serveurs DNS racines du monde.

Configurer le serveur DNS cache


Le travail d’un serveur DNS de cache et d’envoyer des requêtes aux autres serveurs DNS
et de garder en cache les réponses. Ainsi la prochaine fois que la requête sera faite, la
réponse sera récupérée directement depuis le cache. Ce cache est d’ailleurs, mise à jour
de façon régulière.
Notez que même s’il est possible de configurer Bind pour qu’il soit un serveur primaire ainsi
qu’un serveur cache, il n’est pas conseillé pour des raisons de sécurité, de le faire. Avoir
un serveur cache séparer est préférable.
Tout ce que nous avons à faire pour configurer un serveur DNS cache est d’ajouter le
serveur DNS de votre FAI (fournisseur d’accès Internet) ou n’importe quel OpenDNS server
au fichier /etc/bind/named.conf.options. Par exemple, nous allons utiliser les serveurs DNS
publiques de Google, 8.8.8.8 et 8.8.4.4.
Décommentez et modifié les lignes suivantes dans le fichier /etc/bind/named.conf.options.
forwarders {
8.8.8.8;
8.8.4.4;
};
Après le changement dans le fichier, redémarrez le serveur DNS.
$ sudo service bind9 restart

Tester le serveur DNS cache


Vous pouvez utiliser la commande dig pour tester les services DNS :
$ dig ubuntu.com

;; Query time: 1323 msec


Maintenant lorsque vous effectuez une seconde fois la commande dig, il devrait y avoir une
amélioration au niveau du temps de la requête. Comme vous le voyez en dessous la
seconde fois le temps n’est que de 3 ms car l’information a été récupérée directement
depuis le serveur cache DNS.
$ dig ubuntu.com

;; Query time: 3 msec

Configurer le serveur DNS Primaire/Master


Maintenant, nous allons configurer bind9 comme le Master pour le domaine « supinfo.net
».
Comme première étape dans la configuration de notre serveur DNS, nous devons Forward
et Reverse la résolution de bind9.
Pour ajouter la resolution Forward et Reverse vers bind9, modifiez
/etc/bind9/named.conf.local.
zone "supinfo.net" {
type master;
file "/etc/bind/db.supinfo.net";
};
zone "0.42.10.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.10";
};
Maintenant le fichier /etc/bind/db.supinfo.net va avoir les détails pour résoudre (la
résolution de nom est le fait de trouver le nom de l'hôte grâce à son adresse IP et vice -
versa) le nom de l’hôte à son adresse IP pour ce domaine/zone, et le fichier /etc/bind/db.10
va avoir les détails pour résoudre l’adresse IP au nom d’hôte.

Mise en place de la Forward resolution pour le


serveur DNS Primaire/Master
Maintenant nous allons ajouter les détails qui sont nécessaires pour la forward resolution
dans le fichier /etc/bind/db.supinfo.net.
Premièrement, copiez /etc/bind/db.local dans /etc/bind/db.supinfo.net :
$ sudo cp /etc/bind/db.local /etc/bind/db.supinfo.net
Ensuite, modifiez le fichier /etc/bind/db.supinfo.net et remplacez ce qui suit.
1. Dans les lignes qui comportent SOA : localhost. - C’est le FQDN du serveur en charge
de ce domaine. Nous avons installé bind9 sur l’adresse 10.42.0.83, pour laquelle le nom
d’hôte est « ns ». Remplacez donc « localhost. » par « ns.supinfo.net. ». Vérifiez bien que
cela termine par un point.
2. Dans les lignes qui comportent SOA : root.localhost. - C’est l’adresse e-mail de la
personne qui est responsable de ce serveur. Utilisez un point au lieu d’un arobase. On
remplace donc par lak.localhost.
3. Dans les lignes qui comportent NS : localhost. - Cela définit le serveur DNS du domaine.
Nous devons changer ceci vers le FQDN du serveur DNS. Changez donc pour «
ns.supinfo.net. ». Oubliez pas le « . » À la fin.
Ensuite définissez-le record A et record MX pour le domaine. Le record A est celui qui
associe le nom d’hôte à l’adresse IP, et le record MX indiquera le serveur mail à utiliser
pour ce domaine.
Une fois que les changements sont faits, le fichier /etc/bind/db.supinfo.net ressemblera à
sa :
$TTL 604800
@ IN SOA ns.supinfo.net. lak.localhost. (
1024 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.supinfo.net.
supinfo.net. IN MX 10 mail.supinfo.net.
ns IN A 10.42.0.83
web IN A 10.42.0.80
mail IN A 10.42.0.70

Mise en place de la Reverse resolution pour le


serveur DNS Primaire/Master
Nous allons ajouter les détails nécessaires pour la Reverse Resolution dans le fichier
/etc/bind/db.10. Copiez le fichier /etc/bind/db.127 dans /etc/bind/db.10.
$ sudo cp /etc/bind/db.127 /etc/bind/db.10
Ensuite, modifiez le fichier /etc/bind/db.10, échangez les mêmes options que dans le fichier
/etc/bind/db.supinfo.net.
$TTL 604800
@ IN SOA ns.supinfo.net. root.localhost. (
20 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
Ensuite, pour chaque record A dans le fichier /etc/bind/db.supinfo.net, ajoutez un record
PTR.
$TTL 604800
@ IN SOA ns.supinfo.net. root.supinfo.net. (
20 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
83 IN PTR ns.supinfo.net.
70 IN PTR mail.supinfo.net.
80 IN PTR web.supinfo.net.
Enfin, redémarrez le service bind9 :
$ sudo service bind9 restart

Conclusion
Maintenant que nous avons configuré le serveur DNS pour notre domaine. Nous allons
tester notre serveur DNS en faisant un ping vers mail.supinfo.net depuis web.supinfo.net.
Si le ping s’effectue avec succès, alors le serveur DNS est bien configuré
Tutoriel 3 :
Cet article décrit la mise en place d’un serveur DNS avec BIND sur un serveur dédié tournant
sous CentOS 7. Le système de noms de domaine ou DNS (Domain Name System)
permet d’établir une correspondance entre les adresses IP et les noms de domaine. Le DNS évite
ainsi d’avoir à se rappeler des adresses IP.

 Prérequis
 Installation
 Serveur cache DNS
 Configurer la journalisation
 Désactiver l’IPv6
 Utiliser les DNS de base de chez Online
 Serveur maître primaire
 DNS secondaire
 Reverse DNS
 Quelques vérifications
 Téléchargement

Prérequis
Dans le pare-feu, ouvrir le port 53 en TCP et en UDP. Les gourous de la
sécurité ont longtemps conseillé d’ouvrir le port 53 en UDP seulement pour
les requêtes DNS. Or, ces dernières peuvent également utiliser le port 53
en TCP si l’UDP n’est pas accepté.

Installation
Outre le serveur bind à proprement parler, on installera le paquet bind-utils,
qui fournit une collection d’outils comme dig, host et nslookup.

$ sudo yum install bind bind-utils

Serveur cache DNS


La configuration par défaut fournie par Red Hat est déjà assez
sophistiquée. On va la sauvegarder pour partir sur quelque chose de plus
simple.

$ cd /etc
$ sudo mv named.conf named.conf.orig

Éditer /etc/named.conf comme ceci.

// /etc/named.conf

options {

directory "/var/named";

};

zone "." IN {

type hint;

file "named.ca";

};

include "/etc/named.rfc1912.zones";

Régler les permissions de ce fichier.

$ sudo chown root:named /etc/named.conf

$ sudo chmod 0640 /etc/named.conf

Activer et démarrer BIND.

$ sudo systemctl enable named


$ sudo systemctl start named

Vérifier si le service tourne correctement.

$ systemctl status named

● named.service - Berkeley Internet Name Domain (DNS)

Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset:


disabled)

Active: active (running) since Fri 2019-02-08 09:47:39 CET; 31s ago

Exécuter dig sur un domaine extérieur en vérifiant le temps de requête.

$ dig centos.org @localhost

...

;; ANSWER SECTION:

centos.org. 60 IN A 85.12.30.226

;; AUTHORITY SECTION:

centos.org. 14400 IN NS ns4.centos.org.

centos.org. 14400 IN NS ns1.centos.org.

centos.org. 14400 IN NS ns3.centos.org.

;; ADDITIONAL SECTION:

ns4.centos.org. 86400 IN A 62.141.54.220

ns3.centos.org. 86400 IN A 88.208.217.170

ns1.centos.org. 86400 IN A 199.187.126.93

;; Query time: 141 msec


;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Mon Apr 17 11:13:02 CEST 2017

;; MSG SIZE rcvd: 157

Le temps de réponse devrait être bien plus court après une deuxième
invocation de dig.

$ dig centos.org @localhost

...

;; Query time: 1 msec

Configurer la journalisation
Dans notre configuration actuelle, les logs inondent /var/log/messages. Pour
éviter ça, on va configurer une journalisation propre à BIND en ajoutant la
stance correspondante à /etc/named.conf.

options {

directory "/var/named";

};

logging {

channel single_log {

file "/var/log/named/named.log" versions 3 size 2m;

severity info;

print-time yes;
print-severity yes;

print-category yes;

};

category default {

single_log;

};

};

BIND ne peut pas créer ce fichier à la volée. On va donc le faire à sa place,


en attribuant les permissions correctes.

$ sudo mkdir /var/log/named

$ sudo touch /var/log/named/named.log

$ sudo chown -R named:named /var/log/named/

$ sudo chmod 0770 /var/log/named

Si l’on utilise SELinux en mode renforcé, il faut impérativement réétiqueter


le répertoire /var/log/named et son contenu.

$ sudo restorecon -R -v /var/log/named

Recharger la configuration de BIND.

$ sudo systemctl reload named

Désactiver l’IPv6
Si l’on n’utilise pas l’IPv6, on peut désactiver le protocole en
éditant /etc/sysconfig/named.
OPTIONS="-4"

Il faudra également ajouter une option à /etc/named.conf.

options {

directory "/var/named";

filter-aaaa-on-v4 yes;

};

Redémarrer BIND pour prendre en compte les modifications.

$ sudo systemctl restart named

Utiliser les DNS de base de chez


Online
Online met à disposition deux serveurs DNS de base que nous allons
utiliser de préférence.

options {

directory "/var/named";

filter-aaaa-on-v4 yes;

forwarders {

62.210.16.6;

62.210.16.7;

};

};
À partir de là, on pourra utiliser notre propre serveur cache DNS par défaut.

# /etc/resolv.conf

nameserver 127.0.0.1

Recharger la configuration de BIND.

$ sudo systemctl reload named

Serveur maître primaire


À présent, nous allons configurer BIND comme serveur maître primaire du
domaine slackbox.fr. Le nom de domaine sera réservé au bureau
d’enregistrement (registrar) BookMyName.com.
Pour ajouter une zone DNS à BIND afin de le transformer en serveur maître
primaire, il faut tout d’abord indiquer l’emplacement du fichier de zone
à /etc/named.conf. Pour plus de lisibilité, nous allons créer un
fichier /etc/named.conf.local.

// /etc/named.conf.local

zone "slackbox.fr" {

type master;

file "zone.slackbox.fr";

};

Le fichier named.conf.local aura les mêmes permissions que named.conf.

$ sudo chown root:named /etc/named.conf.local

$ sudo chmod 0640 /etc/named.conf.local


Éditer /etc/named.conf en incluant ce fichier.

zone "." IN {

type hint;

file "named.ca";

};

include "/etc/named.rfc1912.zones";

include "/etc/named.conf.local";

Le fichier /var/named/zone.slackbox.fr devra être édité comme ceci.

; /var/named/zone.slackbox.fr

$TTL 86400

$ORIGIN slackbox.fr.

@ IN SOA ns.slackbox.fr. hostmaster.slackbox.fr. (

2019020801 ; sn

10800 ; refresh (3 heures)

600 ; retry (10 minutes)

1814400 ; expiry (3 semaines)

10800 ) ; minimum (3 heures)

IN NS ns.slackbox.fr.

IN NS nssec.online.net.
IN MX 10 mail.slackbox.fr.

slackbox.fr. A 163.172.220.174

ns IN A 163.172.220.174

mail IN A 163.172.220.174

www CNAME slackbox.fr.

ftp CNAME slackbox.fr.

Définir les permissions qui vont bien.

$ sudo chown root:named /var/named/zone.slackbox.fr

$ sudo chmod 0640 /var/named/zone.slackbox.fr

Quelques remarques sur la syntaxe et les options utilisées.

 La directive $TTL (Time To Live) définit le temps en secondes qu’un


enregistrement pourra être gardé dans le cache par un autre serveur
de noms.
 La directive $ORIGIN définit le nom de domaine automatiquement
ajouté à tous les noms de domaine incomplets (c’est-à-dire « non
qualifiés ») définis dans un enregistrement DNS. Le nom de domaine
est toujours un FQDN (Fully Qualified Domain Name) et se termine
en conséquence par un point.
 L’enregistrement SOA (Start Of Authority) définit les principales
caractéristiques pour la zone ou le domaine avec un certain nombre
de paramètres.
 Le symbole @ se substitue à la valeur de $ORIGIN, concrètement
à slackbox.fr.
 IN définit la classe Internet. D’autres valeurs existent, mais elles sont
rarement utilisées.
 L’enregistrement NS définit le serveur de noms primaire pour la zone.
 hostmaster.slackbox.fr définit l’adresse mail de l’administrateur de
la zone. L’adresse hostmaster est recommandée, mais n’importe
quelle adresse mail valide peut être définie ici. Étant donné que le
symbole @ a une signification spécifique dans le contexte, on utilise
les points comme séparateurs, ce qui explique la syntaxe bizarre.
L’adresse mail définie ici est donc hostmaster@slackbox.fr.
 2019020801 définit le numéro de série associé à la zone. Par
convention, on utilise le format AAAAMMJJSS. Le numéro de série doit
impérativement être mis à jour à chaque fois que l’on modifie le
domaine.
 La valeur refresh contrôle la mise à jour des informations du serveur
de noms esclave de la zone. Les valeurs typiques se situent entre 3
heures (10800) et 24 heures (86400).
 La valeur retry définit le temps d’attente avant une deuxième
tentative lorsque le serveur de noms esclave n’arrive pas à contacter
le serveur maître pour rafraîchir les informations. Les valeurs
typiques se situent entre 10 minutes (600) et 60 minutes (3600).
 La valeur expiry définit le laps de temps au bout duquel les
enregistrements de zone sont considérés comme ne faisant plus
autorité. On choisira une valeur assez élevée, située entre une
semaine (604800) à trois semaines (1814400).
 La valeur minimum définit le laps de temps durant lequel des réponses
négatives (NXDOMAIN) peuvent être gardées en cache par le serveur
de noms esclave. Cette valeur se situera entre 0 et 3 heures (10800).
 L’enregistrement NS (NS Resource Record) définit le ou les serveurs
de noms pour le domaine ou la zone.
 L’enregistrement A (A Resource Record) définit l’adresse IPv4 d’un
hôte du domaine ou de la zone.

Vérifier la définition correcte de la zone.

$ sudo named-checkzone slackbox.fr /var/named/zone.slackbox.fr

zone slackbox.fr/IN: loaded serial 2019020801

OK

À chaque fois que l’on modifie le fichier de zone, on doit obligatoirement


incrémenter le numéro de série. Ne pas oublier de recharger la
configuration de BIND après chaque modification.

$ sudo systemctl reload named

Dans l’interface de gestion de BookMyName.com (entrée de menu Gérer),


il faudra indiquer qu’on gère nous-mêmes notre propre DNS. Pour ce faire,
cliquer sur le nom de domaine dans la liste des noms de domaine, puis
sur Modifier dans l’entrée de menu Vos DNS. Notez que dans la deuxième
ligne, l’adresse IP correspondant à nssec.online.net est facultative.

DNS secondaire
La présence d’un serveur DNS secondaire est nécessaire pour les noms de
domaine en .fr. Ce n’est pas la peine de louer un deuxième serveur, Online
met gracieusement un DNS secondaire à disposition.
Dans la console Online, afficher les données du serveur. Dans le menu à
gauche, cliquer sur DNS secondaires et définir une nouvelle entrée.
Éditer /etc/named.conf.local et autoriser le transfert de la zone vers le DNS
secondaire d’Online.

// /etc/named.conf.local

...

zone "slackbox.fr" {

type master;

allow-transfer { 62.210.16.8; };

file "zone.slackbox.fr";

};

Reverse DNS
Il ne reste plus qu’à configurer les reverse DNS. Pour une configuration
correcte du serveur, il faut que son adresse IP pointe vers le résultat de la
commande hostname --fqdn. En l’occurrence, nous devons faire
pointer 163.172.220.174 vers sd-100246.dedibox.fr. Là aussi, il faut se rendre
dans la console Online > Liste de vos serveurs > Serveur > Réseau >
Modifier les reverses et fournir le nom d’hôte souhaité. Pour la prise en
compte des modifications, il faudra patienter un peu.

Quelques vérifications
Voici une série de commandes pour tester la configuration correcte d’un
domaine. On procédera à ces vérifications sur le serveur aussi bien que sur
une machine externe.
1. Configuration du DNS

$ host slackbox.fr

slackbox.fr has address 163.172.220.174

slackbox.fr mail is handled by 10 mail.slackbox.fr.

2. Configuration du reverse DNS

$ host 163.172.220.174

174.220.172.163.in-addr.arpa domain name pointer

sd-100246.dedibox.fr.

3. Nom d’hôte du serveur mail

$ host -t mx slackbox.fr
slackbox.fr mail is handled by 10 mail.slackbox.fr.

4. Adresse IP du serveur mail.

$ host mail.slackbox.fr

mail.slackbox.fr has address 163.172.220.174

Téléchargement
Des modèles de fichiers named.conf, named.conf.local et zone.exemple.fr sont
disponibles dans mon dépôt Github, dans le répertoire el7/config/bind.

$ git clone https://github.com/kikinovak/centos

Autre tutoriel :
https://www.supinfo.com/articles/single/1005-configuration-dns-centos

https://www.supinfo.com/articles/single/1982-intstallation-configuration-serveur-dns-bind

https://www.unixmen.com/setting-dns-server-centos-7/

Tutoriel vidéo :
https://www.youtube.com/watch?v=is-eg2X5ru4

https://www.youtube.com/watch?v=ZCG12vQnJ0s