system_administration:networking:bind_dns_create

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.

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 ( FIXME 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.

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 section options
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 type NS 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 fichier named.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

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; };
  };

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" ;

1)
docker est une alternative intéressante
  • system_administration/networking/bind_dns_create.txt
  • Last modified: 2022/10/26 09:39
  • by aziz