한국 IP가 아니면 차단 하는 extend (국내 모든 IP 내장) > 그누보드5 팁자료실

그누보드5 팁자료실

한국 IP가 아니면 차단 하는 extend (국내 모든 IP 내장) 정보

한국 IP가 아니면 차단 하는 extend (국내 모든 IP 내장)

첨부파일

check_kr_ip.php (34.5K) 21회 다운로드 2025-05-15 09:35:50

본문

그누보드 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가 지정된 서브넷 범위 내에 있는지 확인하는 함수
 *
 * string $ip 검사할 IP 주소
 * string $subnet 서브넷의 시작 IP 주소
 * int $cidr 서브넷 마스크 (CIDR 값)
 * 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;
}

추천
6

댓글 8개

@ploki0911 네 그렇습니다. 한국으로 등록된 IP만 가능합니다.

그외 지역 IP은 한국인터넷정보센터 에서 받아서 파일에 추가하시면 그 지역도 허용 됩니다.

감사합니다..잘 사용하겠습니다.

 

그리고 구글애드센스나 구글애널리틱스 등

구글 제품 해외 ip는 제외하는 옵션이 있었으면 좋겠습니다

전체 2,638 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT