2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1561569:1568652 (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 la fonctionnalité <directive
51 module="mod_authz_core" 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 directives
54 <code>%a</code> et <code>%h</code> du module
55 <module>mod_log_config</module>. Elle permet aussi d'identifier la
56 machine en essayant de lui attribuer une identité inetd via le
57 module <module>mod_ident</module> et en fonction de la configuration
58 de la directive <directive
59 module="mod_ident">IdentityCheck</directive>.</p>
61 <note type="warning">Il est essentiel de n'activer cette
62 fonctionnalité que pour les requêtes en provenance des serveurs
63 intermédiaires (mandataires, etc...) auxquels le serveur peut faire
64 confiance, car il est trivial pour le client distant d'usurper
65 l'identité d'un autre client.</note>
68 <seealso><module>mod_authz_host</module></seealso>
69 <seealso><module>mod_status</module></seealso>
70 <seealso><module>mod_log_config</module></seealso>
71 <seealso><module>mod_ident</module></seealso>
73 <section id="processing"><title>Traitement des adresses distantes</title>
75 <p>Apache identifie le client par la valeur remote_ip de la
76 connexion, et de cette valeur découlent les valeurs remote_host et
77 remote_logname de la connexion. Ces champs jouent un rôle
78 dans l'authentification, l'autorisation et la connexion, ainsi que
79 dans d'autres traitements effectués par d'autres modules
82 <p>mod_remoteip remplace la véritable remote_ip par la remote_ip
83 indiquée par exemple par un mandataire chaque fois que le serveur
84 effectue une évaluation du client, et réinitialise les valeurs de
85 remote_host et remote_logname afin de déclencher une nouvelle
86 requête dns ou ident sur l'adresse IP distante.</p>
88 <p>Lorsque la valeur de l'en-tête comporte plusieurs adresses IP
89 distantes séparées par des virgules, celles-ci sont traitées de la
90 droite vers la gauche. Le traitement s'arrête lorsque l'adresse IP
91 distante courante n'est pas digne de confiance pour présenter
92 l'adresse IP précédente. Le champ d'en-tête est alors mis à jour de
93 façon à ne contenir que cette liste d'adresses non confirmées, ou
94 bien, si toutes les adresses IP sont dignes de confiance, cet
95 en-tête est tout bonnement supprimé de la requête.</p>
97 <p>Lors du remplacement de l'adresse IP distante, le module stocke
98 la liste des hôtes intermédiaires dans un mémo
99 remoteip-proxy-ip-list, que l'on peut faire enregistrer par
100 <module>mod_log_config</module> en utilisant le symbole de format
101 <code>%{remoteip-proxy-ip-list}n</code>. Si l'administrateur doit
102 stocker ceci dans un en-tête additionnel, la même valeur peut aussi
103 être enregistrée sous la forme d'un en-tête en utilisant la
104 directive <directive>RemoteIPProxiesHeader</directive>.</p>
106 <note><title>Adresses IPv4 converties au format IPv6</title>
107 Avec httpd, d'une manière générale, toute adresse IPv4 convertie au
108 format IPv6 est enregistrée sous sa forme IPv4.</note>
110 <note><title>Adresses internes (privées)</title>
111 Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16,
112 169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc
113 public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque
114 des mandataires internes (intranet)
115 <directive>RemoteIPInternalProxy</directive> sont enregistrés.</note>
120 <name>RemoteIPHeader</name>
121 <description>Définit le champ d'en-tête qui contiendra les adresses IP
122 du client</description>
123 <syntax>RemoteIPHeader <var>en-tête</var></syntax>
124 <contextlist><context>server config</context><context>virtual host</context></contextlist>
127 <p>La directive <directive>RemoteIPHeader</directive> indique à
128 <module>mod_remoteip</module> de traiter la valeur de
129 l'<var>en-tête</var> spécifié comme l'adresse IP du client, ou comme
130 une liste d'adresses IP clients intermédiaires, en fonction de la
131 configuration des directives
132 <directive>RemoteIPInternalProxy</directive> et
133 <directive>RemoteIPTrustedProxy</directive>. Si ces deux dernières
134 directives ne sont pas utilisées, <module>mod_remoteip</module>
135 traitera tout hôte présentant une valeur d'IP
136 <directive>RemoteIPHeader</directive> comme hôte de confiance.</p>
138 <example><title>Exemple à usage interne (répartiteur de
140 <highlight language="config">
141 RemoteIPHeader X-Client-IP
145 <example><title>Exemple dans le cas d'un mandataire</title>
146 <highlight language="config">
147 RemoteIPHeader X-Forwarded-For
154 <name>RemoteIPInternalProxy</name>
155 <description>Déclare les adresses IP intranet clients comme dignes de
156 confiance pour présenter la valeur RemoteIPHeader</description>
157 <syntax>RemoteIPInternalProxy
158 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
159 <contextlist><context>server config</context><context>virtual host</context></contextlist>
162 <p>La directive <directive>RemoteIPInternalProxy</directive> permet
163 d'ajouter une ou plusieurs adresses (ou blocs d'adresses) auxquelles
164 on peut faire confiance pour présenter une valeur RemoteIPHeader
165 valide de l'adresse IP du client. A la différence de la directive
166 <directive>RemoteIPTrustedProxy</directive>, toute adresse IP
167 présentée dans cet en-tête, y comprises les adresses intranet
168 privées, sont considérées comme dignes de confiance lorsqu'elles
169 sont indiquées par ces mandataires.</p>
171 <example><title>Exemple à usage interne (répartiteur de
173 <highlight language="config">
174 RemoteIPHeader X-Client-IP
175 RemoteIPInternalProxy 10.0.2.0/24
176 RemoteIPInternalProxy gateway.localdomain
183 <name>RemoteIPInternalProxyList</name>
184 <description>Déclare les adresses IP intranet clients comme dignes de
185 confiance pour présenter la valeur RemoteIPHeader</description>
186 <syntax>RemoteIPInternalProxyList <var>nom-fichier</var></syntax>
187 <contextlist><context>server config</context><context>virtual host</context></contextlist>
190 <p>La directive <directive>RemoteIPInternalProxyList</directive>
191 permet de spécifier un fichier parcouru au démarrage du serveur pour
192 construire une liste d'adresses (ou blocs d'adresses), auxquelles
193 on peut faire confiance pour présenter une valeur RemoteIPHeader
194 valide de l'adresse IP du client.</p>
196 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
197 sinon, toutes les lignes séparées par un caractère <code>nouvelle
199 tous les éléments d'une ligne séparés par un espace sont traités de
200 la même façon qu'avec la directive
201 <directive>RemoteIPInternalProxy</directive>.</p>
203 <example><title>Exemple à usage interne (répartiteur de
205 <highlight language="config">
206 RemoteIPHeader X-Client-IP
207 RemoteIPInternalProxyList conf/trusted-proxies.lst
211 <example><title>contenu de conf/mandataires-de-confiance.lst</title>
213 # Nos mandataires internes de confiance
214 10.0.2.0/24 # Tout le monde dans le groupe de test
215 passerelle.domaine-local # Le frontal répartiteur de charge
222 <name>RemoteIPProxiesHeader</name>
223 <description>Déclare le champ d'en-tête qui contiendra toutes les
224 adresses IP intermédiaires</description>
225 <syntax>RemoteIPProxiesHeader <var>Nom_en-tête</var></syntax>
226 <contextlist><context>server config</context><context>virtual host</context></contextlist>
229 <p>La directive <directive>RemoteIPProxiesHeader</directive> permet
230 de spécifier l'en-tête dans lequel <module>mod_remoteip</module> va
231 collecter une liste de toutes les adresses IP clients intermédiaires
232 auxquelles on pourra faire confiance pour résoudre la véritable
233 adresse IP distante. Notez que les adresses intermédiaires
234 <directive>RemoteIPTrustedProxy</directive> sont enregistrées dans
235 cet en-tête, alors que toute adresse intermédiaire
236 <directive>RemoteIPInternalProxy</directive> est omise.</p>
238 <example><title>Exemple</title>
239 <highlight language="config">
240 RemoteIPHeader X-Forwarded-For
241 RemoteIPProxiesHeader X-Forwarded-By
248 <name>RemoteIPTrustedProxy</name>
249 <description>Déclare les adresses IP intranet clients comme dignes de
250 confiance pour présenter la valeur RemoteIPHeader</description>
251 <syntax>RemoteIPTrustedProxy
252 <var>ip-mandataire</var>|<var>ip-mandataire/sous-réseau</var>|<var>nom-hôte</var> ...</syntax>
253 <contextlist><context>server config</context><context>virtual host</context></contextlist>
256 <p>La directive <directive>RemoteIPTrustedProxy</directive> permet
257 d'ajouter une ou plusieurs adresses, ou blocs d'adresses, auxquelles
258 on peut faire confiance pour présenter une valeur RemoteIPHeader
259 valide de l'adresse IP du client. A la différence de la directive
260 <directive>RemoteIPInternalProxy</directive>, toutes les adresses IP
261 intranet ou privées indiquées par de tels mandataires, y compris les
262 blocs d'adresses 10/8, 172.16/12, 192.168/16, 169.254/16 et 127/8
263 (ou située en dehors du bloc IPv6 public 2000::/3), ne sont pas
264 dignes de confiance en tant qu'adresses IP distantes, et se situent
265 à gauche dans le contenu de l'en-tête
266 <directive>RemoteIPHeader</directive>.</p>
268 <example><title>Exemple d'adresse de confiance (répartiteur de
270 <highlight language="config">
271 RemoteIPHeader X-Forwarded-For
272 RemoteIPTrustedProxy 10.0.2.16/28
273 RemoteIPTrustedProxy proxy.example.com
280 <name>RemoteIPTrustedProxyList</name>
281 <description>Déclare les adresses IP intranet clients comme dignes de
282 confiance pour présenter la valeur RemoteIPHeader</description>
283 <syntax>RemoteIPTrustedProxyList <var>nom-fichier</var></syntax>
284 <contextlist><context>server config</context><context>virtual host</context></contextlist>
287 <p>La directive <directive>RemoteIPTrustedProxyList</directive>
288 permet de spécifier un fichier parcouru au démarrage du serveur pour
289 construire une liste d'adresses (ou blocs d'adresses), auxquelles
290 on peut faire confiance pour présenter une valeur RemoteIPHeader
291 valide de l'adresse IP du client.</p>
293 <p>Le caractère '<code>#</code>' indique une ligne de commentaires,
294 sinon, toutes les lignes séparées par un caractère nouvelle ligne ou
295 tous les éléments d'une ligne séparés par un espace sont traités de
296 la même façon qu'avec la directive
297 <directive>RemoteIPTrustedProxy</directive>.</p>
299 <example><title>Exemple d'adresse de confiance (répartiteur de
301 <highlight language="config">
302 RemoteIPHeader X-Forwarded-For
303 RemoteIPTrustedProxyList conf/trusted-proxies.lst
307 <example><title>conf/mandataires-de-confiance.lst contents</title>
308 # Mandataires externes identifiés<br/>
309 192.0.2.16/28 #groupe wap phone de mandataires<br/>
310 proxy.isp.example.com #un FAI bien connu