IPv6 관련 에러 (0:0:0:0:0:0:0:1 ... )

이슈

깃에서 아카이브를 다운받아 이클립스에 프로젝트를 최초 Import 하고 실행 시 스프링 부트 내장 톰캣에서 문제가 발생한다. 프로젝트 내에 중국 IP를 판단하기 위해 Client IP를 가져오는 함수에서 에러 로그 발생.

java.lang.NumberFormatException: For input string: "0:0:0:0:0:0:0:1" ....

 

 

원인

Client IP를 갸져오는 과정에서 사용되는 request.gerRemotreAddr() 함수가 Ipv4 형식이 아닌 IPv6 형식으로 IP를 가져오므로 포맷이 맞지 않아 발생하는 문제로 확인되었다.

 

 

경과 및 해결

스프링 부트 내장 톰캣(Java VM)에 따로 설정을 추가했다.


1. 내장 톰캣 설정 열기 (Run Config 로 입장 Or 왼쪽 아래 내장 톰캣 우클릭 Open Config)

 

내장 톰캣 우클릭 목록 -> Open Config


2. Arguments 탭 2번째 항목 Vm arguments 에 -Djava.net.preferIPv4Stack=true 입력

 

VM argument 값 입력


3. Restart 하며 테스트 (필요에 따라 수 번 반복)

외부 톰캣 환경 해결법.

  • 리눅스
    톰캣 환경 변수 설정 파일 bin/setenv.sh 에
    JAVA_OPTS=" -Djava.net.preferIPv4Stack=true ${JAVA_OPTS} "추가
  • 윈도우
    톰캣 환경 변수 설정 파일 bin/setenv.bat 에
    set JAVA_OPTS=" -Djava.net.preferIPv4Stack=true %JAVA_OPTS% " 추가

'개발 > 이슈' 카테고리의 다른 글

JSP byte 제한 이슈  (0) 2024.01.16
비정상적인 Form 제출 이슈  (1) 2024.01.03
MySQL: SSLHandshakeException 에러  (0) 2023.12.28
war 배포 404 에러 (lib 폴더)  (0) 2023.12.28
Maven 빌드 중 에러  (0) 2023.12.28