“X-Forwarded-For” ヘッダーを IISログに出力したい!


こんにちは。

日本マイクロソフト、IIS サポートの鈴木です。

今回は、お問い合わせの多い、HTTP の拡張ヘッダー " X-forwarded-For " をログに出力する方法をご紹介します。

 

X-Forwarded-For (XFF) は、HTTPヘッダーフィールドの一つです。

HTTPプロキシサーバー、または、負荷分散装置(ロードバランサ)を経由して、ウェブサーバーに接続するクライアントの送信元IPアドレスを特定する際に使用されます。

 

イメージはこんな感じです。

 

" X-Forwarded-For " の ログ出力方法

" X-Forwarded-For " をログに出力するには、以下の方法があります。

1. Advanced Logging IIS 7.0 以降

2. Enhanced Logging IIS 8.5 以降

3. ARR Helper IIS 7.0 以降

4. サードパーティ製の ISAPI フィルター(F5XForwardedFor)

 

<<お選びいただく際のポイント>>

IISのバージョンによって、お使いいただける機能が異なります。

Windows Server 2012 R2 (IIS 8.5) 以降をご利用であれば、標準機能として搭載されている 2. Enhanced Logging をお使いいただく事をお勧めします。

IISログにフィールドを追加していただくのみなので、設定も軽微で、可読性も高いと思います。

 

それ以前のバージョンをお使いの場合は、以下のそれぞれのメリット・デメリットを考慮いただき、お選びください。

1. Advanced Logging

"X-Forwarded-For "以外にも、独自のログ記録モジュールを実装したり、既存のログ記録オプションを拡張したり置き換える事が可能です。

ただし、出力先ファイルは、IIS ログとは別ファイルになります。

 

3. ARR Helper、及び、4. サードパーティ製の ISAPI フィルター

IISログの"c-ip" フィールドをクライアントのIPアドレスに置き換えることが可能なため、可読性は高くなると思います。

ただし、3. ARR Helperは、コミュニティでのサポートのみ、4. サードパーティ製の ISAPI フィルターは、サポート対象外となります。

 

それぞれの手順をご説明します。

 

1. Advanced Logging IIS 7.0 以降

IIS 拡張機能の一つの Advanced logging は、ユーザーが要求するクライアント データを柔軟に記録する事ができるツールです。

IIS 7.0 Advanced Logging - カスタム ログ

http://technet.microsoft.com/ja-jp/library/ee175732.aspx

 

Advanced Logging  インストール手順

以下の2通りがあります。

Web Platform Installer

・スタンドアロンのインストーラー

 

Web Platform Installer

1) IIS 拡張機能をインストールする為に、下記のリンクから Web Platform Installer をダウンロードし、インストールします。

Microsoft Web Platform Installer 5.0

http://www.microsoft.com/web/downloads/platform.aspx

 

2) ダウンロードを行い、インストールが完了したら、[スタート] - [管理ツール] - [IIS マネージャー] を実行します。

3) 左ペインからコンピューター名をクリックし、中央ペインの管理セクションにある [Web Platform Installer] を実行します。

4) Web Platform Installer の画面が表示されたら、右上にある検索フィールドに [advanced logging] と入力しEnter を押します。

5) 検索結果に、[詳細ログ] が表示されます。詳細ログを選択し、インストールします。

 

・スタンドアロンのインストーラー

下記のリンクより、ダウンロードしてください。

IIS 詳細ログ (32 ビット)

https://www.microsoft.com/ja-jp/download/details.aspx?id=18374

 

IIS 詳細ログ (64 ビット)

https://www.microsoft.com/ja-JP/download/details.aspx?id=7211

 

Advanced logging  設定手順

1) IIS マネージャーを開きます。

2) 接続ペインでコンピュータ名を選択し、機能ビューの IIS セクションにある [詳細ログ] をダブル クリックします。

3) 操作ペインの [詳細ログを有効にする] をクリックします。

4) 操作ペインの [ログ記録フィールドの編集] をクリックします。

 

 

5) [フィールドの追加] をクリックします。

6) 以下の通り、情報を入力します。

