Java の HttpServletRequest#getRemoteAddr() で、リモートの IP アドレスが取得できるのですが、クライアントの OS 環境によってはIPv6 のアドレスが返されます。
ループバックアドレスを例にすると下記のような違いです。
1 2 3 4 | [IPv4] 127.0.0.1 [IPv6] 0:0:0:0:0:0:0:1 |
今回は Tomcat の環境において IPv4 のアドレスを返すように設定を変更してみます。
Tomcatの設定
Tomcat 環境では IPv6 のアドレスを優先的に返すので、これを IPv4 のアドレスを優先にするには Java 起動時のオプションに下記を追加します。
1 | -Djava.net.preferIPv4Stack=true |
Linux だと catalina.sh、Windows だと catalina.bat に記述しておくといいでしょうか。