Hier lernen Sie, wie mod_cloudflare zur Protokollierung der ursprünglichen IP-Adresse Ihres Besuchers abhängig vom Typ Ihres Ursprungswebservers (Apache, nginx, Microsoft IIS u. a.) konfiguriert wird.
Übersicht
Cloudflare schließt die ursprüngliche Besucher-IP-Adresse in die Header X-Forwarded-For und CF-Connecting-IP ein.
- Diese Header können die Ursprungs-IP-Adresse Ihrer Besucher wiederherstellen oder sie in Ihre Protokolle einschließen.
- Der Konfigurationsvorgang hängt jedoch davon ab, welchen Webserver Sie verwenden.
Siehe Wiederherstellen von ursprünglichen Besucher-IPs: Option 1 für weitere Informationen zur Installation von mod_cloudflare.
Wiederherstellen von Besucher-IPs nach Webservertyp
Im Folgenden finden Sie Anweisungen zur Konfiguration von mod_cloudflare zur Protokollierung von ursprünglichen Besucher-IPs abhängig vom Webservertyp:
Red Hat/Fedora:
sudo yum install httpd-devel libtool gitDebian/Ubuntu:
sudo apt-get install apache2-dev libtool git
2. Klonen Sie Folgendes, um die aktuellste Version von mod_cloudflare zu erhalten:
Red Hat/Fedora/Debian/Ubuntu:
git clone https://github.com/cloudflare/mod_cloudflare.git; cd mod_cloudflare
3. Konvertieren Sie die .c-Datei mit dem Apache-Erweiterungstool in ein Modul:
Red Hat/Fedora/Debain/Ubuntu:
apxs -a -i -c mod_cloudflare.
4. Führen Sie einen Neustart durch und überprüfen Sie, ob das Modul aktiv ist:
Red Hat/Fedora:
service httpd restart; httpd -M|grep cloudflare
Debian/Ubuntu:
sudo apachectl restart; apache2ctl -M|grep cloudflare
5. Falls sich Ihr Webserver hinter einem Load Balancer befindet, fügen Sie Ihrer Apache-Konfiguration (gewöhnlich httpd.conf) die folgende Zeile hinzu und ersetzen Sie 123.123.123.123 mit der IP-Adresse Ihres Load Balancers:
IfModule cloudflare_moduleCloudFlareRemoteIPHeader X-Forwarded-ForCloudFlareRemoteIPTrustedProxy [setzen Sie die IP-Adresse Ihres Load Balancers ein]DenyAllButCloudflare/IfModule
1. Verwenden Sie das folgende Nginx-Modul und die folgenden Konfigurationsparameter:
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;
Verwenden Sie einen der folgenden zwei:
real_ip_header CF-Connecting-IP;#real_ip_header X-Forwarded-For;
Diese Liste der Präfixe muss regelmäßig aktualisiert werden. Die vollständige Liste veröffentlichen wir bei den Cloudflare-IP-Adressen.
2. Um die ursprüngliche Besucher-IP-Adresse in Ihre Protokolle einzuschließen, fügen Sie die Variablen $http_cf_connecting_ip und $http_x_forwarded_for
in der log_format
-Anweisung hinzu.
Siehe auch: Cloudflare und Nginx
1. Führen Sie das folgende Skript aus, um mod_cloudflare als Teil von EasyApache zu installieren:
bash <
(curl -s https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/EasyApache/installer.sh)
2. Bei der Installation müssen Sie Ihren Apache mit dem neuen mod_cloudflare-Plug-in neu kompilieren.
Bei Verwendung von Railgun (oder anderer Reverse-Proxy-Software wie z. B. Varnish) kommen Benutzeranfragen von Ihrem Railgun-Server anstatt von Cloudflare. Da Anfragen nicht direkt von Cloudflare kommen, stellt mod_cloudflare Besucher-IP-Adressen nicht standardmäßig wieder her.
1. Um dies zu beheben, öffnen Sie Ihre Apache-Konfiguration. Sie finden sie gewöhnlich in /etc/apache2/apache2.conf
, /etc/httpd/httpd.conf
, /usr/local/apache/conf/httpd.conf
oder abhängig von der Konfiguration an einer anderen Stelle. Wenn Sie sich nicht sicher sind, fragen Sie Ihren Hosting-Provider.
2. Ganz am Ende fügen Sie Folgendes hinzu:
CloudflareRemoteIPTrustedProxy railgun_address
Wenn sich Ihr Railgun-Server also auf 127.0.0.1 befindet, sieht das so aus:
CloudflareRemoteIPTrustedProxy 127.0.0.1
3. Wenn Sie mehr als einen Server zur Liste Ihrer vertrauenswürdigen Proxys hinzufügen müssen, können Sie das am Ende tun:
CloudflareRemoteIPTrustedProxy 127.0.0.1 127.0.0.2
Um Lighttpd die Server-IP-Adresse für die Zugriffsprotokolle und für Ihre Anwendung automatisch neu schreiben zu lassen, können Sie eine der beiden nachstehenden Lösungen verwenden.
Wenn Ihr Ursprung sich nur über IPv4 mit dem Internet verbindet:
1. Öffnen Sie Ihre lighttpd.conf
-Datei und fügen Sie mod_extforward
zur server.modules
-Liste hinzu. Es muss nach mod_accesslog
kommen, um die echte IP-Adresse in den Zugriffsprotokollen zu zeigen (z. B. http://cl.ly/9fRX
).
2. Fügen Sie den folgenden Codeblock irgendwo in der lighttpd.conf
-Datei nach der Liste der Servermodule hinzu.
$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. Starten Sie Lighttpd neu.
Wenn sich Ihr Ursprung mit IPv6 mit dem Internet verbindet:
Die Lighttpd-Dokumentation gibt an, dass das Feld $HTTP["remoteip"]
, das zur Zuordnung der Remote-IP-Bereiche erforderlich ist, nicht funktioniert, wenn IPv6 aktiviert ist. Die oben aufgeführte Methode funktioniert nicht, wenn versucht wird, IP-Bereiche weiterzuleiten.
Hier besteht eine alternative Lösung zum Weiterleiten der ursprünglichen IPv6-Adresse mit Lighttpd darin, allen Proxys zu vertrauen (von Lighttpd nicht empfohlen). Das kann wie folgt getan werden:
1. Setzen Sie mod_accesslog vor mod_extforward in der server.modules-Liste
2. Fügen Sie folgenden Zeilen zu lighttpd.conf
hinzu:
extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")
3. Start Sie Lighttpd neu.
1. Wechseln Sie zu Ihrer LiteSpeed-Webverwaltungskonsole.
2. Aktivieren Sie die Option „Use Client IP in Header in Configuration“.
3. Sobald sie aktiviert ist, zeigen Ihre Zugriffsprotokolle die korrekten IP-Adressen, und sogar PHPs $_SERVER['REMOTE_ADDR']
-Variable enthält die echte Client-IP-Adresse anstatt einer Cloudflare-IP-Adresse. Dies löst allein schon die meisten Probleme, auf die Sie treffen könnten, wenn Cloudflare auf Websites mit PHP-Aktivierung aktiviert wird (z. B. WordPress oder vBulletin installs).
Für IIS 7 – 8:
Befolgen Sie die Anweisungen hier.
Für IIS 8.5 – 10:
1. Doppelklicken Sie in IIS-Manager auf Logging im Actions-Menü der Website, auf der Sie arbeiten.
2. Wählen Sie nach dem Start W3C als Format und klicken Sie dann auf Select Fields neben dem Format-Dropdownmenü im Log File-Unterabschnitt.
3. Klicken Sie auf Add Field und fügen Sie es im Header CF-Connecting-IP hinzu.
4. Klicken Sie auf Ok. Sie sollten Ihren neuen Eintrag unter Custom Fields sehen. Klicken Sie auf Apply, wenn Sie zurück im Logging-Fenster sind.
5. Wenn die Operation erfolgreich war, sollte die Protokolldatei jetzt einen Unterstrich haben:
Sie sollten die Änderung auch in den folgenden Feldern sehen:
6. Starten Sie die Website neu, dann W3SVC, dann die gesamte Instanz, wenn sich die Änderung nicht sofort zeigt.
Damit Tomcat7 die ursprüngliche Benutzer-IP-Adresse automatisch in Ihren Zugriffsprotokollen und in Ihrer Anwendung wiederherstellt, müssen Sie %{CF-Connecting-IP}i
in Ihrem Protokollschema hinzufügen.
Zum Beispiel könnten Sie den folgenden Block zu Ihrer server.xml
-Datei hinzufügen.
<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"/>
Daraufhin würden Ihre Protokolle so aussehen:
Visitor IP - Cloudflare IP - [04/Dec/2014:23:18:15 -0500] - "GET / HTTP/1.1" - 200 - 1895 - 193d704b85200296-SJC
Sehen Sie sich dieses Drittanbieter-Tutorial zur Wiederherstellung der ursprünglichen Besucher-IP-Adresse mit Magento und Cloudflare an.
Cloudflare hat zwar diese Magento-Erweiterung nicht geschrieben, aber einige unserer Kunden fanden sie hilfreich.
Befolgen Sie diese Anweisungen, um korrekte IP-Zuordnung zu ermöglichen, wenn eine „Invision Power Board 3“-Installation durch Cloudflare ausgeführt wird:
Melden Sie sich beim ACP Ihrer IPB-Installation an:
1. Klicken Sie auf System.
2. Klicken Sie unter „Overview“ auf Security.
3. Klicken Sie unter „Security Center“ auf Security Settings.
4. Überprüfen Sie, ob Trust IP addresses provided by proxies? grün ist.
IPB4-Beschreibung von Trust IP addresses provided by proxies?
Wenn Ihre Netzwerkumgebung bedeutet, dass Anfragen durch einen Proxy (wie in einer Intranet-Situation in einem Büro oder einer Universität oder einem Servercluster mit Lastverteilung) gehandhabt werden, müssen Sie eventuell diese Einstellung aktivieren, damit die korrekte IP-Adresse verwendet wird. Bei Aktivierung kann jedoch ein böswilliger Benutzer das System missbrauchen, sodass eine falsche IP-Adresse angegeben wird. In den meisten Umgebungen sollte diese Einstellung deaktiviert bleiben.
Informationen zur Wiederherstellung der ursprünglichen Besucher-IP-Adresse mit Simple Machines (SMF) finden Sie in den Foren zu Simple Machines.
Wenn Sie einen Apache-Server verwenden, würden wir empfehlen, mod_cloudflare zu installieren, um die Besucher-IP-Adresse für Ihre Protokolle wiederherzustellen.
Wenn Sie keinen Zugang zu Ihrem Server haben, um eine mod-ähnliche mod_cloudflare zu installieren, können Sie vielleicht den Kern mit den hier aufgeführten Anweisungen ändern.
Neuere Versionen von MyBB enthalten eine Option zur Prüfung von Benutzer-IP-Adressen.
Admin CP > Configuration > Server and Optimization Options > Scrutinize User's IP address? > Yes
Alternativ können Sie das Cloudflare-Management-Plug-in installieren, das für MyBB 1.6 erhältlich ist.
MyBB 1.6.0, 1.6.1, 1.6.2, or 1.6.3
1. Navigieren Sie zu ./inc/functions.php
.
2. Gehen Sie zu Zeile 2790.
3. Ersetzen Sie:
if(isset($_SERVER['REMOTE_ADDR']))
durch:
if(isset($_SERVER['HTTP_CF_CONNECTING_IP']))
4. Ersetzen Sie dann:
$ip = $_SERVER['REMOTE_ADDR'];
durch:
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
Ein Mitglied des Vanilla-Teams hat ein Cloudflare-Plug-in für Vanilla zur Wiederherstellung der ursprünglichen Besucher-IP-Adresse in den Protokolldateien für selbstgehostete Websites geschrieben.
1. Öffnen Sie includes/GlobalFunctions.php.
Ändern Sie ungefähr in Zeile 370 Folgendes:
$forward = "\t(proxiedvia {$_SERVER['REMOTE_ADDR']}{$forward})";
zu
$forward = "\t(proxiedvia {$_SERVER['HTTP_CF_CONNECTING_IP']}{$forward})";
2. Öffnen Sie includes/ProxyTools.php
. Suchen Sie ungefähr in Zeile 79:
if ( isset( $_SERVER['REMOTE_ADDR'] ) ){
und ersetzen Sie es durch:
if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ){
3. Suchen Sie ungefähr in Zeile 80:
$ipchain = array( IP::canonicalize($_SERVER['REMOTE_ADDR']) );
und ersetzen Sie es durch:
$ipchain = array( IP::canonicalize($_SERVER['HTTP_CF_CONNECTING_IP']) );
4. Speichern Sie die Änderungen und laden Sie sie auf Ihren Ursprungswebserver hoch.
Für Versionen um 1.27.1:
1. Gehen Sie zu Zeile 1232 in GlobalFunctions.php
und ändern Sie REMOTE_ADDR
zu HTTP_CF_CONNECTING_IP
.
2. Gehen Sie dann zu WebRequest.php
und ändern Sie in Zeile 1151 bis 1159 REMOTE_ADDR zu HTTP_CF_CONNECTING_IP.
Ein Xenforo-Benutzer hat ein Plug-in für Cloudflare erstellt.
Eine andere Option:
1. Öffnen Sie library/config.php.
2. Fügen Sie am Ende Folgendes hinzu:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])){ $_SERVER['REMOTE_ADDR']= $_SERVER['HTTP_CF_CONNECTING_IP'];}
3. Laden Sie die Änderungen hoch und überschreiben Sie die alten Einstellungen.
Eine externe Partei hat ein Modul für Cloudflare und PunBB erstellt, das die ursprüngliche Besucher-IP wiederherstellt.
1. Starten Sie cherokee-admin
auf Ihrem Server.
2. Navigieren Sie zum Cherokee Administration Interface in Ihrem Webbrowser.
3. Wählen Sie den virtuellen Server für die Domain, die von Cloudflare betreut wird.
4. Aktivieren Sie auf der Registerkarte Protokollierung für Ihren gewählten virtuellen Server Weitergeleitete IPs akzeptieren.
5. Geben Sie im Feld Von Hosts akzeptieren Cloudflares IP-Adressen ein.
Sie können die IP-Adresse korrigieren, indem Sie das Feld PHP IP Server Param
in der Livezilla-Serverkonfiguration zu HTTP_CF_CONNECTING_IP
ändern.
Zur Wiederherstellung der Besucher-IP für DataLife Engine:
1. Öffnen Sie:
/engine/inc/include/functions.inc.php
Suchen Sie:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Ändern Sie es zu:
$db_ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
2. Suchen Sie:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Ändern Sie es zu:
$ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
3. Öffnen Sie:
/engine/modules/addcomments.php
Suchen Sie:
$_SERVER['REMOTE_ADDR'],
Ändern Sie es zu:
$_SERVER['HTTP_CF_CONNECTING_IP'],
4. Öffnen Sie:
/engine/modules/functions.php
Suchen Sie:
$_IP = $_SERVER['REMOTE_ADDR'];
Ändern Sie es zu:
$_IP = $_SERVER['HTTP_CF_CONNECTING_IP'];
5. Suchen Sie:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Ändern Sie es zu:
$db_ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
6. Suchen Sie:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Ändern Sie es zu:
$ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
Ein externer Entwickler hat eine Cloudflare-Erweiterung für TYPO3 erstellt, die die ursprüngliche Besucher-IP in Ihren Protokollen wiederherstellt. Mit der Erweiterung können Sie außerdem Ihren Cloudflare-Cache löschen.
Wenn Sie die Hosting-Control-Panel VestaCP verwenden, laufen gleichzeitig Nginx und Apache auf Ihrem Server. Anfragen werden durch Nginx als Proxy weitergeleitet, bevor sie Apache erreichen.
Wegen dieses Nginx-Proxys brauchen Sie die Anweisungen zur Konfiguration von Nginx, damit die echte Besucher-IP-Adresse zurückgegeben wird. Mod_cloudflare für Apache wird nur gebraucht, wenn der Nginx-Server für manche Anfragen deaktiviert wird. Wenn mod_cloudflare zu Apache hinzugefügt wird, entsteht kein Konflikt mit der Nginx-Serverkonfiguration.
Ein externer Entwickler hat ein Modul zur Wiederherstellung von Besucher-IPs mit der Bezeichnung node_cloudflare erstellt.