Serveur DNS : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(Création d'une zone DNS)
Ligne 1 : Ligne 1 :
== Introduction ==
+
== Présentation ==
  
=== Définition du DNS ===
+
=== Introduction ===
  
Le DNS ''(Domain Name Server)'' - signifiant en français Serveur de Nom de Domaine - est un protocole permettant de faire correspondre à un nom de machine une adresse IP et réciproquement.
+
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.
  
Une adresse IPv4 est composé de 4 blocs de 8 octets ou pour IPv6 de 8 bloc de 16 octets. Quelques exemples d'adresses :
+
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/'''.
* IPv4 : 193.54.12.3; 192.168.5.7, 10.255.1.7.
+
* IPv6 : 2001:0045:f8b5:c101::5.
+
  
Ces adresses sont particulièrement difficiles à mémoriser et cela n'est pas exploitable dans l'usage du web par exemple. Sans DNS, au lieu de saisir le nom d'un site web - par exemple http://google.fr - il faudrait à la place saisir l'adresse IP du serveur hébergeant le site web en question : http://173.194.34.63.
+
=== Le nom de domaine ===
  
=== Vocabulaire ===
+
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)''.
  
* '''Nom de domaine :''' Un nom de domaine désigne une adresse internet. Il se compose principalement du domaine et de l'extension. Ces deux parties étant séparée par un point. Exemple : '''ncad.fr''' avec le domaine '''ncad''' et son extension '''fr'''.
+
Un nom de domaine est composé généralement de deux parties. Voici par exemple un nom de domaine :
 +
<span style="color:purple">ncad</span>.<span style="color:red">fr</span>
 +
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.
  
* '''Récursif :''' Se dit d'un serveur qui va résoudre des noms de domaine dont il n'héberge pas les zones.
+
==== Le rôle du Registry ou Registre ====
  
* '''Zone DNS :''' La zone DNS est matérialisé par un fichier texte contenant tous les enregistrements nécessaires au fonctionnement de la zone et à sa résolution. Ce fichier est consulté et mis à jour par le serveur DNS chargé de sa propagation sur Internet.
+
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.
  
* '''Enregistrement :''' Les enregistrements sont utilisés pour renseigner une zone DNS. Ils sont divers et régissent la déclaration de la zone, la durée de vie de cette dernière, les serveurs de messagerie et DNS hébergeant la zone.
+
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.
  
=== Enregistrements DNS ===
+
{{ 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. }}
  
Les enregistrements DNS permettent de configurer une zone DNS. Il existe plusieurs types d'enregistrement avec des usages bien précis.
+
==== Le rôle du Registrar ou Bureau d'enregistrement ====
  
'''A :''' Permet d'affecter une adresse IPv4 à un nom de domaine.
+
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'''.
  
'''AAAA :''' Permet d'affecter une adresse IPv6 à un nom de domaine.
+
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)''.
  
'''CNAME :''' Permet de rediriger un nom de domaine vers un autre nom de 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ésidance, forme juridique, ...)''.
  
'''MX :''' Permet de définir les serveurs de messagerie du nom de domaine.
+
==== Le WHOIS ====
  
'''PTR :''' Permet d'affecter un nom de domaine à une adresse IP.
+
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.
  
'''SOA :''' Permet de déclarer la zone DNS du 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.}}
  
'''SPF :''' Permet de définir les serveurs mails autorisés à délivrer les messages dont l'adresse expéditeur comporte le nom de domaine.
+
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 }}
== Installation ==
+
<br />
 
+
{{ Box_Console | objet=whois -h whois.ovh.net ncad.fr }}
=== Dépôts Ubuntu ===
+
 
+
Depuis un serveur Ubuntu il suffit d'installer le paquet bind9 :
+
 
+
{{ Box Console | objet=sudo apt-get install bind9 }}
+
 
+
== Configuration ==
+
 
+
=== Fichier /etc/bind/named.conf.options ===
+
 
+
Il est possible de restreindre l'utilisation du serveur DNS. Par exemple, n'autoriser que certaines machines ou réseau à lui soumettre des requêtes. Pour cela, la directive allow-query sera utilisée :
+
 
+
allow-query {
+
  10.0.0.0/28;
+
  10.0.0.32/28;
+
  10.255.254.253;
+
};
+
 
+
{{Box Information | objet=En supprimant cette directive le serveur écoutera toutes les requêtes qui lui seront soumises sur le port TCP/UDP 53.}}
+
 
+
==== Serveur récursif ====
+
 
+
Par défaut, Bind est configuré pour fonctionner en mode récursif. C'est à dire, si la zone à résoudre n'est pas hébergée localement par Bind, il va consulter des serveurs DNS tiers pour obtenir la résolution.
+
 
+
Pour activer / désactiver cette option, il suffit de renseigner la directive resive
+
 
+
recursion <yes|no>;
+
 
+
Il est possible de limiter cette faculté en autorisant uniquement les requêtes récursives uniquement depuis des machines connues. Cela évite que le serveur soit sollicité par des machines tiers pour résoudre des noms de domaines autres que ceux hébergés et gérés par le serveur :
+
 
+
allow-query {
+
  192.168.1.0/24; # toutes les machines du réseau 192.168.1.0/24 peuvent utiliser le serveur DNS pour résoudre des noms.
+
};
+
 
+
=== Fichier /etc/bind/named.conf.local ===
+
 
+
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 notamment :
+
* 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 trois zones :
+
* '''net.ncad.fr''' qui correspond au nom de domaine ''net.ncad.fr'';
+
* '''0.0.10.in-addr.arpa''' qui correspond à la gestion du reverse DNS pour le réseau ''10.0.0.0/24''.
+
* '''0.0.a.b.0.f.e.f.0.d.1.4.1.0.0.2.ip6.arpa''' qui correspond à la gestion du reverse DNS pour le réseau "2001:41d0:fef0:ba00/64".
+
 
