IP 지리적 위치 데이터 (JSON / CSV)

저자:Lisa Farrell · 2025-11-09

IP 지리적 위치 데이터베이스는 연속된 IP 구간(ip_from ~ ip_to)을 국가/지역, 행정 구역, 도시, 위도·경도에 매핑합니다. 이는 지역별 트래픽 분기, 컴플라이언스/리스크 관리, 근접 스케줄링, 운영 분석 등의 시나리오에 활용됩니다. 데이터는 IPv6IPv4로 각각 독립적으로 제공되며, 필드와 파일 형식은 동일합니다.

데이터 구조(열 설명)

  • 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);

사용 방법(퀵 스타트)

  1. 필요에 따라 IPv6 또는 IPv4의 JSON / CSV / SQL 파일을 선택하여 다운로드합니다.
  2. 압축을 해제하여 데이터베이스에 가져오거나(또는 애플리케이션에서 직접 파싱) 사용합니다.
  3. 국가/지역, 행정 구역, 도시 또는 위도·경도를 기준으로 분기 및 컴플라이언스 정책을 적용합니다. 거리 기반의 근접 스케줄링(저정밀)도 가능합니다.
  4. 일/주 단위의 예약 작업으로 덮어쓰기 업데이트를 구성해 데이터의 최신성을 유지합니다.

추가 안내

  • IPv6/IPv4 모두 동일한 열 정의를 사용하며, 차이는 커버하는 주소 공간입니다.
  • 위도·경도와 행정 구역은 대략적인 위치 파악을 위한 것으로, 정확한 주소를 의미하지 않습니다. 개인정보 및 컴플라이언스 요건을 준수하세요.
  • 고성능 조회가 필요하면 IPv4는 32비트 정수 구간으로 변환하고, IPv6는 프리픽스 트리/구간 트리 또는 전용 인덱스를 사용하는 것을 권장합니다.