Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Systèmes d'exploitation > Linux > Installer un serveur DNS sur Debian > Lecture du tutoriel

Installer un serveur DNS sur Debian

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Alex
Note : 18 / 20 (9 votes)
Visualisations : 6 532

Plus d'informations Plus d'informations
J'ai pu expérimenter l'installation d'un serveur DNS ces derniers jours, et j'ai été déçu par le manque de références francophones pour les débutants dans le domaine. Bien sûr, si on se débrouille un tant soit peu en anglais, la panoplie de guides en ligne est beaucoup plus grande. Mais dès qu'on rencontre une erreur qui nous paraît inusitée, on la retape sur Google et malheureusement, aucun résultat. Donc dans ce tuto, je vais vous apprendre dans un premier temps ce qu'est un serveur DNS, à quels besoins il peut répondre, comment l'installer et comment configurer vos domaines pour qu'il les supporte. Je vous montrerai aussi par la suite à faire mumuse avec vos noms de domaines à l'aide des hôtes virtuels d'Apache.
Sommaire du tutoriel :
Icône du chapitre

Définition d'un serveur DNS

Commençons par lever le voile sur cet acronyme : DNS signifie Domain Name System. Pour que tout soit bien clair, nous allons tracer le chemin d'un nom de domaine depuis le moment où vous l'enregistrez jusqu'à la redirection par le serveur DNS (ne vous inquiétez pas, vous comprendrez tout :) ).

1 : Le registrar



Le registrar est une entreprise autorisée par l'ICANN pour la vente et l'enregistrement de noms de domaine. Ce statut est très difficile à obtenir, car il ne faut pas que n'importe qui puisse réserver des noms de domaine comme bon lui semble ! (Moi personnellement, ça m'arrangerait, mais bon... :-° )

La majorité des hébergeurs Web qui vous proposent d'enregistrer votre nom de domaine avec eux ne sont pas des registrars autorisés ; plus simplement, ils ne sont tout simplement pas des registrars. Mais comment font-ils ?! Souvent, ils s'associent avec des registrars autorisés qui de leur côté ont tout à y gagner : beaucoup plus de clients. Si par contre vous avez un serveur dédié, c'est-à-dire un serveur que vous régissez vous-mêmes et qui vous appartient, vous devez enregistrer votre nom de domaine chez un registrar et non par l'intermédiaire d'un hébergeur Web.

2 : Le serveur DNS



Et c'est pile là qu'intervient le serveur DNS ! Le domaine est d'abord enregistré chez votre registrar qui s'est chargé de l'enregistrer dans la base de données de l'ICANN. Outre cela, l'unique travail de votre registrar est d'associer votre nom de domaine à un serveur DNS. Pas à une adresse IP comme on voudrait bien le croire. Ce n'est pas si simple que ça, il ne suffit pas de dire "je veux que mondomaine.com pointe sur x.x.x.x". Ça, c'est le travail du serveur DNS. Donc, si on résume :

Vous -> Registrar -> Serveur DNS -> Serveur Web ou autre


La plupart des registrars (les sites où vous vous procurez vos noms de domaines) mettent à votre disposition des serveurs DNS leur appartenant. À ce moment, ça devient un véritable jeu d'enfants : vous n'avez qu'à donner l'adresse IP vers laquelle doit pointer votre domaine. Comme dans vos rêves ! :p Si ça répond à vos besoins, alors tant mieux, mais vous pouvez tout de même poursuivre pour vous cultiver un peu plus. Mais si comme moi, vous avez besoin d'un contrôle un peu plus grand sur le nom de domaine (moi par exemple, j'ai besoin que tous les sous-domaines non définis pointent vers le domaine principal), vous aurez besoin d'avoir accès à la configuration du serveur DNS.

J'espère à présent vous avoir convaincus de ce à quoi cela peut servir d'avoir son propre serveur DNS. Il y a d'autres utilités ; par exemple, si vous voulez qu'un sous-domaine pointe vers une IP en particulier, un autre sur une autre IP, etc. Remarquez qu'encore ici, certains registrars le permettent.

Pour qu'un serveur DNS prenne en charge un nom de domaine, il faut deux choses : qu'à partir du registrar on définisse le serveur DNS en question, et que ce serveur prenne en charge le domaine dans sa configuration. Représentons cela ainsi : un type affirme "tu es mon ami !". Vous êtes alors en mesure de répondre "je confirme, tu es mon ami" ou "non, je ne te connais pas !". Si vous confirmez, vous pourrez jouer ensemble, sinon, vous ne pourrez pas. Désolé pour l'exemple digne d'une classe de maternelle, mais ils disent qu'il faut se mettre au niveau des lecteurs. :-°

