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