fbpx

Dns sur une Debian : Installer configurer un serveur

 

Dns

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