Cloudflare Docs
Support
Support
Visit Support on GitHub
Set theme to dark (⇧+D)

Restaurer l’adresse IP d’origine du visiteur

​​ Restaurer l’adresse IP d’origine du visiteur

Apprenez comment configurer mod_cloudflare pour enregistrer l’adresse IP d’origine de vos visiteurs en fonction de votre type de serveur web d’origine (incluant Apache, nginx, Microsoft IIS et autres).


​​ Vue d’ensemble

Lorsque le trafic de votre site web est routé via le réseau Cloudflare, nous agissons comme un proxy inverse. Cela permet à Cloudflare de réduire le temps de chargement de page en optimisant le routage des paquets et en mettant en cache les ressources statiques (images, JavaScript, CSS, etc.). Par conséquent, en répondant aux requêtes et en les enregistrant, votre serveur d’origine verra les adresses IP de Cloudflare.

Par exemple, si vous installez des applications qui dépendent de l’adresse IP entrante du visiteur initial, une adresse IP Cloudflare est enregistrée par défaut.L’adresse IP originale du visiteur apparaît dans un en-tête HTTP ajouté appelé CF-Connecting-IP.En suivant nos instructions pour le serveur web , vous pouvez enregistrer l’adresse IP du visiteur original sur votre serveur d’origine.Si cet en-tête HTTP n’est pas disponible lorsque les requêtes atteignent votre serveur d’origine, vérifiez votre configuration des règles de transformation et Managed Transforms.

Le diagramme ci-dessous illustre les différentes façons dont les adresses IP sont gérées avec et sans Cloudflare.

The diagram illustrates the different ways that IP addresses are handled with and without Cloudflare.


​​ mod_remoteip

​​ Vue d’ensemble

Cloudflare ne met plus à jour et ne prend plus en charge mod_cloudflare. Toutefois, si vous utilisez un serveur web Apache avec un système d’exploitation tel que Ubuntu Server 18.04 et Debian 9 Stretch, vous pouvez utiliser mod_remoteip pour enregistrer l’adresse IP originale de votre visiteur.

Ce module ayant été créé par un tiers, nous ne pouvons pas fournir d'assistance technique pour les problèmes liés au plugin.

Pour installer  mod_remoteip  sur votre serveur web Apache :

1. Activez mod_remoteip en exécutant la commande suivante :

sudo a2enmod remoteip

2. Mettez à jour la configuration du site pour inclure RemoteIPHeader CF-Connecting-IP, par ex./etc/apache2/sites-available/000-default.conf

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName remoteip.andy.support
RemoteIPHeader CF-Connecting-IP
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

3. Mise à jour combinée LogFormat entrée dans apache.conf, remplacement de %h par %a dans /etc/apache2/apache2.conf. Par exemple, si votre LogFormat actuel se présentait comme suit

LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" " %{User-Agent}i"" combiné

vous mettrez à jour LogFormat comme suit :

LogFormat "%a %l %u %t "%r" %>s %O "%{Referer}i" " %{User-Agent}i"" combiné

