Lorsque vous achetez un serveur VPS, ou que vous créez un intranet avec plusieurs serveurs, il est intéressant de créer un serveur DNS sur votre VPS ou sur votre réseau local. Ainsi, vous pourrez gérer les sous-domaines de votre domaine sans passer par un intermédiaire. Ceci dit, cela nécessite une bonne compréhension du fonctionnement des DNS (à quoi ça sert, à quoi servent les différents types d'enregistrements, ...).
Tutoriel testé sous Ubuntu 12.04 et Debian 7.7.0.
Pour commencer, installer le serveur DNS "Bind".
Note : Il est possible que ce serveur soit déjà installé par défaut. Tout dépend, si le serveur DNS a été coché lors de l'installation de la distribution Linux ou non.
Bash
apt-get install bind9
Puis, allez dans le dossier de "Bind".
Bash
cd /etc/bind
Tout d'abord, nous allons configurer le serveur DNS pour qu'il "écoute" sur toutes les adresses IP. Ce qui permet d'envoyer des requêtes au serveur DNS depuis n'importe où : le serveur lui-même, le réseau local où il se trouve et Internet).
Pour cela, modifiez le fichier "/etc/bind/named.conf.options" comme ceci :
Bash
vim named.conf.options
Remplacez ceci :
Bash
listen-on {127.0.0.1;};
Par ceci :
Bash
listen-on {any;};
Note : Si la ligne "listen-on" n'existe pas, ajoutez là après la ligne "listen-on-v6".
Ensuite, modifiez le fichier "/etc/bind/named.conf.local" pour déclarer les zones à gérer sur ce serveur DNS.
Bash
vim named.conf.local
A la fin du fichier, ajoutez ceci :
Notes :
- Une zone correspond à un domaine.
- Dans notre cas, notre domaine est : informatiweb-tuto.net
Bash
zone "informatiweb-tuto.net" { type master; file "/etc/bind/db.informatiweb-tuto.net"; //allow-transfer {xxx.xxx.xxx.xxx;}; // Serveur DNS secondaire de l'hébergeur };
Cette configuration est le minimum nécessaire pour que cette zone soit déclarée sur votre serveur DNS.
Informations :
Maintenant que la configuration de base est configurée, nous allons créer un fichier pour chaque zone déclarée ci-dessus.
Bash
vim db.informatiweb-tuto.net
Note : ce fichier est vide car il sera créé.
Dans ce fichier, collez ceci :
Bash
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns.informatiweb-tuto.net. webmaster.informatiweb-tuto.net. ( 5 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS vpsxxx.ovh.net. @ IN NS sdns2.ovh.net. ; @ IN A xx.xx.xx.xx @ IN AAAA xxxx:xxxx:xx:xxx:x:x:x:xxx ; IN MX 10 mail.informatiweb-tuto.net. ; ns IN A xx.xx.xx.xx www IN A xx.xx.xx.xx us IN A xx.xx.xx.xx mail IN A xx.xx.xx.xx smtp IN CNAME www pop IN CNAME www imap IN CNAME www ftp IN CNAME www webmail IN CNAME www
Dans ce fichier, remplacez les valeurs :
- xx.xx.xx.xx : par l'adresse IPv4 de votre serveur
- xxxx:xxxx:xx:xxx:x:x:x:xxx : par l'adresse IPv6 de votre serveur (si applicable, sinon supprimez cette ligne)
- informatiweb-tuto.net. : par votre domaine, suivi d'un point. Le point est obligatoire. Il ne s'agit pas d'une erreur.
- vpsxxx.ovh.net : par l'adresse de votre serveur DNS (qui est serveur DNS primaire pour cette zone)
- sdns2.ovh.net : par l'adresse du serveur DNS secondaire de votre hébergeur.
Pour créer d'autres sous-domaines, basez-vous sur cette configuration.
Vous pouvez, bien évidemment, séparer les différents protocoles sur différents serveurs.
Par exemple :
- faire pointer les sous-domaines "mail", "smtp", "pop", "imap" et "webmail" sur une adresse IP "10.0.0.1". L'adresse IP "10.0.0.1" étant l'adresse IPv4 de votre serveur de mails
- et faire pointer les sous-domaines "www", "ftp", ... sur l'adresse IP "10.0.0.2". L'adresse IP "10.0.0.2" étant l'adresse IPv4 de votre serveur où vous avez installé : Apache, PHP, MySQL et phpMyAdmin.
Informations sur les différents types d'enregistrements :
- A : permet de faire pointer le domaine ou un sous-domaine sur une adresse IPv4 (format : xx.xx.xx.xx)
- AAAA : idem que A mais pour les adresses IPv6 (format : xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)
- CNAME : permet de faire pointer un sous-domaine sur la même adresse qu'un autre sous-domaine. Cela rend les modifications futures plus rapides.
- MX : permet de spécifier le sous-domaine qui pointe sur votre serveur de mails.
- NS : permet de spécifier le ou les serveur DNS qui s'occupent de cette zone.
Attention : l'enregistrement NS doit obligatoirement pointer sur un enregistrement de type "A" (pas un CNAME).
Important :
- L'enregistrement MX est obligatoire si vous installez un serveur de mails sur votre serveur. Cet enregistrement permet de rendre votre serveur visible aux ordinateurs extérieurs lorsque vous enverrez des mails depuis votre serveur Linux.
- Si vous installez un serveur de mails sur votre serveur, votre serveur devra être accessible depuis l'extérieur. Si c'est un VPS, vous n'aurez pas de problèmes. Par contre, si vous souhaitez héberger votre serveur chez vous, vous devrez faire le nécessaire : Avoir un domaine en ligne (chez OVH ou autre) et configurer votre routeur.
- A chaque modification, vous devrez modifier le "Serial" indiqué au début du fichier. Une des méthodes la plus fiable, est d'utiliser la date du jour au format anglais : aaaammjjxx (xx est un nombre que vous incrémenterez si vous modifiez ces informations plusieurs fois, le même jour.)
Note pour l'utilisation en réseau local :
- L'enregistrement NS étant obligatoire, il faudra ajouter ceci dans ce fichier de zone :
Bash
@ IN NS ns. ns IN A xx.xx.xx.xx ; IP de votre serveur DNS
Maintenant que nous avons créé notre zone de recherche directe, nous allons créer la zone de recherche inverse. Cette zone est obligatoire pour traduire les adresses IP en nom de domaine.
Ainsi, on peut récupérer le nom de domaine d'un site via son adresse IP.
Le nom de zone de recherche inverse est constitué de l'ID réseau (mais inversé) suivi de : .in-addr.arpa
Par exemple :
- Si le serveur à une adresse "10.0.0.5", son ID réseau sera "10.0.0" et le nom de zone inverse sera "0.0.10.in-addr.arpa".
- Si le serveur à une adresse "192.168.1.5", son ID réseau sera "192.168.1" et le nom de zone inverse sera "1.168.192.in-addr.arpa".
Pour ajouter une zone de recherche inverse, modifiez le fichier "/etc/bind/named.conf.local".
Bash
vim /etc/bind/named.conf.local
et ajoutez ceci (en modifiant l'id réseau inversé et le nom du fichier, si nécessaire) :
Bash
zone "0.0.10.in-addr.arpa" { type master; notify no; file "/etc/bind/db.10"; };
Ensuite, créer le fichier de la zone inversée.
Bash
vim db.10
Et collez ceci à l'intérieur :
Note : Vous pouvez vous baser sur un des fichiers existants, si vous le souhaitez. Par exemple : le fichier db.127
Bash
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA ns.informatiweb-tuto.net. webmaster.informatiweb-tuto.net. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. ; 6 IN PTR ns.informatiweb-tuto.net. 6 IN PTR www.informatiweb-tuto.net. 6 IN PTR us.informatiweb-tuto.net. 6 IN PTR mail.informatiweb-tuto.net. 6 IN PTR smtp.informatiweb-tuto.net. 6 IN PTR pop.informatiweb-tuto.net. 6 IN PTR imap.informatiweb-tuto.net. 6 IN PTR www.informatiweb-tuto.net. 6 IN PTR webmail.informatiweb-tuto.net.
Comme vous pouvez le voir, le header (qui contient les infos : SOA, Serial, Refresh, ...) est identique au header de la zone de recherche directe (domaine -> IP).
Ensuite, vous devrez créer un pointeur (PTR) pour chaque sous-domaine configuré dans la zone de recherche directe.
Le chiffre présent devant le "IN" correspond au dernier octet de l'adresse IP du serveur concerné par ce sous-domaine.
Dans notre cas, nous avons fait pointer tous ces sous-domaines sur l'adresse IP : 10.0.0.6 (10.0.0 étant l'identifiant réseau défini dans le fichier "named.conf.local" pour le fichier "db.10" et 6 étant le dernier octet de cette adresse IP).
Maintenant que les fichiers de configuration sont modifiés ou créés, nous allons vérifier nos configurations.
Pour vérifier la configuration de base de BIND, utilisez la commande suivante :
Bash
named-checkconf -z
Si vous obtenez quelque chose comme ceci, c'est que votre configuration est correcte.
Bash
zone informatiweb-tuto.net/IN: loaded serial 6 zone 0.0.10.in-addr.arpa/IN: loaded serial 2 zone localhost/IN: loaded serial 2 zone 127.in-addr.arpa/IN: loaded serial 1 zone 0.in-addr.arpa/IN: loaded serial 1 zone 255.in-addr.arpa/IN: loaded serial 1
Pour vérifiez une zone spécifique, utilisez la commande "named-checkzone".
Bash
named-checkzone informatiweb-tuto.net. db.informatiweb-tuto.net
Si votre zone de recherche directe est configurée correctement, ceci s'affichera.
Bash
zone informatiweb-tuto.net/IN: loaded serial 6 OK
Ensuite, n'oubliez pas de vérifier également vos zones de recherche inversée.
Bash
named-checkzone informatiweb-tuto.net. db.10
Si votre zone de recherche inverse est configurée correctement, ceci s'affichera.
Bash
zone informatiweb-tuto.net/IN: loaded serial 2 OK
Après avoir vérifié toutes vos zones et la configuration de base de BIND, rechargez la configuration de BIND pour sauvegarder les changements de votre serveur DNS.
Bash
service bind9 reload
Pour finir, nous allons tester notre serveur DNS pour être sûr qu'il fonctionne correctement.
Pour cela, utilisez la commande "nslookup".
Note : le 2ème paramètre permet de spécifier le serveur DNS à utiliser pour résoudre ce nom de domaine. Ce paramètre est facultatif en temps normal, mais il est obligatoire pour pouvoir tester votre serveur DNS tant que la propagation DNS n'est pas terminée (en général, ce temps est de 24H).
Bash
nslookup informatiweb-tuto.net vpsxxx.ovh.net
Si votre domaine s'affiche avec son adresse IP associée, c'est que votre serveur DNS fonctionne.
Sinon, revérifiez votre configuration DNS.
Pour tester la zone inverse, utilisez la commande nslookup comme ceci :
Note : xx.xx.xx.xx est l'adresse IP associé à un sous-domaine de votre choix.
Bash
nslookup xx.xx.xx.xx vpsxxx.ovh.net
Si des lignes comme ceci apparaissent, c'est que votre zone inverse est bien configurée :
Bash
xx.xx.xx.xx.in-addr.arpa name = sous-domaine.votre-domaine.net.
Si votre domaine est hébergé chez OVH, vous allez devoir configurer votre domaine chez OVH pour qu'il soit géré par votre serveur DNS et non par le serveur DNS d'OVH (plus précisément, le serveur DNS maitre d'OVH).
Pour cela, connectez-vous à votre Manager OVH (version web).
Sélectionnez votre VPS ou votre serveur dédié, cliquez sur "mode expert" en haut à droite, allez dans l'onglet "DNS Secondaire" puis cliquez sur "Ajouter un domaine".
Indiquez le nom de domaine à copier sur le serveur DNS secondaire d'OVH.
Note : Il est possible qu'OVH vous demande de créer un enregistrement DNS de type TXT avec une valeur aléatoire. Dans ce cas, ajoutez l'enregistrement DNS qu'OVH vous demande, puis réessayez.
La zone DNS de ce nom de domaine va être copiée sur le serveur DNS secondaire d'OVH.
Ensuite, sélectionnez votre domaine, allez dans "Gestion DNS" puis cliquez sur "Ajouter un serveur DNS".
Indiquez l'adresse de votre VPS ou de votre serveur dédié en utilisant son adresse "vpsxxxxxx.ovh.net" ou "ksxxxxxx.kimsufi.com". Si vous utilisez l'adresse "ns.votre-domaine.net", vous devrez indiquer l'adresse IP du serveur.
Patientez pendant 24 à 48 heures pendant la propagation DNS.
Si vous avez oublié de réduire le TTL (Time to live) de votre zone DNS quelques jours avant de changer de serveur pour votre hébergement (web ou autre), la modification de votre zone DNS ne sera pas prise en compte pendant quelques jours. En effet, admettons que le serveur DNS secondaire d'OVH à récupérer une copie de votre zone DNS le 1/12 et que le TTL est équivalent à 2 jours. Et bien, votre modification ne sera pas prise en compte avant le 3/12.
Pour pallier à ce petit problème, voici une petite astuce :
- Pour commencer, dans votre manager OVH, sélectionnez le domaine souhaité et supprimez-le du serveur DNS secondaire
- Ensuite, de temps en temps, utilisez les commandes Windows "ipconfig /flushdns" (pour vider le cache DNS de Windows), puis la commande "nslookup votre-domaine.net sdns2.ovh.net".
En temps normal, la commande "nslookup" vous affichera les informations suivantes :
Plain Text
Serveur : Nom du serveur DNS qui a répondu à votre requête (dans notre cas : le serveur DNS secondaire d'OVH) Address : xx.xx.xx.xx (l'adresse IP de ce serveur DNS) Name : votre-domaine.net Address : xx.xx.xx.xx (l'adresse IP associée à votre nom de domaine)
Après 30 minutes ou quelques heures, votre domaine aura disparu du serveur DNS secondaire.
Plain Text
Serveur : Nom du serveur DNS qui a répondu à votre requête (dans notre cas : le serveur DNS secondaire d'OVH) Address : xx.xx.xx.xx (l'adresse IP de ce serveur DNS) *** UnKnown ne parvient pas à trouver votre-domaine.net : Query refused
Pour finir, modifiez votre zone DNS, puis rajoutez votre domaine sur le serveur DNS secondaire d'OVH.
Etant donné que votre zone DNS n'existe plus sur le serveur DNS secondaire d'OVH, il récupèrera la nouvelle configuration. Ce qui évitera que les serveurs DNS du monde entier ne se mettent à jour avec l'ancienne configuration que le serveur DNS secondaire d'OVH aurait gardé quelques jours.
La prochaine fois, pensez à réduire le TTL de la zone DNS de votre domaine quelques jours avant de changer de serveur. (sous entendu : changement d'adresse IP) ;-)
Si vous avez acheté votre VPS chez OVH, il est possible de configurer le reverse DNS de votre VPS dans votre compte OVH.
Pour cela, sélectionnez votre VPS et allez dans l'onglet "IP" affiché en bas.
Ensuite, cliquez sur le bouton "Gérer mes IP" situé à droite.
Dans la liste affichée, vous verrez 2 lignes :
Dans le cas où vous avez installé un serveur d'e-mails sur votre VPS et qu'il servira aussi à envoyer des e-mails à l'extérieur, vous devrez indiquer le nom de domaine que vous utilisez pour envoyer les e-mails.
Dans notre cas, c'est le serveur d'e-mails "mail.informatiweb.net".
Si vous ne configurer pas le reverse DNS ici, vos e-mails iront peut-être dans le dossier SPAM du destinataire parce que les 2 noms ne correspondraient pas.
Dans le cas où vous n'avez pas installé de serveur d'e-mails sur votre VPS, vous pouvez mettre votre nom de domaine racine ou celui avec les www devant.
Dans notre cas, on aurait pu mettre : informatiweb.net ou www.informatiweb.net
Linux 31/12/2016
Linux 5/10/2015
Linux 31/1/2014
Linux 13/2/2014
Contenu épinglé
Contact
® InformatiWeb-Pro.net - InformatiWeb.net 2008-2022 - © Lionel Eppe - Tous droits réservés.
Toute reproduction totale ou partielle de ce site est interdite et constituerait une contrefaçon sanctionnée par les articles L.335-2 et suivants du Code de la propriété intellectuelle.
Vous devez être connecté pour pouvoir poster un commentaire