3 : Les différents serveurs (serveur Web, par exemple)



Une fois le domaine redirigé vers une adresse IP donnée par le serveur DNS, il va devoir se diriger quelque part sur la machine à laquelle correspond cette adresse IP (je simplifie, hein, mais c'est l'essentiel). Si le nom de domaine a été appelé sur le port http par exemple, la requête s'acheminera au serveur Web s'il y en a un. S'il n'y a pas de serveur Web installé, on obtiendra ce qu'on se surprend tous à chérir le soir : "Serveur introuvable". :) C'est romantique.

Plus sérieusement, dans le cas où un serveur Web répond, c'est à lui que revient la tâche de dire vers quel dossier sur l'ordinateur le domaine appelé doit pointer. Avec Apache, on appelle cette gestion les VirtualHost, ou si vous préférez les hôtes virtuels. Cela vous permettra une infinité de possibilités au niveau des sous-domaines notamment.

Voilà, je pense qu'on a défini ce qu'est un serveur DNS, d'une manière un peu abrégée, je le reconnais, mais ça vous donne l'essentiel pour poursuivre. ;)

Choix et installation du serveur DNS

Déjà, en tapant sur Google "serveur dns debian", on trouve un tas de trucs à propos d'un serveur nommé bind9. Évidemment, je me suis lancé rapidement et j'ai installé bind9. Dix minutes plus tard, je pigeais quedalle à sa configuration, même avec des tutos, et je me suis dit que j'y reviendrais si je ne trouvais pas plus simple. J'ai trouvé plus simple ! Un membre sur IRC, un-brice que je remercie, m'a suggéré maradns. La configuration est un véritable charme si on compare à bind9. Bon d'accord, dans mon cas ça n'a pas fonctionné du premier coup, mais en une demi-journée, c'était parfaitement opérationnel. :)

Première chose à faire, installer le logiciel. Le tuto est à l'origine pour Debian, mais je pense que ça devrait très bien fonctionner pour Ubuntu/Kubuntu, la base du système étant sensiblement semblable.
Pour Debian :

Code : Console
apt-get install maradns


Pour Ubuntu/Kubuntu :

Code : Console
sudo apt-get install maradns


Pour les autres :

Code : Console
apt-get install debian


:-°

Tout se passe très rapidement normalement, il n'y a aucune raison de se casser la gueule à ce stade-ci. ;) On a installé le serveur DNS, on va maintenant le configurer. C'est plaisant, mais seulement quand on ne passe pas 2 heures à éditer le mauvais fichier de configuration. :D Pour éviter de faire mon erreur, copions le fichier de configuration situé à /etc/maradns/mararc dans /etc/mararc :

Code : Console
mv /etc/maradns/mararc /etc/mararc


Le fichier de configuration de maradns



Bien : maintenant, avant de poursuivre, ayez en main l'adresse IPv4 de votre serveur (l'adresse IP tout court, si vous préférez). C'est bien important, vous ne pouvez pas la substituer par un domaine quelconque même s'il pointe au même endroit.

Nous allons maintenant éditer le fichier mararc pour y définir les noms de domaines à supporter. J'espère que vous vous êtes déjà servis de l'éditeur vi ! Si vous connaissez la chose et que vous préférez vim ou un autre éditeur pour des raisons qui ne regardent que vous, allez-y, le résultat sera le même. Les commandes que je donne sont valides pour vi et probablement vim, pardonnez-moi je ne m'en suis jamais servi par flemme : on s'entend, c'est moins long de taper vi que vim. :-° Avant d'éditer le code, assurez-vous de pouvoir modifier le fichier :

Code : Console
chmod a+rwx /etc/mararc


Si vous êtes habitués aux valeurs numériques des chmod, sachez qu'un a+rwx équivaut à un chmod 777 : a pour "all", donc tout le monde (propriétaire, groupe et utilisateur). Ensuite, les lettres rwx signifient respectivement read, write, exec. C'était une petite parenthèse.

Code : Console
vi /etc/mararc
# Example mararc file (unabridged version)
 
# The various zones we support
 