4. Définissez les adresses proxy de confiance en créant /etc/apache2/conf-available/remoteip.conf en entrant le code suivant et les adresses IP Cloudflare :

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 192.0.2.1 (exemple d'adresse IP)
RemoteIPTrustedProxy 192.0.2.2 (exemple d'adresse IP)
(à répéter pour toutes les IP de Cloudflare listées à [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/))

5. Activer la configuration d’Apache :

sudo a2enconf remoteip
Activation de conf remoteip.
Pour activer la nouvelle configuration, vous devez exécuter :
service apache2 reload

6. Testez la configuration Apache :

sudo apache2ctl configtest
Syntaxe OK

7. Redémarrez Apache :

sudo systemctl restart apache2

​​ mod_cloudflare

Il existe deux méthodes pour installer mod_cloudflare : en téléchargeant l’extension Apache depuis GitHub ou en ajoutant du code à votre serveur web d’origine.

​​ Télécharger des paquets ou des scripts depuis GitHub

Si vous utilisez un serveur web Apache, vous pouvez télécharger mod_cloudflare à partir de GitHub.

​​ Ajouter du code à votre serveur web d’origine

Si vous ne parvenez pas à installer mod_cloudflare, ou si aucun plugin Cloudflare n’est disponible pour votre plate-forme de gestion de contenu pour restaurer l’adresse IP d’origine des visiteurs, ajoutez ce code à votre serveur web d’origine dans ou avant la balise sur toute page nécessitant les adresses IP d’origine des visiteurs :

<?php if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; ?>

Ce code ne rendra l’adresse IP disponible que pour les scripts qui en ont besoin. Cela ne stocke pas l’adresse IP dans les journaux de votre serveur effectif.

​​ Apache

Pour supprimer mod_cloudflare, vous devez commenter la ligne de configuration Apache qui charge mod_cloudflare.

Cela varie en fonction de votre distribution Linux, mais pour la plupart des utilisateurs, si vous regardez dans /etc/apache2, vous devriez pouvoir chercher pour trouver la ligne :

LoadModule cloudflare_module

Commentez ou supprimez cette ligne, puis redémarrez Apache, et mod_cloudflare devrait avoir disparu .

Si vous utilisez Ubuntu ou Debian, vous devriez voir un fichier.

file/etc/apache2/mods-enabled/cloudflare.load

Supprimez ce fichier pour supprimer mod_cloudflare, puis redémarrez Apache.

​​ Nginx

Mod_cloudflare s’installe en modifiant le fichier de configuration nginxnginx.confavec le module ngx_http_realip_module.

Pour supprimer mod_cloudflare , commentez ou supprimez cette ligne, puis redémarrez nginx, et mod_cloudflare devrait avoir disparu_._


​​ Instructions pour le serveur Web

Vous trouverez ci-dessous des instructions sur la manière de configurer votre serveur web pour qu’il enregistre les adresses IP des visiteurs originaux en fonction du type de votre serveur web :

  1. Assurez-vous que les éléments suivants sont installés :
    • Red Hat/Fedorasudo yum install httpd-devel libtool git
    • Debian/Ubuntusudo apt-get install apache2-dev libtool git
  2. Clonez les éléments suivants pour obtenir le build le plus récent de mod_cloudflare :
    • Red Hat/Fedora/Debian/Ubuntu :git clone https://github.com/cloudflare/mod_cloudflare.git; cd mod_cloudflare
  3. Utilisez l’outil d’extension Apache pour convertir le fichier .c en module :
    • Red Hat/Fedora/Debain/Ubuntu :apxs -a -i -c mod_cloudflare.c
  4. Redémarrez et vérifiez que le module est actif :
    • Red Hat/Fedoraservice httpd restart; httpd -M|grep cloudflare
    • Debian/Ubuntu :sudo apachectl restart; apache2ctl -M|grep cloudflare
  5. Si votre navigateur web se trouve derrière un équilibreur de charge, ajoutez la ligne suivante à votre configuration Apache (remplacez 123.123.123.123 par l’adresse IP de votre équilibreur de charge :
IfModule cloudflare_module
CloudFlareRemoteIPHeader X-Forwarded-For
CloudFlareRemoteIPTrustedProxy **[insérer l'adresse IP de votre équilibreur de charge]**
DenyAllButCloudFlare
/IfModule

Utilisez le module ngx_http_realip_module module NGINX et les paramètres de configuration suivants :

set_real_ip_from 192.0.2.1 (exemple d'adresse IP)
(à répéter pour toutes les adresses IP Cloudflare listées sur [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/))
# utilisez l'un des deux en-têtes suivants
real_ip_header CF-Connecting-IP ;
#real_ip_header X-Forwarded-For ;

Cette liste de préfixes doit être mise à jour régulièrement et nous publions la liste complète dans Adresses IP Cloudflare.

Voir aussi : Cloudflare et NGINX.

  1. Exécutez le script suivant pour installer mod_cloudflare comme partie intégrante d’EasyApache : bash <(curl -s https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/EasyApache/installer.sh)
  2. Après l’installation, vous devrez recompiler votre Apache avec le nouveau plugin mod_cloudflare.

Si vous utilisez Railgun (ou un autre logiciel de proxy inverse, tel que Varnish), les requêtes des utilisateurs viendront de votre serveur Railgun au lieu de Cloudflare. Étant donné que les requêtes ne proviennent pas directement de Cloudflare, mod_cloudflare ne restaure pas les adresses IP des visiteurs par défaut.

  1. Pour résoudre ce problème, ouvrez votre configuration Apache.Elle se trouve généralement dans /etc/apache2/apache2.conf/etc/httpd/httpd.conf/usr/local/apache/conf/httpd.conf ou un autre emplacement selon la configuration.Si vous n’êtes pas sûr(e), demandez à votre fournisseur d’hébergement.
  2. À la toute fin, ajoutez :CloudflareRemoteIPTrustedProxy railgun_addressAinsi, si votre serveur Railgun est situé à 127.0.0.0.1, il apparaîtra comme suit :CloudflareRemoteIPTrustedProxy 127.0.0.1
  3. Si vous avez plus d’un serveur à ajouter à la liste des serveurs proxy autorisés, vous pouvez les ajouter à la fin :CloudflareRemoteIPTrustedProxy 127.0.0.1 127.0.0.2

Pour que Lighttpd réécrive automatiquement l’adresse IP du serveur pour les journaux d’accès et pour votre application, vous pouvez opter pour l’une des deux solutions ci-dessous.

  1. Ouvrez votre fichier lighttpd.conf et ajoutez mod_extforward à la liste server.modules.Il doit venir après mod_accesslog pour montrer l’adresse IP réelle dans les journaux d’accès
  2. Ajoutez le bloc de code suivant n’importe où dans le fichier lighttpd.conf après la liste des modules du serveur et redémarrez ensuite Lighttpd
$HTTP["remoteip"] == "192.2.0.1 (exemple d'adresse IP)"
{
extforward.forwarder = ( "all" => " trust" )
extforward.headers = ("CF-Connecting-IP")
}
(à répéter pour toutes les IP de Cloudflare listées sur [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/))
  1. Accédez à votre console d’administration web LiteSpeed.
  2. Activez l’option Utiliser l’adresse IP du client dans l’en-tête de la configuration.
  3. Une fois l’option activée, vos journaux d’accès afficheront les bonnes adresses IP, et même la variable $_SERVER['REMOTE_ADDR'] de PHP contiendra l’adresse IP réelle du client, au lieu d’une adresse IP Cloudflare, ce qui règlera en soi a plupart des problèmes rencontrés en permettant d’utiliser Cloudflare pour un site web écrit en PHP (comme WordPress ou vBulletin install).
​​ Pour IIS 7 - 8 :

Suivez les instructions ici.

​​ Pour IIS 8.5 - 10 :

A partir d’IIS 8.5, la journalisation personnalisée est une option intégrée. Voir Journalisation améliorée IIS

  1. Dans IIS Manager, double-cliquez sur Logging dans le menu des Actions du site sur lequel vous travaillez.

  2. Après cette opération, sélectionnez le format W3C, puis cliquez sur Select Fields à côté de la liste déroulante de format dans la sous-section Log File.

  3. Cliquez sur Add Field et ajoutez l’en-tête CF-Connecting-IP .

  4. Cliquez sur Ok. Vous devriez voir votre nouvelle entrée reflétée sous Champs personnalisés. Cliquez sur Appliquer lorsque vous êtes de retour dans la fenêtre Logging.

  5. Si cette opération réussit, le fichier journal doit comporter un tiret bas :Vous devriez également voir les modifications dans les champs :

  6. Relancez le site, puis W3SVC, puis l’instance entière si le changement n’apparaît pas immédiatement.Lors de l’utilisation de la journalisation améliorée dans IIS 8.5+, elle ne rétablit pas l’IP du visiteur original au niveau de l’application.

Pour que Tomcat7 rétablisse automatiquement l’adresse IP originale du visiteur dans vos journaux d’accès et votre application, vous devrez ajouter %{CF-Connecting-IP}i dans votre schéma de journal.

Par exemple, vous pourriez ajouter la portion de code ci-dessous à votre fichier server.xml.

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffixe=".txt" pattern="%{CF-Connecting-IP}i - %h %u %t - &quot;%r" ; - %s - %b - %{CF-RAY}i"/>

Ce qui aurait pour conséquences que vos journaux ressembleraient à ceci :

Visitor IP - Cloudflare IP - [04/Dec/2014:23:18:15 -0500] - "GET / HTTP/1.1" - 200 - 1895 - 193d704b85200296-SJC

Consultez ce tutoriel tiers sur la restauration de l’adresse IP d’origine des visiteurs avec Magento et Cloudflare.

De la même manière, Cloudflare n’a pas écrit cette extension Magento, mais certains de nos clients l’ont trouvée utile.

Ce plugin ayant été créé par un tiers, nous ne pouvons fournir d’assistance technique pour les problèmes qu’il présenterait.

Pour permettre une association correcte des adresses IP lors de l’exécution d’une installation Invision Power Board 3 dans Cloudflare, suivez ces instructions :

Connectez-vous à l’ACP de votre installation IPB.

  1. Cliquez sur System.
  2. Dans Overview, cliquez sur Security.
  3. Dans Security Center, cliquez sur Security Settings.Vérifiez que Trust adresses IP fournies par les proxies ? est vert.
​​ Description IPB4 de Trust IP addresses provided by proxies?

Si votre environnement réseau implique que les requêtes soient traitées via un proxy (comme dans le cas d’un réseau intranet en milieu professionnel ou dans une université, ou sur une grappe de serveurs équilibrés en charge), vous devrez peut-être activer ce paramètre pour que l’adresse IP correcte soit utilisée. Toutefois, lorsque ce paramètre est activé, un utilisateur malveillant peut tromper le système en fournissant une fausse adresse IP. Dans la plupart des environnements, il est préférable de laisser ce paramètre désactivé.

Vous trouverez des informations sur la restauration de l’adresse IP d’origine des visiteurs avec Simple Machines (SMF) sur les forums Simple Machines.

Si vous utilisez un serveur Apache, nous vous recommandons d’installer mod_remoteip pour restaurer l’IP des visiteurs dans vos journaux.

Si vous n’avez pas accès à votre serveur pour installer un mod, vous pouvez alors modifier le noyau.

Les versions plus récentes de MyBBB intègrent l’option Scrutinize User’s IP address.

Admin CP > Configuration > Server and Optimization Options > Scrutinize User's IP address? > Yes

Vous pouvez également installer le plugin de gestion Cloudflare disponible pour MyBB 1.6.

​​ MyBB 1.6.0, 1.6.1, 1.6.2, ou 1.6.3
  1. Accédez à ./inc/functions.php.
  2. Allez à la ligne 2790.
  3. Remplacez :if(isset($_SERVER['REMOTE_ADDR']))par :if(isset($_SERVER['HTTP_CF_CONNECTING_IP']))
  4. Remplacez ensuite :$ip = $_SERVER['REMOTE_ADDR'];par :$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];

Un membre de l’équipe Vanilla a écrit un plugin Cloudflare pour Vanilla permettant de restaurer l’adresse IP d’origine des visiteurs dans les fichiers journaux des sites auto-hébergés.

Ce plugin ayant été créé par un tiers, nous ne pouvons fournir d’assistance technique pour les problèmes qu’il présenterait.MediaWiki

  1. Ouvrez includes/GlobalFunctions.php. À la ligne 370 approximativement, changez ce qui suit :$forward = "\t(proxied via {$_SERVER['REMOTE_ADDR']}{$forward})";par$forward = "\t(proxied via {$_SERVER['HTTP_CF_CONNECTING_IP']}{$forward})";
  2. Ouvrez includes/ProxyTools.php. À la ligne 79 approximativement, recherchez :if ( isset( $_SERVER['REMOTE_ADDR'] ) ){et remplacez-le par :if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ){La deuxième étape ne s’applique qu’aux versions MediaWiki 1.18.0 et antérieures. Les nouvelles versions de MediaWiki ont complètement réécrit ProxyTools.php et le code suivant n’est plus présent.
  3. À la ligne 80 approximativement, recherchez :$ipchain = array( IP::canonicalize($_SERVER['REMOTE_ADDR']) );Sauvegardez et téléchargez sur votre serveur web d’origine.
​​ Pour les versions voisines de 1.27.1 :
  1. Allez à la ligne 1232 dans GlobalFunctions.php, remplacez REMOTE_ADDR par HTTP_CF_CONNECTING_IP.
  2. Ensuite, allez dans WebRequest.php, aux lignes 1151 à 1159, remplacez REMOTE_ADDR par HTTP_CF_CONNECTING_IP.

Un utilisateur de Xenforo a créé un plugin pour Cloudflare.

Ce plugin ayant été créé par un tiers, nous ne pouvons fournir d’assistance technique pour les problèmes qu’il présenterait.

  1. Ouvrez library/config.php.
  2. À la fin, ajoutez :if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];}
  3. Téléchargez et remplacez.

Un tiers a créé un module pour Cloudflare et PunBBB qui restaurera l’adresse IP d’origine des visiteurs.

Ce plugin ayant été créé par un tiers, nous ne pouvons fournir d’assistance technique pour les problèmes qu’il présenterait.Cherokee server

  1. Lancez cherokee-admin sur votre serveur.
  2. Allez dans l’interface d’administration Cherokee de votre navigateur web.
  3. Sélectionnez Virtual Server pour le domaine qui est desservi par Cloudflare.
  4. Dans l’onglet Logging du serveur virtuel sélectionné, activez l’option Accept Forwarded IPs.
  5. Allez dans Accept from Hosts box, puis dans Cloudflare’s IP addresses.

Vous pouvez corriger l’adresse IP en remplaçant le champ PHP IP Server Param de la configuration de serveur Livezilla par HTTP_CF_CONNECTING_IP.

Pour restaurer l’adresse IP des visiteurs dans DataLife Engine :

  1. Ouvrez :/engine/inc/include/functions.inc.phpRecherchez :$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );Remplacez par :$db_ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
  2. Recherchez :$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );Remplacez par :$_SERVER['REMOTE_ADDR'] ); $_SERVER['REMOTE_ADDR'] );
  3. Ouvrez :/engine/modules/addcomments.phpRecherchez :$_SERVER['REMOTE_ADDR'],Remplacez par :$_SERVER['HTTP_CF_CONNECTING_IP'],
  4. Recherchez :$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );Remplacez par :$_SERVER['HTTP_CF_CONNECTING_IP'], $_SERVER['HTTP_CF_CONNECTING_IP'] );

