Créer un serveur DNS avec Bind9
La principale fonction d'un serveur de noms (Domain Name System) est
de traduire un nom de domaine
en une (ou plusieurs) adresses IP
.
Création d'un serveur DNS en utilisant BIND9
La mise en place d'un serveur DNS
sur un réseau permet de remplacer
les adresses IP des machines par un nom. Ainsi, il est même possible
d'associer plusieurs noms à la même machine pour mettre en évidence
les différents services possibles.
Nous devons disposer de deux machines linux. On doit installer le service bind9 dans les deux hôtes avec la commande 1):
apt-get install bind9
Quelques notions essentielles avant de configurer les serveurs.
- TLD (Top-Level Domains) : Il s'agit du niveau le plus élevé de la hiérarchie DNS.
- SLD (Secondary Level Domains) : Ce sont les noms de domaines avec lesquels vous êtes le plus familier, comme google.com, slashdot.org, thejimmahknows.com. Remarquez chacun de ces suffixes.
- Sub Domains : ressources regroupées logiquement, telles que mail.google.com et www.google.com. Peut avoir plusieurs sous-domaines de préfixe ( c'est-à-dire test.test.igpro-online.net).
- Resource Records : Il existe plusieurs types. Les plus courants sont les enregistrements A, MX et CNAME.
- PTR (Pointer Record) : Un enregistrement PTR peut uniquement être créé sur les serveurs de noms gérés par le propriétaire de l’adresse IP et s’applique uniquement à des adresses IP fixes.
Configuration du Master
On utilisera le nom de domaine mederis.net et deux Addresses IP :
62.210.103.156
pour le master
et 62.210.139.88
pour le slave
.
- Vérifier que le dossier d'installation
bind
a les bonnes permission/etc/bind/
-rw-r--r-- 1 root bind 463 Jan 15 2018 named.conf
- Éditer le fichier
named.conf.options
, dans la sectionoptions
options { ... dnssec-enable yes; dnssec-validation auto; auth-nxdomain no; /* conform to RFC1035 */ listen-on { 127.0.0.1; 62.210.103.156; /* l'addresse IP du Master */ }; allow-transfer { 62.210.139.88; /* l'addresse IP du Slave */ }; ... };
- Crée un dossier
zones
dans le dossier bind et crée un fichier avec votre nom de domaine, ce dernier contiendra la configuration de votre zone
$TTL 3600 test.mederis.net. IN SOA ns1.test.mederis.net. admin.test.mederis.net. ( 20 /* ;Serial */ 600 /* ;Refresh */ 3600 /* ;Retry */ 604800 /* ;Expire */ 3600 /* ;Minimum */ ) /* ;Nameservers */ test.mederis.net. IN NS ns1.test.mederis.net. test.mederis.net. IN NS ns2.test.mederis.net. /* ;Resolve Nameserver IPs */ ns1.test.mederis.net. IN A 62.210.103.156 ns2.test.mederis.net. IN A 62.210.139.88 /* ; Main Ip resolution */ test.mederis.net. IN A 62.210.139.88 /* ; CNAMEs */ lola.test.mederis.net. IN CNAME test.mederis.net.
- Ajouter deux records de type
A
et l'autre de typeNS
chez votre fournisseur DNS.
/* # A records */ ns1.test.mederis.net. 900 A 62.210.103.156 # addresse IP Master ns2.test.mederis.net. 900 A 62.210.139.88 # addresse IP Slave /* # Name server */ test.mederis.net. 900 NS ns2.test.mederis.net. test.mederis.net. 900 NS ns1.test.mederis.net.
- Une zone inversée est également requise. Une zone inversée permet au DNS de convertir une adresse en un nom. Donc on crée deux fichiers de zones
reverse
dans le dossier/etc/bind/zones/
/* # /etc/bind/db.62.210.103 */ $TTL 3600 103.210.62.in-addr.arpa. IN SOA ns1.test.mederis.net. admin.test.mederis.net. ( 14 /* ; Serial */ 1h /* ; Refresh [1h] */ 10m /* ; Retry [10m] */ 1d /* ; Expire [1d] */ 10m) /* ; Negative Cache TTL [1h] */ /* ; Name Server */ 103.210.62.in-addr.arpa. IN NS ns1.test.mederis.net. /* ; PTR Records */ 158.103.210.62.in-addr.arpa. IN PTR ns1.test.mederis.net.
/* # /etc/bind/db.62.210.139 */ $TTL 3600 139.210.62.in-addr.arpa. IN SOA ns2.test.mederis.net. admin.test.mederis.net. ( 14 /* ; Serial */ 1h /* ; Refresh [1h] */ 10m /* ; Retry [10m] */ 1d /* ; Expire [1d] */ 10m) /* ; Negative Cache TTL [1h] */ /* ; Name Server */ 139.210.62.in-addr.arpa. IN NS ns2.test.mederis.net. /* ; PTR Records */ 158.103.210.62.in-addr.arpa. IN PTR ns2.test.mederis.net.
- Ajouter la configuration correspondant au
reverse
dans le fichiernamed.conf.local
... zone "103.210.62.in-addr.arpa" { type master; file "/etc/bind/zones/db.62.210.103"; notify yes; }; zone "139.210.62.in-addr.arpa" { type master; file "/etc/bind/zones/db.62.210.139"; notify yes; };
- Redémarrer le serveur
Bind9
en utilisant la commande (PS: À chaque reload après modification dans l'un des fichiers ne pas oublier pas d'incrémenter le numéro de série (serial) du fichier zone de votre domaine)
sudo rndc reload # OR sudo systemctl restart bind9
Configuration du Slave
Dans la configuration du Slave on va installer les mêmes dépendances qu'on a déjà installées dans le Master. Le but est que les deux serveurs puissent communiquer. Le serveur Master doit pouvoir faire un transfert de zone aux Slave
- Éditer dans la fin du fichier
named.conf.options
options{ ... dnssec-validation auto; auth-nxdomain no; /* # conform to RFC1035 */ allow-query { 127.0.0.1; 62.210.139.88; }; listen-on { 127.0.0.1; 62.210.139.88; }; listen-on { any; }; listen-on-v6 { any; }; allow-transfer { 51.15.188.118; 127.0.0.1; }; };
- Éditer le fichier
named.conf.local
zone "test.mederis.net" IN { type slave; file "/etc/bind/zones/test.mederis.net"; masters { 62.210.103.156; }; }; zone "103.210.62.in-addr.arpa" { type slave; file "/etc/bind/zones/db.62.210.103"; masters { 62.210.103.156; }; }; zone "139.210.62.in-addr.arpa" { type slave; file "/etc/bind/zones/db.62.210.139"; masters { 62.210.103.156; }; };
DNSSEC
Le DNSSEC
permet de sécuriser l’authenticité de la réponse DNS. La
sécurité des données est effectuée à l’aide d’un mécanisme de clés
(KSK
pour Key Signing Key & ZSK
pour Zone Signing Key) qui signe
les enregistrements DNS de sa propre zone.
- Génération des paires de clefs
KSK
&ZSK
dans le dossier/etc/bind/
(dans ce cas on a utilisé l'algorithme NSEC3RSASHA1)
# Passer à root pour pouvoir générer les clefs dnssec-keygen -a NSEC3RSASHA1 -b 4096 -n ZONE test.mederis.net # Generate ZSK KEYS dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE test.mederis.net # Generate KSK KEYS # Changer les noms des deux clefs générées par un nom symbolique mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.key #ZSK public key mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.private #ZSK private key mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.key #KSK public key mv Ktest.mederis...+0..key Ktest.mederis.net.ksk.private #KSK private key
- Inclure les clefs générées à la fin du fichier de zone du domaine
/etc/bind/zones/test.mederis.net
$INCLUDE "/etc/bind/Ktest.mederis.net.ksk.key" ; $INCLUDE "/etc/bind/Ktest.mederis.net.zsk.key" ;