Spring Boot 基本

Spring Bootでリクエストを送ったクライアントのIPアドレスを取得してみた(2)

以前、このブログにて、IPアドレスをIPv4形式で取得する方法について記載していたが、今回、別の方法でIPアドレスをIPv4形式で取得することができたので、その方法について共有する。

前提条件

以下の記事のIPアドレスを取得し表示するプログラムが作成済であること。

Spring Bootでリクエストを送ったクライアントのIPアドレスを取得してみた業務用のWEBアプリケーションを作成する際、アクセスログ等にIPアドレスを残しておきたい場合がある。 IPアドレスは、「-Djav...

また、下図のように、VMオプションに何も指定されていないこと。
VMオプション未指定

やってみたこと

  1. URL指定をlocalhostからIPアドレスに変更する方法
  2. IPv4をIPv6より優先する設定に変更する方法

 

URL指定をlocalhostからIPアドレスに変更する方法

画面にアクセスする際、「http://localhost:(ポート番号)/」でなく、「http://127.0.0.1:(ポート番号)/」とアクセスすると、下図のように、IPアドレスがIPv4形式で表示されることが確認できる。
IPアドレスによるアクセス



IPv4をIPv6より優先する設定に変更する方法

現状、Windows10ではIPv4よりIPv6が優先されるようになっているため、IPv4を優先するよう設定を変更すると、「http://localhost:(ポート番号)/」と画面にアクセスした場合も、IPアドレスがIPv4形式で表示できるようになる。

IPv4を優先するような設定方法については、下記サイトを参照のこと。
https://www.vwnet.jp/Windows/w7/IPv4/IPv4PriorityUP.html

まずは、下図のように、コマンドプロンプトを管理者モードで起動する。
IPv4優先設定1

その後、「netsh interface ipv6 show prefixpolicies」コマンドにより、IPv6設定である「::ffff:0:0/96」が、IPv4設定である「::1/128」より優先順位が上であることが確認できる。
IPv4優先設定2

次に、IPv4設定を優先するため、「netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0」「netsh interface ipv6 set prefixpolicy ::1/128 35 4」のコマンドを順次実行する。
IPv4優先設定3

変更後、「netsh interface ipv6 show prefixpolicies」コマンドを再度実行すると、IPv4設定である「::1/128」がIPv6設定である「::ffff:0:0/96」より優先順位が上であることが確認できる。
IPv4優先設定4

上記変更を行った上で、「http://localhost:(ポート番号)/」と画面にアクセスすると、下図のように、IPアドレスがIPv4形式で表示されることが確認できる。
IPv4優先設定後の画面表示

要点まとめ

  1. URLのホスト名をIPアドレス指定にするか、IPv4を優先する設定に変更することによって、VMオプションを付与しなくても、IPアドレスをIPv4形式に設定できる。