1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- English Revision : 1030181 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <manualpage metafile="dns-caveats.xml.meta">
27 <title>Problèmes liés au DNS avec le serveur HTTP Apache</title>
30 <p>Cette page pourrait se résumer ainsi : configurez le
31 serveur HTTP Apache de façon
32 à ce qu'il n'ait pas besoin de résolution DNS pour interpréter les
33 fichiers de configuration. Si httpd doit effectuer des résolutions
34 DNS pour interpréter les fichiers de configuration, votre serveur
35 pourra présenter des problèmes de fiabilité (en d'autres termes,
36 il est possible qu'il refuse de démarrer), ou d'attaques par déni ou
37 usurpation de service (y compris l'attribution de requêtes à un
38 serveur virtuel autre que le serveur virtuel voulu).</p>
41 <section id="example">
42 <title>Un exemple simple</title>
45 # Cet exemple de configuration est invalide, ne l'utilisez pas comme base
47 <VirtualHost www.example.dom> <br />
48 ServerAdmin webgirl@example.dom <br />
49 DocumentRoot /www/example <br />
53 <p>Pour fonctionner correctement, le serveur a absolument besoin de deux
54 informations à propos de chaque serveur virtuel : le nom du serveur
55 défini par la directive <directive
56 module="core">ServerName</directive>, et au moins une adresse IP à
57 laquelle le serveur va se rattacher et répondre. L'exemple ci-dessus
58 ne comporte pas d'adresse IP, si bien que httpd devra utiliser le
59 DNS pour trouver l'adresse IP de <code>www.example.dom</code>. Si pour
60 une raison quelconque, le DNS n'est pas disponible au moment où
61 votre serveur interprète son fichier de configuration, ce serveur
62 virtuel <strong>ne sera pas pris en compte dans la
63 configuration</strong>. Il sera incapable de
64 répondre à toute requête pour ce serveur virtuel.</p>
66 <p>Supposons que l'adresse de <code>www.example.dom</code> soit
67 192.0.2.1, et examinons cet extrait de configuration :</p>
70 # Cet exemple de configuration est invalide, ne l'utilisez pas comme base
72 <VirtualHost 192.0.2.1> <br />
73 ServerAdmin webgirl@example.dom <br />
74 DocumentRoot /www/example <br />
78 <p>Cette fois, httpd doit effectuer une recherche DNS inverse pour
79 trouver le nom <code>ServerName</code> de ce serveur virtuel. Si
80 cette recherche inverse échoue, le serveur virtuel sera
81 partiellement désactivé. Si le serveur
82 virtuel est à base de nom, il sera en fait totalement désactivé,
83 mais s'il est à base d'adresse IP, il fonctionnera probablement.
84 Cependant, httpd échouera s'il doit générer une URL complète pour
85 le serveur qui inclut ce nom de serveur (comme dans le cas d'une
88 <p>Voici un extrait de configuration qui permet d'éviter ces deux
89 types de problèmes :</p>
92 <VirtualHost 192.0.2.1> <br />
93 ServerName www.example.dom <br />
94 ServerAdmin webgirl@example.dom <br />
95 DocumentRoot /www/example <br />
100 <section id="denial">
101 <title>Déni de service</title>
103 <p>Considérons cet extrait de configuration :</p>
106 <VirtualHost www.example1.dom><br />
108 ServerAdmin webgirl@example1.dom<br />
109 DocumentRoot /www/example1<br />
111 </VirtualHost><br />
113 <VirtualHost www.example2.dom><br />
115 ServerAdmin webguy@example2.dom<br />
116 DocumentRoot /www/example2<br />
121 <p>Supposons que vous avez assigné 192.0.2.1 à
122 <code>www.example1.dom</code> et 192.0.2.2 à <code>www.example2.dom</code>. En
123 outre, supposons que <code>example2.dom</code> gère son propre DNS. Avec
124 cette configuration, <code>example2.dom</code> sera en mesure de
125 détourner tout trafic destiné à <code>example1.dom</code>. Pour y
126 parvenir, tout ce qu'ils ont à faire consiste à assigner 192.0.2.1 à
127 <code>www.example2.dom</code>. Comme ils gèrent leur propre DNS, vous ne
128 pouvez pas les empêcher de faire pointer l'enregistrement
129 <code>www.example2.dom</code> vers l'adresse qu'ils veulent.</p>
131 <p>Les requêtes à destination de 192.0.2.1 (y compris toutes celles
132 où l'utilisateur à tapé une URL de la forme
133 <code>http://www.example1.dom/quelquepart</code>), seront toutes servies
134 par le serveur virtuel <code>example2.dom</code>. Une meilleur
135 compréhension de la raison pour laquelle ceci peut se produire
136 nécessite une discussion plus approfondie à propos de la manière
137 dont httpd associe les requêtes entrantes aux différents serveurs
138 virtuels qui vont les servir. Un document de base décrivant ceci <a
139 href="vhosts/details.html">est disponible</a>.</p>
143 <title>L'adresse du "serveur principal"</title>
145 <p><a href="vhosts/name-based.html">Le support des
146 serveurs virtuels à base de nom</a> oblige httpd à
147 connaître la/les adresse(s) IP de l'hôte sur
148 lequel <program>httpd</program> s'exécute. Pour obtenir cette
149 adresse, soit il utilise la directive <directive
150 module="core">ServerName</directive> globale (si elle est présente),
151 soit il fait appel à la fonction C <code>gethostname</code> (qui
152 doit renvoyer le même nom que la commande shell "hostname"). Il
153 effectue ensuite une recherche DNS sur cette adresse. Pour le
154 moment, il n'existe aucun moyen d'éviter cette recherche DNS.</p>
156 <p>Si vous craignez que cette recherche DNS échoue parce que votre
157 serveur DNS est arrêté, vous pouvez insérer le nom d'hôte dans le
158 fichier <code>/etc/hosts</code> (où il est probablement déjà
159 enregistré afin que la machine démarre correctement). Assurez-vous
160 ensuite que la machine est configurée pour utiliser
161 <code>/etc/hosts</code> dans le cas où la recherche DNS échoue.
162 Suivant le système d'exploitation que vous utilisez, vous y
163 parviendrez en éditant <code>/etc/resolv.conf</code>, ou
164 <code>/etc/nsswitch.conf</code>.</p>
166 <p>Si votre serveur n'a aucune autre raison d'effectuer des
167 recherches DNS, vous pouvez définir la variable d'environnement
168 <code>HOSTRESORDER</code> à "local", et vous serez alors en mesure
169 d'exécuter httpd. Tout dépend du système d'exploitation et des
170 bibliothèques de résolution de noms que vous utilisez. Elle affecte
171 aussi les programmes CGI, à moins que vous n'utilisiez
172 <module>mod_env</module> pour contrôler l'environnement. Il est
173 conseillé de consulter les pages de manuel ou les FAQs de votre
174 système d'exploitation.</p>
178 <title>Conseils pour éviter ce genre de problème</title>
182 utilisez des adresses IP au sein des <directive
183 module="core">VirtualHost</directive>
187 utilisez des adresses IP avec la directive <directive
188 module="mpm_common">Listen</directive>
192 vérifiez que tous les serveurs virtuels possèdent un nom
193 <directive module="core">ServerName</directive> explicite
196 <li>créez un serveur virtuel <code><VirtualHost
197 _default_:*></code> qui n'a aucune page à servir</li>