Un développeur tiers a créé une extension Cloudflare pour TYPO3 qui restaurera l’adresse IP d’origine des visiteurs dans vos journaux. L’extension vous permettra également de supprimer votre cache Cloudflare.

Ce plugin ayant été créé par un tiers, nous ne pouvons fournir d’assistance technique pour les problèmes qu’il présenterait.

Si vous utilisez le panneau de contrôle d’hébergement VestaCP, Nginx et Apache s’exécutent tous deux sur votre serveur. Les requêtes sont mises en proxy sur Nginx avant d’aller sur Apache.

De ce fait, vous devez suivre les instructions pour configurer Nginx afin qu’il renvoie l’adresse IP réelle des visiteurs. Mod_remoteip pour Apache n’est pas nécessaire à moins que vous ne désactiviez le serveur Nginx pour certaines requêtes. Si vous ajoutez mod_remoteip à Apache, cela n’entrera pas en conflit avec la configuration du serveur Nginx.

Un développeur tiers a créé un module pour restaurer l’adresse IP des visiteurs appelé node_cloudflare.


​​ Restaurer l’IP originale du visiteur avec HAProxy

Afin d’extraire l’IP du client original dans l’en-tête X_FORWARDD_FOR, vous devez utiliser la configuration suivante dans HAProxy :

  1. Créez un fichier texte CF_ips.lst contenant toutes les plages d’IP de https://www.cloudflare.com/en-gb/ips/.
  2. désactivez l’option forwardfor dans HAProxy.

Configuration de HAProxy :

acl from_cf src -f /path/to/CF_ips.lst

acl cf_ip_hdr req.hdr(CF-Connecting-IP) -m found

http-request set-header X-Forwarded-For %[req.hdr(CF-Connecting-IP)] si from_cf cf_ip_hdr


​​ Ressources associées