<-
Apache > Serveur HTTP > Documentation > Version 2.4

Probl�mes li�s au DNS avec le serveur HTTP Apache

Langues Disponibles:  en  |  fr  |  ja  |  ko  |  tr 

Cette page pourrait se r�sumer ainsi : configurez le serveur HTTP Apache de fa�on � ce qu'il n'ait pas besoin de r�solution DNS pour interpr�ter les fichiers de configuration. Si httpd doit effectuer des r�solutions DNS pour interpr�ter les fichiers de configuration, votre serveur pourra pr�senter des probl�mes de fiabilit� (en d'autres termes, il est possible qu'il refuse de d�marrer), ou d'attaques par d�ni ou usurpation de service (y compris l'attribution de requ�tes � un serveur virtuel autre que le serveur virtuel voulu).

Voir aussi

top

Un exemple simple

# Ceci est un exemple de mauvaise configuration ; ne l'utilisez pas comme base
# de configuration
<VirtualHost www.example.dom>
  ServerAdmin [email protected]
  DocumentRoot "/www/example"
</VirtualHost>

Pour fonctionner correctement, le serveur a absolument besoin de deux informations � propos de chaque serveur virtuel : le nom du serveur d�fini par la directive ServerName, et au moins une adresse IP � laquelle le serveur va se rattacher et r�pondre. L'exemple ci-dessus ne comporte pas d'adresse IP, si bien que httpd devra utiliser le DNS pour trouver l'adresse IP de www.example.dom. Si pour une raison quelconque, le DNS n'est pas disponible au moment o� votre serveur interpr�te son fichier de configuration, ce serveur virtuel ne sera pas pris en compte dans la configuration. Il sera incapable de r�pondre � toute requ�te pour ce serveur virtuel.

Supposons que l'adresse de www.example.dom soit 192.0.2.1, et examinons cet extrait de configuration :

# Ceci est un exemple de mauvaise configuration ; ne l'utilisez pas comme base
# de configuration
<VirtualHost 192.0.2.1>
  ServerAdmin [email protected]
  DocumentRoot "/www/example"
</VirtualHost>

Cette fois, httpd doit effectuer une recherche DNS inverse pour trouver le nom ServerName de ce serveur virtuel. Si cette recherche inverse �choue, le serveur virtuel sera partiellement d�sactiv�. Si le serveur virtuel est � base de nom, il sera en fait totalement d�sactiv�, mais s'il est � base d'adresse IP, il fonctionnera probablement. Cependant, httpd �chouera s'il doit g�n�rer une URL compl�te pour le serveur qui inclut ce nom de serveur (comme dans le cas d'une redirection).

Voici un extrait de configuration qui permet d'�viter ces deux types de probl�mes :

<VirtualHost 192.0.2.1>
  ServerName www.example.dom
  ServerAdmin [email protected]
  DocumentRoot "/www/example"
</VirtualHost>
top

D�ni de service

Consid�rons cet extrait de configuration :

<VirtualHost www.example1.dom>
  ServerAdmin [email protected]
  DocumentRoot "/www/example1"
</VirtualHost>
<VirtualHost www.example2.dom>
  ServerAdmin [email protected]
  DocumentRoot "/www/example2"
</VirtualHost>

Supposons que vous ayez assign� 192.0.2.1 � www.example1.dom et 192.0.2.2 � www.example2.dom. En outre, supposons que example1.dom g�re son propre DNS. Avec cette configuration, example1.dom sera en mesure de d�tourner tout trafic destin� � example2.dom. Pour y parvenir, tout ce qu'ils ont � faire consiste � assigner 192.0.2.2 � www.example1.dom. Comme ils g�rent leur propre DNS, vous ne pouvez pas les emp�cher de faire pointer l'enregistrement www.example1.dom vers l'adresse qu'ils veulent.

Les requ�tes � destination de 192.0.2.2 (y compris toutes celles o� l'utilisateur � tap� une URL de la forme http://www.example2.dom/quelquepart), seront toutes servies par le serveur virtuel example1.dom. Une meilleur compr�hension de la raison pour laquelle ceci peut se produire n�cessite une discussion plus approfondie � propos de la mani�re dont httpd associe les requ�tes entrantes aux diff�rents serveurs virtuels qui vont les servir. Un document de base d�crivant ceci est disponible.

top

L'adresse du "serveur principal"

Le support des serveurs virtuels � base de nom oblige httpd � conna�tre la/les adresse(s) IP de l'h�te sur lequel httpd s'ex�cute. Pour obtenir cette adresse, soit il utilise la directive ServerName globale (si elle est pr�sente), soit il fait appel � la fonction C gethostname (qui doit renvoyer le m�me nom que la commande shell "hostname"). Il effectue ensuite une recherche DNS sur cette adresse. Pour le moment, il n'existe aucun moyen d'�viter cette recherche DNS.

Si vous craignez que cette recherche DNS �choue parce que votre serveur DNS est arr�t�, vous pouvez ins�rer le nom d'h�te dans le fichier /etc/hosts (o� il est probablement d�j� enregistr� afin que la machine d�marre correctement). Assurez-vous ensuite que la machine est configur�e pour utiliser /etc/hosts dans le cas o� la recherche DNS �choue. Suivant le syst�me d'exploitation que vous utilisez, vous y parviendrez en �ditant /etc/resolv.conf, ou /etc/nsswitch.conf.

Si votre serveur n'a aucune autre raison d'effectuer des recherches DNS, vous pouvez d�finir la variable d'environnement HOSTRESORDER � "local", et vous serez alors en mesure d'ex�cuter httpd. Tout d�pend du syst�me d'exploitation et des biblioth�ques de r�solution de noms que vous utilisez. Elle affecte aussi les programmes CGI, � moins que vous n'utilisiez mod_env pour contr�ler l'environnement. Il est conseill� de consulter les pages de manuel ou les FAQs de votre syst�me d'exploitation.

top

Conseils pour �viter ce genre de probl�me

Langues Disponibles:  en  |  fr  |  ja  |  ko  |  tr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.