# We must initialize the csv1 hash, or MaraDNS will be unable to
# load any zone files
# This is just to show the format of the file
# csv1["example.com."] = "db.example.com"


Ce sont précisément ces premières lignes du fichier de configuration qui nous intéressent. Avant d'entamer les modifications, je vous explique ce qu'on va faire : maradns utilise un fichier de configuration par domaine. Cela signifie qu'à chaque domaine qu'il supporte correspond un fichier de configuration que nous créerons par la suite. Nous allons donc identifier 3 choses :
  1. l'adresse IP de ce serveur DNS ;
  2. le dossier qui contiendra les fichiers de configuration de chaque domaine ;
  3. les domaines à gérer ainsi que le nom de leur fichier de configuration.

On est alors fin prêts. Pour modifier le fichier dans vi, vous devrez appuyer sur la touche "Insert." ou "Ins". Lorsque vous passerez en mode d'édition, vous verrez au bas "--Insertion--". Les lignes commençant par des # sont des commentaires, comme toujours. Je vais faire les modifications dans l'ordre dans lequel je les ai énumérées plus haut.

Code : Console
vi /etc/mararc
# Example mararc file (unabridged version)
 
# Hop, on commence par définir l'adresse IP de la machine
ipv4_bind_addresses = "87.98.218.122"
 
# On définit le dossier dans lequel sont les fichiers de conf de chaque domaine
chroot_dir = "/etc/maradns/"
 
# On définit les domaines dont le serveur va s'occuper
csv2 = {}
csv2["mondomaine.com."] = "db.mondomaine.com"
 
# Ignorez le csv1 en commentaires plus bas
 
# The various zones we support
 
# We must initialize the csv1 hash, or MaraDNS will be unable to
# load any zone files
# This is just to show the format of the file
# csv1["example.com."] = "db.example.com"


Bon, pour être bien sûrs que personne ne fasse de conneries, quelques balises de couleur aveuglante s'imposent. :)
Vous ne devez pas placer de www devant le nom de votre domaine. C'est pas que j'avais fait l'erreur, mais au cas où l'idée vous traverse l'esprit. Je vous rappelle que le www n'est qu'un sous-domaine que l'on utilise par convention pour désigner la racine d'un site Web. Rien ne vous empêcherait de le faire pointer ailleurs.

Lorsque vous déclarez un nom de domaine dans votre mararc, le point qui suit son nom n'est pas facultatif ; au contraire, sans lui rien ne fonctionnera. On n'écrit donc pas csv2["mondomaine.com"] mais bien csv2["mondomaine.com."]. Je ne me suis pas renseigné à savoir pourquoi, mais c'est ainsi.

Un peu plus loin dans le mararc, vous trouverez une autre déclaration de chroot_dir. Ajoutez un # devant la ligne pour la commenter. Si vous ne le faites pas, vous obtiendrez un avertissement à chaque lancement du serveur. Pas trop important, mais un peu lassant, quoi.

Pour enregistrer le fichier, appuyez sur [Escape] et tapez ":wq" sans les guillemets. Le w et le q signifient respectivement "Write and Quit". Voilà, votre mararc est enregistré et prêt à l'emploi !

Le fichier de configuration d'un domaine



Comme on l'a dit dans le mararc, il doit y avoir un fichier de configuration pour le domaine mondomaine.com situé à /etc/marardns/db.mondomaine.com ; nous allons commencer par le créer :

Code : Console
vi /etc/maradns/db.mondomaine.com


