getRemoteAddrでIPv4とIPv6

サラトガIT日記 > Java > getRemoteAddrでIPv4とIPv6 getRemoteAddrでIPv4とIPv6

※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい

2007-12-21

 

Java の HttpServletRequest#getRemoteAddr() で、リモートの IP アドレスが取得できるのですが、クライアントの OS 環境によってはIPv6 のアドレスが返されます。ループバックアドレスを例にすると下記のような違いです。

[IPv4]
127.0.0.1

[IPv6]
0:0:0:0:0:0:0:1

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

-Djava.net.preferIPv4Stack=true

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

ドキュメント] ※JDK1.5ドキュメント

関連記事

上記の記事に関連する記事(最新の10件)です。