Serveur DNS : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(Serveur récursif)
(Création d'une zone DNS)
Ligne 114 : Ligne 114 :
 
=== Création d'une zone DNS ===
 
=== Création d'une zone DNS ===
  
Nous définissons en premier lieu les informations de la zone :
+
Nous définissons en premier lieu les informations de la zone. Pour cela, nous utiliserons l'enregistrement de type SOA :
  
 
  $TTL    604800
 
  $TTL    604800
Ligne 127 : Ligne 127 :
 
  a-ncad-dns      IN      A      10.0.0.37
 
  a-ncad-dns      IN      A      10.0.0.37
  
Ensuite nous pouvons ajouter des enregistre additionnels :
+
Ensuite nous pouvons ajouter des enregistrements additionnels :
  
 
  machine-a      IN      A      10.0.0.30
 
  machine-a      IN      A      10.0.0.30
Ligne 145 : Ligne 145 :
 
  machine-a      IN      A      10.0.0.30
 
  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). }}
+
{{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) ===
 
=== Création d'une zone DNS inverse (IPv4) ===

Version du 16 décembre 2012 à 17:55

Introduction

Définition du DNS

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.

Une adresse IPv4 est composé de 4 blocs de 8 octets ou pour IPv6 de 8 bloc de 16 octets. Quelques exemples d'adresses :

  • 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.

Vocabulaire

  • 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.
  • Récursif : Se dit d'un serveur qui va résoudre des noms de domaine dont il n'héberge pas les zones.
  • 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.
  • 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.

Enregistrements DNS

Les enregistrements DNS permettent de configurer une zone DNS. Il existe plusieurs types d'enregistrement avec des usages bien précis.

A : Permet d'affecter une adresse IPv4 à un nom de domaine.

AAAA : Permet d'affecter une adresse IPv6 à un nom de domaine.

CNAME : Permet de rediriger un nom de domaine vers un autre nom de domaine.

MX : Permet de définir les serveurs de messagerie du nom de domaine.

PTR : Permet d'affecter un nom de domaine à une adresse IP.

SOA : Permet de déclarer la zone DNS du nom de domaine.

SPF : Permet de définir les serveurs mails autorisés à délivrer les messages dont l'adresse expéditeur comporte le nom de domaine.

Installation

Dépôts Ubuntu

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

ICON Terminal.png

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;
};
ICON Information.png

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
ICON Light.png
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
ICON Light.png
A chaque modification de ce fichier - ajout/suppression d'enregistrements - vous devez incrémenter le Serial.

Création d'une zone DNS inverse (IPv6)

ICON Build.png
section en construction

Cette section doit être complétée.

Filtrage DNS via RPZ

ICON Information.png

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 :

ICON Terminal.png

sudo /etc/init.d/bind9 restart