skip to Main Content

Dns sur une Debian : Installer configurer un serveur

Dns sur une Debian : Installer configurer un serveur

 Dns Infomation

Définition : Dns permet de faire de la résolution de nom entre son adresse IP et le nom de domaine. Mais pas que ça. Il permet d’avoir son serveur mail.

 Pré-requis

–  Avoir de bonne connaissance les bases des réseau TCP/IP –

Principe de fonctionnement

Quand nous demandons une résolution de nom La Debian va vérifier en premier le fichier hosts qui se trouve dans /etc/hosts.conf

Explication du fichier hosts

Le fichier hosts est sous la forme suivante :

order hosts,bind (1) multi on (2) (1) Il recherche dans la table hosts locale et ensuite il interroge le serveur DNS. (2)

Explication de la table hosts

La table hosts est dans le dossier /etc/hosts.

 127.0.0.1 localhost.localdomain localhost
 192.168.1.251 osn.mondomaine.com osn
 fe80::xxx:xxx:xxxx:xxxx osn.mondomaine.com osn

Elle contient l’adresse IP qui correspond au nom de domaine ou un nom de domaine local. Nous pouvons rajouté d’autre nom pour faire correspondre une adresse IP. Si le résultat n’est pas trouvé dans la table hosts, il recherche le serveur DNS indiqué dans le fichier dans :

/etc/resolv.conf

Explication du fichier resolv.conf

search mondomaine.com
 nameserver 127.0.0.1 ou le serveur de Nom
 

search : pour recherche le nom de domaine nameserver : adresse du serveur Lien externe Vous pouvez aller sur Wikipédia pour avoir plus d’information http://fr.wikipedia.org/wiki/Domain_Name_System

 Pourquoi installer un serveur DNS ?

– Un serveur DNS permet d’accélérer le trafic sur le réseau. – Pour le bon fonctionnement des services Web, Serveur mail, etc … – Accélérer la recherche de résolution de nom avec un cache

Installer

J’utilise Bind9 pour la distribution Debian. Se mettre en root et utiliser la commande suivante :

apt-get install bind9 dnsutils

Une fois installé, il vous reste la grande partie de configuration.

Configurer

Nous avons besoins de trois fichiers pour configurer le serveur Dns  /etc/bind/named.conf.local, /etc/bind/mondomaine.com/db.mondomaine.com et /etc/bind/mondomaine.com/db.mondomaine.com.inv.
Named.conf.local est le fichier principale qui contient la liste des domaines que le serveur DNS doit prendre en charge.

Explication du fichier named.conf.local

zone "mondomaine.com" in {
  type master;
# Fichier de zone
 file "/etc/bind/mondomaine.com/db.domaine.com";
# On autorise le transfert de la zone aux serveurs DNS secondaires
 allow-transfer { 213.251.188.141; 213.186.33.199; 127.0.0.1; ::1; };
# On autorise tout le monde à  envoyer des requêtes vers cette zone
 allow-query { any; };
# Prévenir les serveurs DNS secondaires qu'un changement a été effectué dans la zone maître
  notify yes;
  };


Mondomaine : Nom du domaine à prendre en charge. N’oubliez pas de changer avec votre domaine.
type master : c’est le serveur principal de ce domaine.
file « /etc/bind/mondomaine.com/db.mondomaine.com » : c’est là où le fichier se trouve. Il fait la résolution entre le nom et les adresses IP pour ce domaine.
allow-transfer : Adresse IP du serveur Dns secondaire
allow-query { any; }; : Je me répète, on autorise tout le monde à  envoyer des requêtes vers cette zone
notify : Prévenir les serveurs DNS secondaires qu’un changement a été effectué dans la zone maître

Nous allons créer un dossier mondomaine.com avec la commande suivante :

mkdir /etc/bind/mondomaine.com ou un répertoire avec un autre nom

Maintenant créons le fichier avec la commande ci dessous dans  /etc/bind/mondomaine.com.

touch db.mondomaine.com

Explication de ce fichier :

zone

IN

SOA

primary

Email.

(

 

 

 

 

serial.

;commentaire

 

 

 

 

refresh

;commentaire

 

 

 

 

retry

;commentaire

 

 

 

 

expire

;commentaire

 

 

 

 

ttl

;commentaire

 

 

 

 

 

);

Zone : Nom de domaine associé à la zone Primary : Nom de domaine du serveur primaire de la zone Email : C’est l’adresse électronique du contact technique de la zone. [blockquote author= » » link= » »]Attention :L' »@ » est remplacé par un « . » point.[/blockquote]

