Forwarded For ist der De-facto-Standard zur Identifizierung der ursprünglichen IP-Adresse eines Clients, der sich über Layer-7-Load-Balancer und Proxy-Server mit einem Webserver verbindet.
Weitergeleitet-für Ausgang
Option
|
Beschreibung
|
Aus
|
Die OEZA ändert den Forwarded-For-Header nicht.
|
Adresse und Anschluss hinzufügen
|
Mit dieser Option werden die IP-Adresse und der Port des mit dem ADC verbundenen Geräts oder Clients an den Forwarded-For-Header angehängt.
|
Adresse hinzufügen
|
Mit dieser Option wird die IP-Adresse des mit dem ADC verbundenen Geräts oder Clients an den Forwarded-For-Header angehängt.
|
Ersetzen Sie Adresse und Anschluss
|
Bei dieser Option wird der Wert des Forwarded-For-Headers durch die IP-Adresse und den Port des mit dem ADC verbundenen Geräts oder Clients ersetzt.
|
Adresse austauschen
|
Mit dieser Option wird der Wert des Forwarded-For-Headers durch die IP-Adresse des mit der ADC verbundenen Geräts oder Clients ersetzt.
|
Weitergeleitet-für-Kopfzeile
In diesem Feld können Sie den Namen für den Forwarded-For-Header angeben. Normalerweise ist dies "X-Forwarded-For", kann aber in manchen Umgebungen geändert werden.
Erweiterte Protokollierung für IIS - Benutzerdefinierte Protokollierung
Sie können die X-Forwarded-For-Informationen erhalten, indem Sie die IIS Advanced Logging 64-bit App installieren. Erstellen Sie nach dem Herunterladen ein benutzerdefiniertes Protokollierungsfeld namens X-Forwarded-For mit den unten aufgeführten Einstellungen.
Wählen Sie Standard aus der Liste Quellentyp aus der Liste Kategorie, wählen Sie Anforderungskopf im Feld Quellenname und geben Sie X-Forwarded-For ein.
HTTP://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-custom-logging
Änderungen an der Apache HTTPd.conf
Sie werden einige Änderungen am Standardformat vornehmen wollen, um die X-Forwarded-For-Client-IP-Adresse oder die tatsächliche Client-IP-Adresse zu protokollieren, wenn der X-Forwarded-For-Header nicht existiert.
Diese Änderungen sind unten aufgeführt:
Typ
|
Wert
|
LogFormat:
|
"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{Benutzer-Agent}i\"" kombiniert
|
LogFormat:
|
"%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{Benutzer-Agent}i\"" proxy SetEnvIf X- Forwarded-For "^.*\..*\..*\..*" forwarded
|
CustomLog:
|
"logs/access_log" combined env=!forwarded
|
CustomLog:
|
"logs/access_log" proxy env=forwarded
|
Dieses Format macht sich die eingebaute Unterstützung des Apache für die bedingte Protokollierung auf der Grundlage von Umgebungsvariablen zunutze.
Zeile 1 ist die standardmäßige kombinierte, für das Protokoll formatierte Zeichenfolge aus der Voreinstellung.
In Zeile 2 wird das Feld %h (Remote Host) durch den/die Wert(e) aus der Kopfzeile X-Forwarded-For ersetzt und der Name dieses Protokolldateimusters auf "proxy" gesetzt.
Zeile 3 ist eine Einstellung für die Umgebungsvariable "forwarded", die einen losen regulären Ausdruck enthält, der auf eine IP-Adresse passt, was in diesem Fall in Ordnung ist, da wir uns mehr darum kümmern, ob eine IP-Adresse im X-Forwarded-For-Header vorhanden ist.
Außerdem könnte Zeile 3 wie folgt lauten: "Wenn es einen X-Forwarded-For-Wert gibt, verwenden Sie ihn."
In den Zeilen 4 und 5 wird dem Apache mitgeteilt, welches Protokollmuster er verwenden soll. Wenn ein X-Forwarded-For-Wert existiert, wird das "proxy"-Muster verwendet, andernfalls das "combined"-Muster für die Anfrage. Aus Gründen der Lesbarkeit machen die Zeilen 4 und 5 keinen Gebrauch von der Apache-Protokollierungsfunktion "rotate logs" (piped), aber wir gehen davon aus, dass fast jeder sie verwendet.
Diese Änderungen führen dazu, dass für jede Anfrage eine IP-Adresse protokolliert wird.