On passe tout de suite en mode insertion, appuyez sur Ins. Dans ce fichier, on doit définir à quelle adresse IP sont associés les différents sous-domaines. Voici mon fichier de configuration (et pour ne pas faire de pub, vous remarquerez que j'ai remplacé le domaine par mondomaine.com :-° ) :

Code : Console
mondomaine.com.   NS      ns1.mondomaine.com.
ns1.mondomaine.com.       87.98.218.122
mondomaine.com.           87.98.218.122
www.mondomaine.com.       87.98.218.122
 
*.mondomaine.com.         87.98.218.122


Les deux premières lignes nous servent à définir le nom d'hôte de ce serveur DNS. C'est notamment ce qui permettra de dire si oui ou non le registrar qui vous envoie des domaines est votre ami. On en parlera plus longuement tout à l'heure, ne vous concentrez pas sur ces détails. Les 3 dernières lignes devraient vous intéresser un peu plus : enfin, on dit vers quelle adresse IP doivent se rendre les noms de domaines et sous-domaines. La première des 3 dernières lignes indique que lorsque l'on tapera "mondomaine.com" dans notre barre d'adresse par exemple, on aboutira à l'IP à côté. Même chose pour le sous-domaine juste à côté. La dernière ligne utilise le joker *, qui se veut un "catch-all". Il remplace n'importe quoi. Cela signifie donc que tous les sous-domaines que nous n'avons pas déclarés iront quand même à l'adresse IP écrite.

Ne précipitez pas les choses. Si vous voulez qu'un domaine pointe sur un répertoire en particulier de votre serveur Web, ce n'est pas la place pour improviser un 87.98.218.122/alex/site/. Mais alors pas du tout, quoi. :p


Répétez la chose pour chacun des domaines que vous avez définis dans le mararc, et le tour est joué. Vous êtes à quelques étapes près de sourire devant le "It works !" d'Apache en tapant votre nom de domaine dans votre navigateur. :)

Lancement du serveur maradns



Pour lancer maradns, il faut taper lancer la simple commande suivante :

Code : Console
maradns


Par contre, dès que vous appuyez sur Ctrl + c pour revenir à votre prompt, ou que vous fermez votre console, le serveur s'éteint et ce n'est pas du tout commode. Nous allons donc lancer la commande automatiquement au démarrage du système.

Les processus lancés au démarrage sont stockés dans /etc/rc2.d/. La syntaxe de ce dossier est simple : S ou K (S pour Start et K pour Kill), un chiffre indiquant quand sera lancé le processus (ils sont lancés en ordre) et la commande à lancer. La première chose à faire est de créer notre fichier .sh qui contiendra la commande à exécuter. Plaçons-le dans init.d pour ne pas être marginal :

Code : Console
vi /etc/init.d/maradns.sh


Passez en mode insertion, et tapez simplement "maradns" dans le fichier, sans les guillemets. Enregistrez et quittez en tapant ":wq" après avoir quitté le mode d'insertion avec [Escape]. Nous allons maintenant rendre notre fichier exécutable puisqu'on devra l'exécuter ! :D Tout de suite après, placez-vous dans le dossier /etc/rc2.d. Pour finir, nous allons ajouter la commande à lancer au démarrage dans le dossier :

Code : Console
chmod 700 /etc/init.d/maradns.sh
cd /etc/rc2.d
ln -s ../init.d/maradns.sh S99maradns.sh


On met une priorité 99 par simple formalité pour qu'il fasse la file comme les autres, au démarrage. :) En le plaçant en dernier, si un problème survient pendant l'exécution, votre serveur SSH est tout de même lancé, par exemple.

Redémarrez l'ordinateur pour que maradns soit lancé au démarrage, et qu'il soit lancé pour rester bien vivant. :D

Code : Console
reboot


Cette commande ne peut être exécutée que si vous êtes loggués en root. ;)

Chez votre registrar

Maintenant, il va falloir retourner sur le site de votre registrar, sur votre interface de gestion de domaines. Je vais vous montrer comment j'ai fait sur le mien à l'aide de captures d'écran. Ça devrait être sensiblement pareil d'un registrar à l'autre, à la différence que l'interface du vôtre est probablement en français. On y va. :)

Définissez vos serveurs DNS



Premièrement, repérez une section Configuration serveur DNS ou Enregistrement de serveur DNS, bref quelque chose de semblable. Normalement on vous proposera d'associer des sous-domaines (xxx.ownbloog.com) à des adresses IP. Attention, cela ne voudra en aucun cas dire que ces sous-domaines pointent vers cette adresse IP pour un serveur Web, rappelez-vous que c'est le travail du serveur DNS, ça. Ça associe plutôt à l'adresse IP du serveur DNS. Même si celle du serveur Web est la même, ça n'a rien à voir. Dans mon cas par exemple, ça ressemble à ça :

Image utilisateur


Remplissez-en au moins deux avec la même adresse IP, car tout à l'heure, on vous en demandera au moins deux, généralement. Je vous recommande de choisir ns1 et ns2, mais vous pouvez prendre ce que vous voulez, ça ne change strictement rien. Ensuite, rendez-vous dans Serveurs DNS ou quelque chose du genre. Attention à ne pas confondre cette section et celle que nous avons utilisée plus haut.

Image utilisateur


