Conoce cómo configurar mod_cloudflare para registrar la dirección IP original de tu visitante en función de tu servidor web de origen (incluye Apache, nginx, Microsoft IIS y otros).
Descripción
Cloudflare incluye la dirección IP original del visitante en los encabezados X-Forwarded-For y CF-Connecting-IP.
- Estos encabezados pueden restaurar la IP de origen de tus visitantes o incluirlas en tus registros.
- Sin embargo, el proceso de configuración depende de los servidores web que estás usando.
Consulta Cómo restablecer las IP originales del visitante: Opción 1 para obtener más información sobre cómo instalar mod_cloudflare.
Cómo restaurar las IP del visitante por tipo de servidor web
Ver las instrucciones a continuación para ver cómo configurar mod_cloudflare para registrar las IP originales del visitante en tu tipo de servidor web:
Red Hat/Fedora:
sudo yum install httpd-devel libtool gitDebian/Ubuntu:
sudo apt-get install apache2-dev libtool git
2. Clona lo que se incluye a continuación para la compilación más reciente de mod_cloudflare:
Red Hat/Fedora/Debian/Ubuntu:
git clone https://github.com/cloudflare/mod_cloudflare.git; cd mod_cloudflare
3. Utiliza la herramienta de extensión de Apache para convertir el archivo .c en un módulo:
Red Hat/Fedora/Debain/Ubuntu:
apxs -a -i -c mod_cloudflare.
4. Reinicia y verifica que el módulo esté activado:
Red Hat/Fedora:
service httpd restart; httpd -M|grep cloudflare
Debian/Ubuntu:
sudo apachectl restart; apache2ctl -M|grep cloudflare
5. Si el servidor web está detrás de un load balancer, agrega la siguiente línea a tu configuración de Apache (por lo general, httpd.conf) y reemplaza 123.123.123.123 por la dirección IP de tu load balancer:
IfModule cloudflare_moduleCloudFlareRemoteIPHeader X-Forwarded-ForCloudFlareRemoteIPTrustedProxy [insert your load balancer’s IP address]DenyAllButCloudFlare/IfModule
1. Utiliza el siguiente módulo Nginx y los parámetros de configuración siguientes:
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;
utiliza cualquiera de los dos
real_ip_header CF-Connecting-IP;#real_ip_header X-Forwarded-For;
Esa lista de prefijos debe actualizarse con regularidad. La lista completa se publica en Direcciones IP de Cloudflare.
2. Para incluir las IP originales del visitante en tus registros, agrega las variables $http_cf_connecting_ip and $http_x_forwarded_for
en la directiva log_format
.
Consulta también: Cloudflare y Nginx
1. Ejecuta el siguiente script para instalar mod_cloudflare como parte de EasyApache:
bash <
(curl -s https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/EasyApache/installer.sh)
2. Tras la instalación, deberás volver a compilar tu Apache con el nuevo complemento de mod_cloud.
Al usar Railgun (u otro software de proxy inverso, como Varnish) las solicitudes del usuario vendrán del servidor Railgun en lugar de hacerlo desde Cloudflare. Como las solicitudes no vienen directamente desde Cloudflare, mod_cloudlare no restaurará las direcciones IP del visitante de forma predeterminada.
1. Para solucionar esto, abre tu configuración Apache.Por lo general, puedes encontrarla en /etc/apache2/apache2.conf
, /etc/httpd/httpd.conf
, /usr/local/apache/conf/httpd.conf
o en otra ubicación, según la configuración. Si tienes dudas, pregunta a tu proveedor de alojamiento.
2. Al final, agrega:
CloudflareRemoteIPTrustedProxy railgun_address
Por lo tanto, si tu servidor Railgun está ubicado en 127.0.0.1, será como se muestra a continuación:
CloudflareRemoteIPTrustedProxy 127.0.0.1
3. Si tienes más de un servidor para agregar a la lista de proxies de confianza, puedes agregarlos al final:
CloudflareRemoteIPTrustedProxy 127.0.0.1 127.0.0.2
Para que Lighttpd reescriba de manera automática la lP del servidor para los registros de acceso y tu aplicación, puedes aplicar una de las dos soluciones que se muestran a continuación.
Si tu origen solo se conecta a Internet a través de IPv4:
1. Abre tu archivo lighttpd.conf
y agrega mod_extforward
a la lista server.modules
. Debe estar después de mod_accesslog
para mostrar las IP reales (p. ej., http://cl.ly/9fRX
).
2. Agrega el siguiente bloqueo de código en el archivo lighttpd.conf
después de la lista de módulos del servidor.
$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. Reinicia Lighttpd.
Si tu origen se conecta a Internet con IPv6:
La documentación de Lighttpd establece que el campo, $HTTP["remoteip"]
, que se requiere para la compatibilidad de los rangos de IP remotos, no funciona cuando IPv6 está desactivada. El método anterior no funcionará al intentar la redirección de los rangos de IP.
Aquí, una solución alternativa para redireccionar la dirección IPv6 original mediante Lighttpd es confiar en todos los servidores proxy (no recomendada por Lighttpd). Esto puede hacerse del siguiente modo:
1. Configurar mod_accesslog antes de mod_extforward en la server.modules list
2. Agregar las siguientes líneas a lighttpd.conf
:
extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")
3. Reiniciar Lighttpd.
1. Ir a tu consola LiteSpeed Web Admin.
2. Activar la opción Use Client IP (usar IP del cliente) en el encabezado en la configuración.
3. Una vez activada, tus registros de acceso mostrarán las direcciones IP correctas, e incluso la variable $_SERVER['REMOTE_ADDR']
de PHP contendrá la dirección IP real del cliente, en lugar de una dirección IP de Cloudflare, que en sí misma resolverá la mayoría de los problemas que puedes encontrar al activar Cloudflare en los sitios web activados por PHP (como las instalaciones de WordPress o vBulletin).
Para IIS 7 - 8:
Sigue las instrucciones que se encuentran aquí.
Para IIS 8.5 - 10:
1. En IIS Manager, haz doble clic en Logging (Registro) en el menú Actions (Acciones) del sitio en el que operas.
2. Después de la ejecución, selecciona el formato W3C y luego haz clic en Select Fields (Seleccionar campos), junto al menú desplegable de formato en la subsección Log File (Archivo de registro).
3. Haz clic en Add Field (Agregar campo) y agrega en el encabezado CF-Connecting-IP .
4. Haz clic en Ok (Aceptar). Deberías ver tu nueva entrada reflejada en Custom Fields (Campos personalizados). Haz clic en Apply (Solicitar) cuando regreses a la ventana Logging (Registro).
5. Si con esto se soluciona, el archivo de registro ahora tendrá un guión bajo:
También debes visualizar el cambio en los campos:
6. Reinicia el sitio, luego W3SVC, y por último la instancia completa si el cambio no se refleja de inmediato.
Para que Tomcat7 restaure automáticamente la IP original del visitante a tus registros y aplicación de acceso, deberás agregar %{CF-Connecting-IP}i
a tu esquema de registro.
A modo de ejemplo, puedes agregar el bloqueo que se encuentra a continuación a tu archivo 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"/>
Lo que hará que tus registros se visualicen de la siguiente manera:
Visitor IP - Cloudflare IP - [04/Dec/2014:23:18:15 -0500] - "GET / HTTP/1.1" - 200 - 1895 - 193d704b85200296-SJC
Consulta este tutorial de un tercero proveedor para ver cómo restaurar la IP original del visitante con Magento y Cloudflare.
De igual modo, Cloudflare no escribió esta extensión de Magento, pero a algunos de nuestros clientes les resultó útil.
Para activar la compatibilidad de IP correcta al ejecutar la instalación de Invision Power Board 3 a través de Cloudflare, sigue estas instrucciones:
Inicia sesión en la ACP de la instalación de IPB.
1. Haz clic en System (Sistema)
2. En Overview (Descripción), haz clic en Security (Seguridad).
3. En Security Center (Centro de seguridad), haz clic en Security Settings (Configuraciones de seguridad).
4. Verifica que Trust IP addresses provided by proxies? (¿Confías en las direcciones IP que proporcionan los servidores proxy?) esté verde.
Descripción de IPB4 de Trust IP addresses provided by proxies? (¿Confías en las direcciones IP que proporcionan los servidores proxy?)
Si tu entorno de red implica que las solicitudes se gestionan a través de un servidor proxy (como una intranet en una oficina o universidad, o en un clúster de servidores de carga equilibrada), es posible que necesites activar esta configuración para que se utilice la dirección IP correcta. Sin embargo, cuando está activada, un usuario malicioso puede abusar del sistema para proporcionar una dirección IP falsa. En la mayoría de los entornos, esta configuración debe estar desactivada.
La información para restaurar la IP original del visitante con Simple Machines (SMF) se puede encontrar en Simple Machines Forum.
Si utilizas un servidor Apache, recomendamos instalar mod_cloudflare para restaurar la IP del visitante en tus registros.
Si no tienes acceso a tu servidor para instalar una modificación como mod_cloudflare, puedes modificar el núcleo siguiendo las instrucciones que se encuentran aquí.
Las versiones más recientes de MyBB incluyen una opción de dirección IP de usuario para analizar.
Admin CP > Configuration > Server and Optimization Options > Scrutinize User's IP address? > Yes
Como alternativa, puedes instalar el complemento de gestión de Cloudflare disponible para MyBB 1.6.
MyBB 1.6.0, 1.6.1, 1.6.2, o 1.6.3
1. Ve a ./inc/functions.php
.
2. Dirígete a la línea 2790.
3. Reemplaza:
if(isset($_SERVER['REMOTE_ADDR']))
por
if(isset($_SERVER['HTTP_CF_CONNECTING_IP']))
4. Luego, reemplaza:
$ip = $_SERVER['REMOTE_ADDR'];
por
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
Un miembro del equipo de Vanilla ha escrito un complemento de Cloudflare para Vanilla para restaurar la dirección IP original del visitante a los archivos de registro para los sitios autoalojados.
1. Abre includes/GlobalFunctions.php.
Aproximadamente en la línea 370, cambia lo siguiente:
$forward = "\t(proxiedvia {$_SERVER['REMOTE_ADDR']}{$forward})";
a
$forward = "\t(proxiedvia {$_SERVER['HTTP_CF_CONNECTING_IP']}{$forward})";
2. Abre includes/ProxyTools.php
. Aproximadamente en la línea 79, busca:
if ( isset( $_SERVER['REMOTE_ADDR'] ) ){
y reemplaza por:
if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ){
3. Aproximadamente en la línea 80, busca:
$ipchain = array( IP::canonicalize($_SERVER['REMOTE_ADDR']) );
y reemplaza por:
$ipchain = array( IP::canonicalize($_SERVER['HTTP_CF_CONNECTING_IP']) );
4. Guarda y carga en tu servidor web de origen.
Cuatro versiones en torno a la 1.27.1:
1. Ve a la línea 1232 en GlobalFunctions.php
, cambia REMOTE_ADDR
por HTTP_CF_CONNECTING_IP
.
2. Luego, ve a WebRequest.php
, en las líneas 1151 a 1159, cambia REMOTE_ADDR to HTTP_CF_CONNECTING_IP.
Un usuario de Xenforo creó un complemento para Cloudflare.
Otra opción:
1. Abre library/config.php.
2. Al final, agrega:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])){ $_SERVER['REMOTE_ADDR']= $_SERVER['HTTP_CF_CONNECTING_IP'];}
3. Carga y sobrescribe.
Un tercero proveedor creó un módulo para Cloudflare y PunBB que restaurará la dirección IP original del visitante.
1. Descarga cherokee-admin
en tu servidor.
2. Ve a la interfaz de administración de Cherokee en tu navegador web.
3. Selecciona el servidor virtual para el dominio al que presta servicio Cloudflare.
4. En la pestaña Logging (Registro) para el servidor virtual seleccionado, activa Accept Forwarded IPs (Aceptar IP enviadas).
5. En el casillero Accept from Hosts (Aceptar de los host), ingresa las direcciones IP de Cloudflare.
Puedes corregir la dirección IP cambiando el campo PHP IP Server Param
en la configuración del servidor Livezilla a HTTP_CF_CONNECTING_IP.
Para restablecer la IP del visitante a DataLife Engine:
1. Abre:
/engine/inc/include/functions.inc.php
Busca:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Cambia a:
$db_ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
2. Busca:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Cambia a:
$ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
3. Abre:
/engine/modules/addcomments.php
Busca:
$_SERVER['REMOTE_ADDR'],
Cambia a:
$_SERVER['HTTP_CF_CONNECTING_IP'],
4. Abre:
/engine/modules/functions.php
Busca:
$_IP = $_SERVER['REMOTE_ADDR'];
Cambia a:
$_IP = $_SERVER['HTTP_CF_CONNECTING_IP'];
5. Busca:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Cambia a:
$db_ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
6. Busca:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Cambia a:
$ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
Un desarrollador externo ha creado una extensión de Cloudflare para TYPO3 que restablecerá la IP original del visitante en tus registros. La extensión también te permitirá limpiar tu memoria caché de Cloudflare.
Si utilizas el panel de control de alojamiento de VestaCP, tanto Nginx como Apache funcionan en tu servidor. Las solicitudes se redirigen mediante proxy a través de Nginx antes de dirigirse a Apache.
Debido al proxy Nginx, en realidad necesitas las instrucciones para configurar Nginx para restituir la verdadera dirección IP del visitante. No se necesita Mod_cloudflare para Apache, salvo que deshabilites el servidor Nginx para algunas solicitudes. Agregar mod_cloudflare a Apache no generará conflicto con la configuración del servidor Nginx.
Un desarrollador externo ha creado un módulo para restablecer la IP del visitante que se denomina node_cloudflare.