IP 지리적 위치 데이터베이스는 연속된 IP 구간(ip_from ~ ip_to)을
국가/지역, 행정 구역, 도시, 위도·경도에 매핑합니다.
이는 지역별 트래픽 분기, 컴플라이언스/리스크 관리,
근접 스케줄링, 운영 분석 등의 시나리오에 활용됩니다.
데이터는 IPv6과 IPv4로 각각 독립적으로 제공되며, 필드와 파일 형식은 동일합니다.
데이터 구조(열 설명)
ip_from VARCHAR(39) NOT NULL: 시작 IP(IPv4/IPv6 호환).ip_to VARCHAR(39) NOT NULL: 종료 IP(IPv4/IPv6 호환).country_code CHAR(2): ISO 3166-1 Alpha-2(예:US,CN).region VARCHAR(100): 주/성/1차 행정 구역.city VARCHAR(100): 도시명.latitude DECIMAL(9,5): 위도.longitude DECIMAL(9,5): 경도.
테이블 생성 SQL(MySQL 예시)
CREATE TABLE geoip_ranges (
ip_from VARCHAR(39) NOT NULL,
ip_to VARCHAR(39) NOT NULL,
country_code CHAR(2),
region VARCHAR(100),
city VARCHAR(100),
latitude DECIMAL(9,5),
longitude DECIMAL(9,5),
PRIMARY KEY (ip_from, ip_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
온라인 다운로드
각 프로토콜 스택(IPv6 / IPv4)은 JSON (.gz), CSV (.gz), SQL (.gz)의 세 가지 형식을 제공합니다.
| 출처 | 유형 | 형식 | 다운로드 | 설명 |
|---|---|---|---|---|
| IPIN | IPv6 | JSON (.gz) | 다운로드 | IPv6 구간 → 지리 정보(JSON 배열). |
| IPIN | IPv6 | CSV (.gz) | 다운로드 | 표준 CSV(헤더 포함). ETL/스프레드시트에 적합. |
| IPIN | IPv6 | SQL (.gz) | 다운로드 | 테이블 생성 및 대량 INSERT 포함. MySQL로 바로 가져오기 가능. |
| IPIN | IPv4 | JSON (.gz) | 다운로드 | IPv4 구간 → 지리 정보(JSON 배열). |
| IPIN | IPv4 | CSV (.gz) | 다운로드 | 표준 CSV(헤더 포함). ETL/스프레드시트에 적합. |
| IPIN | IPv4 | SQL (.gz) | 다운로드 | 테이블 생성 및 대량 INSERT 포함. MySQL로 바로 가져오기 가능. |
참고: 모든 다운로드 파일은 .gz 압축본입니다. gunzip으로 해제하거나, 애플리케이션에서 스트림으로 직접 처리할 수 있습니다.
명령줄로 빠르게 받기
curl
# IPv6
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
# IPv4
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
wget
# 서버 파일명을 자동 사용(--content-disposition)
# IPv6
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
# IPv4
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
# 저장 파일명 지정 + 이어받기
wget -c -O ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget -c -O ipv6_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget -c -O ipv6_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
wget -c -O ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget -c -O ipv4_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget -c -O ipv4_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
aria2c(멀티 스레드)
# IPv6
aria2c -x16 -s16 -k1M -o ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
# IPv4
aria2c -x16 -s16 -k1M -o ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
PowerShell
# IPv6
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz" -OutFile "ipv6_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz" -OutFile "ipv6_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz" -OutFile "ipv6_ip_location.sql.gz"
# IPv4
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz" -OutFile "ipv4_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz" -OutFile "ipv4_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz" -OutFile "ipv4_ip_location.sql.gz"
팁: 다운로드한 파일은 .gz 압축 형식입니다. gunzip 또는 압축 해제 도구로 풀거나, 프로그램에서 스트림으로 직접 읽을 수 있습니다.
형식 설명
JSON
배열 형식. 각 항목은 ip_from, ip_to, country_code, region, city, latitude, longitude를 포함합니다.
[
{
"ip_from": "2400:cb00::",
"ip_to": "2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff",
"country_code": "US",
"region": "California",
"city": "Los Angeles",
"latitude": 34.05460,
"longitude": -118.24400
}
]
CSV
첫 줄은 헤더입니다. 쉼표/큰따옴표가 포함된 필드는 RFC 4180에 따라 이스케이프 처리되었습니다.
ip_from,ip_to,country_code,region,city,latitude,longitude
1.0.0.0,1.0.0.255,AU,Queensland,South Brisbane,-27.47480,153.01700
SQL
테이블 생성과 대량 INSERT 문이 포함되어 있어 MySQL로 바로 가져올 수 있습니다.
-- 테이블 정의는 위 참조
INSERT INTO geoip_ranges
(ip_from, ip_to, country_code, region, city, latitude, longitude) VALUES
('1.0.0.0','1.0.0.255','AU','Queensland','South Brisbane',-27.47480,153.01700);
사용 방법(퀵 스타트)
- 필요에 따라 IPv6 또는 IPv4의 JSON / CSV / SQL 파일을 선택하여 다운로드합니다.
- 압축을 해제하여 데이터베이스에 가져오거나(또는 애플리케이션에서 직접 파싱) 사용합니다.
- 국가/지역, 행정 구역, 도시 또는 위도·경도를 기준으로 분기 및 컴플라이언스 정책을 적용합니다. 거리 기반의 근접 스케줄링(저정밀)도 가능합니다.
- 일/주 단위의 예약 작업으로 덮어쓰기 업데이트를 구성해 데이터의 최신성을 유지합니다.
추가 안내
- IPv6/IPv4 모두 동일한 열 정의를 사용하며, 차이는 커버하는 주소 공간입니다.
- 위도·경도와 행정 구역은 대략적인 위치 파악을 위한 것으로, 정확한 주소를 의미하지 않습니다. 개인정보 및 컴플라이언스 요건을 준수하세요.
- 고성능 조회가 필요하면 IPv4는 32비트 정수 구간으로 변환하고, IPv6는 프리픽스 트리/구간 트리 또는 전용 인덱스를 사용하는 것을 권장합니다.