Serial : Ce paramètre donne le numéro de série du fichier de zone.  Nous avons la date anglaise avec les 2 chiffres qui sert de numéro de version.

Refresh : donne l’intervalle de temps en secondes entre deux vérifications du numéro de série Retry : donne l’intervalle en secondes entre deux tentatives de lecture du serial du fichier de zone.

Expire : donne le temps maximum pendant lequel les données du serveur secondaire peuvent être diffusées, si aucune vérification ni transfert de zone n’ont pu être effectués depuis leur téléchargement Ttl : c’est la durée de vie du temps de réponse négative doit rester dans les caches

$TTL 7200
  @ IN SOA ns1.mondomaine.com. contact.mondomaine.com. (
  2015241201 ; Serial
  14400 ; Refresh
  3600 ; Retry
  1209600 ; Expire - 1 week
  86400 ) ; Minimum

Important :   NE PAS OUBLIER DE CHANGER LE SERIAL APRES  CHAQUE CHANGEMENT !

Maintenant je vais vous expliquer ligne par ligne la configuration.
En premier nous allons mettre le nom des serveurs de nom (Nameserver)

; Adresse du serveur primaire ns.mondomaine.com.
 ; Adresse du serveur secondaire sdn2.ovh.net. ou se trouve la VM
 @ IN NS ns1.mondomaine.com.
  @ IN NS sdns2.ovh.net.

Puis nous rajoutons l’adresse IP du serveur dédié en IPv4 et IPV6 public

;IP du serveur dédié en ipv4 et ipv6
 ; Enregistrements A/AAAA
ns1 IN A 192.168.1.251
  ns1 IN AAAA 2001:xxxx:x:xxxx::13

Pour l’ipv6 ne pas oublier de mettre dans /etc/network/interfaces

Comme ceux-ci :

iface eth0 inet6 static
 address 2001:xxxx:x:xxxx::13
 netmask 64
 post-up /sbin/ip -f inet6 route add 2001:xxxx:x:xxff:ff:ff:ff:ff dev eth0
 post-up /sbin/ip -f inet6 route add default gw 2001:xxxx:x:xxff:ff:ff:ff:ff
 post-up /sbin/ip -6 addr add 2001:xxxx:x:xxxx::13/64 dev eth0
 pre-down /sbin/ip -6 addr del 2001:xxxx:x:xxxx::13/64 dev eth0
 pre-down /sbin/ip -f inet6 route del default gw 2001:xxxx:x:xxff:ff:ff:ff:ff
 pre-down /sbin/ip -f inet6 route del2001:xxxx:x:xxff:ff:ff:ff:ff dev eth0

Faire un redémarrage du service :

/etc/init.d/networking restart


Nous voulons que le domaine pointe vers le l’adresse IPv4 de notre serveur.


 ;Nom de domaine qui pointe vers l'adresse IP du Serveur Osn
  mondomaine.com. IN A 192.168.1.251
  mondomaine.com. IN AAA 2001:xxxx:x:xxxx::13

Là c’est le nom du sous domaine qui pointe sur le serveur d’hébergement. C’est un serveur de messagerie

mail.mondomaine.com. IN A 192.168.1.251

 

;Sous domaine qui pointe vers adresse du serveur
smtp IN A 192.168.1.251
 pop IN A 192.168.1.251

 

Ici c’est pour dire si nous tapons mondomaine.com sur le navigateur il sera qu’il faudra aller chercher les informations dans le dossier www.
Aussi au lieu de taper mail.mondomaine.com, nous aimerions mieux taper webmail.mondomaine.com. C’est ce que l’on appelle un nom canonique.

 

; Sous-domaines du Serveur web
  www IN CNAME mondomaine.com
  webmail IN CNAME mail.mondomaine.com.

Nous allons définir un serveur de messagerie

; Enregistrement MX (Mail)
  @ IN MX 10 mondomaine.com.
  ; Sous-domaines - Serveur mail
  imap IN CNAME mondomaine.com.

ownercheck permet ajouter un domaine dans le serveur secondaire.
Dans cette partie Nous ajoutons SFP DKIM TXT etc …

; Enregistrement SFP, DKIM, TXT ...etc
  ownercheck IN TXT "b4dbbd3d"

Le domaine.com peut pointer avec ou sans les www.

