Cloudflare: Восстанавливаем реальные IP-адреса посетителей

Когда трафик сайта направляется через сеть Cloudflare, то в логи попадает не реальный адрес пользователя, а адреса серверов Cloudflare. Фактически Cloudflare выполняет роль обратного прокси сервера.

Это связано с механизмом работы: Все запросы принимают сервера Cloudflare, если есть кешированные данные, то они их возвращают. При необходимости осуществляется блокировка запросов или роутинг.

Cloudflare proxy

Реальный адрес посетителя содержится в заголовке: CF-Connecting-IP передающийся с каждым запросом.

Актуальный список серверов Cloudflare

Актуальный список серверов можно взять по адресу: https://www.cloudflare.com/ips/

Так же можно использовать для автоматизации:

Только IPv4: https://www.cloudflare.com/ips-v4

Только IPv6: https://www.cloudflare.com/ips-v6

Настройка Apache

Для восстановления реальных адресов посетителей ранее использовался модуль Apache - mod_cloudflare, но его поддержка прекращена.

Есть стандартный модуль Apache который позволить решит эту задачу: mod_remoteip

Проверить наличие:

#httpd -M|grep remoteip_module
remoteip_module (shared)

модуль подключен, все хорошо.

Создаем файл /etc/httpd/conf.d/remoteip.conf
Со следующим содержимым:

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/12
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 131.0.72.0/22
RemoteIPTrustedProxy 2400:cb00::/32
RemoteIPTrustedProxy 2606:4700::/32
RemoteIPTrustedProxy 2803:f800::/32
RemoteIPTrustedProxy 2405:b500::/32
RemoteIPTrustedProxy 2405:8100::/32
RemoteIPTrustedProxy 2a06:98c0::/29
RemoteIPTrustedProxy 2c0f:f248::/32

после чего перезапускаем Apache

service httpd restart

Это все что требуется. Теперь сервер работает прозрачно, без необходимости что либо изменять.
если пользователи напрямую заходят на сервер или через Cloudflare мы всегда будем видеть реальный IP адрес посетителя.

Настройка Nginx

Для Nginx необходимо использовать модуль ngx_http_realip_module

В секцию server добавить следующий конфиг

set_real_ip_from 173.245.48.0/20;
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 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
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;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;

и перезапускаем NGINX

service nginx restart
(Visited 1 times, 1 visits today)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *