2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1333771 -->
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">
142 RemoteIPHeader X-Client-IP
146 <example><title>Exemple dans le cas d'un mandataire</title>
147 <highlight language="config">
148 RemoteIPHeader X-Forwarded-For
155 <name>RemoteIPInternalProxy</name>
156 <description>Déclare les adresses IP intranet clients comme dignes de
157 confiance pour présenter la valeur RemoteIPHeader</description>
158 <syntax>RemoteIPInternalProxy
159 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
160 <contextlist><context>server config</context><context>virtual host</context></contextlist>
163 <p>La directive <directive>RemoteIPInternalProxy</directive> permet
164 d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles
165 on peut faire confiance pour présenter une valeur RemoteIPHeader
166 valide de l'adresse IP du client. A la différence de la directive
167 <directive>RemoteIPTrustedProxy</directive>, toute adresse IP
168 présentée dans cet en-tête, y comprises les adresses intranet
169 privées, sont considérées comme dignes de confiance lorsqu'elles
170 sont indiquées par ces mandataires.</p>
172 <example><title>Exemple à usage interne (répartiteur de
174 <highlight language="config">
175 RemoteIPHeader X-Client-IP
176 RemoteIPInternalProxy 10.0.2.0/24
177 RemoteIPInternalProxy gateway.localdomain
184 <name>RemoteIPInternalProxyList</name>
185 <description>Déclare les adresses IP intranet clients comme dignes de
186 confiance pour présenter la valeur RemoteIPHeader</description>
187 <syntax>RemoteIPInternalProxyList <var>nom-fichier</var></syntax>
188 <contextlist><context>server config</context><context>virtual host</context></contextlist>
191 <p>La directive <directive>RemoteIPInternalProxyList</directive>
192 permet de spécifier un fichier parcouru au démarrage du serveur pour
193 construire une liste d'adresses (ou blocs d'adresses), auxquelles
194 on peut faire confiance pour présenter une valeur RemoteIPHeader
195 valide de l'adresse IP du client.</p>
197 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
198 sinon, toutes les lignes séparées par un caractère <code>nouvelle
200 tous les éléments d'une ligne séparés par un espace sont traités de
201 la même façon qu'avec la directive
202 <directive>RemoteIPInternalProxy</directive>.</p>
204 <example><title>Exemple à usage interne (répartiteur de
206 <highlight language="config">
207 RemoteIPHeader X-Client-IP
208 RemoteIPInternalProxyList conf/trusted-proxies.lst
212 <example><title>contenu de conf/mandataires-de-confiance.lst</title>
214 # Nos mandataires internes de confiance
215 10.0.2.0/24 # Tout le monde dans le groupe de test
216 passerelle.domaine-local # Le frontal répartiteur de charge
223 <name>RemoteIPProxiesHeader</name>
224 <description>Déclare le champ d'en-tête qui contiendra toutes les
225 adresses IP intermédiaires</description>
226 <syntax>RemoteIPProxiesHeader <var>Nom_en-tête</var></syntax>
227 <contextlist><context>server config</context><context>virtual host</context></contextlist>
230 <p>La directive <directive>RemoteIPProxiesHeader</directive> permet
231 de spécifier l'en-tête dans lequel <module>mod_remoteip</module> va
232 collecter une liste de toutes les adresses IP clients intermédiaires
233 auxquelles on pourra faire confiance pour résoudre la véritable
234 adresse IP distante. Notez que les adresses intermédiaires
235 <directive>RemoteIPTrustedProxy</directive> sont enregistrées dans
236 cet en-tête, alors que toute adresse intermédiaire
237 <directive>RemoteIPInternalProxy</directive> est omise.</p>
239 <example><title>Exemple</title>
240 <highlight language="config">
241 RemoteIPHeader X-Forwarded-For
242 RemoteIPProxiesHeader X-Forwarded-By
249 <name>RemoteIPTrustedProxy</name>
250 <description>Déclare les adresses IP intranet clients comme dignes de
251 confiance pour présenter la valeur RemoteIPHeader</description>
252 <syntax>RemoteIPTrustedProxy
253 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
254 <contextlist><context>server config</context><context>virtual host</context></contextlist>
257 <p>La directive <directive>RemoteIPTrustedProxy</directive> permet
258 d'ajouter une ou plusieurs adresses, ou blocs d'adresses, auxquelles
259 on peut faire confiance pour présenter une valeur RemoteIPHeader
260 valide de l'adresse IP du client. A la différence de la directive
261 <directive>RemoteIPInternalProxy</directive>, toutes les adresses IP
262 intranet ou privées indiquées par de tels mandataires, y compris les
263 blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8
264 (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas
265 dignes de confiance en tant qu'adresses IP distantes, et se situent
266 à gauche dans le contenu de l'en-tête
267 <directive>RemoteIPHeader</directive>.</p>
269 <example><title>Exemple d'adresse de confiance (répartiteur de
271 <highlight language="config">
272 RemoteIPHeader X-Forwarded-For
273 RemoteIPTrustedProxy 10.0.2.16/28
274 RemoteIPTrustedProxy proxy.example.com
281 <name>RemoteIPTrustedProxyList</name>
282 <description>Déclare les adresses IP intranet clients comme dignes de
283 confiance pour présenter la valeur RemoteIPHeader</description>
284 <syntax>RemoteIPTrustedProxyList <var>nom-fichier</var></syntax>
285 <contextlist><context>server config</context><context>virtual host</context></contextlist>
288 <p>La directive <directive>RemoteIPTrustedProxyList</directive>
289 permet de spécifier un fichier parcouru au démarrage du serveur pour
290 construire une liste d'adresses (ou blocs d'adresses), auxquelles
291 on peut faire confiance pour présenter une valeur RemoteIPHeader
292 valide de l'adresse IP du client.</p>
294 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
295 sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
296 tous les éléments d'une ligne séparés par un espace sont traités de
297 la même façon qu'avec la directive
298 <directive>RemoteIPTrustedProxy</directive>.</p>
300 <example><title>Exemple d'adresse de confiance (répartiteur de
302 <highlight language="config">
303 RemoteIPHeader X-Forwarded-For
304 RemoteIPTrustedProxyList conf/trusted-proxies.lst
308 <example><title>conf/mandataires-de-confiance.lst contents</title>
309 # Mandataires externes identifiés<br/>
310 192.0.2.16/28 #groupe wap phone de mandataires<br/>
311 proxy.isp.example.com #un FAI bien connu