Configurer un domaine sur un serveur

##############################################
Ce tutorial se trouve désormais sur le wiki d'ubuntu-fr. Il a été complété et corrigé par la communauté d'ubuntu francophone. Veuillez lire et/ou effectuer les modifications directement sur le wiki d'ubuntu, Merci ! ##############################################

Ce tutoriel a pour but de vous guider dans "l'installation" d'un domaine sur un serveur. Les opération vont consister en deux points principaux:

  • Configurer le serveur de nom (DNS) pour que le domaine pointe sur l'ip de votre machine
  • Configurer apache pour répondre aux requêtes de ce domaine

Prérequis & Préambule

  • Vous devez avoir sur votre machine un serveur web, ici apache2 et un serveur de nom, ici bind9.
  • Si vous utilisez un pare feu, veillez a ce que les port suivants soit ouvert:
    • 53 (tcp & udp FIXME:udp?) pour le DNS
    • 80 (tcp) pour le HTTP (sauf si vous voulez servir du HTTP sur un autre port)
    • 443 (tcp) pour le HTTPS (sauf si vous ne voulez pas servir d'HTTPS, ou autre port si vous voulez servir du HTTPS sur un autre port)
  • Dans le tutoriel le nom du serveur utilisé est myserver.adomain.tdl (correspond a l'adresse de votre serveur, par exemple ksxxxxxx.kimsufi.com)
  • Dans le tutoriel l'ip du serveur (correspondant a myserver.adomain.tdl) est 12.345.678.9
  • Dans le tutoriel notre email de contact est myemail.mailprovider.tdl (ex: )
  • Dans le tutoriel nous utilisons les serveur de DNS secondaires suivants (pour vous ce sera par exemple uniquement le serveur sdns2.ovh.net, ou encore ns.kimsufi.com (cf. ici):
    • dns1.domain.tdl
    • dns2.domain.tdl
  • Ce tutoriel a été effectué sur une Debian Squeeze (6)

Configuration de bind9

Préambule

En premier lieux il va nous falloir configurer bind9 pour communiquer avec les serveur de noms secondaire. Car pour qu'un domaine soit configuré correctement des serveurs de noms secondaires doivent connaitre la configuration de votre domaine. C'est une histoire de sécurité afin qu'il y ai au moins toujours une machine référente lors de la résolution d'un nom de domaine.

Déclarations

Dans notre fichier /etc/bind/named.conf ont doit avoir une inclusion de /etc/bind/named.conf.options, c'est dans ce fichier que nous allons placer la liste des serveurs autorisés (en réalité vous pouvez la mettre ou bon vous semble, mais soyons un peu organisé).

Cette liste de serveur autorisés va dépendre de quel serveurs/services vous utilisez pour vos serveurs DNS secondaires. En général votre prestataire chez qui vous louez votre serveur ou votre nom de domaine propose un service de DNS secondaire (ex: ovh ou gandi). Dans mon exemple j'utilise le service de http://www.cloudns.net/.

Ont définis donc cette liste d'ip autorisé a communiquer avec notre serveur.

/etc/bind/named.conf.options

options {
    directory "/var/cache/bind";
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
    allow-query { trusted; cloudns; };    // http://descriptions.netvigilance.com/tc/14049
    allow-recursion {trusted; cloudns; }; // http://www.us-cert.gov/reading_room/DNS-recursion033006.pdf
};

acl trusted {
  127.0.0.1;
};

acl cloudns { // DNS cloudns.net
    85.159.233.17;
    108.59.1.205; 
    91.230.195.150;
    85.25.34.84;   
    87.117.196.78; 
    62.75.145.77;  
    69.197.4.65;   
    188.241.115.14;
    91.218.115.228;
    184.75.249.242;
    216.24.196.51; 
};

On doit ensuite déclarer la zone, on place la configuration dans le fichier /etc/bind/named.conf.local (ou ailleurs ...)

zone "mydomain.tdl" { 
  type master;    
  file "/etc/bind/db.mydomain.tdl";  
  allow-transfer { localhost; cloudns; };
  allow-query { any; }; // http://descriptions.netvigilance.com/tc/14049
  notify yes;
};

On déclare une zone correspondant au domaine mydomain.tdl pour lequel les serveurs de cloudns sont autorisés a communiquer avec le serveur et qui doivent être notifié des changements. On indique egallement que le reste de la configuration se trouve dans le fichier /etc/bind/db.mydomain.tdl.

Configuration de la zone

Voici le fichier de configuration de zone tout prêt:

/etc/bind/db.mydomain.tdl

$TTL    86400
mydomain.tdl.   IN      SOA     myserver.adomain.tdl. myemail.mailprovider.tdl. (
                        2012092401 ; Numero
                        28800      ; refresh
                        14400      ; Retry
                        604800     ; Expire
                        86400 )    ; Minimum

; Default IP adress of the domain
        IN          A       12.345.678.9

; Name servers for the domain
        IN          NS      myserver.adomain.tdl.
        IN          NS      dns1.domain.tdl.
        IN          NS      dns2.domain.tdl.

; Mail server
        IN          MX      1   mx.myserver.adomain.tdl.

; Nodes in domain
mx                  IN      A    12.345.678.9
ftp                 IN      A    12.345.678.9
@                   IN      A    12.345.678.9
www                 IN      A    12.345.678.9

; Aliases
blog                IN      CNAME   www

Je ne m’étalerais pas sur la description de toutes les composantes de ce fichier, mais sur celles qui nous intéresses pour configurer le domaine de manière fonctionnelle. Pour plus d'info, par ici par exemple.

  • Le numéro identifiant la version de notre zone est très important. Ici nous avons 2012021601. Il permet aux serveurs de noms de savoir si il y a une nouvelle version de ce fichier. A chaque modification de vote zone vous devez mettre a jour ce numéro (notez qu'il est au format yyyymmddnn)!
  • Dans la partie Name servers for the domain on liste les serveur de noms qui s'occupe de cette zone. Nous avons donc notre serveur actuel myserver.adomain.tdl, ainsi que deux autres: dns1.domain.tdl et dns2.domain.tdl. Dans votre cas vous n'aurez peut-être pas 2 serveurs mais 1 seul, voir plus. en réalité cela dépend uniquement de combien de serveur DNS secondaires vous disposez. Dans notre exemple plus haut ou nous utilisons les serveurs de cloudns on vois que nous en avons beaucoup a disposition.
  • Dans la partie Mail server on déclare la liste des serveurs mx (mail exchange). On ne s'attardera pas la dessus dans ce tutoriel.
  • Dans la partie Nodes in domain ce sont les sou domaine pour lesquels ont fait correspondre une ip.
  • Dans la partie Aliases on déclares les alias. Dans notre exemple on dit que le sous domaine blog est un alias de www, donc même ip.

Backup des zones

A ce stade la zone est déclaré. Exécutez cette commande pour vérifier que notre zone est configuré correctement:

named-checkconf -z

Vous devez avoir dans la liste une ligne correspondant a notre zone:

zone mydomain.tdl/IN: loaded serial 2012092401

Si il y a une erreur dans votre zone, vous verrez plutôt quelque chose comme ça:

zone mydomain.tdl/IN: not loaded due to errors.

Si tout va bien on recharge la config du serveur de nom:

service bind9 reload
Reloading domain name service...: bind9.

Vous devez maintenant aller configurer vos serveurs DNS secondaires. Je ne pourrais pas expliquer la démarche dans ce tutoriel puisque elle dépend du service de serveur de nom secondaire que vous utilisez. Mais typiquement vous aurez a informer ces serveurs DNS secondaires de l'ip de votre serveur DNS principal.

Une fois la procédure effectué du coté de vos serveur de nom secondaire, le tour devrait être joué. Cependant nous allons tout de même vérifier tout ça ...

Sur votre serveur, entrez cette commande afin de récupérer les information de zone auprés de la machine DNS principale (c'est a dire la votre)

dig soa mydomain.tdl

On doit normalement voir notre configuration de zone. Repérez surtout le numéro dans ;; ANSWER SECTION: il doit correspondre a votre numéro (le plus récent bien entendu).

Mais on veut également s'assurer que les serveur de noms secondaire connaissent bien notre zone et/ou sont bien a jour (en repérant le numéro). Pour cela entrez cette commande (ou l'ip correspond a l'ip d'un/du serveur DNS secondaire)

dig @87.117.xxx.xx soa mydomain.tdl

Si le serveur de nom secondaire est a jour: tout est ok !

Propagation DNS

Il faut maintenant propager votre nouvelle configuration de DNS pour ce domaine afin que les autres serveurs DNS du monde sache a quelle machine (votre serveur) demander des infos sur votre zone. Pour cela, le prestataire chez qui vous avez acheter votre domaine doit vous proposer une interface permettant de changer les serveur DNS de votre domaine.
Vous devrez alors indiquer le serveur DNS primaire (notre serveur myserver.adomain.tdl) et le ou les serveurs DNS secondaires (dns1.domain.tdl, dns2.domain.tdl).

Pensez a vérifier en premier lieux que votre configuration va être accepté. Pour cela utilisez par exemple le formulaire de l'afnic.

Une fois cette procédure lancé le délais pour que vous puissiez constater que le domaine pointe bien sur votre machine est relatif. En principe le prestataire chez qui vous avez acheté le domaine vous informera de l'avancé de la procédure et du moins de si elle a fonctionné.

De chez vous, vous pouvez vérifier si le domaine pointe correctement vers votre machine effectuant un simple ping par exemple.

ping mydomain.tdl

Si l'IP indiqué par le ping correspond a celle de votre serveur, c'est que la propagation a été faite. Ou que du moins les serveurs DNS de votre Fournisseur d'Accès Internet en ont connaissance.

apache2

Préambule

Nous allons configurer le serveur apache afin de répondre aux demandes HTTP correspondant a notre domaine. Ce serveur web apache pourrait très se trouver sur une machine différente que celle ou ce trouve le serveur de nom. Souvenez vous de l'ip que vous avez fait correspondre a vos sous domaine dans la zone tout a l'heure. Le serveur DNS ne fait qu'informer le client à quelle ip correspond le domaine ou le sous domaine. Dans ce tutoriel notre serveur web se trouve sur la même machine que notre serveur de nom.

Création de l’hôte virtuel

On édite un fichier dans lequel on place la configuration de l’hôte virtuel:

/etc/apache2/sites-available/mydomain.tdl

<VirtualHost *:80>

  DocumentRoot /home/sites/mydomain.tdl/www   # folder
  ServerName mydomain.tdl                     # domain
  ServerAlias www.mydomain.tdl                # alias
  ServerAdmin myemail.mailprovider.tdl        # contact

  <Directory "/home/sites/mydomain.tdl/www">
    AllowOverride All                         # allow .htaccess
    allow from all                            # no restrictions
    Options -Indexes                          # don't list folders
  </Directory>

</VirtualHost>

Nous placeront les fichiers de notre site dans le répertoire /home/sites/mydomain.tdl/www. Evidemment, vous pouvez configurer ce répertoire la ou vous le souhaitez. Pour plus d'information sur la configuration d'un hôte virtuel rendez-vous par ici ou par .

Faites juste attention aux droits: apache doit pouvoir accéder aux fichier de votre site web. Pensez donc a modifier les permissions des fichiers en conséquence.

Si vous avez des difficultés avec apache (comme des "accès denied") pensez a regarder du coté des log d'apache (/var/log/apache2/error.log)