geoip.dat·geosite.dat 업데이트 방법: 규칙 데이터 출처, 교체 절차와 라우팅 설정

GeoIP·GeoSite 규칙 데이터의 차이와 용도를 알아보고, v2rayN·v2rayNG에서 파일을 업데이트하는 방법과 geosite:cn 등 자주 쓰는 라우팅 설정을 살펴봅니다.

이 글의 핵심 내용

노드를 가져온 뒤 라우팅을 조정하려는 사용자를 위한 안내입니다. 먼저 도메인 목록과 IP 대역 목록의 차이를 파악하고, 규칙 데이터 출처와 클라이언트가 실제로 파일을 읽는 위치, 태그 이름을 확인합니다. 데스크톱 또는 Android 절차에 따라 업데이트한 다음 시작 로그와 연결 기록으로 적용 여부를 검증하세요. 태그 누락이나 라우팅 오류가 발생하면 파일, 설정, DNS 순서로 점검합니다.

1. GeoIP와 GeoSite: 서로 다른 매칭 대상

geoip.dat에는 태그별 IP 대역 목록이, geosite.dat에는 태그별 도메인 규칙 목록이 저장됩니다. 두 파일은 코어가 읽는 바이너리 데이터이며 구독 링크나 사용 가능한 프록시 서버 정보가 아닙니다. 규칙 데이터를 업데이트하면 매칭 기준만 바뀌며 노드 주소, 포트, 인증 정보는 자동으로 업데이트되지 않습니다.

geoip.dat

매칭 대상
대상 IP 및 대역
설정 필드
ip
일반적인 참조
geoip:cn
사설망 참조
geoip:private

IP의 분류는 웹사이트의 언어, 서비스 지역 또는 실제 접속 품질과 같지 않습니다.

geosite.dat

매칭 대상
대상 도메인
설정 필드
domain
일반적인 참조
geosite:cn
데이터 내용
도메인 및 해당 매칭 유형

도메인 분류는 규칙 데이터 관리자가 정하며, 특정 태그의 존재 여부는 데이터 출처에 따라 달라집니다.

예를 들어 geosite:cn은 cn이라는 도메인 목록을 참조합니다. 도메인 접미사를 기준으로 지역을 실시간 추정하는 것은 아닙니다. geoip:cn은 해당 IP 대역 목록을 참조합니다. 해외 CDN 주소를 사용하는 도메인은 전자에는 매칭되지만 후자에는 매칭되지 않을 수 있습니다. 두 규칙은 각각 설정해야 하며, geosite:cn을 ip 배열에 넣으면 안 됩니다.

대상 주소 수신 도메인 규칙 매칭 필요에 따라 주소 확인 주소 규칙 매칭 아웃바운드 선택

이 흐름은 도메인 규칙과 주소 규칙의 관계를 설명하며, 모든 연결에서 DNS 조회가 수행된다는 뜻은 아닙니다. DNS 조회 여부와 시점은 대상이 처음부터 도메인인지 IP인지, 그리고 routing.domainStrategy 설정에 따라 달라집니다. 코어가 IP만 전달받으면 일반적으로 도메인 규칙에 매칭할 도메인이 없습니다. 스니핑으로 일부 연결 정보를 보완할 수는 있지만 모든 도메인을 복원할 수 있는 것은 아닙니다.

2. 규칙 데이터 출처: 태그를 확인한 뒤 파일 선택

자주 사용되는 출처로는 V2Fly의 domain-list-community 도메인 분류 데이터, V2Fly의 geoip 데이터 프로젝트, Loyalsoldier의 v2ray-rules-dat 등 파생 규칙 모음이 있습니다. 앞의 두 프로젝트는 각각 도메인 분류와 주소 데이터를 정리하며, 파생 프로젝트는 목록을 재구성하거나 분류를 추가하고 수록 범위를 조정할 수 있습니다. 파일 이름이 같아도 내부 태그와 분류 의미가 완전히 일치한다는 보장은 없습니다.

2개
업데이트 대상: dat 파일 2종
3가지
출처, 날짜, 기존 파일 크기 기록
1세트
교체 전에 보관할 기존 파일 백업

정리: 출처와 태그를 일치시킨 뒤 업데이트

기존 라우팅이 정상적으로 로드된다면 이미 확인된 출처를 그대로 사용하는 것이 좋습니다. 새 분류가 필요하거나 수록 범위를 바꿔야 할 때만 출처를 변경하고, 먼저 사용자 지정 라우팅에 지정한 태그를 하나씩 확인하세요.

3. v2rayN 업데이트: 내장 기능 우선, 수동 교체 시 디렉터리 확인

