Saiba como configurar o mod_cloudflare para registrar o endereço IP original do seu visitante com base no seu tipo de servidor de origem (incluindo Apache, nginx, Microsoft IIS e outros).
Visão geral
A Cloudflare inclui o endereço IP do visitante original nos cabeçalhos X-Forwarded-For e CF-Connecting-IP.
- Esses cabeçalhos são capazes de restaurar o IP de origem dos visitantes ou incluí-los em seus logs.
- No entanto, o processo de configuração depende do servidor da internet que você estiver usando.
Consulte Como restaurar IPs de visitantes: opção 1 para mais informações sobre como instalar o mod_cloudflare.
Como restaurar IPs de visitantes por tipo de servidor web
Veja abaixo as instruções sobre como configurar o mod_cloudflare para registrar em log os IPs originais dos visitantes com base no tipo de seu servidor da internet:
Red Hat/Fedora:
sudo yum install httpd-devel libtool gitDebian/Ubuntu:
sudo apt-apt install apache2-dev libtool git
2. Clone o seguinte para a compilação mais recente do mod_cloudflare:
Red Hat/Fedora/Debian/Ubuntu:
git clone https://github.com/cloudflare/mod_cloudflare.git; cd mod_cloudflare
3. Use a ferramenta de extensão do Apache para converter o arquivo .c em um módulo:
Red Hat/Fedora/Debain/Ubuntu:
apxs -a -i -c mod_cloudflare.c
4. Reinicialize e verifique se o módulo está ativo:
Red Hat/Fedora:
service httpd restart; httpd -M|grep cloudflare
Debian/Ubuntu:
sudo apachectl restart; apache2ctl -M|grep cloudflare
5. Se o servidor da internet estiver por trás de um load balancer, adicione a seguinte linha à sua configuração do Apache (geralmente httpd.conf) e substitua 123.123.123.123 pelo endereço IP do seu load balancer:
IfModule cloudflare_module CloudFlareRemoteIPHeader X-Forwarded-For CloudFlareRemoteIPTrustedProxy [insira o endereço IP do seu load balancer], DenyAllButCloudFlare /IfModule
1. Use o seguinte módulo Nginx e os seguintes parâmetros de configuração:
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;
use um dos dois seguintes
real_ip_header CF-Connecting-IP; #real_ip_header X-Forwarded-For;
Essa lista de prefixos precisa ser atualizada regularmente e publicamos a lista completa em endereços IP da Cloudflare.
2. Para incluir o IP do visitante original em seus logs, adicione as variáveis $ http_cf_connecting_ip e $http_x_forwarded_for
na diretiva log_format
.
Consulte também: Cloudflare e Nginx
1. Execute o seguinte script para instalar o mod_cloudflare como parte do EasyApache:
bash <
(curl -s https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/EasyApache/installer.sh)
2. Após a instalação, você precisará recompilar seu Apache com o novo plugin mod_cloudflare.
Ao usar o Railgun (ou outro software de proxy reverso, como o Varnish), as solicitações do usuário virão do seu servidor de Railgun e não da Cloudflare. Devido ao fato de que as solicitações não virão diretamente da Cloudflare, o mod_cloudflare não irá restaurar os endereços IP dos visitantes por padrão.
1. Para corrigir isso, abra sua configuração do Apache, que de modo geral pode ser encontrada em /etc/apache2/apache2.conf
, /etc/httpd/httpd.conf
, /usr/local/apache/conf/httpd.conf
ou outro local, dependendo da configuração. Se você não tiver certeza, pergunte ao seu provedor de hospedagem.
2. No final, adicione:
CloudflareRemoteIPTrustedProxy railgun_address
Portanto, se estiver localizado em 127.0.0.1, seu servidor de Railgun se parecerá com o seguinte:
CloudflareRemoteIPTrustedProxy 127.0.0.1
3. Se você tiver mais de um servidor para adicionar à lista de proxies confiáveis, poderá adicioná-los no final:
CloudflareRemoteIPTrustedProxy 127.0.0.1 127.0.0.2
Para que o Lighttpd registre automaticamente o IP do servidor para os logs de acesso e para a sua aplicação, você pode seguir uma das duas soluções abaixo.
Se o seu servidor de origem se conectar à internet apenas via IPv4:
1. Abra o arquivo lighttpd.conf
e adicione mod_extforward
à lista de server.modules
. Isso deve vir após o mod_accesslog
para mostrar o IP real nos logs de acesso (por exemplo, http://cl.ly/9fRX
).
2. Adicione o seguinte bloco de código em qualquer lugar do arquivo lighttpd.conf
após a lista de módulos do 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. Reinicie o Lighttpd.
Se o seu servidor de origem se conectar à internet via IPv6:
A documentação do Lighttpd afirma que o campo $HTTP["remoteip"]
, necessário para se equiparar às faixas de IPs remotos, não funciona quando o IPv6 está ativado. O uso do método acima não funcionará se você tentar redirecionar faixas de IP.
Aqui, uma solução alternativa para redirecionar o endereço IPv6 original usando o Lighttpd é confiar em todos os proxies (não recomendado pelo Lighttpd). Isso pode ser feito das seguintes maneiras:
1. Configurando o mod_accesslog antes de mod_extforward na lista de server.modules
2. Adicionando as seguintes linhas ao lighttpd.conf
:
extforward.forwarder = ( "all" => "trust" ) extforward.headers = ("CF-Connecting-IP")
3. Reinicie o Lighttpd.
1. Acesse o seu Web Admin Console do LiteSpeed.
2. Habilite a opção Use Client IP no Cabeçalho, em Configuração.
3. Uma vez ativada, seus logs de acesso passarão a mostrar os endereços IP corretos, e até a variável $_SERVER['REMOTE_ADDR']
do PHP conterá o endereço IP real do cliente, ao invés de um endereço IP da Cloudflare, o que por si só resolverá a maioria problemas que você poderia encontrar ao ativar a Cloudflare em sites habilitados para PHP (como instalações do WordPress ou vBulletin).
Para o IIS 7 - 8:
Siga as instruções aqui.
Para o IIS 8.5 - 10:
1. No Gerenciador do IIS, clique duas vezes em Logging no menu Actions do site no qual você está trabalhando.
2. Após ter lançado isso, selecione W3C como formato e clique em Select Fields ao lado do menu suspenso de formatação, na subseção Log File.
3. Clique em Add Field e adicione ao cabeçalho CF-Connecting-IP.
4. Clique em Ok. Você deverá ver sua nova entrada refletida em Custom Fields . Clique em Apply quando voltar à janela de Logging.
5. Se o procedimento for bem-sucedido, o arquivo de log agora deve ter um sublinhado:
Você deverá também ver a alteração nos campos:
6. Reinicie o site, em seguida o W3SVC e, a seguir, a instância inteira, se a alteração não for refletida imediatamente.
Para que o Tomcat7 restaure automaticamente o IP do visitante original nos seus logs de acesso e aplicação, você precisará adicionar %{{CF-Connecting-IP}}i
ao seu esquema de log.
Como exemplo, você pode adicionar o bloco abaixo ao seu arquivo 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"/>
O que, como resultado, faria seus logs se parecerem com o seguinte:
IP do visitante — IP da Cloudflare — [04/Dec/2014:23:18:15 -0500] - "GET / HTTP/1.1" - 200 - 1895 - 193d704b85200296-SJC
Assista a esse tutorial de terceiros sobre como restaurar IPs de visitantes com o Magento e a Cloudflare.
Da mesma forma, a Cloudflare não escreveu essa extensão Magento, mas alguns de nossos clientes a acharam útil.
Para habilitar a equiparação correta do IP ao executar uma instalação do Invision Power Board 3 por meio da Cloudflare, siga essas instruções:
Faça login no ACP da sua instalação de IPB.
1. Clique em Sistema.
2. Na guia Visão Geral, clique em Segurança.
3. Na Central de segurança, clique em Configurações de segurança.
4. Verifique se Trust IP addresses provided by proxies? (Confiar nos endereços IP fornecidos pelos proxies?) está verde.
Descrição do IPB4 para Trust IP addresses provided by proxies?
Se o seu ambiente de rede significa que as solicitações são tratadas por meio de um proxy (como em uma situação de intranet em um escritório ou universidade ou em um cluster de servidores com carga balanceada), talvez seja necessário habilitar essa configuração para que o endereço IP correto seja usado. Quando estiver habilitada, no entanto, um usuário mal-intencionado poderá abusar do sistema para fornecer um endereço IP falso. Na maioria dos ambientes, essa configuração deve ser deixada desativada.
Informações sobre como restaurar IPs de visitantes com Simple Machines (SMF) podem ser encontradas no Simple Machines Forum.
Se você estiver usando um servidor Apache, recomendamos instalar o mod_cloudflare para restaurar o IP do visitante de volta para os seus logs.
Se não tiver acesso ao seu servidor para instalar um mod como o mod_cloudflare, você talvez possa modificar o núcleo com as instruções encontradas aqui.
As versões mais recentes do MyBB incluem uma opção de Scrutinize User do endereço IP (examinar o usuário).
CP Admin > Configuração > Opções de servidor e de otimização > Examinar o endereço IP do usuário? > Sim
Alternativamente, você pode instalar o plug-in de gerenciamento da Cloudflare disponível para o MyBB 1.6.
MyBB 1.6.0, 1.6.1, 1.6.2, or 1.6.3
1. Navegue até ./inc/functions.php
.
2. Vá para a linha 2790.
3. Substitua:
if(isset($_SERVER['REMOTE_ADDR']))
Por:
if(isset($_SERVER['HTTP_CF_CONNECTING_IP']))
4. Em seguida, substitua:
$ip = $_SERVER['REMOTE_ADDR'];
Por:
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
Um membro da equipe do Vanilla criou um plug-in da Cloudflare para o Vanilla para restaurar o IP do visitante original nos arquivos de log para sites auto-hospedados.
1. Abra includes/GlobalFunctions.php.
Aproximadamente na linha 370, altere o seguinte:
$forward = "\t(proxied via {$_SERVER['REMOTE_ADDR']}{$forward})";
TO
$forward = "\t(proxied via {$_SERVER['HTTP_CF_CONNECTING_IP']}{$forward})";
2. Abra includes/ProxyTools.php
. Aproximadamente na linha 79, localize:
if ( isset( $_SERVER['REMOTE_ADDR'] ) ){
e substitua por:
if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ){
3. Encontre aproximadamente na linha 80:
$ipchain = array( IP::canonicalize($_SERVER['REMOTE_ADDR']) );
e substitua por:
$ipchain = array( IP::canonicalize($_SERVER['HTTP_CF_CONNECTING_IP']) );
4. Salve e carregue no seu servidor de origem.
Para versões em torno de 1.27.1:
1. Vá para a linha 1232 em GlobalFunctions.php
, altere REMOTE_ADDR
para HTTP_CF_CONNECTING_IP
.
2. Em seguida, vá para WebRequest.php
, nas linhas 1151 a 1159, e altere REMOTE_ADDR para HTTP_CF_CONNECTING_IP.
Um usuário do Xenforo criou um plugin para a Cloudflare.
Outra opção:
1. Abra library/config.php.
2. No final, adicione:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];}
3. Carregue e substitua o arquivo.
Uma pessoa externa criou um módulo para a Cloudflare e o PunBB que irá restaurar o IP original do visitante.
1. Inicie o cherokee-admin
no seu servidor.
2. Navegue até a interface de administração do Cherokee no seu navegador web.
3. Selecione o Virtual Server para o domínio que está sendo atendido pela Cloudflare.
4. Na guia Logging do servidor virtual selecionado, ative Accept Forwarded IPs (Aceite IPs redirecionados).
5. Na guia Accept da caixa de Hosts, digite os endereços IP da Cloudflare.
Você pode corrigir o endereço IP alterando o campo PHP IP Server Param
na configuração do servidor do Livezilla para HTTP_CF_CONNECTING_IP.
Para restaurar o IP do visitante no DataLife Engine:
1. Abra:
/engine/inc/include/functions.inc.php
Localize:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:
$db_ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
2. Localize:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:
$ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
3. Abra:
/engine/modules/addcomments.php
Localize:
$_SERVER['REMOTE_ADDR'],
Altere para:
$_SERVER['HTTP_CF_CONNECTING_IP'],
4. Abra:
/engine/modules/functions.php
Localize:
$_IP = $_SERVER['REMOTE_ADDR'];
Altere para:
$_IP = $_SERVER['HTTP_CF_CONNECTING_IP'];
5. Localize:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:
$db_ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
6. Localize:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:
$ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
Um desenvolvedor externo criou uma extensão da Cloudflare para TYPO3 que irá restaurar o IP do visitante original para os seus logs. A extensão também lhe permitirá limpar seu cache da Cloudflare.
Se estiver usando o painel de controle de hospedagem do VestaCP, você terá tanto o Nginx quanto o Apache em execução no servidor. As solicitações são enviadas por proxy por meio do Nginx antes de ir para o Apache.
Devido a esse proxy do Nginx, você na verdade precisa das instruções para configurar o Nginx para retornar o endereço IP do visitante real. O Mod_cloudflare para Apache não é necessário, a menos que você desative o servidor Nginx para algumas solicitações. Adicionar o mod_cloudflare ao Apache não entrará em conflito com a configuração do servidor Nginx.
Um desenvolvedor externo criou um módulo para restaurar o IP do visitante chamado node_cloudflare.