作業環境
- BIG-IP Virtual Edition
- version 15.x.x
X-Forwarded-For の追加方法
X-Forwarded-For とは:
- HTTP ヘッダフィールドの一つ
- HTTP プロキシ又はロードバランサーを通過して Web サーバーへ接続したクライアントの送信元 IP アドレスを特定するために使用される
- デファクトスタンダードになっている
X-Forwarded-For を追加する方法については 2 通りあったためそれぞれ以下に記載します。
A. HTTP プロファイルで設定する方法
一つ目の方法は、バーチャルサーバに適用する HTTP プロファイルについて [Settings > Insert X-Forwarded-For
] を Enabled にする方法です。(デフォルトでは Disabled です。)
この方法の場合、X-Forwarded-For にはクライアントの IP アドレスが設定されます。
B. iRule で設定する方法
2 つ目の方法は iRule を使用する方法です。HTTP リクエストイベント時に HTTP ヘッダの X-Forwarded-For に値を設定する iRule を作成し、バーチャルサーバに適用します。
iRule の例としては以下の通りです。
when HTTP_REQUEST {
HTTP::header insert X-Forwarded-For [IP::client_addr]
}
X-Forwarded-For にクライアントの IP アドレスを設定しています。
iRule では条件分岐処理ができるため、場合によって X-Forwarded-For の値を変えたり、設定する場合としない場合で分けたりしたいときに iRule を使用することができます。
パケットキャプチャで確認
X-Forwarded-For を追加する設定にした状態で BIG-IP からサーバへのパケットをキャプチャしてみます。
クライアントからサーバ(BIG-IP)へ Web アクセス時の、BIG-IP からサーバへの HTTP GET のパケットを見てみると、以下画像のようにヘッダに X-Forwarded-For が追加されていることが確認できます。