mondomaine.com IN TXT "1|www.mondomaine.com"
 www.mondomaine.com IN TXT "3|welcome"

Ici on indique que le domaine est français

www.mondomaine.com IN TXT "l|fr"

Nous avons pas fini de configurer le serveur DNS Il faut fait la reverse.

Qu’est que la reverse ?

La Reverse permet la résolution Inverse à partir du nom pour trouver l’adresse IP. c’est pour voir si le nom est valide. Il est nécessaire que le serveur prenne en charge la résolution inverse.
Nous avons fait la configuration de 
named.conf.local pour db.mondomaine.com dans la première partie.
Et bien là nous faisons la même chose mais avec l’adresse ip.

Configuration de l’inverse dans le fichier named.conf.local

zone "db.251.1.168.192.in-addr.arpa" {
type master; file "/etc/bind/mondomaine.com/db.251.1.168.192.in-addr.arpa";
 forwarders{};
};

Maintenant créons le fichier avec la commande ci dessous dans /etc/bind/mondomaine.com/db.251.1.168.192.in-addr.arpa.

touch db.251.1.168.192.in-addr.arpa

Une fois le fichier créer ouvrez le et insérer les ligne suivante :

$TTL 7200
  @ IN SOA ns1.mondomaine. contact.mondomaine.com.(
  2015091001
  7200 ; Refresh
  86400 ; Retry
  2419200 ; Expire
  604800 ) ; Negative Cache TTL
  ;
  IN NS ns1.mondomaine.com.
  IN NS sdns2.ovh.net.
@ IN NS ns1.
 ;
 ;251.1.168.192.
251 IN PTR www.mondomaine.com.

De @ à ) :Pour la gestion maître-esclave des serveurs DNS

NS : Donne le nom du serveur

PTR : Fait la résolution entre adresse IP et le nom du serveur mais il peut avoir plusieurs serveurs différents.

Ne pas oublier d’enregistrer le fichier.

J’ai oublié de vous parler du Forwarder.

Explication du fichier named.conf.option

Nous pouvons le mettre globalement dans named.conf.option les Dns de votre FAI.

options {
 directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
 // to talk to, you may need to fix the firewall to allow multiple
 // ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
 // nameservers, you probably want to use them as forwarders.
 // Uncomment the following block, and insert the addresses replacing
 // the all-0's placeholder.
 // forwarders {213.186.33.199; 213.251.188.141; };
//========================================================================
 // If BIND logs error messages about the root key being expired,
 // you will need to update your keys. See https://www.isc.org/bind-keys
 //========================================================================
 # Activer DNSSEC
 dnssec-enable No;
 dnssec-validation auto;
 auth-nxdomain no; # conform to RFC1035
//listen-on { any; };
 listen-on port 53 { any; };
 listen-on-v6 { any; };
# Autoriser les requêtes récursives locales uniquement
 allow-recursion { 127.0.0.1; ::1; };
# Ne pas transférer les informations des zones aux DNS secondaires
 allow-transfer { none; };
# Ne pas autoriser la mise à jour des zones maîtres
 allow-update { none; };
# Ne pas rendre publique la version de BIND
 version none;
 hostname none;
 server-id none;
};

Nous pouvons redémarrer le serveur BIND9 avec la commande ci-dessous :

/etc/init.d/bind9 restart

Si vous n’avez pas de message d’erreur, alors le serveur est ok.

Par contre en cas où il ne démarre pas aller dans /var/log.

Pour aller plus loin, nous pouvons créer ses propres logs. pour cela aller dans /etc/bind9/named.conf.local.

Rajouter les lignes suivante :

logging { channel query.log { file "/var/log/bind9/query.log";
// Réglez la gravité de dynamique pour voir tous les messages de débogage
severity dynamic; }; };

Pour voir d’autres type de débogage aller voir sur le site de Bind9.

Sachant que le débugue est de 1 à 3 pour la severity.

[blockquote author= » » link= » »]exemple : severity debug 1 ou severity debug 2 severity debug 3[/blockquote]

Par défaut, il est à 1. Si aucun niveau n’est spécifié. Si vous avez des erreurs comme ceci :

 

 NXDOMAIN  : 

il n’existe pas d’enregistrement ayant le nom spécifié dans la requête DNS.

 NODATA  :

il existe bien un ou des enregistrements portant le nom spécifié dans la requête DNS.

Je tiens à remercier pour cette article :

Tous les sites et forums qui m’ont aidé.