« Serveur DNS » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
 
(111 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Installation ==
== Présentation ==


Depuis un serveur Ubuntu il suffit d'installer le paquet bind9 :
=== Introduction ===


{{ Box Console | objet=sudo apt-get install bind9 }}
DNS est un protocole permettant d'associer à une IP un nom de machine et réciproquement. Le service utilisé pour assurer cette fonction est Bind.


== Configuration ==
L'inventaire des zones gérés par le serveurs DNS sont renseignés dans le fichier '''/var/named/chroot/etc/named.conf'''. Les fichiers de zone sont stockés '''/var/named/chroot/var/named/'''.


=== Fichier /etc/bind/named.conf.options ===
=== Le nom de domaine ===


Si vous disposez de plusieurs sous-réseaux et que votre serveur doit être sollicité par ces machines de sous-réseaux différents, il sera alors nécessaire d'autoriser les requêtes depuis ces sous-réseaux vers votre serveur de DNS. Pour cela il faut ajouter la directive ''allow-query'' dans Bind et y définir les ranges IP de vos sous réseaux :
Bind est un serveur de DNS. Le DNS permet de gérer les noms de domaines qui régissent aujourd'hui le nommage du réseau Internet. Aujourd'hui, il est rare que l'on accède à un serveur directement par son adresse IP sauf si l'on veut se soustraire à l'étape de résolution DNS ''(pour du debuggage, par exemple)''.


  Allow-query {
Un nom de domaine est composé généralement de deux parties. Voici par exemple un nom de domaine :
  10.0.0.0/28;
<span style="color:purple">ncad</span>.<span style="color:red">fr</span>
  10.0.0.32/28;
Avec :
* <span style="color:purple">ncad</span> : qui désigne le domaine;
* <span style="color:red">fr</span> : qui désigne l'extension de domaine.
 
==== Le rôle du Registry ou Registre ====
 
Le DNS est un système hiérarchisé. L'extension de domaine est gérée par une entité nationale - dans le cadre des extensions ccTLD comme .fr pour la France - ou par des entités tiers internationales - pour les extensions génériques gTLD comme l'extension .com.
 
Ces entités qui assure la gestion technique d'une ou plusieurs extensions de domaine ccTLD et/ou gTLD sont appelées '''registry''' ou '''registre''' pour l’appellation française.
 
{{ Box_Attention | objet=Les registres ne s'occupent uniquement de l'aspect technique de leur extension. L'aspect commercial est délégué aux registrars / bureaux d'enregistrement. }}
 
==== Le rôle du Registrar ou Bureau d'enregistrement ====
 
Lors de son lancement, le registre peut faire la promotion de son extension. Cependant, sa vente et son dépôt sont gérées par les '''Bureaux d'enregistrement''' ou '''Registrars'''.
 
Ces Registrars sont des sociétés de service, ils peuvent être des hébergeurs web ou encore des opérateurs de télécommunication. Ils sont l'interface entre le '''Registrant''' ''(celui qui veut déposer un nom de domaine)'' et le '''Registry''' ''(l'organisme qui gère l'extension du domaine)''.
 
Pour pouvoir exister, un domaine doit obligatoirement être déposé dans l'une des nombreuses extensions de domaine. Le dépôt doit être effectué via le '''Registrar''' en respectant les conditions de dépôt propres à chaque extension ''(nationalité du Registrant, âge, pays de résidence, forme juridique, ...)''.
 
Une fois déposé, le nom de domaine doit être hébergé sur deux serveurs DNS. Le premier est désigné comme '''serveur primaire'''. C'est sur ce serveur que les modifications sur la zone seront opérées. Le seconde serveur est un '''serveur secondaire'''. C'est un serveur de sauvegarde en cas de panne du serveur primaire. Ces serveurs doivent être indiqués au '''Registre''' lors du dépôt du nom de domaine. Généralement, le '''Registrar''' fournit deux serveurs DNS pour héberger la '''zone DNS''' du nom de domaine déposé.
 
Ainsi, la '''zone DNS''' est la matérialisation du '''nom de domaine''' d'un point de vue technique sur le DNS. Cette zone est hébergée sur au moins deux serveurs DNS. Le '''Registre''' déclare le nom de domaine et indique quels serveurs DNS hébergent la zone DNS du nom de domaine déposé pour permettre sa '''résolution'''.
 
==== Le WHOIS ====
 
Le whois est une base de données propres à chaque '''Registry'''. Cette base administrative permet d'enregistrer les contacts d'un nom de domaine qui sont :
* '''le registrant :''' la personne qui a déposé le nom de domaine et qui est titulaire de ce dernier;
* '''le contact administratif :''' souvent le même contact désigné que pour le registrant. Cette personnes peut effectuer les opérations aussi bien techniques ''(ajout, modification, suppression d'enregistrements sur la zone DNS)'' que administratives ''(modification des contacts pour le nom de domaine, changement des serveurs de zone DNS, demande de l'auth-code pour le transfert du nom de domaine)'' sur le nom de domaine.
* '''le contact technique :''' Ce contact peut effectuer les opérations techniques sur le nom de domaine.
 
{{ Box_Attention | objet=Il est important de tenir à jour cette base WHOIS. En cas de litige (propriété du nom de domaine, modifications techniques)'' seuls les contacts figurant dans cette base sont juridiquement reconnus.}}
 
Pour consulter la base '''WHOIS''' d'un '''Registry''', il suffit de se rendre sur le site web du '''Registre'''. Par exemple, pour l'extension '''.fr''' c'est le site du '''Registry''' [http://www.afnic.fr AFNIC]. On peut également la consulter en ligne de commande depuis un terminal grâce à la commande '''Whois'''. Si le système d'exploitation ne connaît pas le serveur '''Whois''' à interroger on peut spécifier ce dernier avec l'argument '''-h''' :
{{ Box_Console | objet=whois ncad.fr }}
<br />
{{ Box_Console | objet=whois -h whois.ovh.net ncad.fr }}
 
Le '''Whois''' indique quels serveurs de DNS seront interrogés pour résoudre le nom de domaine. Prenons l'exemple du nom de domaine '''ncad.fr''' en interrogeant le '''Whois''' de l'[http://www.afnic.fr Afnic] sur son site Internet :
 
[[Image:DNS_WHOIS_AFNIC-ncad.fr.jpg|thumb|center|450px|Whois ncad.fr]]
 
Dans cette exemple, les '''serveurs DNS autoritaires''' pour la zone DNS '''ncad.fr''' sont :
* '''en primaire :''' dns10.ovh.net
* '''en secondaire :''' ns10.ovh.net
Ce sont ces serveurs qui seront sollicités pour toutes '''résolutions''' de la zones DNS '''ncad.fr'''.
 
== Bind9 ==
 
=== Présentation ===
 
'''Bind9''' est un serveur DNS. Il permet d'héberger une voir plusieurs zones DNS. '''Bind9''' est un service fonctionnant sous Linux qui est gratuit sous licence libre.
 
Pour héberger un nom de domaine sur un serveur DNS personnel il faudra valider les conditions techniques suivantes :
- disposer de '''deux machines''' assurant le service DNS;
- les deux machines doivent disposer de '''deux adresses IPv4 fixes''', publiques et différentes;
- les deux machines devront être déclarer sur le '''Whois''' du '''Registry''' en tant que serveur DNS pour les noms de domaines dont elles hébergerons les zones DNS.
 
=== Installation ===
 
==== Depuis les dépôts ====
 
'''Bind9''' est disponible dans les dépôts '''Debian''' et '''Ubuntu'''. Il suffit donc d'installer le paquet le '''bind9''' :
 
{{ Box_Console | objet=sudo apt-get install bind9 }}
 
Une fois installé, Bind9 dispose des fichiers et répertoires suivants :
* '''/etc/bind/''' : répertoire où sont stockés les fichiers de configuration généraux du service et ceux des zones;
* '''/etc/init.d/bind9''' : script permettant d'arrêter, démarrer, redémarrer le service bind9.
 
==== Configuration du service ====
 
Il est nécessaire d'indiquer à Bind sur quel adresse IP il recevra les requêtes DNS. Pour cela, dans la directive '''options''' du fichier de configuration '''/etc/bind/named.conf.options''' il faut y rajouter/adapter la ligne suivante :
 
  listen-on port 53 { 10.0.0.170; };
 
Avec :
* '''10.0.0.170''' : l'adresse IP privée ou publique du serveur DNS.
 
{{ Box_Information | objet=Par défaut Bind écoute uniquement les requêtes en local. }}
 
=== Création d'une zone DNS ===
 
Dans cet exemple, nous allons définir sur le serveur DNS '''Bind9''' la zone '''ncad.fr'''. Pour cela, nous allons agir sur deux fichiers :
* '''/etc/bind/named.conf.default-zones :''' pour déclarer le nom de domaine et son fichier de zone dans Bind9;
* '''/etc/bind/ncad.fr.hosts :''' fichier de zone à créer contenant tous les enregistrements DNS du nom de domaine ncad.fr.
 
==== Définition du nom de domaine ====
 
Nous allons indiquer à '''Bind9''' quel fichier il doit consulter pour résoudre le nom de domaine '''ncad.fr'''. Ce fichier hébergera la zone DNS du nom de domaine '''ncad.fr''' et devra donc être crée. On édite le fichier '''/etc/bind/named.conf.default-zones''' et on y ajoute les informations suivantes :
 
zone "ncad.fr" {
        type master;
        file "/etc/bind/ncad.fr.hosts";
  };
  };


{{ Box Attention | objet=Chaque déclaration se termine par un ";" - de même pour l'accolade finale. }}
Avec :
* '''type master''' : pour indiquer à '''Bind9''' qu'il est le serveur primaire pour cette zone;
* '''file "/etc/bind/ncad.fr.hosts"''' : fichier où sera hébergé la zone DNS.


=== Fichier /etc/bind/named.conf.local ===
==== Création de la zone DNS ncad.fr ====


Ce fichier regroupe l'ensemble des zones gérées par le serveur. C'est dans ce fichier que doit être déclaré la zone à gérer par Bind en y renseignant notament :
Maintenant, il faut créer le fichier contenant la '''zone DNS''' permettant la résolution du nom de domaine '''ncad.fr'''. Dans cette zone on va y renseigner un enregistrement '''SOA''' ''('''S'''tart '''O'''f '''A'''utority)'' et un enregistrement '''NS''' ''('''N'''ame '''S'''ystem)''.
* le nom dns de la zone;
* le mode de gestion ''(maître/esclave)'';
* le chemin vers le fichier de configuration de la zone.


On va par exemple déclarer ici deux zones :
$ttl 38400
* '''net.ncad.fr''' qui correspond au nom de domaine ''net.ncad.fr'';
$ORIGIN ncad.fr.
* '''0.0.10.in-addr.arpa''' qui correspond à la gestion du reverse DNS pour le réseau ''10.0.0.0/24''.
@ IN SOA 10.0.0.170. tech.ncad.fr. (
      2012121601 // sérial number au forma aaaammjjnn
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.


La déclaration de ces zones dans le fichier ''/etc/bind/named.conf.options'' donne les lignes suivantes :
L'enregistrement '''SOA''' permet de définir le '''serveur primaire de la zone''', son numéro de série et des informations relatives à sa durée de vie et à sa mise en cache.
Les deux enregistrements '''NS''' permettent d'indiquer sur quels serveurs DNS ''(primaire et secondaire(s))'' sont hébergés la zone DNS.


  zone "net.ncad.fr" {
{{ Box Information | objet=Ceci est une configuration minimale de la zone. Il sera nécessaire d'y ajouter des enregistrements DNS supplémentaires si l'on souhaite héberger un site web ou créer des boîtes mails avec son nom de domaine.}}
          type master;
          file "/etc/bind/db.net.ncad.fr";
  };


  zone "0.0.10.in-addr.arpa" {
==== Ajout d'un enregistrement A ====
          type master;
          notify no;
          file "/etc/bind/db.10";
  };


=== Fichier de configuration des zones ===
Les enregistrements '''DNS''' de type '''A''' permettent d'affecter à une '''un nom de domaine''' une '''adresse IP'''.


Dans ce cas précis il faudra créer deux fichiers de configuration à la racine ''/etc/bind/'' :
Par exemple, on souhaite héberger un site web qui aura pour adresse '''www.ncad.fr'''. Pour cela on définit les paramètres suivants :
* '''db.net.ncad.fr'''; pour notre nom de domaine;
* '''adresse IP du serveur hébergeant le site web :''' 10.0.0.140.
* '''db.10'''; pour notre reverse DNS.
* '''adresse du site web :''' www.ncad.fr.
Dans la zone DNS, ces paramètres prendrons la forme suivante :
www  IN A 10.0.0.140


==== Fichier db.net.ncad.fr ====
Au final, la zone DNS ressemblera à ceci :


Nous définissons en premier lieu les informations de la zone :
$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121602 // serial number à incrémenterà chaque modification
      10800
      3600
      604800
      38400 )
      IN NS 10.0.0.170.
www  IN A 10.0.0.140


$TTL    604800
{{ Box_Information | objet=L'enregistrement DNS s'ajoute à la suite. Chaque ligne dans le fichier de configuration de la zone correspond à un enregistrement DNS. }}
@      IN      SOA    a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
                              1        ; Serial
                        604800        ; Refresh
                          86400        ; Retry
                        2419200        ; Expire
                        604800 )      ; Negative Cache TTL
;
@      IN      NS      a-ncad-dns.net.ncad.fr.
a-ncad-dns      IN      A      10.0.0.37


Ensuite nous pouvons ajouter des enregistre additionnels :
Une fois l'enregistrement crée il faut redémarrer la service Bind9 pour que les modifications soient prises en compte. <span style="color:red">Il faut également incrémenter le serial number dans la zone.</span>


machine-a      IN      A      10.0.0.30
{{ Box_Console | objet=/etc/init.d/bind9 restart}}


Ce qui nous donne au final le fichier de configuration suivant :
Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur '''DNS primaire''' :


$TTL    604800
{{Box_Console | objet=
@      IN      SOA    a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
nslookup www.ncad.fr 10.0.0.170<br />
                              1        ; Serial
Server : 10.0.0.170<br />
                        604800        ; Refresh
Address : 10.0.0.170#53<br /><br />
                          86400        ; Retry
                        2419200        ; Expire
                        604800 )      ; Negative Cache TTL
;
@      IN      NS      a-ncad-dns.net.ncad.fr.
a-ncad-dns      IN      A      10.0.0.37
machine-a      IN      A      10.0.0.30


==== Fichier db.10 ====
Name : www.ncad.fr<br />
Address : 10.0.0.140 }}


Comme pour le fichier précédent, nous devons renseigner les informations de la zone :
==== Ajout d'enregistrements MX ====
 
Les enregistrements '''MX''' ''('''M'''ail e'''X'''change)'' sont des enregistrements DNS qui permettent de définir le(s) serveur(s) de messagerie assurant le traitement des mails entrant pour le nom de domaine.
 
Par exemple, pour le nom de domaine '''ncad.fr''' ce sont les serveurs de messagerie de l'hébergeur OVH qui gèrent les boîtes mails en '''@ncad.fr'''. Il faut donc définir les enregistrements MX pointant vers les serveurs de messagerie d'OVH :
      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.
 
{{ Box_Information | objet=Les valeurs 5 et 10 sont des poids qui permettent de définir des priorités pour les serveurs déclarés. L'enregistrement qui a le poids le plus faible est prioritaire.}}
 
La commande '''dig mx''' permet d'obtenir la liste des serveurs de messagerie pour une '''zone DNS''' donnée. Ainsi on peut vérifier si les enregistrements DNS ci-dessus ont bien été pris en compte :
 
{{ Box Console | objet=dig mx ncad.fr @10.0.0.170 }}
 
Et qui retourne les informations suivantes :
 
; <<>> DiG 9.7.3 <<>> mx ncad.fr @10.0.0.170
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20841
;; flags: qr aa rd; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;ncad.fr. IN MX
;; ANSWER SECTION:
ncad.fr. 86400 IN MX 5 mx1.ovh.net.
ncad.fr. 86400 IN MX 10 mx2.ovh.net.
;; Query time: 43 msec
;; SERVER: 10.0.0.170#53(10.0.0.170)
;; WHEN: Sun Dec 16 23:00:40 2012
;; MSG SIZE  rcvd: 158
 
==== Ajout d'un enregistrement CNAME ====
 
Un enregistrement '''CNAME''' ''('''C'''anonical '''NAME''')'' désigne un alias. Ce type d'enregistrement pointe donc vers un nom de domaine plutôt qu'une adresse IP.
 
Par exemple, on veut créer l'enregistrement '''ftp.ncad.fr''' afin d'accéder au serveur '''FTP''' hébergeant le site web '''www.ncad.fr'''. Or, le serveurs '''FTP''' et le site web désignent la même machine et donc la même IP. On va donc insérer l'enregistrement suivant :
ftp    IN CNAME www
 
On aurait pus créer un enregistrement de type '''A''' à la place. Cette enregistrement aurait été définit de cette manière :
ftp    IN A 10.0.0.140
 
Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur '''DNS primaire''' :
 
{{Box_Console | objet=
nslookup ftp.ncad.fr 10.0.0.170<br />
Server : 10.0.0.170<br />
Address : 10.0.0.170#53<br /><br />
 
ftp.ncad.fr canonical name = www.ncad.fr<br />
Name : www.ncad.fr<br />
Address : 10.0.0.140 }}
 
==== Contenu final de la zone ncad.fr ====
 
Au final, la zone DNS de ncad.fr ressemble à ceci :


  $ttl 38400
  $ttl 38400
  0.0.10.in-addr.arpa. IN SOA a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
  $ORIGIN ncad.fr.
1       ; Serial
@ IN SOA 10.0.0.170 tech.ncad.fr. (
10800  ; Refresh
      2012121604
3600    ; Retry
      10800
604800  ; Expire
      3600
38400 ) ; Negative Cache TTL
      604800
  0.0.10.in-addr.arpa. IN NS a-ncad-dns.net.ncad.fr.
      38400 )
      NS 10.0.0.170.
      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.
www  IN A 10.0.0.140
ftp    IN CNAME www
 
Certains outils existent pour vérifier le contenu d'une zone DNS et ainsi détecter les erreurs. L'Afnic propose un outil nommé '''[http://www.afnic.fr/fr/produits-et-services/services/zonecheck/formulaire-complet/ ZoneCheck]''' qui permet de vérifier la validité d'une zone.
 
=== Création de la zone DNS inverse pour le réseau IPv4 10.0.0.0/24 ===
 
Dans cet exemple, nous allons définir sur le serveur DNS '''Bind9''' la zone inverse '''0.0.10.in-addr.arpa''' qui gérera la '''résolution inverse''' des adresses IP du '''réseau 10.0.0.0/24'''. Pour cela, nous allons agir sur deux fichiers :
* '''/etc/bind/named.conf.default-zones :''' pour déclarer la zone inverse et son fichier de zone dans Bind9;
* '''/etc/bind/ncad.fr.hosts :''' fichier de zone à créer contenant tous les enregistrements DNS de la zone inverse du réseau 10.0.0.0/24.
 
==== Définition de la zone inverse ====
 
Nous allons indiquer à '''Bind9''' quel fichier il doit consulter pour effectuer la résolution inverse de toutes les IP du '''réseau 10.0.0.0/24'''. Ce fichier hébergera la zone DNS inverse du '''réseau 10.0.0.0/24''' et devra donc être crée. On édite le fichier '''/etc/bind/named.conf.default-zones''' et on y ajoute les informations suivantes :
 
zone "0.0.10.in-addr.arpa" {
        type master;
        file "/etc/bind/0.0.10.in-addr.hosts";
};
 
Avec :
* '''type master''' : pour indiquer à '''Bind9''' qu'il est le serveur primaire pour cette zone;
* '''file "/etc/bind/ncad.fr.hosts"''' : fichier où sera hébergé la zone DNS inverse.
 
==== Création de la zone DNS inverse ====
 
Maintenant, il faut créer le fichier contenant la '''zone DNS inverse''' permettant la résolution inverse des '''adresses IP du réseau 10.0.0.0/24'''. Dans cette zone on va y renseigner un enregistrement '''SOA''' ''('''S'''tart '''O'''f '''A'''utority)'' et un enregistrement '''NS''' ''('''N'''ame '''S'''ystem)''.
 
$ttl 38400
$ORIGIN 0.0.10.in-addr.arpa.
@ IN SOA 10.0.0.170. tech.ncad.fr. (
      2012121601
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.
 
{{ Box Information | objet=La définition d'une zone inverse est identique à celle d'une zone DNS standard. Il n'y a que le nom de la zone qui diffère.}}
 
==== Ajout d'un enregistrement PTR ====
 
Les enregistrements '''DNS''' de type '''PTR''' ''('''P'''oin'''T'''er '''R'''ecord)'' permettent d'affecter à une '''adresse IP''' un '''nom de domaine'''.
 
Précédemment, on avait définit un enregistrement DNS de type '''A''' avec pour nom de domaine '''www.ncad.fr''' pointant vers '''l'adresse IP 10.0.0.140'''. On avait vérifié l'enregistrement grâce à la commande '''nslookup''' qui donnait le résultat suivant :
 
{{Box_Console | objet=
nslookup www.ncad.fr 10.0.0.170<br />
Server : 10.0.0.170<br />
Address : 10.0.0.170#53<br /><br />
 
Name : www.ncad.fr<br />
Address : 10.0.0.140 }}
 
Cependant, si on effectue la commande '''nslookup''' sur l'adresse IP, cette dernière ne retournera aucun résultat :
 
{{Box_Console | objet=
nslookup 10.0.0.140 10.0.0.170<br />
Server: 10.0.0.170#53<br />
Address: 10.0.0.170<br /><br />
 
-- server can't find 140.0.0.10.in-addr.arpa.: NXDOMAIN }}
 
Pour définir un '''reverse DNS''' il faut utiliser l'enregistrement '''PTR''' avec les informations suivantes dans cet exemple :
* '''adresse IP :''' 10.0.0.170.
* '''le nom du reverse DNS :''' www.ncad.fr.
Dans la zone DNS inverse, ces paramètres prendrons la forme suivante :
140  IN PTR www.ncad.fr.
 
Au final, la zone DNS ressemblera à ceci :
 
$ttl 38400
$ORIGIN 0.0.10.in-addr.arpa.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121602
      10800
      3600
      604800
      38400 )
      IN NS 10.0.0.170.
140  IN PTR www.ncad.fr
 
Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur '''DNS primaire''' :
 
{{Box_Console | objet=
nslookup 10.0.0.140 10.0.0.170<br />
Server: 10.0.0.170<br />
Address: 10.0.0.170#53<br /><br />
 
140.0.0.10.in-addr.arpa name = www.ncad.fr.
}}
<br />
{{ Box Information | objet=La définition d'un reverse DNS pour un serveur de messagerie est important. La vérification de la présence d'un reverse est un test afin d'éliminer les serveurs de SPAM qui n'en possèdent généralement pas ''(PC zombis)''. }}
 
==== PTR et IP publique ====
 
Si vous souhaitez personnaliser le '''reverse DNS''' de votre '''adresse IP publique''' ''(autre que 192.168.0.0/16 - 172.16.0.0/12 - 10.0.0.0/8)'', vous devez prendre contact avec votre '''FAI''' ou votre '''hébergeur web'''. Pour connaître le propriétaire d'une adresse IP, il suffit d'utiliser la commande '''whois''' suivit de '''l'adresse IP''' :
 
{{ Box_Console | objet=whois 109.0.0.1}}
 
Cette commande retourne les informations suivantes pour l'adresse IP 109.0.0.1 :
 
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf
% Note: this output has been filtered.
%      To receive output for a database update, use the "-B" flag.
% Information related to '109.0.0.0 - 109.0.15.255'
inetnum:        109.0.0.0 - 109.0.15.255
netname:        N9UF-PRO
descr:          MPLS network
country:        FR
admin-c:        LDC50-RIPE
tech-c:        LDC76-RIPE
status:        ASSIGNED PA
remarks:        **********************************
remarks:        * Abuse email: abuse@gaoland.net *
remarks:        **********************************
mnt-by:        LDCOM-MNT
mnt-lower:      LDCOM-PRO-MNT
source:        RIPE # Filtered
role:          NEUF PRO
address:        Groupe N9uf Cegetel
address:        Immeuble Quai Ouest
address:        40-42 Quai du point du jour
address:        92659 Boulogne Billancourt
address:        France
phone:          +33 1 70 18 52 00
fax-no:        +33 1 70 18 19 07
admin-c:        LD699-RIPE
admin-c:        HN532-RIPE
admin-c:        GT705-RIPE
tech-c:        LDC76-RIPE
nic-hdl:        LDC50-RIPE
abuse-mailbox:  abuse@gaoland.net
mnt-by:        LDCOM-MNT
source:        RIPE # Filtered
role:          LDCOM Networks Tech Contact
address:        SFR
address:        Immeuble Quai Ouest
address:        40-42 Quai du point du jour
address:        92659 Boulogne Billancourt
address:        France
phone:          +33 1 70 18 52 00
admin-c:        LD699-RIPE
admin-c:        LM5867-RIPE
tech-c:        LDC76-RIPE
tech-c:        DG1056-RIPE
nic-hdl:        LDC76-RIPE
abuse-mailbox:  abuse@gaoland.net
mnt-by:        LDCOM-MNT
source:        RIPE # Filtered
% Information related to '109.0.0.0/11AS15557'
route:          109.0.0.0/11
descr:          LDCOM-NET
origin:        AS15557
mnt-by:        LDCOM-MNT
source:        RIPE # Filtered
% This query was served by the RIPE Database Query Service version 1.47 (WHOIS2)
 
'''L'adresse IP 109.0.0.1''' appartient à l'opérateur '''SFR'''. C'est donc cet opérateur qui gère le '''reverse DNS''' associé à cette '''adresse IP'''. C'est donc avec cette opérateur qu'il faudra prendre contact si l'on souhaite '''personnaliser le reverse DNS''' de cette adresse IP - si cette dernière nous a été attribuée. Par défaut, le reverse DNS de cette adresse IP est le suivant :
 
{{ Box Console | objet=
nslookup 109.0.0.1<br />
Server: 10.0.0.190<br />
Address: 10.0.0.190#53<br />
<br />
Non-authoritative answer:<br />
1.0.0.109.in-addr.arpa name = <span style="color:red">1.0.0.109</span>.rev.sfr.net. }}
 
Ceci est un reverse DNS générique ''(ici de la forme <span style="color:red"><reverse_ip></span>.rev.sfr.net)''. La plupart des opérateurs bloquent les mails en provenance de serveurs mails hébergés derrières des adresses IP ayant ce type de reverse DNS générique.
 
==== PTR pour une plage d'adresses IP ====
 
Il est possible de spécifier un '''PTR''' générique applicable pour une plage d'adresses IPs. Par exemple, on souhaite définir un '''PTR''' pour la plage d'adresses IP privées de '''10.0.0.50''' à '''10.0.0.150''' pointant vers une adresse du type '''sta-<span style="color:red">$</span>.net.ncad.fr''' où '''<span style="color:red">$</span>''' sera remplacé par '''la valeur du dernier octet de l'adresse IP''' de la machine. La machine '''10.0.0.51''' aurait pour reverse '''sta-51.net.ncad.fr'''. Voici ce qu'il faut indiquer dans le fichier de la zone reverse de la classe C 10.0.0.0/8 :
 
$generate 50-150/1 $ PTR sta-$.net.ncad.fr.
 
=== Création d'un sous-domaine ===
 
==== Définition dans la zone DNS principale ====
 
Nous souhaitons créer le sous-domaine '''facturation.ncad.fr'''. Pour cela, il faudra le définir dans le fichier de zone DNS du nom de domaine '''ncad.fr'''. Initialement, le fichier de la zone DNS ressemble à ceci :
 
$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
       2012121604
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.
      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.
www   IN A 10.0.0.140
ftp    IN CNAME www
 
Notre sous-domaine dispose d'un site web hébergé sur le serveur web qui a pour adresse IP '''10.0.0.145'''. Nous souhaitons également disposer d'adresses mails de la forme '''@facturation.ncad.fr'''. Pour cela, on devra définir un champ '''MX''' vers notre serveur mail. Nous allons donc créer deux nouveaux champs DNS :
 
@ORIGIN facturation.ncad.fr.
      IN MX 5 10.0.0.146
www  IN A 10.0.0.145
 
Au final, la zone DNS aura l'allure suivante :
 
$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121604
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.
      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.
www  IN A 10.0.0.140
ftp   IN CNAME www
@ORIGIN facturation.ncad.fr.
      IN MX 5 10.0.0.146
www  IN A 10.0.0.145
 
Dans ce type de configuration, le sous-domaine est hébergé sur le même serveur DNS que celui du domaine principal. Cependant, il est possible de déporter cette configuration sur un serveur DNS tiers. Ceci permet de sous-déléguer la gestion DNS du sous domaine sans céder l'accès à la zone DNS du nom de domaine principal.
 
==== Sous-domaine avec délégation DNS ====
 
Précédement, nous avions dans le fichier de zone DNS de '''ncad.fr''' la configuration suivante :
 
$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121604
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.
      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.
www  IN A 10.0.0.140
  ftp    IN CNAME www
@ORIGIN facturation.ncad.fr.
      IN MX 5 10.0.0.146
www  IN A 10.0.0.145
 
Dans ce fichier de zone, on va devoir effectuer les opérations suivantes :
* renseigner les serveurs DNS à interroger pour résoudre le sous-domaine;
* supprimer les deux derniers enregistrements.
 
On va ainsi créer deux enregistrement '''NS''' en lieu et place des enregistrements '''MX''' et '''A''' du sous-domaine '''facturation.ncad.fr''' dans le fichier de zone DNS '''ncad.fr''' :
 
$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121605
      10800
      3600
      604800
      38400 )
   
      NS 10.0.0.170.
      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.
www  IN A 10.0.0.140
ftp    IN CNAME www
@ORIGIN facturation.ncad.fr.
      IN NS 10.1.0.1
      IN NS 10.1.0.2
 
Sur le serveur DNS qui va héberger le sous-domaine '''facturation.ncad.fr''' on va devoir effectuer les opérations suivantes :
 
{{ Box_Attention | objet=Pour ce second serveur DNS, reprendre la configuration d'un serveur DNS. }}
 
* déclarer la zone '''facturation.ncad.fr''' dans le fichier '''/etc/bind/named.conf.default-zones''' du serveur DNS 10.0.1.0.1 :
 
zone "facturation.ncad.fr" {
        type master;
        file "/etc/bind/facturation.ncad.fr.hosts";
};
 
* créer le fichier de zone DNS '''/etc/bind/facturation.ncad.fr.hosts''' :
 
$ttl 38400
$ORIGIN facturation.ncad.fr.
@ IN SOA 10.1.0.1 tech.ncad.fr. (
      2012121601
      10800
      3600
      604800
      38400 )
      NS 10.1.0.1.
      NS 10.1.0.2.
      IN MX 5 10.0.0.146
www  IN A 10.0.0.145
 
=== Serveurs DNS secondaires ===
 
Pour fonctionner dans les normes, une zone DNS doit être hébergée sur au moins deux serveurs de DNS :
* '''le serveur primaire :''' hébergeant la zone DNS et sur lequel seront opérées toutes les modifications sur la zone;
* '''le(s) serveur(s) secondaire(s) :''' hébergeant une copie de la zone.
 
Dans la configuration de la zone DNS du nom de domaine '''ncad.fr''', seul un serveur de DNS a été déclaré.
 
==== Déclaration d'un serveur DNS secondaire ====
 
Tous d'abord, il faut autoriser les '''transferts de zone''' depuis notre serveur '''DNS primaire''' vers notre serveur '''DNS secondaire'''. Pour cela, sur le serveur '''DNS primaire''', dans le fichier de configuration '''/etc/bind/named.conf.default-zones''' nous avions pour la déclaration de la zone '''ncad.fr''' les informations suivantes :
 
zone "ncad.fr" {
        type master;
        file "/etc/bind/ncad.fr.hosts";
};
 
On va y ajouter la directive '''allow-transfer''' dans laquelle on va spécifier les '''serveurs DNS secondaires''' autorisés à interroger notre '''serveur DNS primaire''' pour les transferts de zone. Notre '''serveur DNS secondaire''' ayant pour adresse IP '''10.0.0.171''', cette directive sera de cette forme :
 
allow-transfer { 10.0.0.171; };
 
Ainsi, la déclaration finale de la zone '''ncad.fr''' ressemblera à ceci :
 
zone "ncad.fr" {
        type master;
        file "/etc/bind/ncad.fr.hosts";
        allow-transfer { 10.0.0.171; }
};
 
==== Déclaration de la zone sur le serveur DNS secondaire ====
 
On va déclarer la zone DNS '''ncad.fr''' sur le serveur secondaire et lui indiquer qu'il est '''serveur DNS secondaire''' pour la zone ainsi que l'adresse IP du serveur primaire à interroger pour récupérer une copie de la zone DNS. Pour cela, dans le fichier de configuration '''/etc/bind/named.conf.default-zones''' nous ajoutons les informations suivantes :
 
zone "ncad.fr" {
      type slave;
      file "/etc/bind/ncad.fr.hosts";
      masters { 10.0.0.170; };
};
 
=== DNSSEC ===
 
==== Installation ====
 
{{ Box Console | objet= apt-get install dnssec-tools libnet-dns-sec-perl libmailtools-perl libcrypt-openssl-random-perl }}
 
==== Génération clé ZSK ====
 
{{ Box Console | objet=dnssec-keygen -r /dev/urandom -a ECDSAP256SHA256 -b 1024 -n ZONE ducknet.fr}}
 
==== Génération clé KSK ====
 
{{ Box Console | objet=dnssec-keygen -r /dev/urandom -a ECDSAP256SHA256 -b 2048 -fKSK -n ZONE ducknet.fr}}
 
==== Configuration de la zone ====
 
'''named.conf.local'''
 
key-directory “/etc/bind/keys”;
auto-dnssec maintain;
inline-signing yes;
 
==== Signature de la zone ====
 
{{ Box Console | objet=rndc reload<br />
rndc reconfig<br />
rndc loadkeys ducknet.fr<br />
rndc signing -list ducknet.fr}}
 
==== Vérification enregistrement DS ====


Dans le fichier précédent nous avions attribué le nom ''machine-a.net.ncad.fr'' à l'adresse IP ''10.0.0.30''. Ici nous allons faire l'inverse : associer l'IP ''10.0.0.30'' au nom de machine ''machine-a.net.ncad.fr''.
{{ Box Console | objet=dig dnskey ducknet.fr }}


  30.0.0.10.in-addr.arpa. IN     PTR    machine-a.net.ncad.fr
  ; <<>> DiG 9.9.5-9ubuntu0.5-Ubuntu <<>> dnskey ducknet.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54185
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:<br />
;ducknet.fr. IN DNSKEY
;; ANSWER SECTION:<br />
<span style="color:green">ducknet.fr. 86400 IN DNSKEY 256 3 8 AwEAAbNr3IRmWSy9HX/GhKGWkISLj8Ngc2ZO4tHitxXZWbdy0TPCdrKU /WNaqsGgHTQSCGhdLUyt4Dep/6VNWuD+L78/zVEzINdNlbz0YF502Hau wcVmUaytEdxXcs4I1YOw3/TKa7d/hkaFTX1Pii0OPfGuQBSeFBV8qk/U ypWGAGFJ
ducknet.fr. 86400 IN DNSKEY 257 3 8 AwEAAbS4myOIYeKgZeb5ByaSdo/I8ziYJ3FTaHD0QPQ1zo6WJYYdf9kG Em4K27qGrZPUufA018wPs1iqyokdheGUcY4/ot+Wkkurp9TgcMvXD0b5 7yNPXWeRMGsbqFFq9r3bZJVhwdL2mswB4sU3elYELiTSgPMvjvj7jYTt +M7NJCsLUubJsQD+B0g2tH0ipqZ0fB+ayfKweljXcx/nN5bVvRTuNYFv 8n38jqKwzn1q6s+v8kW4V2YxezrKR8QDgkhUJFd6SQRYrDIeUyhDoa/s BgW3S2/Vfm235oTj<br />/OYGyVn+td1MGV5jOEeV9psDo6fzJuEPJCWhBSgZ ezNxkLhTZQM=</span>
;; Query time: 5 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sat Feb 22 20:21:37 CET 2020
;; MSG SIZE  rcvd: 463


{{Box Remarque | objet=A chaque modification de ce fichier - ajout/suppression d'enregistrements - vous devez incrémenter le Serial. }}
==== Récupération du Key Tag ====


=== Recharger la configuration ===
{{ Box Console | objet=dig @localhost dnskey ducknet.fr | dnssec-dsfromkey -f - ducknet.fr }}


Une fois l'édition des fichiers terminés, il faut redémarrer Bind9. Pour cela, il suffit de taper en ligne de commande :
ducknet.fr. IN DS 1020 8 1 0BC197523BCE7C71CB47B58F1BE21F88290DEB0C
{{ Box Console | objet=sudo /etc/init.d/bind9 restart }}
ducknet.fr. IN DS 1020 8 2 7D7160238CFB0709D253633FC1254247D3B38BC50EE9F37DCCEE855C43FA3D29

Dernière version du 28 février 2020 à 02:05

Présentation

Introduction

DNS est un protocole permettant d'associer à une IP un nom de machine et réciproquement. Le service utilisé pour assurer cette fonction est Bind.

L'inventaire des zones gérés par le serveurs DNS sont renseignés dans le fichier /var/named/chroot/etc/named.conf. Les fichiers de zone sont stockés /var/named/chroot/var/named/.

Le nom de domaine

Bind est un serveur de DNS. Le DNS permet de gérer les noms de domaines qui régissent aujourd'hui le nommage du réseau Internet. Aujourd'hui, il est rare que l'on accède à un serveur directement par son adresse IP sauf si l'on veut se soustraire à l'étape de résolution DNS (pour du debuggage, par exemple).

Un nom de domaine est composé généralement de deux parties. Voici par exemple un nom de domaine : ncad.fr Avec :

  • ncad : qui désigne le domaine;
  • fr : qui désigne l'extension de domaine.

Le rôle du Registry ou Registre

Le DNS est un système hiérarchisé. L'extension de domaine est gérée par une entité nationale - dans le cadre des extensions ccTLD comme .fr pour la France - ou par des entités tiers internationales - pour les extensions génériques gTLD comme l'extension .com.

Ces entités qui assure la gestion technique d'une ou plusieurs extensions de domaine ccTLD et/ou gTLD sont appelées registry ou registre pour l’appellation française.

Les registres ne s'occupent uniquement de l'aspect technique de leur extension. L'aspect commercial est délégué aux registrars / bureaux d'enregistrement.

Le rôle du Registrar ou Bureau d'enregistrement

Lors de son lancement, le registre peut faire la promotion de son extension. Cependant, sa vente et son dépôt sont gérées par les Bureaux d'enregistrement ou Registrars.

Ces Registrars sont des sociétés de service, ils peuvent être des hébergeurs web ou encore des opérateurs de télécommunication. Ils sont l'interface entre le Registrant (celui qui veut déposer un nom de domaine) et le Registry (l'organisme qui gère l'extension du domaine).

Pour pouvoir exister, un domaine doit obligatoirement être déposé dans l'une des nombreuses extensions de domaine. Le dépôt doit être effectué via le Registrar en respectant les conditions de dépôt propres à chaque extension (nationalité du Registrant, âge, pays de résidence, forme juridique, ...).

Une fois déposé, le nom de domaine doit être hébergé sur deux serveurs DNS. Le premier est désigné comme serveur primaire. C'est sur ce serveur que les modifications sur la zone seront opérées. Le seconde serveur est un serveur secondaire. C'est un serveur de sauvegarde en cas de panne du serveur primaire. Ces serveurs doivent être indiqués au Registre lors du dépôt du nom de domaine. Généralement, le Registrar fournit deux serveurs DNS pour héberger la zone DNS du nom de domaine déposé.

Ainsi, la zone DNS est la matérialisation du nom de domaine d'un point de vue technique sur le DNS. Cette zone est hébergée sur au moins deux serveurs DNS. Le Registre déclare le nom de domaine et indique quels serveurs DNS hébergent la zone DNS du nom de domaine déposé pour permettre sa résolution.

Le WHOIS

Le whois est une base de données propres à chaque Registry. Cette base administrative permet d'enregistrer les contacts d'un nom de domaine qui sont :

  • le registrant : la personne qui a déposé le nom de domaine et qui est titulaire de ce dernier;
  • le contact administratif : souvent le même contact désigné que pour le registrant. Cette personnes peut effectuer les opérations aussi bien techniques (ajout, modification, suppression d'enregistrements sur la zone DNS) que administratives (modification des contacts pour le nom de domaine, changement des serveurs de zone DNS, demande de l'auth-code pour le transfert du nom de domaine) sur le nom de domaine.
  • le contact technique : Ce contact peut effectuer les opérations techniques sur le nom de domaine.

Il est important de tenir à jour cette base WHOIS. En cas de litige (propriété du nom de domaine, modifications techniques) seuls les contacts figurant dans cette base sont juridiquement reconnus.

Pour consulter la base WHOIS d'un Registry, il suffit de se rendre sur le site web du Registre. Par exemple, pour l'extension .fr c'est le site du Registry AFNIC. On peut également la consulter en ligne de commande depuis un terminal grâce à la commande Whois. Si le système d'exploitation ne connaît pas le serveur Whois à interroger on peut spécifier ce dernier avec l'argument -h :

whois ncad.fr


whois -h whois.ovh.net ncad.fr

Le Whois indique quels serveurs de DNS seront interrogés pour résoudre le nom de domaine. Prenons l'exemple du nom de domaine ncad.fr en interrogeant le Whois de l'Afnic sur son site Internet :

Whois ncad.fr

Dans cette exemple, les serveurs DNS autoritaires pour la zone DNS ncad.fr sont :

  • en primaire : dns10.ovh.net
  • en secondaire : ns10.ovh.net

Ce sont ces serveurs qui seront sollicités pour toutes résolutions de la zones DNS ncad.fr.

Bind9

Présentation

Bind9 est un serveur DNS. Il permet d'héberger une voir plusieurs zones DNS. Bind9 est un service fonctionnant sous Linux qui est gratuit sous licence libre.

Pour héberger un nom de domaine sur un serveur DNS personnel il faudra valider les conditions techniques suivantes : - disposer de deux machines assurant le service DNS; - les deux machines doivent disposer de deux adresses IPv4 fixes, publiques et différentes; - les deux machines devront être déclarer sur le Whois du Registry en tant que serveur DNS pour les noms de domaines dont elles hébergerons les zones DNS.

Installation

Depuis les dépôts

Bind9 est disponible dans les dépôts Debian et Ubuntu. Il suffit donc d'installer le paquet le bind9 :

sudo apt-get install bind9

Une fois installé, Bind9 dispose des fichiers et répertoires suivants :

  • /etc/bind/ : répertoire où sont stockés les fichiers de configuration généraux du service et ceux des zones;
  • /etc/init.d/bind9 : script permettant d'arrêter, démarrer, redémarrer le service bind9.

Configuration du service

Il est nécessaire d'indiquer à Bind sur quel adresse IP il recevra les requêtes DNS. Pour cela, dans la directive options du fichier de configuration /etc/bind/named.conf.options il faut y rajouter/adapter la ligne suivante :

listen-on port 53 { 10.0.0.170; };

Avec :

  • 10.0.0.170 : l'adresse IP privée ou publique du serveur DNS.

Par défaut Bind écoute uniquement les requêtes en local.

Création d'une zone DNS

Dans cet exemple, nous allons définir sur le serveur DNS Bind9 la zone ncad.fr. Pour cela, nous allons agir sur deux fichiers :

  • /etc/bind/named.conf.default-zones : pour déclarer le nom de domaine et son fichier de zone dans Bind9;
  • /etc/bind/ncad.fr.hosts : fichier de zone à créer contenant tous les enregistrements DNS du nom de domaine ncad.fr.

Définition du nom de domaine

Nous allons indiquer à Bind9 quel fichier il doit consulter pour résoudre le nom de domaine ncad.fr. Ce fichier hébergera la zone DNS du nom de domaine ncad.fr et devra donc être crée. On édite le fichier /etc/bind/named.conf.default-zones et on y ajoute les informations suivantes :

zone "ncad.fr" {
        type master;
        file "/etc/bind/ncad.fr.hosts";
};

Avec :

  • type master : pour indiquer à Bind9 qu'il est le serveur primaire pour cette zone;
  • file "/etc/bind/ncad.fr.hosts" : fichier où sera hébergé la zone DNS.

Création de la zone DNS ncad.fr

Maintenant, il faut créer le fichier contenant la zone DNS permettant la résolution du nom de domaine ncad.fr. Dans cette zone on va y renseigner un enregistrement SOA (Start Of Autority) et un enregistrement NS (Name System).

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170. tech.ncad.fr. (
      2012121601 // sérial number au forma aaaammjjnn
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.

L'enregistrement SOA permet de définir le serveur primaire de la zone, son numéro de série et des informations relatives à sa durée de vie et à sa mise en cache. Les deux enregistrements NS permettent d'indiquer sur quels serveurs DNS (primaire et secondaire(s)) sont hébergés la zone DNS.

Ceci est une configuration minimale de la zone. Il sera nécessaire d'y ajouter des enregistrements DNS supplémentaires si l'on souhaite héberger un site web ou créer des boîtes mails avec son nom de domaine.

Ajout d'un enregistrement A

Les enregistrements DNS de type A permettent d'affecter à une un nom de domaine une adresse IP.

Par exemple, on souhaite héberger un site web qui aura pour adresse www.ncad.fr. Pour cela on définit les paramètres suivants :

  • adresse IP du serveur hébergeant le site web : 10.0.0.140.
  • adresse du site web : www.ncad.fr.

Dans la zone DNS, ces paramètres prendrons la forme suivante :

www   IN A 10.0.0.140

Au final, la zone DNS ressemblera à ceci :

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121602 // serial number à incrémenterà chaque modification
      10800
      3600
      604800
      38400 )
      IN NS 10.0.0.170.
www   IN A 10.0.0.140

L'enregistrement DNS s'ajoute à la suite. Chaque ligne dans le fichier de configuration de la zone correspond à un enregistrement DNS.

Une fois l'enregistrement crée il faut redémarrer la service Bind9 pour que les modifications soient prises en compte. Il faut également incrémenter le serial number dans la zone.

/etc/init.d/bind9 restart

Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur DNS primaire :

nslookup www.ncad.fr 10.0.0.170
Server : 10.0.0.170
Address : 10.0.0.170#53

Name : www.ncad.fr
Address : 10.0.0.140

Ajout d'enregistrements MX

Les enregistrements MX (Mail eXchange) sont des enregistrements DNS qui permettent de définir le(s) serveur(s) de messagerie assurant le traitement des mails entrant pour le nom de domaine.

Par exemple, pour le nom de domaine ncad.fr ce sont les serveurs de messagerie de l'hébergeur OVH qui gèrent les boîtes mails en @ncad.fr. Il faut donc définir les enregistrements MX pointant vers les serveurs de messagerie d'OVH :

      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.

Les valeurs 5 et 10 sont des poids qui permettent de définir des priorités pour les serveurs déclarés. L'enregistrement qui a le poids le plus faible est prioritaire.

La commande dig mx permet d'obtenir la liste des serveurs de messagerie pour une zone DNS donnée. Ainsi on peut vérifier si les enregistrements DNS ci-dessus ont bien été pris en compte :

dig mx ncad.fr @10.0.0.170

Et qui retourne les informations suivantes :

; <<>> DiG 9.7.3 <<>> mx ncad.fr @10.0.0.170
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20841
;; flags: qr aa rd; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;ncad.fr.			IN	MX

;; ANSWER SECTION:
ncad.fr.		86400	IN	MX	5 mx1.ovh.net.
ncad.fr.		86400	IN	MX	10 mx2.ovh.net. 

;; Query time: 43 msec
;; SERVER: 10.0.0.170#53(10.0.0.170)
;; WHEN: Sun Dec 16 23:00:40 2012
;; MSG SIZE  rcvd: 158

Ajout d'un enregistrement CNAME

Un enregistrement CNAME (Canonical NAME) désigne un alias. Ce type d'enregistrement pointe donc vers un nom de domaine plutôt qu'une adresse IP.

Par exemple, on veut créer l'enregistrement ftp.ncad.fr afin d'accéder au serveur FTP hébergeant le site web www.ncad.fr. Or, le serveurs FTP et le site web désignent la même machine et donc la même IP. On va donc insérer l'enregistrement suivant :

ftp    IN CNAME www

On aurait pus créer un enregistrement de type A à la place. Cette enregistrement aurait été définit de cette manière :

ftp    IN A 10.0.0.140

Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur DNS primaire :

nslookup ftp.ncad.fr 10.0.0.170
Server : 10.0.0.170
Address : 10.0.0.170#53

ftp.ncad.fr canonical name = www.ncad.fr
Name : www.ncad.fr
Address : 10.0.0.140

Contenu final de la zone ncad.fr

Au final, la zone DNS de ncad.fr ressemble à ceci :

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121604
      10800
      3600
      604800
      38400 )

      NS 10.0.0.170.

      IN MX 5 mx1.ovh.net.
      IN MX 10 mx2.ovh.net.

www   IN A 10.0.0.140
ftp    IN CNAME www

Certains outils existent pour vérifier le contenu d'une zone DNS et ainsi détecter les erreurs. L'Afnic propose un outil nommé ZoneCheck qui permet de vérifier la validité d'une zone.

Création de la zone DNS inverse pour le réseau IPv4 10.0.0.0/24

Dans cet exemple, nous allons définir sur le serveur DNS Bind9 la zone inverse 0.0.10.in-addr.arpa qui gérera la résolution inverse des adresses IP du réseau 10.0.0.0/24. Pour cela, nous allons agir sur deux fichiers :

  • /etc/bind/named.conf.default-zones : pour déclarer la zone inverse et son fichier de zone dans Bind9;
  • /etc/bind/ncad.fr.hosts : fichier de zone à créer contenant tous les enregistrements DNS de la zone inverse du réseau 10.0.0.0/24.

Définition de la zone inverse

Nous allons indiquer à Bind9 quel fichier il doit consulter pour effectuer la résolution inverse de toutes les IP du réseau 10.0.0.0/24. Ce fichier hébergera la zone DNS inverse du réseau 10.0.0.0/24 et devra donc être crée. On édite le fichier /etc/bind/named.conf.default-zones et on y ajoute les informations suivantes :

zone "0.0.10.in-addr.arpa" {
        type master;
        file "/etc/bind/0.0.10.in-addr.hosts";
};

Avec :

  • type master : pour indiquer à Bind9 qu'il est le serveur primaire pour cette zone;
  • file "/etc/bind/ncad.fr.hosts" : fichier où sera hébergé la zone DNS inverse.

Création de la zone DNS inverse

Maintenant, il faut créer le fichier contenant la zone DNS inverse permettant la résolution inverse des adresses IP du réseau 10.0.0.0/24. Dans cette zone on va y renseigner un enregistrement SOA (Start Of Autority) et un enregistrement NS (Name System).

$ttl 38400
$ORIGIN 0.0.10.in-addr.arpa.
@ IN SOA 10.0.0.170. tech.ncad.fr. (
      2012121601
      10800
      3600
      604800
      38400 )
      NS 10.0.0.170.

La définition d'une zone inverse est identique à celle d'une zone DNS standard. Il n'y a que le nom de la zone qui diffère.

Ajout d'un enregistrement PTR

Les enregistrements DNS de type PTR (PoinTer Record) permettent d'affecter à une adresse IP un nom de domaine.

Précédemment, on avait définit un enregistrement DNS de type A avec pour nom de domaine www.ncad.fr pointant vers l'adresse IP 10.0.0.140. On avait vérifié l'enregistrement grâce à la commande nslookup qui donnait le résultat suivant :

nslookup www.ncad.fr 10.0.0.170
Server : 10.0.0.170
Address : 10.0.0.170#53

Name : www.ncad.fr
Address : 10.0.0.140

Cependant, si on effectue la commande nslookup sur l'adresse IP, cette dernière ne retournera aucun résultat :

nslookup 10.0.0.140 10.0.0.170
Server: 10.0.0.170#53
Address: 10.0.0.170

-- server can't find 140.0.0.10.in-addr.arpa.: NXDOMAIN

Pour définir un reverse DNS il faut utiliser l'enregistrement PTR avec les informations suivantes dans cet exemple :

  • adresse IP : 10.0.0.170.
  • le nom du reverse DNS : www.ncad.fr.

Dans la zone DNS inverse, ces paramètres prendrons la forme suivante :

140   IN PTR www.ncad.fr.

Au final, la zone DNS ressemblera à ceci :

$ttl 38400
$ORIGIN 0.0.10.in-addr.arpa.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
      2012121602
      10800
      3600
      604800
      38400 )
      IN NS 10.0.0.170.
140   IN PTR www.ncad.fr

Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur DNS primaire :

nslookup 10.0.0.140 10.0.0.170
Server: 10.0.0.170
Address: 10.0.0.170#53

140.0.0.10.in-addr.arpa name = www.ncad.fr.


La définition d'un reverse DNS pour un serveur de messagerie est important. La vérification de la présence d'un reverse est un test afin d'éliminer les serveurs de SPAM qui n'en possèdent généralement pas (PC zombis).

PTR et IP publique

Si vous souhaitez personnaliser le reverse DNS de votre adresse IP publique (autre que 192.168.0.0/16 - 172.16.0.0/12 - 10.0.0.0/8), vous devez prendre contact avec votre FAI ou votre hébergeur web. Pour connaître le propriétaire d'une adresse IP, il suffit d'utiliser la commande whois suivit de l'adresse IP :

whois 109.0.0.1

Cette commande retourne les informations suivantes pour l'adresse IP 109.0.0.1 :

% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '109.0.0.0 - 109.0.15.255'

inetnum:        109.0.0.0 - 109.0.15.255
netname:        N9UF-PRO
descr:          MPLS network
country:        FR
admin-c:        LDC50-RIPE
tech-c:         LDC76-RIPE
status:         ASSIGNED PA
remarks:        **********************************
remarks:        * Abuse email: abuse@gaoland.net *
remarks:        **********************************
mnt-by:         LDCOM-MNT
mnt-lower:      LDCOM-PRO-MNT
source:         RIPE # Filtered

role:           NEUF PRO
address:        Groupe N9uf Cegetel
address:        Immeuble Quai Ouest
address:        40-42 Quai du point du jour
address:        92659 Boulogne Billancourt
address:        France
phone:          +33 1 70 18 52 00
fax-no:         +33 1 70 18 19 07
admin-c:        LD699-RIPE
admin-c:        HN532-RIPE
admin-c:        GT705-RIPE
tech-c:         LDC76-RIPE
nic-hdl:        LDC50-RIPE
abuse-mailbox:  abuse@gaoland.net
mnt-by:         LDCOM-MNT
source:         RIPE # Filtered

role:           LDCOM Networks Tech Contact
address:        SFR
address:        Immeuble Quai Ouest
address:        40-42 Quai du point du jour
address:        92659 Boulogne Billancourt
address:        France
phone:          +33 1 70 18 52 00
admin-c:        LD699-RIPE
admin-c:        LM5867-RIPE
tech-c:         LDC76-RIPE
tech-c:         DG1056-RIPE
nic-hdl:        LDC76-RIPE
abuse-mailbox:  abuse@gaoland.net
mnt-by:         LDCOM-MNT
source:         RIPE # Filtered

% Information related to '109.0.0.0/11AS15557'

route:          109.0.0.0/11
descr:          LDCOM-NET
origin:         AS15557
mnt-by:         LDCOM-MNT
source:         RIPE # Filtered

% This query was served by the RIPE Database Query Service version 1.47 (WHOIS2)

L'adresse IP 109.0.0.1 appartient à l'opérateur SFR. C'est donc cet opérateur qui gère le reverse DNS associé à cette adresse IP. C'est donc avec cette opérateur qu'il faudra prendre contact si l'on souhaite personnaliser le reverse DNS de cette adresse IP - si cette dernière nous a été attribuée. Par défaut, le reverse DNS de cette adresse IP est le suivant :

nslookup 109.0.0.1
Server: 10.0.0.190
Address: 10.0.0.190#53

Non-authoritative answer:
1.0.0.109.in-addr.arpa name = 1.0.0.109.rev.sfr.net.

Ceci est un reverse DNS générique (ici de la forme <reverse_ip>.rev.sfr.net). La plupart des opérateurs bloquent les mails en provenance de serveurs mails hébergés derrières des adresses IP ayant ce type de reverse DNS générique.

PTR pour une plage d'adresses IP

Il est possible de spécifier un PTR générique applicable pour une plage d'adresses IPs. Par exemple, on souhaite définir un PTR pour la plage d'adresses IP privées de 10.0.0.50 à 10.0.0.150 pointant vers une adresse du type sta-$.net.ncad.fr$ sera remplacé par la valeur du dernier octet de l'adresse IP de la machine. La machine 10.0.0.51 aurait pour reverse sta-51.net.ncad.fr. Voici ce qu'il faut indiquer dans le fichier de la zone reverse de la classe C 10.0.0.0/8 :

$generate 50-150/1 $ PTR sta-$.net.ncad.fr.

Création d'un sous-domaine

Définition dans la zone DNS principale

Nous souhaitons créer le sous-domaine facturation.ncad.fr. Pour cela, il faudra le définir dans le fichier de zone DNS du nom de domaine ncad.fr. Initialement, le fichier de la zone DNS ressemble à ceci :

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
     2012121604
     10800
     3600
     604800
     38400 )

     NS 10.0.0.170.

     IN MX 5 mx1.ovh.net.
     IN MX 10 mx2.ovh.net.

www   IN A 10.0.0.140
ftp    IN CNAME www

Notre sous-domaine dispose d'un site web hébergé sur le serveur web qui a pour adresse IP 10.0.0.145. Nous souhaitons également disposer d'adresses mails de la forme @facturation.ncad.fr. Pour cela, on devra définir un champ MX vers notre serveur mail. Nous allons donc créer deux nouveaux champs DNS :

@ORIGIN facturation.ncad.fr.
     IN MX 5 10.0.0.146
www  IN A 10.0.0.145

Au final, la zone DNS aura l'allure suivante :

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
     2012121604
     10800
     3600
     604800
     38400 )

     NS 10.0.0.170.

     IN MX 5 mx1.ovh.net.
     IN MX 10 mx2.ovh.net.

www   IN A 10.0.0.140
ftp    IN CNAME www

@ORIGIN facturation.ncad.fr.
     IN MX 5 10.0.0.146
www  IN A 10.0.0.145

Dans ce type de configuration, le sous-domaine est hébergé sur le même serveur DNS que celui du domaine principal. Cependant, il est possible de déporter cette configuration sur un serveur DNS tiers. Ceci permet de sous-déléguer la gestion DNS du sous domaine sans céder l'accès à la zone DNS du nom de domaine principal.

Sous-domaine avec délégation DNS

Précédement, nous avions dans le fichier de zone DNS de ncad.fr la configuration suivante :

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
     2012121604
     10800
     3600
     604800
     38400 )

     NS 10.0.0.170.

     IN MX 5 mx1.ovh.net.
     IN MX 10 mx2.ovh.net.

www   IN A 10.0.0.140
ftp    IN CNAME www

@ORIGIN facturation.ncad.fr.
     IN MX 5 10.0.0.146
www  IN A 10.0.0.145

Dans ce fichier de zone, on va devoir effectuer les opérations suivantes :

  • renseigner les serveurs DNS à interroger pour résoudre le sous-domaine;
  • supprimer les deux derniers enregistrements.

On va ainsi créer deux enregistrement NS en lieu et place des enregistrements MX et A du sous-domaine facturation.ncad.fr dans le fichier de zone DNS ncad.fr :

$ttl 38400
$ORIGIN ncad.fr.
@ IN SOA 10.0.0.170 tech.ncad.fr. (
     2012121605
     10800
     3600
     604800
     38400 )

     NS 10.0.0.170.

     IN MX 5 mx1.ovh.net.
     IN MX 10 mx2.ovh.net.

www   IN A 10.0.0.140
ftp    IN CNAME www

@ORIGIN facturation.ncad.fr.
     IN NS 10.1.0.1
     IN NS 10.1.0.2

Sur le serveur DNS qui va héberger le sous-domaine facturation.ncad.fr on va devoir effectuer les opérations suivantes :

Pour ce second serveur DNS, reprendre la configuration d'un serveur DNS.

  • déclarer la zone facturation.ncad.fr dans le fichier /etc/bind/named.conf.default-zones du serveur DNS 10.0.1.0.1 :
zone "facturation.ncad.fr" {
       type master;
       file "/etc/bind/facturation.ncad.fr.hosts";
};
  • créer le fichier de zone DNS /etc/bind/facturation.ncad.fr.hosts :
$ttl 38400
$ORIGIN facturation.ncad.fr.
@ IN SOA 10.1.0.1 tech.ncad.fr. (
     2012121601
     10800
     3600
     604800
     38400 )

     NS 10.1.0.1.
     NS 10.1.0.2.

     IN MX 5 10.0.0.146
www  IN A 10.0.0.145

Serveurs DNS secondaires

Pour fonctionner dans les normes, une zone DNS doit être hébergée sur au moins deux serveurs de DNS :

  • le serveur primaire : hébergeant la zone DNS et sur lequel seront opérées toutes les modifications sur la zone;
  • le(s) serveur(s) secondaire(s) : hébergeant une copie de la zone.

Dans la configuration de la zone DNS du nom de domaine ncad.fr, seul un serveur de DNS a été déclaré.

Déclaration d'un serveur DNS secondaire

Tous d'abord, il faut autoriser les transferts de zone depuis notre serveur DNS primaire vers notre serveur DNS secondaire. Pour cela, sur le serveur DNS primaire, dans le fichier de configuration /etc/bind/named.conf.default-zones nous avions pour la déclaration de la zone ncad.fr les informations suivantes :

zone "ncad.fr" {
       type master;
       file "/etc/bind/ncad.fr.hosts";
};

On va y ajouter la directive allow-transfer dans laquelle on va spécifier les serveurs DNS secondaires autorisés à interroger notre serveur DNS primaire pour les transferts de zone. Notre serveur DNS secondaire ayant pour adresse IP 10.0.0.171, cette directive sera de cette forme :

allow-transfer { 10.0.0.171; };

Ainsi, la déclaration finale de la zone ncad.fr ressemblera à ceci :

zone "ncad.fr" {
       type master;
       file "/etc/bind/ncad.fr.hosts";
       allow-transfer { 10.0.0.171; }
};

Déclaration de la zone sur le serveur DNS secondaire

On va déclarer la zone DNS ncad.fr sur le serveur secondaire et lui indiquer qu'il est serveur DNS secondaire pour la zone ainsi que l'adresse IP du serveur primaire à interroger pour récupérer une copie de la zone DNS. Pour cela, dans le fichier de configuration /etc/bind/named.conf.default-zones nous ajoutons les informations suivantes :

zone "ncad.fr" {
      type slave;
      file "/etc/bind/ncad.fr.hosts";
      masters { 10.0.0.170; };
};

DNSSEC

Installation

apt-get install dnssec-tools libnet-dns-sec-perl libmailtools-perl libcrypt-openssl-random-perl

Génération clé ZSK

dnssec-keygen -r /dev/urandom -a ECDSAP256SHA256 -b 1024 -n ZONE ducknet.fr

Génération clé KSK

dnssec-keygen -r /dev/urandom -a ECDSAP256SHA256 -b 2048 -fKSK -n ZONE ducknet.fr

Configuration de la zone

named.conf.local

key-directory “/etc/bind/keys”;
auto-dnssec maintain;
inline-signing yes;

Signature de la zone

rndc reload
rndc reconfig
rndc loadkeys ducknet.fr
rndc signing -list ducknet.fr

Vérification enregistrement DS

dig dnskey ducknet.fr

; <<>> DiG 9.9.5-9ubuntu0.5-Ubuntu <<>> dnskey ducknet.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54185
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ducknet.fr. IN DNSKEY ;; ANSWER SECTION:
ducknet.fr. 86400 IN DNSKEY 256 3 8 AwEAAbNr3IRmWSy9HX/GhKGWkISLj8Ngc2ZO4tHitxXZWbdy0TPCdrKU /WNaqsGgHTQSCGhdLUyt4Dep/6VNWuD+L78/zVEzINdNlbz0YF502Hau wcVmUaytEdxXcs4I1YOw3/TKa7d/hkaFTX1Pii0OPfGuQBSeFBV8qk/U ypWGAGFJ ducknet.fr. 86400 IN DNSKEY 257 3 8 AwEAAbS4myOIYeKgZeb5ByaSdo/I8ziYJ3FTaHD0QPQ1zo6WJYYdf9kG Em4K27qGrZPUufA018wPs1iqyokdheGUcY4/ot+Wkkurp9TgcMvXD0b5 7yNPXWeRMGsbqFFq9r3bZJVhwdL2mswB4sU3elYELiTSgPMvjvj7jYTt +M7NJCsLUubJsQD+B0g2tH0ipqZ0fB+ayfKweljXcx/nN5bVvRTuNYFv 8n38jqKwzn1q6s+v8kW4V2YxezrKR8QDgkhUJFd6SQRYrDIeUyhDoa/s BgW3S2/Vfm235oTj
/OYGyVn+td1MGV5jOEeV9psDo6fzJuEPJCWhBSgZ ezNxkLhTZQM=
;; Query time: 5 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Sat Feb 22 20:21:37 CET 2020 ;; MSG SIZE rcvd: 463

Récupération du Key Tag

dig @localhost dnskey ducknet.fr

ducknet.fr. IN DS 1020 8 1 0BC197523BCE7C71CB47B58F1BE21F88290DEB0C
ducknet.fr. IN DS 1020 8 2 7D7160238CFB0709D253633FC1254247D3B38BC50EE9F37DCCEE855C43FA3D29