Java 에서 IPv4 사용하기 (톰캣 - tomcat 등 WAS 에서 request.getRemoteAddr() 시 IPv4 주소 반환)

Java 는 OS 에서 IPv4 와 IPv6 가 모두 사용 가능할 경우 IPv6 를 우선적으로 사용하게 된다. 그래서 netstat 나 lsof 등으로 사용하는 네트워크 포트 정보등을 볼 경우나 JSP 등에서 request.getRemoteAddr() 호출시 주소가 IPv6 로 보이게 된다.

 

IPv6 주소는 익숙하지가 않고 보기도 어려우므로 Java 의 System Property 를 수정하면 IPv4 를 우선적으로 사용하게 설정할 수 있다.

 

java.net.preferIPv4Stack (default: false)

Java VM 을 구동할 때 다음 옵션을 추가한다.

-Djava.net.preferIPv4Stack=true

톰캣을 사용한다면 bin/setenv.sh 에 다음 내용을 추가한다.

#!/bin/sh
 
JAVA_OPTS=" -Djava.net.preferIPv4Stack=true ${JAVA_OPTS} "

 

윈도우는 bin/setenv.bat 파일에 추가한다.

@ECHO OFF
 
set JAVA_OPTS=" -Djava.net.preferIPv4Stack=true %JAVA_OPTS% "

 

java.net.preferIPv4Stack (default: false)


Ref