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: 1673652 -->
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>
44 <highlight language="config">
45 # Ceci est un exemple de mauvaise configuration ; ne l'utilisez pas comme base
47 <VirtualHost www.example.dom>
48 ServerAdmin webgirl@example.dom
49 DocumentRoot "/www/example"
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>
69 <highlight language="config">
70 # Ceci est un exemple de mauvaise configuration ; ne l'utilisez pas comme base
72 <VirtualHost 192.0.2.1>
73 ServerAdmin webgirl@example.dom
74 DocumentRoot "/www/example"
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>
91 <highlight language="config">
92 <VirtualHost 192.0.2.1>
93 ServerName www.example.dom
94 ServerAdmin webgirl@example.dom
95 DocumentRoot "/www/example"
100 <section id="denial">
101 <title>Déni de service</title>
103 <p>Considérons cet extrait de configuration :</p>
105 <highlight language="config">
106 <VirtualHost www.example1.dom>
107 ServerAdmin webgirl@example1.dom
108 DocumentRoot "/www/example1"
110 <VirtualHost www.example2.dom>
111 ServerAdmin webguy@example2.dom
112 DocumentRoot "/www/example2"
116 <p>Supposons que vous ayez assigné 192.0.2.1 à
117 <code>www.example1.dom</code> et 192.0.2.2 à <code>www.example2.dom</code>. En
118 outre, supposons que <code>example1.dom</code> gère son propre DNS. Avec
119 cette configuration, <code>example1.dom</code> sera en mesure de
120 détourner tout trafic destiné à <code>example2.dom</code>. Pour y
121 parvenir, tout ce qu'ils ont à faire consiste à
122 assigner 192.0.2.2 à
123 <code>www.example1.dom</code>. Comme ils gèrent leur propre DNS, vous ne
124 pouvez pas les empêcher de faire pointer l'enregistrement
125 <code>www.example1.dom</code> vers l'adresse qu'ils veulent.</p>
127 <p>Les requêtes à destination de 192.0.2.2 (y compris toutes celles
128 où l'utilisateur à tapé une URL de la forme
129 <code>http://www.example2.dom/quelquepart</code>), seront toutes servies
130 par le serveur virtuel <code>example1.dom</code>. Une meilleur
131 compréhension de la raison pour laquelle ceci peut se produire
132 nécessite une discussion plus approfondie à propos de la manière
133 dont httpd associe les requêtes entrantes aux différents serveurs
134 virtuels qui vont les servir. Un document de base décrivant ceci <a
135 href="vhosts/details.html">est disponible</a>.</p>
139 <title>L'adresse du "serveur principal"</title>
141 <p><a href="vhosts/name-based.html">Le support des
142 serveurs virtuels à base de nom</a> oblige httpd à
143 connaître la/les adresse(s) IP de l'hôte sur
144 lequel <program>httpd</program> s'exécute. Pour obtenir cette
145 adresse, soit il utilise la directive <directive
146 module="core">ServerName</directive> globale (si elle est présente),
147 soit il fait appel à la fonction C <code>gethostname</code> (qui
148 doit renvoyer le même nom que la commande shell "hostname"). Il
149 effectue ensuite une recherche DNS sur cette adresse. Pour le
150 moment, il n'existe aucun moyen d'éviter cette recherche DNS.</p>
152 <p>Si vous craignez que cette recherche DNS échoue parce que votre
153 serveur DNS est arrêté, vous pouvez insérer le nom d'hôte dans le
154 fichier <code>/etc/hosts</code> (où il est probablement déjà
155 enregistré afin que la machine démarre correctement). Assurez-vous
156 ensuite que la machine est configurée pour utiliser
157 <code>/etc/hosts</code> dans le cas où la recherche DNS échoue.
158 Suivant le système d'exploitation que vous utilisez, vous y
159 parviendrez en éditant <code>/etc/resolv.conf</code>, ou
160 <code>/etc/nsswitch.conf</code>.</p>
162 <p>Si votre serveur n'a aucune autre raison d'effectuer des
163 recherches DNS, vous pouvez définir la variable d'environnement
164 <code>HOSTRESORDER</code> à "local", et vous serez alors en mesure
165 d'exécuter httpd. Tout dépend du système d'exploitation et des
166 bibliothèques de résolution de noms que vous utilisez. Elle affecte
167 aussi les programmes CGI, à moins que vous n'utilisiez
168 <module>mod_env</module> pour contrôler l'environnement. Il est
169 conseillé de consulter les pages de manuel ou les FAQs de votre
170 système d'exploitation.</p>
174 <title>Conseils pour éviter ce genre de problème</title>
178 utilisez des adresses IP au sein des <directive
179 module="core">VirtualHost</directive>
183 utilisez des adresses IP avec la directive <directive
184 module="mpm_common">Listen</directive>
188 vérifiez que tous les serveurs virtuels possèdent un nom
189 <directive module="core">ServerName</directive> explicite
192 <li>créez un serveur virtuel <code><VirtualHost
193 _default_:*></code> qui n'a aucune page à servir</li>