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.
  • Disposer d'un serveur avec les droits administrateur.
  • Le serveur doit disposer d'un serveur web apache2 et d'un serveur de nom bind9.
  • Si vous utilisez un pare-feu tel que iptables, veillez à ce que les ports suivants soient ouverts:
    • 53 (UDP et TCP 1) ) pour le DNS
    • 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 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.

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'é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.

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


  • tutoriel/configurer_un_domaine_avec_apache2_et_bind9.txt
  • Dernière modification: Le 27/07/2018, 12:57
  • (modification externe)