Table des matières

,

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:

  1. Configurer le serveur de nom (DNS) pour que le domaine pointe sur l'ip d'une machine cliente
  2. Configurer apache pour répondre aux requêtes de ce domaine.

Prérequis & Préambule

Si le serveur est une machine hébergée à votre domicile afin de faire de l'auto-hébergement, l'ip utilisée dans les configurations devra être l'IP publique donnée par votre FAI.
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 la suite, le service utilisé sera celui de http://www.cloudns.net/.

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'éditer avec les droits d'administration le fichier de configuration /etc/bind/named.conf.local (ou ailleurs …) pour:

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.

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.

Faites attention aux droits : Apache doit pouvoir accéder aux fichier de votre site web. Pensez donc à modifier les permissions des fichiers en conséquence en suivant cette documentation, par exemple :
sudo chown $USER:www-data /var/www/public
chmod 750 /var/www/mydomain
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.mydomain.tdl.log pour cet hôte)

Contributeurs: bux