Serveur DNS

De NCad Wiki
Aller à la navigation Aller à la recherche

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 :

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

En supprimant cette directive le serveur écoutera toutes les requêtes qui lui seront soumises et tentera de les satisfaire.

Serveur DNS Public

Pour un serveur de DNS publique - toutes les machines peuvent interroger le serveur - on renseignera plutôt comme ceci la directive Allow-query :

allow-query {
  any;
};

Chaque déclaration se termine par un ";" - de même pour l'accolade finale.

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 :

$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 enregistre 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
A chaque modification de ce fichier - ajout/suppression d'enregistrements - vous devez incrémenter le Serial (synthaxe du sérial : aaaammjjvv).

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

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

Cet {{{1}}} est en cours de rédaction.

Filtrage DNS via RPZ

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 :

sudo /etc/init.d/bind9 restart