こんにちはやまぱんです。
Contents
XFF / X-Forwarded-For についての検証をする際にそもそもどうやって確認するんだっけ?っていうのを調べたのでメモする。
普通はWebサーバーを立ててそこのログを見るのがセオリーな気がしますが、便利な方法がありました。
XFF / X-Forwarded-For については下記の記事を読んでください~!
XFF ヘッダーを付加してリクエストを送る方法
テストするために今回はXFFヘッダーを追加して httpリクエストを curl コマンドで送ります。(Windows環境でもLinux環境でも可能)
curl -H もしくは -head を利用して、HTTPヘッダにHEADERを追加もしくは変更します。
コマンド例:)
curl -H "X-Forwarded-For: 117.117" <宛先URL>
でもこれじゃ実際にヘッダーにXFFの情報がついているかが確認できません。
参考
https://qiita.com/ryuichi1208/items/e4e1b27ff7d54a66dcd9
XFF / X-Forwarded-For のヘッダー情報を確認する方法(その1)
結論からいうと、 https://httpbin.org を利用します。
Docker Image も公開されているのでローカルでも使うことができます。
GET/POSTだけでなくPUT/DELETE/PATCHのHTTPリクエストも確認することができます。
また、URLを変更することで画像のダウンロードのリクエストができたり、ステータスコードを500エラーや400エラーをサーバから返却させることもできます。
なので、エラーケースの動作を確認することもできちゃいますね。
詳細は下記のURLを見て頂ければと思います。
参考:
- 通信処理作成時の動作確認に使えるWebAPIのお試しサイト
https://toronavi.com/webapi-httpbin - httpbin.org
https://httpbin.org/#/ -
httpbin.org で X-Forwarded-For ヘッダーを確認する方法
https://blog.1q77.com/2020/08/httpbin-org-show_env/ - リクエストのXFFヘッダーの確認の仕方
https://httpbin.org/get?show_env=1 宛にリクエストを送るだけです、そうするとレスポンスにXFFなどの情報を含めて返って来ます。
具体的な実行方法下記です。
今回は返却結果の比較のため下記の2つのコマンドを打ちます。
$curl https://httpbin.org/get?show_env=1
$curl -H "X-Forwarded-For: 117.117" https://httpbin.org/get?show_env=1
一つ目のコマンドはXFFを追加しておらず、二つ目のコメントはXFFに ”117.117” を追加しています。
実行結果(Windows11)
*一部グローバルIPにモザイクをかけています。
以下のように117.117が追加されていることが分かります。
これでFWやLBなどを経由してここにリクエストを送ることできればこの方法でXFFの確認ができることが分かります。
実行結果(Ubuntu22.04)
Windows の結果と同じ結果になりました。
画面ショットは割愛
WindowsのcurlはInvoke-Web-RequestのaliasなのでLinuxのCurlと多少結果が異なることがあったりする認識だったけど、今回は同じでした。
(もしかしたら同じ結果になるようにだんだん近づいているのかもしれない。詳しいことはワカラン)
XFF / X-Forwarded-For のヘッダー情報を確認する方法(その2)
-
Linux で簡単なリクエストXFFの内容を返すウェブサーバを立てます。
- 参考 github repositry
https://github.com/kongou-ae/light-ip-echo/
準備
まずはダウンロードし、権限を変更します。
wget https://github.com/kongou-ae/light-ip-echo/releases/download/v0.0.7/light-ip-echo_linux_amd64 -O light-ip-echo
アクセス権限の変更
chmod 744 light-ip-echo
確認方法
下記でWebサーバーをたてて、リクエストを投げます。
レスポンスでも確認できますし、サーバー側のログでも確認することができます。
root権限
sudo su
実行
./light-ip-echo
実行結果
今回は 単一 ubuntu サーバー内で行うため、ループバックアドレス (127.2.1.1) に対してリクエストを投げて結果を比較します。
コマンド例
curl 127.2.1.1
curl -H "X-Forwarded-For: 117.117" 127.1.1.1
レスポンスをみてるとXFFに設定の有無がきちんと確認できます。
またサーバー側では標準出力でログが出力されるのでサーバー側(今回でいえばウェブサーバーを起動したコンソール画面)でも確認可能です。
関連
以上です。