006. Java 에서 Local IP 와 NAT IP validation 그리고 Testcode
✔️ Local IP는 사설 네트워크 범위(10.x.x.x, 172.16.x.x ~ 172.31.x.x, 192.168.x.x)
✔️ NAT IP는 사설 IP를 제외한 모든 IPv4 주소
✔️ Java & Spring Boot에서 정규식 검증 적용 가능
Validation code
import java.util.regex.Pattern;
public class IPValidator {
// Local IP 정규식
private static final String LOCAL_IP_REGEX =
"^(10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})$|" + // 10.x.x.x
"^(172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3})$|" + // 172.16.x.x ~ 172.31.x.x
"^(192\\.168\\.\\d{1,3}\\.\\d{1,3})$"; // 192.168.x.x
// NAT IP (공인 IP) 정규식 (사설 IP, 루프백 제외)
private static final String PUBLIC_IP_REGEX =
"^(?!10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$)" +
"(?!172\\.(1[6-9]|2[0-9]|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$)" +
"(?!192\\.168\\.\\d{1,3}\\.\\d{1,3}$)" +
"(?!127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$)" +
"(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})$";
public static boolean isLocalIp(String ip) {
return Pattern.matches(LOCAL_IP_REGEX, ip);
}
public static boolean isPublicIp(String ip) {
return Pattern.matches(PUBLIC_IP_REGEX, ip);
}
}Test code
Last updated