Список сетей с которых проксирует CloudFlare https://www.cloudflare.com/ips
<?php
$cfIpRanges = [
'199.27.128.0/21',
'173.245.48.0/20',
'103.21.244.0/22',
'103.22.200.0/22',
'103.31.4.0/22',
'141.101.64.0/18',
'108.162.192.0/18',
'190.93.240.0/20',
'188.114.96.0/20',
'197.234.240.0/22',
'198.41.128.0/17',
'162.158.0.0/15',
'104.16.0.0/12',
];
$cidr_match = function ($ip, $range) {
list ($subnet, $bits) = explode('/', $range);
$ip = ip2long($ip);
$subnet = ip2long($subnet);
$mask = -1 << (32 - $bits);
$subnet &= $mask;
return ($ip & $mask) == $subnet;
};
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
foreach ($cfIpRanges as $cfIpRange) {
if ($cidr_match($_SERVER['REMOTE_ADDR'], $cfIpRange)) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
break;
}
}
}
?>