Java

JavaのgetRemoteAddrでIPv4とIPv6のアドレスを取得する

Java の HttpServletRequest#getRemoteAddr() で、リモートの IP アドレスが取得できるのですが、クライアントの OS 環境によってはIPv6 のアドレスが返されます。

ループバックアドレスを例にすると下記のような違いです。

今回は Tomcat の環境において IPv4 のアドレスを返すように設定を変更してみます。

Tomcatの設定

Tomcat 環境では IPv6 のアドレスを優先的に返すので、これを IPv4 のアドレスを優先にするには Java 起動時のオプションに下記を追加します。

Linux だと catalina.sh、Windows だと catalina.bat に記述しておくといいでしょうか。