TIL

Request.getRemoteAddr() Ipv4로 바꾸기

마라탕천재 2024. 10. 11. 01:14

Request.getRemoteAddr()을 호출 시에 ipv6로 저장되는 문제가 생겼다.

크리티컬한 문제는 아니지만 ipv4는 가독성이 떨어져서 ipv4로 변경하고 싶었다.

구글링해보니 자바에서 지원하는 클래스는 따로 없는 것 같았다.

따라서, JVM의 시스템 속성을 변경해서 원하는 방향으로 구현했다.

 

1.

InteliJ > Help > Edit Custom VM Options

자바 실행 시 JVM(Java Virtual Machine)에 전달하는 시스템 속성 설정을 바꿔줄거다.

 

 

2. 

-Djava.net.preferIPv4Stack=true
-Djava.net.preferIPv4Addresses=true

이 옵션을 추가해준다.

  • Djava.net.preferIpv4Stack = true : 자바 애플리케이션이 네트워크 통신을 할 때, 기본적으로는 IPv6 스택(프로토콜)을 사용하려고 한다. 이 속성은 JVM이 IPv4 스택을 우선 사용하도록 강제한다.
  • Djava.net.preferIpv4Addresses = true : InetAddress.getByName() 같은 메서드를 사용할 때 기본적으로 IPv4 주소를 먼저 반환하도록 한다.

 

 

3.

Application > EditConfiguration > Modify options > Add VM options

-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true 옵션 추가

 

이제 ipv4로 잘 저장되는 것을 볼 수 있다.