はじめに
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
以上