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).
Présentation
Cloudflare inclut l'adresse IP d'origine des visiteurs dans les en-têtes X-Forwarded-For et CF-Connecting-IP.
- Ces en-têtes peuvent restaurer l'IP d'origine de vos visiteurs ou les inclure dans vos journaux.
- Cependant, le processus de configuration dépend du serveur web que vous utilisez.
Voir Restaurer l’adresse IP d’origine du visiteur : Option 1 pour plus d'informations sur l'installation de mod_cloudflare.
Restaurer les adresses IP des visiteurs par type de serveur web
Vous trouverez ci-dessous les instructions pour configurer mod_cloudflare pour enregistrer les adresses IP d'origine des visiteurs en fonction de votre type de serveur web :
Red Hat/Fedora :
sudo yum install httpd-devel libtool gitDebian/Ubuntu :
sudo 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.
4. Redémarrez et vérifiez que le module est actif :
Red Hat/Fedora :
service 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_moduleCloudFlareRemoteIPHeader X-Forwarded-ForCloudFlareRemoteIPTrustedProxy [Insérez l'adresse IP de votre équilibreur de charge]DenyAllButCloudFlare/IfModule
1. Veuillez utiliser le module Nginx et les paramètres de configuration suivants :
set_real_ip_from 103.21.244.0/22;set_real_ip_from 103.22.200.0/22;set_real_ip_from 103.31.4.0/22;set_real_ip_from 104.16.0.0/12;set_real_ip_from 108.162.192.0/18;set_real_ip_from 131.0.72.0/22;set_real_ip_from 141.101.64.0/18;set_real_ip_from 162.158.0.0/15;set_real_ip_from 172.64.0.0/13;set_real_ip_from 173.245.48.0/20;set_real_ip_from 188.114.96.0/20;set_real_ip_from 190.93.240.0/20;set_real_ip_from 197.234.240.0/22;set_real_ip_from 198.41.128.0/17;set_real_ip_from 2400:cb00::/32;set_real_ip_from 2606:4700::/32;set_real_ip_from 2803:f800::/32;set_real_ip_from 2405:b500::/32;set_real_ip_from 2405:8100::/32;set_real_ip_from 2c0f:f248::/32;set_real_ip_from 2a06:98c0::/29;
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.
2. Pour inclure l'adresse IP d'origine du visiteur dans vos journaux, ajoutez les variables $http_cf_connecting_ip et $http_x_forwarded_for
dans la directive log_format
.
Voir également : Cloudflare et Nginx
1. Exécutez le script suivant pour installer mod_cloudflare dans 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 point, ouvrez votre fichier Apache configuration.his qui se trouve en général dans le répertoire /etc/apache2/apache2.conf
, /etc/httpd/httpd.conf
, /usr/local/apache/conf/httpd.conf
ou à un autre emplacement en fonction de la configuration. Si vous n'êtes pas sûr de vous, demandez à votre fournisseur d’hébergement.
2. À la toute fin, ajoutez :
CloudflareRemoteIPTrustedProxy railgun_address
Ainsi, 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.
Si votre serveur d'origine se connecte uniquement à Internet via IPv4 :
1. Ouvrez votre fichier lighttpd.conf
et ajoutez mod_extforward
à la liste server.modules
. Il doit suivre mod_accesslog
pour afficher l'IP réelle dans les journaux d'accès (par exemple http://cl.ly/9fRX
).
2. Ajoutez la portion de code suivante n'importe où dans le fichier lighttpd.conf
après la liste des modules de serveur..
$HTTP["remoteip"] == "199.27.128.0/21" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "173.245.48.0/20" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "103.21.244.0/22" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "103.22.200.0/22" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "103.31.4.0/22" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "141.101.64.0/18" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "108.162.192.0/18" {extforward.forwarder = ( "all" => "trust" )>extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "190.93.240.0/20" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "188.114.96.0/20" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "197.234.240.0/22" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "198.41.128.0/17" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "162.158.0.0/15" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "104.16.0.0/12" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}$HTTP["remoteip"] == "172.64.0.0/13" {extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}
3. Redémarrez Lighttpd.
Si votre serveur d'origine se connecte uniquement à Internet avec IPv6 :
La documentation de Lighttpd indique que le champ $HTTP["remoteip"]
, qui est nécessaire pour faire correspondre les plages IP distantes, ne fonctionne pas lorsque IPv6 est activé. La méthode ci-dessus ne fonctionnera pas si vous essayez de transférer des plages IP.
Dans ce cas, une solution alternative au transfert de l'adresse IPv6 d'origine en utilisant Lighttpd consiste à faire confiance à tous les proxies (non recommandés par Lighttpd). Ceci peut être effectué comme suit :
1. Paramétrer mod_accesslog avant mod_extforward dans la liste server.modules
2. Ajoutez des lignes suivantes à lighttpd.conf
:
extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")
3. Redémarrez Lighttpd.
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 :
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 dans Custom Fields. Cliquez sur Apply une fois 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.
Pour que Tomcat7 restaure automatiquement l'adresse IP d'origine des visiteurs dans vos journaux d'accès et votre application, vous devez 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." suffix=".txt"pattern="%{CF-Connecting-IP}i - %h %u %t - "%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.
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.
4. Vérifiez que Trust IP addresses provided by proxies? (Faire confiance aux adresses IP fournies par des proxies) est en vert.
Description IPB4 deTrust 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_cloudflare pour restaurer l'IP des visiteurs dans vos journaux.
Si vous n'avez pas accès à votre serveur pour installer un mod tel que mod_cloudflare, alors vous pourrez peut-être modifier le noyau avec les instructions que vous trouverez ici.
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.
1. Ouvrez includes/GlobalFunctions.php.
À la ligne 370 approximativement, changez ce qui suit :
$forward = "\t(proxiedvia {$_SERVER['REMOTE_ADDR']}{$forward})";
par
$forward = "\t(proxiedvia {$_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'] ) ){
3. À la ligne 80 approximativement, recherchez :
$ipchain = array( IP::canonicalize($_SERVER['REMOTE_ADDR']) );
et remplacez-le par :
$ipchain = array( IP::canonicalize($_SERVER['HTTP_CF_CONNECTING_IP']) );
4. 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
, remplacezREMOTE_ADDR
par HTTP_CF_CONNECTING_IP
.
2. Ensuite, allez dans WebRequest.php
, aux lignes 1151 à 1159, changez REMOTE_ADDR par HTTP_CF_CONNECTING_IP.
Un utilisateur de Xenforo a créé un plugin pour Cloudflare.
Autre possibilité :
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.
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.php
Recherchez :
$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 :
$ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
3. Ouvrez :
/engine/modules/addcomments.php
Recherchez :
$_SERVER['REMOTE_ADDR'],
Remplacez par :
$_SERVER['HTTP_CF_CONNECTING_IP'],
4. Ouvrez :
/engine/modules/functions.php
Recherchez :
$_IP = $_SERVER['REMOTE_ADDR'];
Remplacez par :
$_IP = $_SERVER['HTTP_CF_CONNECTING_IP'];
5. Recherchez :
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Remplacez par :
$db_ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
6. Recherchez :
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Remplacez par :
$ip_split = explode( ".", $_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.
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_cloudflare pour Apache n'est pas nécessaire à moins que vous ne désactiviez le serveur Nginx pour certaines requêtes. Si vous ajoutez mod_cloudflare à 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.