2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1328333:1331219 (outdated) -->
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 <modulesynopsis metafile="mod_remoteip.xml.meta">
27 <name>mod_remoteip</name>
28 <description>Remplace l'adresse IP et le nom d'hôte apparents du client
29 pour la requête par l'adresse IP présentée par un mandataire ou un
30 répartiteur de charge via les en-têtes de la requête.
34 <sourcefile>mod_remoteip.c</sourcefile>
35 <identifier>remoteip_module</identifier>
38 <p>Ce module permet de traiter l'hôte distant qui a initié la
39 requête en tant qu'hôte distant original du point de vue de httpd à
40 des fins d'autorisation et de connexion, même si cet hôte distant se
41 trouve derrière un répartiteur de charge, un serveur frontal, ou un
42 serveur mandataire.</p>
44 <p>Le module remplace les adresse IP et nom d'hôte apparents
45 distants (du client) pour la requête par l'adresse IP indiquée dans
46 l'en-tête de requête configuré via la directive
47 <directive>RemoteIPHeader</directive>.</p>
49 <p>Une fois remplacée comme indiqué, cette adresse IP apparente est
50 utilisée pour les fonctionnalités <directive module="mod_authz_host"
51 type="section">Require host</directive> et <directive
52 module="mod_authz_host" type="section">Require ip</directive> de
53 <module>mod_authz_host</module> ; elle est aussi affichée par
54 <module>mod_status</module>, et enregistrée via les directives
55 <code>%a</code> et <code>%h</code> du module
56 <module>mod_log_config</module>. Elle permet aussi d'identifier la
57 machine en essayant de lui attribuer une identité inetd via le
58 module <module>mod_ident</module> et en fonction de la configuration
59 de la directive <directive
60 module="mod_ident">IdentityCheck</directive>.</p>
62 <note type="warning">Il est essentiel de n'activer cette
63 fonctionnalité que pour les requêtes en provenance des serveurs
64 intermédiaires (mandataires, etc...) auxquels le serveur peut faire
65 confiance, car il est trivial pour le client distant d'usurper
66 l'identité d'un autre client.</note>
69 <seealso><module>mod_authz_host</module></seealso>
70 <seealso><module>mod_status</module></seealso>
71 <seealso><module>mod_log_config</module></seealso>
72 <seealso><module>mod_ident</module></seealso>
74 <section id="processing"><title>Traitement des adresses distantes</title>
76 <p>Apache identifie le client par la valeur remote_ip de la
77 connexion, et de cette valeur découlent les valeurs remote_host et
78 remote_logname de la connexion. Ces champs jouent un rôle
79 dans l'authentification, l'autorisation et la connexion, ainsi que
80 dans d'autres traitements effectués par d'autres modules
83 <p>mod_remoteip remplace la véritable remote_ip par la remote_ip
84 indiquée par exemple par un mandataire chaque fois que le serveur
85 effectue une évaluation du client, et réinitialise les valeurs de
86 remote_host et remote_logname afin de déclencher une nouvelle
87 requête dns ou ident sur l'adresse IP distante.</p>
89 <p>Lorsque la valeur de l'en-tête comporte plusieurs adresses IP
90 distantes séparées par des virgules, celles-ci sont traitées de la
91 droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP
92 distante courante n'est pas digne de confiance pour présenter
93 l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de
94 façon à ne contenir que cette liste d'adresses non confirmées, ou
95 bien, si toutes les adresses IP sont dignes de confiance, cet
96 en-tête est tout bonnement supprimé de la requête.</p>
98 <p>Lors du remplacement de l'adresse IP distante, le module stocke
99 la liste des hôtes intermédiaires dans un mémo
100 remoteip-proxy-ip-list, que l'on peut faire enregistrer par
101 <module>mod_log_config</module> en utilisant le symbole de format
102 <code>%{remoteip-proxy-ip-list}n</code>. Si l'administrateur doit
103 stocker ceci dans un en-tête additionnel, la même valeur peut aussi
104 être enregistrée sous la forme d'un en-tête en utilisant la
105 directive <directive>RemoteIPProxiesHeader</directive>.</p>
107 <note><title>Adresses IPv4 converties au format IPv6</title>
108 Avec httpd, d'une manière générale, toute adresse IPv4 convertie au
109 format IPv6 est enregistrée sous sa forme IPv4.</note>
111 <note><title>Adresses internes (privées)</title>
112 Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16,
113 169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc
114 public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque
115 des mandataires internes (intranet)
116 <directive>RemoteIPInternalProxy</directive> sont enregistrés.</note>
121 <name>RemoteIPHeader</name>
122 <description>Définit le champ d'en-tête qui contiendra les adresses IP
123 du client</description>
124 <syntax>RemoteIPHeader <var>en-tête</var></syntax>
125 <contextlist><context>server config</context><context>virtual host</context></contextlist>
128 <p>La directive <directive>RemoteIPHeader</directive> indique à
129 <module>mod_remoteip</module> de traiter la valeur de
130 l'<var>en-tête</var> spécifié comme l'adresse IP du client, ou comme
131 une liste d'adresses IP clients intermédiaires, en fonction de la
132 configuration des directives
133 <directive>RemoteIPInternalProxy</directive> et
134 <directive>RemoteIPTrustedProxy</directive>. Si ces deux dernières
135 directives ne sont pas utilisées, <module>mod_remoteip</module>
136 traitera tout hôte présentant une valeur d'IP
137 <directive>RemoteIPHeader</directive> comme hôte de confiance.</p>
139 <example><title>Exemple à usage interne (répartiteur de
141 <highlight language="config">RemoteIPHeader X-Client-IP</highlight>
144 <example><title>Exemple dans le cas d'un mandataire</title>
145 <highlight language="config">RemoteIPHeader X-Forwarded-For</highlight>
151 <name>RemoteIPInternalProxy</name>
152 <description>Déclare les adresses IP intranet clients comme dignes de
153 confiance pour présenter la valeur RemoteIPHeader</description>
154 <syntax>RemoteIPInternalProxy
155 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
156 <contextlist><context>server config</context><context>virtual host</context></contextlist>
159 <p>La directive <directive>RemoteIPInternalProxy</directive> permet
160 d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles
161 on peut faire confiance pour présenter une valeur RemoteIPHeader
162 valide de l'adresse IP du client. A la différence de la directive
163 <directive>RemoteIPTrustedProxy</directive>, toute adresse IP
164 présentée dans cet en-tête, y comprises les adresses intranet
165 privées, sont considérées comme dignes de confiance lorsqu'elles
166 sont indiquées par ces mandataires.</p>
168 <example><title>Exemple à usage interne (répartiteur de
170 <highlight language="config">
171 RemoteIPHeader X-Client-IP
172 RemoteIPInternalProxy 10.0.2.0/24
173 RemoteIPInternalProxy passerelle.domaine-local
180 <name>RemoteIPInternalProxyList</name>
181 <description>Déclare les adresses IP intranet clients comme dignes de
182 confiance pour présenter la valeur RemoteIPHeader</description>
183 <syntax>RemoteIPInternalProxyList <var>nom-fichier</var></syntax>
184 <contextlist><context>server config</context><context>virtual host</context></contextlist>
187 <p>La directive <directive>RemoteIPInternalProxyList</directive>
188 permet de spécifier un fichier parcouru au démarrage du serveur pour
189 construire une liste d'adresses (ou blocs d'adresses), auxquelles
190 on peut faire confiance pour présenter une valeur RemoteIPHeader
191 valide de l'adresse IP du client.</p>
193 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
194 sinon, toutes les lignes séparées par un caractère <code>nouvelle
196 tous les éléments d'une ligne séparés par un espace sont traités de
197 la même façon qu'avec la directive
198 <directive>RemoteIPInternalProxy</directive>.</p>
200 <example><title>Exemple à usage interne (répartiteur de
202 <highlight language="config">
203 RemoteIPHeader X-Client-IP
204 RemoteIPInternalProxyList conf/mandataires-de-confiance.lst
208 <example><title>contenu de conf/mandataires-de-confiance.lst</title>
209 # Nos mandataires internes de confiance<br/>
210 10.0.2.0/24 # Tout le monde dans le groupe de test<br/>
211 passerelle.domaine-local # Le frontal répartiteur de charge
217 <name>RemoteIPProxiesHeader</name>
218 <description>Déclare le champ d'en-tête qui contiendra toutes les
219 adresses IP intermédiaires</description>
220 <syntax>RemoteIPProxiesHeader <var>Nom_en-tête</var></syntax>
221 <contextlist><context>server config</context><context>virtual host</context></contextlist>
224 <p>La directive <directive>RemoteIPProxiesHeader</directive> permet
225 de spécifier l'en-tête dans lequel <module>mod_remoteip</module> va
226 collecter une liste de toutes les adresses IP clients intermédiaires
227 auxquelles on pourra faire confiance pour résoudre la véritable
228 adresse IP distante. Notez que les adresses intermédiaires
229 <directive>RemoteIPTrustedProxy</directive> sont enregistrées dans
230 cet en-tête, alors que toute adresse intermédiaire
231 <directive>RemoteIPInternalProxy</directive> est omise.</p>
233 <example><title>Exemple</title>
234 <highlight language="config">
235 RemoteIPHeader X-Forwarded-For
236 RemoteIPProxiesHeader X-Forwarded-By
243 <name>RemoteIPTrustedProxy</name>
244 <description>Déclare les adresses IP intranet clients comme dignes de
245 confiance pour présenter la valeur RemoteIPHeader</description>
246 <syntax>RemoteIPTrustedProxy
247 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
248 <contextlist><context>server config</context><context>virtual host</context></contextlist>
251 <p>La directive <directive>RemoteIPTrustedProxy</directive> permet
252 d'ajouter une ou plusieurs adresses, ou blocs d'adresses, auxquelles
253 on peut faire confiance pour présenter une valeur RemoteIPHeader
254 valide de l'adresse IP du client. A la différence de la directive
255 <directive>RemoteIPInternalProxy</directive>, toutes les adresses IP
256 intranet ou privées indiquées par de tels mandataires, y compris les
257 blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8
258 (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas
259 dignes de confiance en tant qu'adresses IP distantes, et se situent
260 à gauche dans le contenu de l'en-tête
261 <directive>RemoteIPHeader</directive>.</p>
263 <example><title>Exemple d'adresse de confiance (répartiteur de
265 <highlight language="config">
266 RemoteIPHeader X-Forwarded-For
267 RemoteIPTrustedProxy 10.0.2.16/28
268 RemoteIPTrustedProxy proxy.example.com
275 <name>RemoteIPTrustedProxyList</name>
276 <description>Déclare les adresses IP intranet clients comme dignes de
277 confiance pour présenter la valeur RemoteIPHeader</description>
278 <syntax>RemoteIPTrustedProxyList <var>nom-fichier</var></syntax>
279 <contextlist><context>server config</context><context>virtual host</context></contextlist>
282 <p>La directive <directive>RemoteIPTrustedProxyList</directive>
283 permet de spécifier un fichier parcouru au démarrage du serveur pour
284 construire une liste d'adresses (ou blocs d'adresses), auxquelles
285 on peut faire confiance pour présenter une valeur RemoteIPHeader
286 valide de l'adresse IP du client.</p>
288 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
289 sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
290 tous les éléments d'une ligne séparés par un espace sont traités de
291 la même façon qu'avec la directive
292 <directive>RemoteIPTrustedProxy</directive>.</p>
294 <example><title>Exemple d'adresse de confiance (répartiteur de
296 <highlight language="config">
297 RemoteIPHeader X-Forwarded-For
298 RemoteIPTrustedProxyList conf/mandataires-de-confiance.lst
302 <example><title>conf/mandataires-de-confiance.lst contents</title>
303 # Mandataires externes identifiés<br/>
304 192.0.2.16/28 #groupe wap phone de mandataires<br/>
305 proxy.isp.example.com #un FAI bien connu