본문 바로가기
Web Development/Java

실제 IP 구하기

by 피치피치어피치 2019. 6. 27.
반응형

자바에서 getRemoteAddr 을 사용하다보면 보안관련 설정때문에 서버의 실 IP가 아닌 방화벽이나 L4 스위치의 아이피가 나오는경우가 있다. 그럴경우 리퀘스트 헤더에 특정 이름으로 실아이피가 박혀있을수도 있으니 확인이 필요하다.

 

-실 아이피 구하는 코드(왠만하면 이정도 범위에서 실아이피가 나온다고 한다)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static String getClientIpAddr(httpServletRequest request){
    String ip = request.getHeader("X-Forwarded-For");
    
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("Proxy-Client-IP");
    }
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("HTTP_CLIENT_IP");
    }
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
    }
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getRemoteAddr();
    }
    return ip;
}
cs

 

반응형