한국 IP가 아니면 차단 하는 extend (국내 모든 IP 내장)
링크
https://cmdkr.tistory.com/entry/%ED%8A%B9%EC%A0%95-IP%EA%B0%80-%EA%B5%AD%EB%82%B4-IP-%EC%9D%B8%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94-%ED%95%A8%EC%88%98-34Kb-%EB%A1%9C-%EA%B5%AD%EB%82%B4-%EB%AA%A8%EB%93%A0-IP%EB%A5%BC-%ED%95%A8%EC%88%98%EC%97%90-%EB%82%B4%EC%9E%A5 (37) https://cmdkr.tistory.com/entry/%EC%A0%84%EC%B2%B4%EA%B5%AD%EA%B0%80-IP-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EC%A4%91-%ED%95%9C%EA%B5%AD-IP%EB%A7%8C-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94-%EC%86%8C%EC%8A%A4-%EB%8C%80%EB%9E%B5-2200%EA%B0%9C-%EC%A0%95%EB%8F%84%EB%90%A8 (33)그누보드 extend 폴더에 넣어두면 국내IP만 접속가능하게 됩니다. 2025년 5월 국내 IP 기준
국내IP 추출하는 방법은 링크 참고
https://cmdkr.tistory.com/entry/전체국가-IP-리스트중-한국-IP만-문자열로-저장하는-소스-대략-2200개-정도됨
<?php
/*
특정 IP가 국내 IP 인지 확인하는 함수
작성 : 2025-05-15 김성대
한국인터넷정보센터.한국/jsp/statboard/IPAS/ovrse/natal/IPaddrBandCurrent.jsp?nationCode1=KR
에서 2025년5월 현재 전체국가 IP 리스트 중 한국만 뽑아서 문자열로 저장 (대략 2200개 정도됨)
192.* 172.* 공유기 IP도 포함
테스트
$ip = "104.8.230.50";
$ip=$_SERVER['REMOTE_ADDR'];
$ret=is_ip_in_kr($ip);
echo "한국 IP 확인 결과 $ip : $ret<BR>";
*/
if (!is_ip_in_kr($_SERVER['REMOTE_ADDR'])) {
die("This service is currently limited to users in Korea. (한국에서만 접속 가능합니다.)");
}
/**
* 특정 IP가 지정된 서브넷 범위 내에 있는지 확인하는 함수
*
* @param string $ip 검사할 IP 주소
* @param string $subnet 서브넷의 시작 IP 주소
* @param int $cidr 서브넷 마스크 (CIDR 값)
* @return bool 해당 IP가 서브넷 범위 내에 있으면 true, 아니면 false
*/
function is_ip_in_subnet($ip, $subnet, $cidr) {
// 시작 IP 주소를 정수로 변환
$firstIp = ip2long($subnet);
//echo "$ip,$subnet,$cidr,<BR>";
// 서브넷 마스크를 기반으로 마지막 IP 주소 계산
$lastIp = $firstIp + (1 << (32 - $cidr)) - 1;
// 입력받은 IP 주소를 정수로 변환 후 범위 비교
$ipLong = ip2long($ip);
return $ipLong >= $firstIp && $ipLong <= $lastIp;
}
//2025-05-15 현재 국내 IP 현황
// 127. ... 172... 는 공유기 내부 ip
function is_ip_in_kr($ip) {
$arr_ip=explode("\n","
127.0.0/16
172.30.1/16
14.128.128/17
14.129.0/16
45.112.88/21
.... (소스에는 전체 데이터 있음)
160.187.186/23
163.223.94/23
");
foreach($arr_ip as $buff) {
$arr=explode("/",trim($buff));
if ($arr[0] && is_ip_in_subnet($ip, $arr[0].'.0', $arr[1])) {
return true;
}
}
return false;
}
댓글 10개
감사합니다 ^^
선생님 이 파일 하나만 저 폴더에 넣으면 알아서 적용되는거에요 ? 그럼 한국인만 사이트에 접속되는거지요 ?
@ploki0911 네 그렇습니다. 한국으로 등록된 IP만 가능합니다.
그외 지역 IP은 한국인터넷정보센터 에서 받아서 파일에 추가하시면 그 지역도 허용 됩니다.
감사합니다..잘 사용하겠습니다.
그리고 구글애드센스나 구글애널리틱스 등
구글 제품 해외 ip는 제외하는 옵션이 있었으면 좋겠습니다
@아론다론 구글 봇 IP 리스트를 파일에 추가하시면 됩니다.
감사합니다. 역으로 특정지역 아이피만 차단하려면 어떻게 해야 할까요?
적용했습니다
아주 쉽게 적용 가능하고
쉽게 ip 추가 가능하니 넘 좋습니다
감사합니다. 잘 사용하겠습니다.
수고해 주시어 또 하나를 배워 봅니다....
감사합니다.
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4402 | ||
| 2424 | 1년 전 | 1143 | ||
| 2423 | 1년 전 | 1162 | ||
| 2422 |
|
1년 전 | 1838 | |
| 2421 | 1년 전 | 1064 | ||
| 2420 |
|
1년 전 | 1845 | |
| 2419 | 1년 전 | 1154 | ||
| 2418 | 1년 전 | 1142 | ||
| 2417 | 1년 전 | 927 | ||
| 2416 | 1년 전 | 1226 | ||
| 2415 | 1년 전 | 1109 | ||
| 2414 | 1년 전 | 996 | ||
| 2413 | 1년 전 | 1400 | ||
| 2412 |
|
1년 전 | 2004 | |
| 2411 | 1년 전 | 994 | ||
| 2410 | 1년 전 | 1861 | ||
| 2409 | 1년 전 | 1695 | ||
| 2408 | 1년 전 | 1192 | ||
| 2407 | 1년 전 | 1159 | ||
| 2406 | 1년 전 | 833 | ||
| 2405 | 1년 전 | 2044 | ||
| 2404 |
와칸다포에버
|
1년 전 | 1049 | |
| 2403 | 1년 전 | 1125 | ||
| 2402 |
뽕엄능브라
|
1년 전 | 2055 | |
| 2401 | 1년 전 | 1161 | ||
| 2400 | 1년 전 | 1262 | ||
| 2399 | 1년 전 | 1849 | ||
| 2398 | 1년 전 | 1578 | ||
| 2397 | 1년 전 | 1895 | ||
| 2396 | 1년 전 | 1260 | ||
| 2395 | 1년 전 | 1081 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기