v2rayN은 설정 관리 클라이언트이며, 실제 규칙 데이터를 읽는 것은 선택된 코어입니다. 아래 안내는 V2Ray 또는 Xray를 사용하고 생성된 설정이 Geo 데이터를 참조하는 경우를 대상으로 합니다. 배포 버전에 따라 메뉴 이름과 데이터 디렉터리가 달라질 수 있습니다. 설치 디렉터리에 같은 이름의 파일이 있다고 해서 현재 코어가 그 파일을 읽는다고 단정할 수는 없습니다.

  1. 현재 환경 기록: 클라이언트에서 사용 중인 코어를 확인하고 사용자 지정 라우팅과 기존 Geo 파일을 백업하세요. 업데이트 후 원인을 추적하기 어려워지지 않도록 코어 업그레이드와 DNS 변경은 동시에 하지 마세요.
  2. 내장 업데이트 실행: 메인 창에서 「업데이트」 메뉴를 열고 Geo 파일 업데이트 항목을 찾으세요. 보통 「Geo 파일 업데이트」로 표시됩니다. 버전에 따라 GeoIP와 GeoSite가 따로 나뉘어 있으면 각각 실행하세요. 메뉴 이름은 현재 화면을 기준으로 확인합니다.
  3. 다운로드 완료 확인: 로그나 알림 영역에서 두 파일의 다운로드가 모두 성공했는지 확인하세요. 시간 초과가 발생하면 다운로드 주소에 접속할 수 있는지 확인합니다. 프록시를 통한 업데이트 옵션이 있다면 먼저 연결이 정상적으로 작동하는지 확인한 후 옵션을 켜고 다시 시도하세요.
  4. 코어 다시 불러오기: 업데이트가 끝나면 서비스를 재시작하거나 연결을 끊었다가 다시 연결하세요. 시작 로그에서 리소스 읽기 실패나 분류 누락 오류가 없는지도 확인합니다.

내장 업데이트를 사용할 수 없다면 수동 교체를 고려하세요. 클라이언트 로그, 실행 중인 설정, 코어의 리소스 설정을 확인해 실제 에셋 디렉터리를 찾습니다. 포터블 디렉터리, 사용자 데이터 디렉터리, 코어 프로그램 디렉터리는 서로 다를 수 있습니다. 코어를 직접 실행하는 경우 V2RAY_LOCATION_ASSET 또는 XRAY_LOCATION_ASSET 등의 리소스 경로 환경 변수도 확인하세요.

  1. 클라이언트와 클라이언트가 실행한 코어 프로세스를 완전히 종료한 뒤, 실제로 사용 중인 geoip.dat와 geosite.dat를 별도의 백업 디렉터리에 복사하세요.
  2. 다운로드한 두 파일을 확인된 에셋 디렉터리에 넣고 원래 파일 이름을 유지하세요. 파일 확장자가 숨겨져 있는 경우 geoip.dat.dat처럼 중복 확장자가 붙지 않도록 주의합니다.
  3. 현재 사용자에게 파일 읽기 권한이 있는지 확인한 뒤 클라이언트를 실행하세요. 이전 태그나 리소스 오류가 계속되면 실제 읽기 경로를 다시 확인하고, 여러 디렉터리에 무작정 파일을 복사하지 마세요.

구독 업데이트와 Geo 업데이트는 별개의 작업입니다. 「구독 그룹」에서 업데이트하면 주로 서버 설정이 갱신되며, 일반적으로 Geo 데이터 업데이트를 대신할 수 없습니다. 구독을 성공적으로 가져왔더라도 라우팅에 지정된 분류가 존재한다는 뜻은 아닙니다.

4. v2rayNG 업데이트: 앱 기능 사용, 비공개 디렉터리 직접 덮어쓰기 금지