Entrez les deux adresses que vous avez définies tout à l'heure, tout simplement. :) Normalement, le tour est joué et à partir du moment où ce formulaire est soumis, vous êtes en période de propagation DNS, c'est-à-dire le temps nécessaire à ce que la nouvelle adresse du serveur DNS associée à votre nom de domaine soit bien répandue. Je vous recommande d'attendre que cette propagation soit terminée pour poursuivre. Vous le saurez dès que votre nom de domaine répondra de la nouvelle IP aux pings. :)

Gérer le domaine avec Apache

Bon, peut-être que vous avez besoin de votre nom de domaine pour un autre type de serveur (serveur de jeu, serveur mail, etc.), mais puisque je suis sûr que la majorité en a besoin pour un serveur Web et que c'était mon cas, je vais vous montrer comment gérer les domaines et sous-domaines avec Apache. Vous verrez, c'est très simple. :)

La manière de procéder que je vais vous montrer demande un redémarrage du serveur à chaque fois que vous créez un domaine. Il existe des façons de le faire de façon instantanée, à vous de vous renseigner là-dessus.

Créer un fichier pour les hôtes virtuels



Nous allons faire quelque chose de propre. Évidemment, on pourrait ajouter le code nécessaire dans le apache2.conf (anciennement httpd.conf), mais nous ferons un fichier séparé qui sera inclus dans le apache2.conf. Avec vi en console, nous allons inclure le fichier hosts.conf que nous créerons tout de suite après. Si vous n'utilisez pas apache2, à vous de trouver votre fichier de configuration (probablement /etc/httpd/httpd.conf) :

Code : Console
vi /etc/apache2/apache2.conf


À la fin, nous allons ajouter cette ligne :

Code : Apache
1
2
# Inclusion du fichier pour gérer les domaines
Include /etc/apache2/hosts.conf


Voilà : il ne nous reste maintenant qu'à créer ce fichier et à le remplir ! :D Créez-le avec :

Code : Console
vi /etc/apache2/hosts.conf


Remplir notre hosts.conf



Le principe du fichier est simple. Au début, vous définissez un nom d'hôte, ce sera l'IP de votre serveur. Par la suite, pour chaque domaine et sous-domaine que doit gérer ce serveur Web, vous ajoutez ce code (en remplaçant l'IP) :

Code : Apache
1
2
3
4
5
6
7
8
<VirtualHost 87.98.218.122>
 
     ServerName     mondomaine.com
     ServerAlias    <lien url="www.mondomaine.com">www.mondomaine.com</lien>
     
     DocumentRoot   /var/www/mondomaine
     
</VirtualHost>


Voici mon hosts.conf, pour l'exemple :

Code : Apache
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
NameVirtualHost 87.98.218.122
 
<VirtualHost 87.98.218.122>
 
        ServerName ks36465.kimsufi.com
        ServerAlias 87.98.218.122
 
        DocumentRoot /var/www
 
</VirtualHost>
 
<VirtualHost 87.98.218.122>
 
        ServerName mysql.mondomaine.com
        
        DocumentRoot /var/www/phpmyadmin
 
</VirtualHost>
 
<VirtualHost 87.98.218.122>
        
        ServerName hakan.mondomaine.com
 
        DocumentRoot /var/www/alex/rifleman/hakan
 
</VirtualHost>
 
<VirtualHost 87.98.218.122>
 
        ServerName <lien url="www.mondomaine.com">www.mondomaine.com</lien>
 
        DocumentRoot /var/www/alex/ownbloog
 
</VirtualHost>
 
<VirtualHost 87.98.218.122>
        
        ServerName mondomaine.com
        ServerAlias *.mondomaine.com
        ServerAlias <lien url="www.mondomaine.com">www.mondomaine.com</lien>
 
        DocumentRoot /var/www/alex/ownbloog
 
</VirtualHost>


La première ligne, celle contenant NameServer est obligatoire. Sans elle, rien ne fonctionnera. Autrement, je pense que l'exemple est très parlant. :) Chaque fois que vous éditez le fichier, vous devez relancer apache pour que les modifications prennent effet :

Code : Console
/etc/init.d/apache2 restart


Vous voilà maintenant prêts à affronter le monde. :-° Mais watch out quand même : ça, c'était juste le serveur DNS. :-°
Retour en haut Retour en haut


Créé : le 23/07/2007 à 18:19:12
Modifié : le 22/08/2008 à 16:06:28
Avancement : 0%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 80 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.033s (0.0233s)