業務自動化とプログラミングのためのTips

自動化.work

Azure

Application Gateway のバックエンドのサーバーでクライアントの送信元 IP アドレスを取得する方法

投稿日:

Azure の Application Gateway V1/V2 のバックエンドプールに設定されているサーバーが受信する HTTP Request は送信元 IP アドレスが Application Gateway の IP アドレスになります。
しかしながら、Application Gateway は サーバーに送信する HTTP Request のヘッダーに X-Forwarded-For ヘッダーをつけます。
このヘッダーの値は「アクセス元のクライアントの IP アドレス:ポート番号」になります。

そのため、バックエンドのサーバーではこの値を読み取ることによって、アクセスしてきているクライアントの IP アドレスを把握することができます。

画像はバックエンドのサーバーで V2 から送信された HTTP の GET リクエストをキャプチャした結果。

Application Gateway V2 の HTTP Request

一応このことは以下の URL のドキュメントにも記載されている。

要求への変更
https://docs.microsoft.com/ja-jp/azure/application-gateway/how-application-gateway-works#modifications-to-the-request

アプリケーション ゲートウェイでは、要求がバックエンドに転送される前に、すべての要求に 4 つの追加ヘッダーが挿入されます。 これらのヘッダーは、x-forwarded-for、x-forwarded-proto、x-forwarded-port、および x-original-host です。 x-forwarded-for ヘッダーの形式は、IP:ポートのコンマ区切りリストです。

IIS で X-Forwarded-For の値をログに記録する

バックエンドのサーバーとして IIS を使用している場合は以下の URL に記載の「 2. Enhanced Logging ※IIS 8.5 以降」の
手順にそって設定すれば X-Forwarded-For の値をログに出力することができます。

"X-Forwarded-For" ヘッダーを IISログに出力したい!
https://docs.microsoft.com/en-us/archive/blogs/jpiis/x-forwarded-for-header


-Azure
-

Copyright© 自動化.work , 2020 All Rights Reserved.