フィールド ID: X-Forwarded-For

カテゴリ: Default

ソースの種類 : 要求ヘッダー

ソース名 : X-Forwarded-For

 


 

7) [OK] 2 回クリックします。

8) 操作ペインの [ログ定義の追加] をクリックします。

9) [ベース ファイル名] に任意の名前を入力します。

10) [フィールドの選択] をクリックします。

11) ログ記録フィールドの選択 ウィンドウでログに出力したい項目を選択し、[OK] をクリックします。

12) 操作ペインの [適用] をクリックします。

 

 

2. Enhanced Logging IIS 8.5 以降

上記1. で、Advanced Loggingについてご案内いたしましたが、Windows Server 2012 R2 (IIS 8.5) 以降にはその機能が標準で組み込まれています。

Enhanced Logging for IIS 8.5

http://www.iis.net/learn/get-started/whats-new-in-iis-85/enhanced-logging-for-iis85

 

このEnhanced Loggingという機能により、IISログに “ X-Forwarded-For ” フィールドを追加することが可能です。

 

IIS ログに “X-Forwarded-For” フィールドを追加する手順

1) IIS マネージャーを開きます。

2) 当該 Web サイトを選択の上、[ログ記録] をダブルクリックします。

3) [フィールドの選択] をクリックします。

 

4) [W3C ログ記録フィールド] ダイアログより [フィールドの追加] をクリックします。

5) 以下を設定の上、[OK] をクリックします。

フィールド名 : X-Forwarded-For (ここで指定したフィールド名で IIS ログに記録されます)

ソースの種類 : 要求ヘッダー

ソース : X-Forwarded-For


 

6) 画面右の [操作] ペインより “適用” をクリックし、設定を反映させます。

 

 

3. ARR Helper IIS 7.0 以降

弊社製品の ARR に含まれる ARR Helper を利用することで、X-Forwarded-For ヘッダーの値を IIS ログの c-ip に記録することが可能です。

ARR(Application Request Routing: アプリケーション要求ルーティング処理)は、モジュール名の通り、リクエストに対するルーティング機能のほか、負荷分散、ディスクキャッシュの機能を利用できます。

ARR を利用していない場合でも、当該機能を利用することができます。

また、ARR Helper はコミュニティ ベースで公開しているツールであり、コミュニティでのサポートのみ提供しております。

 

ARR Helper インストール手順

ARR がインストールされている環境の場合、以下のフォルダにあるインストーラーを該当環境にコピーし、起動します。


C:\program files\IIS\Application Request Routing\

requestrouterhelper_x64.msi (64 ビット環境)

requestrouterhelper_x86.msi (32 ビット環境)

 

ARR がインストールされている環境がない場合、下記の URL より ARR Helper のインストーラーをダウンロードすることができます。

Client-ip not logged on application server when using ARR

http://blogs.iis.net/anilr/archive/2009/03/03/client-ip-not-logged-on-content-server-when-using-arr.aspx

インストーラーをダウンロード後、起動してください。

 

インストール完了後、IIS に到着するリクエストの X-Forwarded-For ヘッダーの IP アドレスが、IIS ログの c-ip の項目に置き換わることをご確認ください。

 

ARR Helper をアンインストールする場合は、コントロールパネルの [プログラムと機能] の「ARR Helper for IIS 7」を削除します。

 

 

4. サードパーティ製の ISAPI フィルター(F5XForwardedFor)

サードパーティ製の ISAPI フィルターではありますが、X-Forwarded-For ヘッダーを IIS ログに記録する ISAPI フィルターが公開されています。

マイクロソフトでサポートを提供するものではありませんが、方法の一つとしてあわせてご紹介いたします。

特に、上記1~3は、IIS 7.0及び8.5以降で有効なため、それ以前のバージョンをお使いの場合は、こちらの方法をご検討いただけますと幸いです。

 

IIS X-Forward-For ISAPI Filter を使う

http://takaq1.plala.jp/contents/windows/x_forward/index.html

 

X-Forwarded-For Log Filter for Windows Servers

http://coldfusion.sys-con.com/node/1077366/blog

 

以上です。


Skip to main content