+
La déclaration de ces zones dans le fichier ''/etc/bind/named.conf.options'' donne les lignes suivantes :
+
 
+
  zone "net.ncad.fr" {
+
          type master;
+
          file "/etc/bind/db.net.ncad.fr";
+
  };
+
 
+
  zone "0.0.10.in-addr.arpa" {
+
          type master;
+
          notify no;
+
          file "/etc/bind/db.10";
+
  };
+
 
+
  zone "0.0.a.b.0.f.e.f.0.d.1.4.1.0.0.2.ip6.arpa" {
+
          type master;
+
          notify no;
+
          file "/etc/bind/db.0.0.a.b.0.f.e.f.0.d.1.4.1.0.0.2";
+
  };
+
 
+
== Définition des zones DNS ==
+
 
+
Dans ce cas précis il faudra créer deux fichiers de configuration à la racine ''/etc/bind/'' :
+
* '''db.net.ncad.fr'''; pour notre nom de domaine;
+
* '''db.10'''; pour notre reverse DNS.
+
 
+
=== Création d'une zone DNS ===
+
 
+
Nous définissons en premier lieu les informations de la zone. Pour cela, nous utiliserons l'enregistrement de type SOA :
+
 
+
$TTL    604800
+
@      IN      SOA    a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
+
                        2012071201      ; Serial
+
                        10800  ; Refresh
+
                        3600    ; Retry
+
                        604800  ; Expire
+
                        38400 ) ; 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 enregistrements additionnels :
+
 
+
machine-a      IN      A      10.0.0.30
+
 
+
Ce qui nous donne au final le fichier de configuration suivant :
+
 
+
$TTL    604800
+
@      IN      SOA    a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
+
                    2012071202        ; 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
+
machine-a      IN      A      10.0.0.30
+
 
+
{{Box Remarque | objet=A chaque modification de ce fichier - ajout/suppression d'enregistrements - vous devez incrémenter le Serial (synthaxe du sérial : aaaammjjvv). Le cas échéant, le serveur DNS secondaire ne prendra pas en compte les modifications appliquées à la zone. }}
+
 
+
=== Création d'une zone DNS inverse (IPv4) ===
+
 
+
Comme pour le fichier précédent, nous devons renseigner les informations de la zone :
+
 
+
$ttl 38400
+
0.0.10.in-addr.arpa. IN SOA a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
+
                        2012071101      ; Serial
+
                        10800  ; Refresh
+
                        3600    ; Retry
+
                        604800  ; Expire
+
                        38400 ) ; Negative Cache TTL
+
0.0.10.in-addr.arpa. IN NS a-ncad-dns.net.ncad.fr.
+
 
+
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''.
+
 
+
30.0.0.10.in-addr.arpa. IN    PTR    machine-a.net.ncad.fr
+
 
+
Au final, nous obtenons le fichier de configuration suivant :
+
 
+
$ttl 38400
+
0.0.10.in-addr.arpa. IN SOA a-ncad-dns.net.ncad.fr. tech.ncad.fr. (
+
                        2012071102      ; Serial
+
                        10800  ; Refresh
+
                        3600    ; Retry
+
                        604800  ; Expire
+
                        38400 ) ; Negative Cache TTL
+
0.0.10.in-addr.arpa. IN NS a-ncad-dns.net.ncad.fr.
+
30.0.0.10.in-addr.arpa. IN    PTR    machine-a.net.ncad.fr
+
 
+
{{Box Remarque | objet=A chaque modification de ce fichier - ajout/suppression d'enregistrements - vous devez incrémenter le Serial. }}
+
 
+
=== Création d'une zone DNS inverse (IPv6) ===
+
 
+
{{ Box Construction | type=section }}
+
 
+
== Filtrage DNS via RPZ ==
+
 
+
{{ Box_Information | objet=Cette fonctionnalité est disponible depuis la version 9.8.0 de Bind. }}
+
 
+
=== Principe de fonctionnement ===
+
 
+
On définit sur le serveur DNS une zone DNS RPZ. Lorsqu'une requête de résolution DNS sera soumise à Bind, il va vérifier si la zone demandée est présente dans la zone RPZ. Si c'est le cas, le serveur DNS retournera un code d'erreur indiquant au client qu'il n'a pas été en mesure de résoudre le nom de domaine.
+
 
+
Cette solution de filtrage est contournable : il suffit d'interroger un autre serveur DNS. Cependant, si le protocole DNS est limité seulement à l’envoi de requête sur le serveur DNS filtré il ne sera pas possible d'utiliser un service DNS tiers.
+
 
+
=== Déclaration de la zone RPZ ===
+
 
+
La déclaration de la zone s'effectue dans le fichier '''/etc/bind9/named.conf'''. Il faut y ajouter une section nommée '''response-policy''' dans la section '''options''' et y renseigner le nom de la zone RPZ :
+
 
+
options {
+
  ...
+
  response-policy {zone "rpz.lan"}
+
}
+
 
+
=== Création de la zone ===
+
 
+
=== Renseignement de la zone ===
+
 
+
== Commandes utiles ==
+
 
+
=== Recharger la configuration ===
+
 
+
Une fois l'édition des fichiers terminés, il faut redémarrer Bind9. Pour cela, il suffit de taper en ligne de commande :
+
{{ Box Console | objet=sudo /etc/init.d/bind9 restart }}
+

Version du 16 décembre 2012 à 18:34

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.

ICON boxWarning.png

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ésidance, forme juridique, ...).

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.
ICON boxWarning.png

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 :

ICON Terminal.png

whois ncad.fr


ICON Terminal.png

whois -h whois.ovh.net ncad.fr