v2rayNG는 Xray 코어를 사용하며 Geo 파일은 대개 앱이 관리하는 데이터 공간에 있습니다. Android 파일 관리자의 「다운로드」 폴더는 코어 에셋 디렉터리가 아닙니다. 그곳에 파일을 넣어도 라우팅에 자동 적용되지 않습니다. 앱 전용 디렉터리는 시스템 접근이 제한되므로 데스크톱에서 직접 덮어쓰는 방법을 Android에서 그대로 사용할 수 없습니다.

  1. 현재 라우팅 저장: 사이드 메뉴에서 「라우팅」 페이지를 열고 현재 모드와 사용자 지정 규칙을 기록하세요. 사용자 지정 설정을 사용한다면 문제가 생겼을 때 복구할 수 있도록 원본 설정 텍스트도 저장합니다.
  2. 리소스 업데이트 메뉴 찾기: 「라우팅」 페이지의 오른쪽 위 메뉴와 앱 설정 메뉴에서 Geo 리소스 업데이트 항목을 찾아보세요. 버전에 따라 「Geo 리소스 파일 업데이트」로 표시되거나 GeoIP와 GeoSite 업데이트 항목으로 분리될 수 있으니 실제 화면을 확인합니다.
  3. 출처 확인 및 다운로드: 리소스 주소를 설정할 수 있다면 두 주소가 각각 필요한 파일을 가리키는지 확인하세요. 먼저 업데이트 주소에 접속할 수 있는지 확인하고 완료 알림이 나올 때까지 기다립니다. 앱에서 로컬 파일 가져오기를 명시적으로 지원하는 경우에만 해당 기능을 사용하세요.
  4. 다시 연결하고 검증: 현재 연결을 중지한 뒤 다시 시작하세요. 로그에 Geo 파일 로드 오류가 있는지 확인한 다음 아래 규칙 검증 절차에 따라 아웃바운드를 점검합니다.

현재 버전에 리소스 업데이트나 가져오기 메뉴가 없다면 먼저 해당 버전에 포함된 도움말을 확인하고, 필요한 경우 클라이언트 다운로드 페이지에서 적절한 설치 파일을 선택하세요. 파일 두 개를 교체하려고 앱 데이터를 먼저 삭제하지 마세요. 데이터를 삭제하면 노드, 그룹, 라우팅 설정도 함께 지워질 수 있습니다. 업데이트를 위해 이미 정상 작동하는 VMess 또는 VLESS 노드를 다시 만들 필요도 없습니다.

5. 라우팅 설정: 태그, 아웃바운드, 매칭 순서를 함께 확인

아래는 GeoSite와 GeoIP 필드 위치를 설명하기 위한 V2Ray/Xray의 routing 설정 일부이며, 단독 실행 가능한 완전한 설정은 아닙니다. 기존 outbounds에 direct라는 이름의 직결 아웃바운드가 정의되어 있어야 합니다. GUI 클라이언트는 다른 태그 이름을 만들 수 있으므로 붙여넣기 전에 확인하세요. 화면에 보이는 이름만으로 내부 태그를 추측하면 안 됩니다.

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      }
    ]
  }
}

IPIfNonMatch는 현재 매칭 과정에서 도메인 규칙이 일치하지 않을 때 해당 정책에 따라 IP를 조회한 뒤 주소 규칙에 적용한다는 뜻입니다. 모든 도메인을 먼저 조회한다는 뜻도 아니며, 사용할 수 있는 DNS가 자동으로 설정되는 것도 아닙니다. AsIs는 라우팅을 위해 도메인을 IP로 변환하지 않습니다. IPOnDemand는 IP가 필요한 규칙을 매칭할 때 해당 조회를 시작하므로 DNS 요청이 더 일찍 발생할 수 있습니다.

확인 항목예시 설정놓치기 쉬운 조건
도메인 분류domain: geosite:cn실제 JSON에서 domain 배열을 사용하고 데이터 출처에 cn 분류가 포함되어야 함
주소 분류ip: geoip:cn대상 자체가 IP이거나 라우팅 정책으로 조회 결과를 가져와야 함
직결 아웃바운드outboundTag: direct기존 outbounds에 이름이 정확히 일치하는 태그가 있어야 함
규칙에 매칭되지 않는 트래픽기존 설정에 따라 결정기본 규칙이 없으면 일반적으로 첫 번째 아웃바운드 사용

규칙은 순서대로 평가되며 먼저 일치하는 규칙이 아웃바운드를 결정합니다. 프록시를 강제할 특정 도메인 예외는 범위가 넓은 직결 분류보다 앞에 배치하세요. 모든 트래픽에 적용되는 기본 규칙을 맨 앞에 두면 뒤에 있는 Geo 규칙은 적용되지 않습니다. 위 예시는 그 밖의 트래픽을 반드시 프록시로 보내도록 지정하지 않습니다. 실제 환경에서는 클라이언트가 생성한 최종 아웃바운드 순서와 기본 규칙도 확인해야 합니다.

DNS와 라우팅을 따로 검증하세요. 도메인 분류는 매칭 방향만 결정하며 이미 잘못된 조회 결과를 바로잡지는 않습니다. 도메인 규칙이 올바르게 매칭되는데 연결 대상이 이상하다면 dat 파일을 반복해서 바꾸는 대신 DNS 서버, 조회 아웃바운드, 캐시를 점검하세요.

6. 업데이트 검증: 파일 로드부터 실제 규칙 매칭까지

