BIG-IP X-Forwarded-For 設定例

F5 社のロードバランサーである BIG-IP で、X-Forwarded-For(XFF)設定例を紹介します。

X-Forwarded-For (XFF) とは

HTTP ヘッダフィールドの 1 つ。
HTTP プロキシサーバー、または、負荷分散装置(ロードバランサー)を経由して、Web サーバーに接続するクライアントの送信元 IP アドレスを、特定する際に使用されます。
具体的には、このフィールドに、クライアントやプロキシサーバーの IP アドレスを追加します。

XFF のフォーマット

XFF フィールドのフォーマットは以下のとおりです。

X-Forwarded-For: client1, proxy1, proxy2

BIG-IP XFF 設定例

BIG-IP では、XFF を有効にして、クライアントの IP アドレスを HTTP ヘッダに挿入する事が可能です。

「Local Traffic」>「Profiles」から「Services」の「HTTP」をクリックします。

「Create」をクリックします。

Insert X-Forwarded-For チェックボックスで「Enabled」を選択し「Finished」をクリックします。

Virtual Server の HTTP Profile に作成した Profile を適用し「Update」をクリックします。

確認方法

クライアントから、telnet コマンドを使用して、Virtual Server へ HTTP 接続します。

> telnet 192.168.100.100 80
Trying 192.168.100.100...
Connected to 192.168.100.100 (192.168.100.100).
Escape character is '^]'.
GET / HTTP1.0

HTTP/1.1 200 OK

サーバー側で、XFF にクライアントの IP が挿入されている事を確認できます。

> tcpdump -i eth1 -s 1024 -A dst 192.168.100.1 and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 1024 bytes
04:16:48.235669 IP 192.168.100.254.54660 > 192.168.100.1.http: S 3271548268:3271548268(0) win 4380 <mss 1460,nop,wscale 0,nop,nop,timestamp 2671669740 0,sackOK,eol>
E..@..@...-...d...d....P...l........T).............
.>q.........
04:16:48.245252 IP 192.168.100.254.54660 > 192.168.100.1.http: . ack 529739997 win 4380 <nop,nop,timestamp 2671669750 5520969>
E..4..@...-...d...d....P...m..0............
.>q..T>I
04:16:48.245258 IP 192.168.100.254.54660 > 192.168.100.1.http: P 0:50(50) ack 1 win 4380 <nop,nop,timestamp 2671669750 5520969>
E..f..@...-l..d...d....P...m..0............
.>q..T>IGET / HTTP1.0
X-Forwarded-For: 192.168.100.10

以上