Forwarded Forは、レイヤー7のロードバランサーやプロキシサーバーを経由してウェブサーバーに接続するクライアントの発信元IPアドレスを特定するための事実上の標準である。
フォワード・フォア出力
オプション
|
説明
|
オフ
|
ADCはForwarded-Forヘッダーを変更しない。
|
アドレスとポートの追加
|
この選択により、ADCに接続されているデバイスまたはクライアントのIPアドレスとポートが、Forwarded-Forヘッダーに追加される。
|
アドレスの追加
|
この選択により、ADCに接続されているデバイスまたはクライアントのIPアドレスが、Forwarded-Forヘッダーに追加される。
|
アドレスとポートの置換
|
この選択は、Forwarded-Forヘッダーの値を、ADCに接続されたデバイスまたはクライアントのIPアドレスとポートに置き換えます。
|
アドレスの置換
|
この選択は、Forwarded-Forヘッダーの値を、ADCに接続されているデバイスまたはクライアントのIPアドレスに置き換える。
|
転送用ヘッダー
このフィールドでは、Forwarded-Forヘッダーに与えられる名前を指定できる。通常、これは "X-Forwarded-For "ですが、環境によっては変更されるかもしれません。
IISの高度なログ - カスタムログ
IIS Advanced logging 64-bitアプリをインストールすると、X-Forwarded-For情報を取得できます。ダウンロードしたら、以下の設定でX-Forwarded-Forというカスタムロギングフィールドを作成します。
カテゴリ]リストから[ソースタイプ]リストから[デフォルト]を選択し、[ソース名]ボックスで[要求ヘッダー]を選択し、「X-Forwarded-For」と入力する。
HTTP://www.iis.net/learn/extensions/advanced-logging-module/advanced-logging-for-iis-custom-logging
Apache HTTPd.confの変更
X-Forwarded-ForクライアントIPアドレス、またはX-Forwarded-Forヘッダーが存在しない場合は実際のクライアントIPアドレスをログに記録するために、デフォルトのフォーマットにいくつかの変更を加えたくなるでしょう。
変更点は以下の通り:
タイプ
|
価値
|
ログフォーマット:
|
"%h %l %u %t \"%r" %>s %b \"%{Referer}i"\"%{ユーザエージェント}i"" combined
|
ログフォーマット:
|
"%{X-Forwarded-For}i %l %u %t ¦"%r" %>s %b ¦"%{Referer}i"。\"%{User-Agent}i"" proxy SetEnvIf X- Forwarded-For "^.*.
|
カスタムログ
|
"logs/access_log "を組み合わせたenv=!forwarded
|
カスタムログ
|
「logs/access_log "プロキシenv=forwarded
|
この書式は、環境変数に基づいた条件付きロギングのApacheの組み込みサポートを利用します。
行目は、デフォルトの標準的な複合ログのフォーマット文字列である。
2行目は、%h(リモートホスト)フィールドをX-Forwarded-Forヘッダーから取り出した値で置き換え、このログファイルパターンの名前を "proxy "に設定する。
行目は環境変数 "forwarded "の設定で、IPアドレスにマッチする緩い正規表現を含んでいる。
また、3行目はこうも読める:「X-Forwarded-For値があれば、それを使いなさい。
4行目と5行目は、どのログパターンを使うかを Apacheに指示する。X-Forwarded-For値が存在する場合は "proxy "パターンを使い、そうでない場合はリクエストに対して "combined "パターンを使います。読みやすくするために、4 行目と 5 行目は Apache の rotate logs (piped) ログ機能を利用していませんが、ほとんどすべての人が使っていると仮定します。
これらの変更により、リクエストごとにIPアドレスが記録されることになる。