다운로드 완료는 첫 단계일 뿐입니다. 제대로 적용됐는지 확인하려면 파일을 읽을 수 있는지, 분류를 불러올 수 있는지, 연결이 올바른 아웃바운드로 전달되는지 모두 점검해야 합니다. 한 번에 하나의 변수만 변경하세요. 먼저 파일을 업데이트하고 재시작한 다음 라우팅을 조정합니다. 노드 전환, DNS 변경, 데이터 출처 변경을 동시에 하지 마세요.

  1. 시작 로그 확인: geoip, geosite, failed, not found가 포함된 로그를 검색하세요. 특정 분류를 불러오지 못했다는 메시지가 나오면 노드 문제로 단정하지 말고 태그 철자와 데이터 출처부터 확인합니다.
  2. 테스트할 도메인 선택: 현재 출처의 분류 목록에서 포함 여부가 확인된 도메인 하나와 해당 분류에 포함되지 않아야 하는 도메인 하나를 고르세요. 도메인 접미사만 보고 cn에 속하는지 추측하지 마세요.
  3. 새 연결로 테스트: 기존 페이지의 지속 연결을 종료하거나 테스트 앱을 다시 시작한 뒤 샘플 도메인에 접속하세요. 이미 연결된 세션은 라우팅 파일이 바뀌어도 아웃바운드가 자동으로 다시 선택되지 않습니다.
  4. 접속 기록과 대조: 코어 접속 로그를 사용할 수 있다면 대상 주소와 아웃바운드 태그를 확인하세요. 클라이언트에 규칙 매칭 번호가 표시되지 않으면 테스트 규칙을 한 번에 하나씩만 활성화해 원인을 좁히고, 테스트 후에는 원래 설정으로 복구합니다.
  5. 복구도 검증: 새 파일을 적용한 뒤에만 시작 오류가 발생한다면 서비스를 중지하고 백업을 복원한 다음 재시작해 확인하세요. 복원 후에도 문제가 계속되면 설정과 DNS를 추가로 점검하고 모든 원인을 규칙 데이터 업데이트로 돌리지 마세요.

접속 로그에는 도메인과 대상 주소 등 사용 정보가 포함될 수 있습니다. 문제를 찾기 위해 로그 수준을 일시적으로 높였다면 확인 후 평소 설정으로 되돌리세요. 로그를 다른 사람에게 전달하기 전에 노드 인증 정보, 구독 주소, 개인 접속 기록을 삭제합니다.

7. 자주 묻는 질문: 분류 누락, 업데이트 미적용, 잘못된 라우팅

업데이트 후 geosite 분류가 없다는 메시지가 나옵니다. 다시 다운로드해야 하나요?

먼저 오류에 표시된 태그를 확인하고 현재 데이터 출처의 분류 안내와 대조하세요. 파일은 읽을 수 있지만 태그가 없다면 해당 출처에서 지원하는 태그로 설정을 바꾸거나 기존 출처로 되돌려야 합니다. 같은 데이터를 반복해서 다운로드해도 분류가 새로 생기지는 않습니다.

파일 두 개를 교체했는데 왜 업데이트 전과 똑같이 작동하나요?

먼저 코어를 재시작한 뒤 실제 파일을 읽는 디렉터리를 확인하세요. 현재 모드에서 Geo 참조가 포함된 라우팅을 실제로 사용하는지도 점검해야 합니다. 전역 프록시를 사용하거나 앞쪽에 우선순위가 더 높은 기본 규칙이 있으면 분류를 업데이트해도 해당 연결의 아웃바운드는 바뀌지 않습니다.

geosite:cn은 직결로 설정했는데 왜 일부 중국 본토 웹사이트는 여전히 프록시를 사용하나요?

실제 연결 도메인이 현재 cn 목록에 포함되어 있는지 확인하고 앞선 규칙이 매칭을 가로채는지도 살펴보세요. 앱이 IP에 직접 연결하면 도메인 분류가 매칭되지 않을 수 있습니다. 이때는 주소 규칙과 도메인을 가져오는 방식을 함께 점검하고 모든 대상을 무조건 직결로 보내지 마세요.

Geo 파일을 매일 직접 업데이트해야 하나요?

업데이트 주기는 분류 변경이 필요한지에 따라 정하세요. 기존 규칙이 안정적이라면 클라이언트의 업데이트 기능으로 주기적으로 관리할 수 있습니다. 새 도메인이 목록에 없거나 주소 분류가 바뀐 경우에는 출처의 배포 기록을 확인하세요. 출처를 자주 바꾸기보다 되돌릴 수 있는 파일을 보관하는 편이 문제를 찾는 데 도움이 됩니다.

클라이언트 다운로드