Configurer un domaine sur un serveur avec apache2 et bind9
Ce tutoriel a pour but de vous expliquer pas à pas comment gérer un nom de domaine avec votre propre machine. Pour y parvenir nous allons devoir effectuer deux étapes principales:
- Configurer le serveur de nom (DNS) pour que le domaine pointe sur l'ip d'une machine cliente
- Configurer apache pour répondre aux requêtes de ce domaine.
Prérequis & Préambule
- Disposer d'un serveur avec les droits administrateur.
-
- 80 (TCP) pour le HTTP (port par défaut)
- 443 (TCP) pour le HTTPS (port par défaut)
- Avoir le contrôle du nom de domaine concerné (pouvoir faire la demande de modification de ses DNS).
- Dans ce tutoriel le nom du serveur utilisé sera myserver.adomain.tdl, il correspond à l'adresse du serveur (par exemple ksxxxxxx.kimsufi.com).
- Dans ce tutoriel l'ip du serveur correspondant à myserver.adomain.tdl est 12.345.678.9.
- Dans ce tutoriel l'email de contact est myemail@mailprovider.tdl (ex: toto@gmail.com).
- Dans ce tutoriel les serveurs DNS secondaires utilisés seront:
- dns1.domain.tdl
- dns2.domain.tdl
Dans la pratique, il est possible qu'un seul serveur secondaire soit indiqué, comme par exemple sdns2.ovh.net ou encore ns.kimsufi.com (cf. ici).
Si l'ip fournit par le FAI n'est pas fixe, il faudra en posséder une
Si toutefois vous souhaitez conserver une IP dynamique, reportez-vous ici.
Configuration de bind9
Préambule
En premier lieu il va falloir configurer bind9 pour communiquer avec les serveurs de noms secondaires. Car pour qu'un domaine soit configuré correctement, des serveurs de noms secondaires doivent connaître la configuration de votre domaine. C'est une histoire de sécurité afin qu'il y ait au moins toujours une machine référente lors de la résolution d'un nom de domaine.
Déclarations
Dans le fichier /etc/bind/named.conf il doit y avoir une inclusion de /etc/bind/named.conf.options. C'est dans ce fichier que vous allez placer la liste des serveurs autorisés (en réalité vous pouvez la mettre où bon vous semble, mais autant être un peu organisé ).
Cette liste de serveurs autorisés va dépendre de quels serveurs/services vous utilisez pour vos serveurs DNS secondaires. En général le prestataire chez qui vous louez votre serveur ou votre nom de domaine propose un service de DNS secondaire (ex: ovh ou gandi).
Pour définir la liste d'ip autorisées à communiquer avec votre serveur, éditez avec les droits d'administration le fichier /etc/bind/named.conf.options pour le modifier comme suit:
options { directory "/var/cache/bind"; auth-nxdomain no; listen-on-v6 { any; }; allow-query { trusted; cloudns; }; allow-recursion {trusted; cloudns; }; }; acl trusted { 127.0.0.1; }; acl cloudns { 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; };
Il s'agit ensuite d'éditez avec les droits d'administration le fichier de configuration /etc/bind/named.conf.local (ou ailleurs …) pour:
- déclarer une zone correspondant au domaine mydomain.tdl pour lequel les serveurs de cloudns sont autorisés à communiquer avec le serveur et qui doivent être notifiés des changements.
- indiquer que le reste de la configuration de zone se trouve dans le fichier /etc/bind/db.mydomain.tdl
zone "mydomain.tdl" { type master; file "/etc/bind/db.mydomain.tdl"; allow-transfer { localhost; cloudns; }; allow-query { any; }; notify yes; };
Configuration de la zone
Vous trouverez ci-dessous un fichier de configuration de zone tout prêt.
$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
Une description de toutes les composantes de ce fichier ne sera pas développée ici, seules celles intéressantes pour configurer le domaine de manière fonctionnelle le seront ci-dessous. Vous pourrez trouver plus d'informations ici par exemple.
- Le numéro identifiant la version de votre zone est très important. Ici il s'agit de 2012021601. Il permet aux serveurs de noms de savoir si il y a une nouvelle version de ce fichier. À chaque modification de votre zone vous devrez mettre à jour ce numéro (notez qu'il est au format yyyymmddnn)!
- La partie Name servers for the domain liste les serveurs de noms qui s'occupe de cette zone. En l’occurrence ici, le 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 deux serveurs mais un seul, voire plus. En réalité cela dépend uniquement de combien de serveurs DNS secondaires vous disposez. Par exemple, l' étape précédente qui fait appel aux serveurs de cloudns montre que beaucoup y sont à disposition.
- La partie Mail server déclare la liste des serveurs mx (mail exchange). Ce tutoriel ne s'attardera pas sur cette partie.
- La partie Nodes in domain fait correspondre une ip à chaque sous-domaines.
- La partie Aliases déclare les alias. Ici le sous-réseau blog est un alias de www, donc aura la même ip.
Backup des zones
À ce stade la zone est déclarée. Pour vérifier que celle-ci est configurée correctement, saisissez dans un terminal la commande suivante:
named-checkconf -z
Vous devez avoir dans la liste une ligne correspondant à cette 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, rechargez la configuration du serveur de nom:
sudo service bind9 reload
qui devrait répondre
Reloading domain name service...: bind9.
Vous devez maintenant aller configurer vos serveurs DNS secondaires. Cette démarche dépendant du service de serveur de nom secondaire que vous utilisez, elle ne peut pas être expliquée dans ce tutoriel. Mais typiquement vous aurez à informer ces serveurs DNS secondaires de l'ip de votre serveur DNS principal.
Une fois la procédure effectuée du coté de vos serveurs de nom secondaire, le tour devrait être joué. Mais il faut tout de même vérifier tout ça …
Sur votre serveur, entrez cette commande afin de récupérer les informations de zone auprès de la machine DNS principale (c'est-à-dire la votre)
dig soa mydomain.tdl
Vous devriez normalement voir votre configuration de zone. Repérez surtout le numéro dans ;; ANSWER SECTION: il doit correspondre à votre numéro (le plus récent bien entendu).
Mais vous pouvez également vous assurer que les serveurs de noms secondaires connaissent bien votre zone et/ou sont bien à jour (en repérant le numéro). Pour cela entrez cette commande (ou l'ip correspond à l'ip d'un/du serveur DNS secondaire)
dig @87.117.xxx.xx soa mydomain.tdl
Si le serveur de nom secondaire est à 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 sachent à quelle machine (votre serveur et les serveur DNS secondaires) demander des informations sur votre zone.
Pour cela, le prestataire chez qui vous avez acheté votre domaine doit vous proposer une interface permettant de changer les serveurs DNS de votre domaine. Vous devrez y indiquer le serveur DNS primaire et le(s) serveur(s) DNS secondaire(s), à savoir ici myserver.adomain.tdl ainsi que dns1.domain.tdl et dns2.domain.tdl.
Pensez à vérifier en premier lieu que votre configuration va être accepté. Pour cela utilisez par exemple le formulaire de l'afnic.
Une fois cette procédure lancée le délai 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ée de la procédure et à minima si elle a fonctionné.
De chez vous, vous pouvez vérifier si le domaine pointe correctement vers votre machine en 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 du moins que les serveurs DNS de votre Fournisseur d'Accès Internet en ont connaissance.
Configuration d'apache2
Préambule
Il s'agira ici de configurer le serveur apache afin de répondre aux demandes HTTP correspondant à votre domaine. Ce serveur web apache pourrait très bien se trouver sur une machine différente que celle ou se trouve le serveur de nom. Souvenez-vous de l'ip que vous avez fait correspondre à vos sous-domaine dans la zone tout à l'heure. Le serveur DNS ne fait qu'informer le client à quelle ip correspond le domaine ou le sous-domaine. Dans ce tutoriel le serveur web se trouvera sur la même machine que le serveur de nom.
Création de l’hôte virtuel
Editez avec les droits d'administration le fichier de configuration de l'hôte virtuel /etc/apache2/sites-available/mydomain.tdl.conf
sous cette forme :
- mydomain.tdl.conf
<VirtualHost *:80> ServerName mydomain.tdl ServerAlias www.mydomain.tdl DocumentRoot "/var/www/mydomain" <Directory "/var/www/mydomain"> Options +FollowSymLinks AllowOverride all Require all granted </Directory> ErrorLog /var/log/apache2/error.mydomain.tdl.log CustomLog /var/log/apache2/access.mydomain.tdl.log combined </VirtualHost>
Vous placerez alors les fichiers de votre site dans le répertoire /var/www/mydomain
. Évidemment, vous pouvez configurer ce répertoire là ou vous le souhaitez.
Pour plus une documentation plus approfondie sur la création d'un hôte virtuel vous pouvez consulter cette page, et pour des exemples pratiques consulter ce tutoriel.
sudo chown $USER:www-data /var/www/public chmod 750 /var/www/mydomain
/var/log/apache2/error.mydomain.tdl.log
pour cet hôte)
Contributeurs: bux