티스토리 뷰

웹어플리케이션을 개발하면 거의 필수적으로 하는 것이 바로 클라이언트 IP를 획득하는 것이다. 왜냐? 누가 뭘 하는지 알아야 문제가 생겼을때 대처가 가능하기 때문이다. 어떻게 IP를 얻어올수 있는가?

 

public static String getClientIp(HttpServletRequest req) {
    String ip = req.getHeader("X-Forwarded-For");
    if (ip == null) {
        ip = req.getRemoteAddr();
    }
    return ip;
}

이렇게 간단하게 IP 정보를 획득할 수 있다. 그냥 req.getRemoteAddr() 을 통해서 가져올수도 있지만 내 웹서버를 통해서 들어오는 경우면 클라이언트 IP를 가져오는게 아닌 웹서버의 IP를 가져오기 때문에 클라이언트의 원래 IP를 식별하는 표준 헤더인 X-Forward-For 를 통해서 가지고 온다. 

 

이렇게 해서 IP를 출력을 해보면 

LOG.info("[IP				: {}]", requestIP);

이런 IPv6 형식으로 출력이 되는걸 확인할 수 있다. 

 

이럴 경우는 vm argument에 다음을 추가함으로써 간단하게 해결할 수 있다. 

 

-Djava.net.preferIPv4Stack=true

 

를 VM arguments에 추가해 준다. 다시 실행해 보면 

 

이런식으로 IPv4 형식으로 출력되는걸 확인할 수 있다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30