Cloudflare to rozwiązanie z którego sam często korzystam, ale może powodować też pewne problemy – bez dodatkowej konfiguracji webserwer może zwracać zły adres IP klienta/użytkownika strony.
Spis treści w artykule
Cloudflare i filtrowanie ich adresów IP
Jednym z problemów – poza błędnymi adresami IP w logach serwera – może być rozpoznawanie IP użytkownika w skryptach PHP. Np. taki prosty kod:
echo $_SERVER['REMOTE_ADDR'];
Normalnie zwróci IP użytkownika (oczywiście pomijam kwestie dodatkowego Proxy). Ale gdy strona będzie schowana za Cloudflare zamiast IP użytkownika skrypt wyświetli nam adres IP należący do Cloudflare.
Listę adresów IP należących do Cloudflare znajdziecie na tej stronie…
Nginx + Cloudflare
By temu zaradzić w przypadku serwera Nginx możemy skorzystać z modułu „http_realip_module”, który zapewne macie w standardzie, a dzięki któremu odfiltrujemy IP należące do Cloudflare.
Filtracja na poziomie hosta (lokalnie)
Można te kilka linijek dodać do pliku z konfiguracją vHosta, w przypadku którego chcemy uzyskać prawdziwe IP użytkowników:
# Cloudflare MyRealIP
set_real_ip_from 199.27.128.0/21;
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 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;
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;
real_ip_recursive on;
# /Cloudflare MyRealIP
W przypadku gdy korzystamy na naszym serwerze tylko z Cloudflare, można zastosować rozwiązanie dedykowane Cloudflare:
real_ip_header CF-Connecting-IP;
Gdy korzystamy (również) z innych usług tego typu lepiej skorzystać z bardziej uniwersalnego rozwiania:
real_ip_header X-Forwarded-For;
Filtracja na poziomie serwera (globalnie)
Kod możecie dodać do głównego pliku konfiguracyjnego Nginx:
/etc/nginx/nginx.conf
Ale jeszcze lepszym wyjściem będzie wykorzystanie faktu, że Nginx automatycznie „zaciąga” pliki z konfiguracją, które znajdują się w katalogu:
/etc/nginx/conf.d/
Możecie taki plik (np. cloudflare.conf) umieścić w tym katalogu ręcznie, lub skorzystać z polecenia:
sudo wget https://webinsider.pl/add/download/?link=nginx-cloudflare-ip-conf -O /etc/nginx/conf.d/nginx-cloudflare-ip.conf
Pamiętajcie by na koniec zmian (czy to ręczne, czy w formie pliku) odświeżyć ustawienia serwera:
sudo /etc/init.d/nginx configtest
sudo /etc/init.d/nginx reload
Apache2 + Cloudflare
W przypadku Apache2 możemy skorzystać z dodatkowego modułu przygotowanego przez Cloudflare, który wystarczy dodać do serwera.
Informacje jak to zrobić znajdziecie w pomocy Cloudflare, ja tylko szybko pokaże to na przykładzie systemu Debian, z którego najczęściej korzystam:
sudo apt-get install libtool apache2-dev libtool apache2-threaded-dev
wget https://www.cloudflare.com/static/misc/mod_cloudflare/mod_cloudflare.c
apxs -a -i -c mod_cloudflare.c
apxs2 -a -i -c mod_cloudflare.c
(apxs lub apxs2 – zależy od systemu, dlatego można wpisać oba polecenia)
- Home Assistant 2024.11, czyli „sekcje” domyślnym widokiem z opcją migracji, WebRTC oraz wirtualna kamera - 1970-01-01
- Black Friday w ZUS, czyli jest jeszcze kilka dni, by złożyć wniosek RWS i skorzystać z wakacji składkowych płacąc ZUS za grudzień 2024 - 1970-01-01
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01