2018년 7월 10일 화요일

tomcat ipv6 옵션 테스트

톰캣 서버에  java.net.preferIPv4Stack  옵션을 적용하면 실제 ipv6로 들어오는 클라이언트가 접근이 가능한지에 대한 테스트를 해보았다

리눅스에서 nic를 확인을 위해서 ifconfig 를 확인 해본다.

        inet6 fe80::22a:4aff:fe16:183  prefixlen 64  scopeid 0x20<link>

위에 보이는 거와 inet6가 보이고
/etc/sysctl.conf 파일에 보면

net.ipv6.conf.all.disable_ipv6 = 0 (disable 0이기때문에 ipv6가 활성화 되었다)
net.ipv6.conf.eth0.disable_ipv6 =  0 (disable 0이기때문에 ipv6가 활성화 되었다)

net.ipv6.conf.all.disable_ipv6 = 1 (disable 0이기때문에 ipv6가 비활성화 되었다)
net.ipv6.conf.eth0.disable_ipv6 =  1 (disable 0이기때문에 ipv6가 비활성화 되었다)

아무 내용 없다면 default 는 0이다

활성화가 되어 있는 상태에서 curl을 통해 톰켓을 호출해본다.

 java.net.preferIPv4Stack  false 경우
$ curl -g -6 "http://[::1]:8180/clientip.jsp"
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>client ip</title>
</head>
<body>
<p>client Addr: 0:0:0:0:0:0:0:1</p><p>client Host: 0:0:0:0:0:0:0:1</p><p>X-Forwarded-For: null</p>


</body>
</html>
호출이 된다.

 java.net.preferIPv4Stack ture 경우

$ curl -g -6 "http://[::1]:8180/clientip.jsp"
curl: (7) Failed connect to ::1:8180; Connection refused


결론적으로  java.net.preferIPv4Stack 을 사용할 경우에는 ipv6는 사용이 불가능하다

설정 예)
        JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"