1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1704683:1776624 (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 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 le client qui a initié la
39 requête en tant que client original du point de vue de httpd à
40 des fins d'autorisation et de connexion, même si ce client se
41 trouve derrière un répartiteur de charge, un serveur frontal, ou un
42 serveur mandataire.</p>
44 <p>Le module remplace l'adresse IP du client
45 pour la connexion par l'adresse IP indiquée dans
46 l'en-tête de requête configuré via la directive
47 <directive module="mod_remoteip">RemoteIPHeader</directive>.</p>
49 <p>Une fois sa valeur modifiée comme indiqué, cette adresse IP client est
50 utilisée pour la fonctionnalité <directive
51 module="mod_authz_host" name="Require">Require ip</directive> de
52 <module>mod_authz_host</module> ; elle est aussi affichée par
53 <module>mod_status</module>, et enregistrée via les chaînes de formatage
54 <code>%a</code> des modules <module>mod_log_config</module> et <module>core</module>.
55 L'adresse IP client sous-jacente de la connexion est enregistrée via la chaîne de
56 formatage <code>%{c}a</code>.
59 <note type="warning">Il est essentiel de n'activer cette
60 fonctionnalité que pour les requêtes en provenance des serveurs
61 intermédiaires (mandataires, etc...) auxquels le serveur peut faire
62 confiance, car il est trivial pour le client distant d'usurper
63 l'identité d'un autre client.</note>
66 <seealso><module>mod_authz_host</module></seealso>
67 <seealso><module>mod_status</module></seealso>
68 <seealso><module>mod_log_config</module></seealso>
70 <section id="processing"><title>Traitement des adresses distantes</title>
72 <p>Par défaut, Apache identifie le client via la valeur client_ip de la
73 connexion, et de cette valeur découlent les valeurs remote_host et
74 remote_logname de la connexion. Ces champs jouent un rôle
75 dans l'authentification, l'autorisation et la journalisation, ainsi que
76 dans d'autres traitements effectués par d'autres modules
79 <p>mod_remoteip remplace l'adresse IP client de la connexion par l'adresse IP client
80 indiquée par exemple par un mandataire ou un répartiteur de charge
81 pour toute la durée de la requête. Un répartiteur de charge pourra ainsi
82 établir une connexion keepalive de longue durée avec le serveur, chaque
83 requête conservant alors l'adresse IP client correcte bien que l'adresse IP
84 client sous-jacente du répartiteur de charge reste inchangée.</p>
86 <p>Lorsque la valeur de l'en-tête comporte plusieurs adresses IP
87 client séparées par des virgules, celles-ci sont traitées de la
88 droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP
89 client courante n'est pas digne de confiance pour présenter
90 l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de
91 façon à ne contenir que cette liste d'adresses non confirmées, ou
92 bien, si toutes les adresses IP sont dignes de confiance, cet
93 en-tête est tout bonnement supprimé de la requête.</p>
95 <p>Lors du remplacement de l'adresse IP client, le module stocke
96 la liste des hôtes intermédiaires dans un mémo
97 remoteip-proxy-ip-list, que l'on peut faire enregistrer par
98 <module>mod_log_config</module> en utilisant le symbole de format
99 <code>%{remoteip-proxy-ip-list}n</code>. Si l'administrateur doit
100 stocker ceci dans un en-tête additionnel, la même valeur peut aussi
101 être enregistrée sous la forme d'un en-tête en utilisant la
102 directive <directive module="mod_remoteip">RemoteIPProxiesHeader</directive>.</p>
104 <note><title>Adresses IPv4 converties au format IPv6</title>
105 Avec httpd, d'une manière générale, toute adresse IPv4 convertie au
106 format IPv6 est enregistrée sous sa forme IPv4.</note>
108 <note><title>Adresses internes (privées)</title>
109 Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16,
110 169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc
111 public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque
112 des mandataires internes (intranet)
113 <directive module="mod_remoteip">RemoteIPInternalProxy</directive> sont enregistrés.</note>
118 <name>RemoteIPHeader</name>
119 <description>Définit le champ d'en-tête qui contiendra les adresses IP
120 du client</description>
121 <syntax>RemoteIPHeader <var>en-tête</var></syntax>
122 <contextlist><context>server config</context><context>virtual host</context></contextlist>
125 <p>La directive <directive module="mod_remoteip">RemoteIPHeader</directive> indique à
126 <module>mod_remoteip</module> de traiter la valeur de
127 l'<var>en-tête</var> spécifié comme l'adresse IP du client, ou comme
128 une liste d'adresses IP clients intermédiaires, en fonction de la
129 configuration des directives
130 <directive module="mod_remoteip">RemoteIPInternalProxy</directive> et
131 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive>.</p>
133 <note type="warning">Si ces deux dernières
134 directives ne sont pas utilisées, <module>mod_remoteip</module>
135 traitera tout hôte présentant une adresse non interne
136 dans l'en-tête <directive
137 module="mod_remoteip">RemoteIPHeader</directive> comme hôte de
140 <example><title>Exemple à usage interne (répartiteur de
142 <highlight language="config">
143 RemoteIPHeader X-Client-IP
147 <example><title>Exemple dans le cas d'un mandataire</title>
148 <highlight language="config">
149 RemoteIPHeader X-Forwarded-For
156 <name>RemoteIPInternalProxy</name>
157 <description>Déclare les adresses IP intranet clients comme dignes de
158 confiance pour présenter la valeur RemoteIPHeader</description>
159 <syntax>RemoteIPInternalProxy
160 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
161 <contextlist><context>server config</context><context>virtual host</context></contextlist>
164 <p>La directive <directive module="mod_remoteip">RemoteIPInternalProxy</directive> permet
165 d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles
166 on peut faire confiance pour présenter une valeur RemoteIPHeader
167 valide de l'adresse IP du client. A la différence de la directive
168 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive>, toute adresse IP
169 présentée dans cet en-tête, y comprises les adresses intranet
170 privées, sont considérées comme dignes de confiance lorsqu'elles
171 sont indiquées par ces mandataires.</p>
173 <example><title>Exemple à usage interne (répartiteur de
175 <highlight language="config">
176 RemoteIPHeader X-Client-IP
177 RemoteIPInternalProxy 10.0.2.0/24
178 RemoteIPInternalProxy gateway.localdomain
185 <name>RemoteIPInternalProxyList</name>
186 <description>Déclare les adresses IP intranet clients comme dignes de
187 confiance pour présenter la valeur RemoteIPHeader</description>
188 <syntax>RemoteIPInternalProxyList <var>nom-fichier</var></syntax>
189 <contextlist><context>server config</context><context>virtual host</context></contextlist>
192 <p>La directive <directive module="mod_remoteip">RemoteIPInternalProxyList</directive>
193 permet de spécifier un fichier parcouru au démarrage du serveur pour
194 construire une liste d'adresses (ou blocs d'adresses), auxquelles
195 on peut faire confiance pour présenter une valeur RemoteIPHeader
196 valide de l'adresse IP du client.</p>
198 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
199 sinon, toutes les lignes séparées par un caractère <code>nouvelle
201 tous les éléments d'une ligne séparés par un espace sont traités de
202 la même façon qu'avec la directive
203 <directive module="mod_remoteip">RemoteIPInternalProxy</directive>.</p>
205 <example><title>Exemple à usage interne (répartiteur de
207 <highlight language="config">
208 RemoteIPHeader X-Client-IP
209 RemoteIPInternalProxyList conf/trusted-proxies.lst
213 <example><title>contenu de conf/mandataires-de-confiance.lst</title>
215 # Nos mandataires internes de confiance
216 10.0.2.0/24 # Tout le monde dans le groupe de test
217 passerelle.domaine-local # Le frontal répartiteur de charge
224 <name>RemoteIPProxiesHeader</name>
225 <description>Déclare le champ d'en-tête qui contiendra toutes les
226 adresses IP intermédiaires</description>
227 <syntax>RemoteIPProxiesHeader <var>Nom_en-tête</var></syntax>
228 <contextlist><context>server config</context><context>virtual host</context></contextlist>
231 <p>La directive <directive module="mod_remoteip">RemoteIPProxiesHeader</directive> permet
232 de spécifier l'en-tête dans lequel <module>mod_remoteip</module> va
233 collecter une liste de toutes les adresses IP clients intermédiaires
234 auxquelles on pourra faire confiance pour résoudre l'adresse IP
235 client de la requête. Notez que les adresses intermédiaires
236 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive> sont enregistrées dans
237 cet en-tête, alors que toute adresse intermédiaire
238 <directive module="mod_remoteip">RemoteIPInternalProxy</directive> est omise.</p>
240 <example><title>Exemple</title>
241 <highlight language="config">
242 RemoteIPHeader X-Forwarded-For
243 RemoteIPProxiesHeader X-Forwarded-By
250 <name>RemoteIPTrustedProxy</name>
251 <description>Restreint les adresses IP clients dignes de
252 confiance pour présenter la valeur RemoteIPHeader</description>
253 <syntax>RemoteIPTrustedProxy
254 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
255 <contextlist><context>server config</context><context>virtual host</context></contextlist>
258 <p>La directive <directive module="mod_remoteip">RemoteIPTrustedProxy</directive> permet
259 de définir quelles adresses IP (ou blocs d'adresses) seront
260 considérées comme de confiance pour présenter une valeur RemoteIPHeader
261 valide de l'adresse IP du client.</p>
263 <p>A la différence de la directive
264 <directive module="mod_remoteip">RemoteIPInternalProxy</directive>, toutes les adresses IP
265 intranet ou privées indiquées par de tels mandataires, y compris les
266 blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8
267 (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas
268 dignes de confiance en tant qu'adresses IP clientes, et se situent
269 à gauche dans le contenu de l'en-tête
270 <directive module="mod_remoteip">RemoteIPHeader</directive>.</p>
272 <note type="warning">Par défaut, <module>mod_remoteip</module>
273 considérera comme de confiance tout hôte présentant une adresse non
274 interne dans l'en-tête <directive
275 module="mod_remoteip">RemoteIPHeader</directive>.
278 <example><title>Exemple d'adresse de confiance (répartiteur de
280 <highlight language="config">
281 RemoteIPHeader X-Forwarded-For
282 RemoteIPTrustedProxy 10.0.2.16/28
283 RemoteIPTrustedProxy proxy.example.com
290 <name>RemoteIPTrustedProxyList</name>
291 <description>Restreint les adresses IP clients dignes de
292 confiance pour présenter la valeur RemoteIPHeader</description>
293 <syntax>RemoteIPTrustedProxyList <var>nom-fichier</var></syntax>
294 <contextlist><context>server config</context><context>virtual host</context></contextlist>
297 <p>La directive <directive module="mod_remoteip">RemoteIPTrustedProxyList</directive>
298 permet de spécifier un fichier parcouru au démarrage du serveur pour
299 construire une liste d'adresses (ou blocs d'adresses), auxquelles
300 on peut faire confiance pour présenter une valeur RemoteIPHeader
301 valide de l'adresse IP du client.</p>
303 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
304 sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
305 tous les éléments d'une ligne séparés par un espace sont traités de
306 la même façon qu'avec la directive
307 <directive module="mod_remoteip">RemoteIPTrustedProxy</directive>.</p>
309 <example><title>Exemple d'adresse de confiance (répartiteur de
311 <highlight language="config">
312 RemoteIPHeader X-Forwarded-For
313 RemoteIPTrustedProxyList conf/trusted-proxies.lst
317 <example><title>conf/mandataires-de-confiance.lst contents</title>
318 # Mandataires externes identifiés<br/>
319 192.0.2.16/28 #groupe wap phone de mandataires<br/>
320 proxy.isp.example.com #un FAI bien connu