노드를 가져온 뒤 라우팅 분기나 Geo 리소스 오류를 점검하는 사용자를 위한 안내입니다. 먼저 도메인 데이터베이스와 IP 데이터베이스를 구분한 다음 클라이언트에서 리소스를 업데이트하세요. 파일을 직접 교체할 때는 커널이 실제로 읽는 디렉터리를 확인하고, 마지막으로 라우팅 로그에서 참조 태그와 규칙 순서를 검증합니다. 여기서 다루는 dat 파일과 JSON 문법은 V2Ray/Xray 형식이며, 다른 형식의 규칙 데이터베이스에는 적용되지 않습니다.
1. GeoIP와 GeoSite는 무엇을 매칭하나요?
geoip.dat에는 태그별 IP 주소 범위가, geosite.dat에는 태그별 도메인 규칙이 저장됩니다. 두 파일은 커널이 조회하는 바이너리 리소스이며 노드 목록이나 구독 주소가 아닙니다. 리소스를 업데이트해도 서버, 포트 또는 사용자 인증 정보는 바뀌지 않습니다.
GeoIP: 대상 IP 매칭
- 파일명
geoip.dat- 규칙 필드
ip- 자주 쓰는 참조
geoip:cn、geoip:private- 데이터 내용
- IPv4·IPv6 주소 범위 모음
지역 분류는 데이터 출처의 대상 IP 주소 범위를 나타내며, 서비스 운영 주체의 소재지를 뜻하지 않습니다.
GeoSite: 대상 도메인 매칭
- 파일명
geosite.dat- 규칙 필드
domain- 자주 쓰는 참조
geosite:cn- 데이터 내용
- 전체 도메인, 도메인 접미사 등의 규칙
특정 태그가 포함되는지는 사용하는 데이터베이스에 따라 달라집니다. 태그 이름만으로 항목이 자동 생성되지는 않습니다.
geosite:cn은 ‘중국 IP로 확인되는 모든 도메인’을 뜻하지 않습니다. 마찬가지로 geoip:cn도 ‘중국어 웹사이트 전체’를 의미하지 않습니다. 도메인이 해외 CDN을 사용할 수도 있고, 해외 서비스가 중국 본토에 접속 지점을 둘 수도 있습니다. 도메인 목록과 IP 목록은 별개의 조건으로 이해해야 합니다.
데이터베이스는 매칭에 필요한 목록만 제공합니다. 직접 연결, 프록시 또는 차단을 결정하는 것은 라우팅 설정입니다. 파일을 업데이트했더라도 현재 라우팅에서 해당 목록을 참조하지 않으면 분기 동작은 달라지지 않습니다.
2. 업데이트 전에 커널·디렉터리·복구 방법 확인
v2rayN은 데스크톱 클라이언트로, 설정을 생성한 뒤 선택한 커널에 트래픽 처리를 맡깁니다. v2rayNG는 Xray 커널을 사용합니다. 클라이언트 설치 디렉터리, 설정 저장 디렉터리, 커널 리소스 디렉터리는 서로 다를 수 있습니다. 특히 데스크톱에서 커널을 바꾸면 이전에 교체한 파일을 현재 프로세스가 더는 읽지 않을 수 있습니다.
- 현재 환경 기록: 클라이언트의 ‘정보’ 또는 버전 정보에서 클라이언트 버전을 확인하고, 시작 로그에 표시된 커널 이름과 버전을 기록하세요. ‘연결 안 됨’이라고만 적지 말고 원래 오류 메시지도 보관하세요.
- 라우팅 설정 백업: 사용자 지정 규칙과 현재 Geo 업데이트 주소를 저장하세요. 파일을 직접 교체할 예정이라면 기존
geoip.dat와geosite.dat도 백업해야 합니다. - 리소스 형식 확인: 이 문서에서는 dat 형식을 사용합니다. 확장자가 다른 규칙 세트의 이름을
geosite.dat로 바꾸지 마세요. 파일명이 같아도 내부 형식이 호환된다는 뜻은 아닙니다. - 변경 범위 최소화: 먼저 리소스만 업데이트하고 검증한 뒤 규칙을 조정하세요. 클라이언트 업그레이드, 커널 교체, DNS 변경, 라우팅 순서 변경을 한꺼번에 진행하면 원인을 찾기 어렵습니다.
3. v2rayN: 업데이트 메뉴를 먼저 사용하고, 필요할 때 직접 교체
해당 기능을 제공하는 v2rayN 데스크톱 버전에서는 상단의 ‘업데이트 확인’ 메뉴를 열고 ‘Geo 파일 업데이트’를 선택하세요. 버전이나 화면 구성에 따라 메뉴 위치와 이름이 다를 수 있으므로 현재 화면의 Geo 업데이트 항목을 기준으로 확인하면 됩니다. 이 기능은 ‘구독 업데이트’와 다릅니다. 구독 업데이트는 서버 설정만 새로고침하며 규칙 리소스는 업데이트하지 않습니다.
- 업데이트에 사용할 네트워크 확인: 기존 설정으로 사용 가능한 노드에 먼저 연결하세요. 업데이트 메뉴에서 직접 연결과 프록시 다운로드를 선택할 수 있다면 현재 접속 가능한 방식을 이용하세요. 브라우저에서 다운로드된다고 해서 클라이언트의 업데이트 요청도 같은 경로를 사용하는 것은 아닙니다.
- Geo 업데이트 실행: 클라이언트 로그에서 리소스 다운로드와 저장이 완료됐는지 확인하세요. 시간 초과, 연결 중단, 쓰기 오류가 발생했다면 업데이트가 성공한 것이 아닙니다. 메뉴가 닫혔다는 이유만으로 완료됐다고 판단하지 마세요.
- 커널 다시 로드: 업데이트가 끝나면 클라이언트에서 현재 서비스를 다시 시작하거나 클라이언트를 정상 종료한 뒤 다시 실행하세요. 새 파일은 다음 설정 로드 과정에서 적용됩니다.
- 시작 결과 확인: 리소스 로드 오류가 없는지 확인한 다음 직접 연결 규칙과 프록시 규칙에 해당하는 대상을 하나씩 테스트하세요. 새 데이터베이스에 기존 규칙이 사용하는 태그가 없다면 데이터베이스를 이전 버전으로 되돌리거나 해당 규칙을 수정하세요.
직접 교체할 때 실제 리소스 디렉터리 찾기
포터블 설치에서 보이는 bin 하위 디렉터리는 위치를 찾을 때 참고할 단서일 뿐, 모든 설치 방식에 적용되는 고정 경로는 아닙니다. 시작 로그, 커널 실행 인수, 클라이언트 디렉터리 설정을 확인해 실제 리소스 위치를 찾으세요. 같은 이름의 파일이 여러 개 있어도 수정 시간만 보고 판단하지 마세요.
- 클라이언트가 실행한 커널 프로세스를 종료한 다음 대상 디렉터리의 기존 파일을 백업하세요. 리소스를 읽는 도중에 파일을 덮어쓰지 않도록 합니다.
- 신뢰할 수 있는 기존 데이터 배포처에서 호환되는 파일을 받으세요. 압축 파일을 내려받았다면 먼저 압축을 푸세요. 저장된 웹페이지나 다운로드 오류 페이지는 dat 파일로 사용할 수 없습니다.
- 필요한
geoip.dat와geosite.dat만 교체하고 파일명을 정확히 유지하세요. 실행 중인 커널의 계정에 파일 읽기 권한이 있는지도 확인해야 합니다. - 데이터 제공처를 바꿨다면 라우팅에서 사용하는 태그를 다시 확인하세요. 리소스가 정상적으로 파싱된다고 해서 이전 데이터 소스의 모든 분류가 포함된 것은 아닙니다.
확인 사항: 파일을 바꾸기 전에 읽기 경로부터 찾으세요
같은 이름의 데이터베이스가 여러 개라면 시작 정보를 확인해 현재 커널이 사용하는 파일을 먼저 찾으세요. 모든 디렉터리에 파일을 복사하지 마세요. 다음에 커널을 바꿀 때 원인을 알 수 없는 설정 차이가 생길 수 있습니다.
4. v2rayNG: Geo 리소스 메뉴에서 업데이트
v2rayNG 메인 화면 오른쪽 위의 ‘⋮’ 메뉴를 열고 ‘Geo 리소스 업데이트’ 관련 항목을 찾으세요. 일부 버전에서는 ‘Geo 리소스 파일 업데이트’로 표시됩니다. 여기서는 Xray가 사용하는 로컬 리소스를 업데이트하며, 구독의 노드를 업데이트하는 것이 아닙니다. 현재 버전에 해당 항목이 없다면 버전과 기능 안내를 먼저 확인하세요. 시스템 다운로드 폴더에 같은 이름의 파일을 임의로 덮어쓰지 마세요.
- 기존 라우팅 설정 유지: 현재 라우팅 모드, 사용자 지정 규칙, 리소스 출처 설정을 기록하세요. 업데이트 과정에서 이 설정까지 바뀌어서는 안 됩니다.
- 리소스 업데이트 실행: 업데이트 주소에 접속할 수 있는지 확인하세요. 버전에서 Geo 리소스 사용자 지정 주소를 지원한다면 해당 바이너리 파일을 반환하는 주소를 입력하세요. 배포 페이지나 구독 링크를 입력하면 안 됩니다.
- 항목별 결과 확인: 화면에서 GeoIP와 GeoSite 다운로드 상태를 따로 표시한다면 각각 확인하세요. 둘 중 하나만 성공했다고 다른 하나까지 교체된 것은 아닙니다.
- 연결 재시작: 업데이트가 끝나면 연결을 중지했다가 다시 시작하고 커널 로그를 확인하세요. 이후 매칭해야 할 도메인과 로컬 네트워크 대상을 테스트합니다.
사용자 지정 리소스 출처는 안정적으로 유지하세요. 출처를 변경한 뒤에는 현재 규칙에서 참조하는 cn, private 등의 태그가 있는지 확인하세요. 일부 추가 분류는 특정 데이터 세트에만 포함됩니다. 다른 안내에서 봤다는 이유로 그대로 입력하지 마세요.
5. geosite:cn 및 geoip:private 참조 방법
다음은 V2Ray/Xray의 routing 필드 예시이며 클라이언트 전체 설정이 아닙니다. 예시에서는 기존 아웃바운드에 direct와 proxy 태그가 이미 정의돼 있다고 가정합니다. 실제 태그가 다르면 함께 수정하세요. 일반 노드 설정은 보통 클라이언트에서 생성되므로, 이 코드를 구독 주소 입력란에 붙여넣지 마세요.
{
"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"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
- 도메인 목록은
domain에 지정:geosite:cn은geosite.dat의cn분류를 참조합니다. 이 규칙으로 매칭하려면 커널에 대상 도메인이 전달돼야 합니다. - IP 목록은
ip에 지정:geoip:private는 로컬 및 사설 네트워크 관련 주소에 자주 사용됩니다.geoip:cn은 데이터베이스에서 중국으로 분류한 주소 범위를 가리킵니다. - 필드를 함께 쓰면 모두 충족해야 함: 한 규칙에
domain과ip를 함께 지정하면 ‘둘 중 하나’를 만족하는 방식이 아닙니다. 도메인이나 IP 중 하나만 일치해도 직접 연결하려면 예시처럼 규칙을 나누세요. - 규칙은 앞에서부터 매칭: 최종 대체용 TCP·UDP 프록시 규칙은 마지막에 배치하세요. 맨 앞에 두면 뒤에 있는 직접 연결 규칙이 매칭될 기회가 거의 없습니다.
IPIfNonMatch는 도메인 단계에서 매칭되지 않았을 때 IP를 조회해 다시 매칭하는 설정입니다. ‘모든 도메인을 먼저 확인한 뒤 모든 규칙을 실행한다’는 뜻은 아닙니다. AsIs를 사용하면 대상 IP가 없는 도메인 요청은 geoip:cn을 설정해도 같은 방식으로 IP 조회 및 매칭이 자동 수행되지 않습니다. DNS 결과도 최종 IP 분류에 영향을 주므로 리소스 업데이트와 DNS 문제는 별도로 점검해야 합니다.
사설 IPv4 주소 범위 확인 기준
로컬 네트워크 직접 연결을 점검할 때는 아래 세 가지 RFC 1918 주소 범위를 기준으로 대상이 사설 IPv4 네트워크에 속하는지 확인할 수 있습니다. 이는 확인을 위한 대표 범위일 뿐 geoip:private의 전체 항목은 아닙니다. 루프백, 링크 로컬, IPv6 범위는 별도로 확인해야 합니다.
6. 업데이트 후 검증과 자주 발생하는 오류
검증은 두 단계로 진행하세요. 먼저 파일이 정상적으로 로드됐는지 확인하고, 다음으로 요청이 예상한 규칙과 매칭됐는지 확인합니다. 다운로드 완료, 커널 시작 성공, 웹사이트 접속 가능은 각각 다른 결과입니다. 웹페이지가 한 번 열렸다고 직접 연결 규칙이 적용됐다고 볼 수는 없습니다.
- 시작 로그 확인:
geoip,geosite,failed등의 키워드를 검색해 파일 누락, 형식 오류, 분류 항목 부재 여부를 확인하세요. - 실제 아웃바운드 확인: 로그에 라우팅 또는 접속 기록이 표시된다면 테스트 요청에 연결된 아웃바운드 태그를 확인하세요. 필요한 경우 점검 중에만 로그 수준을 높이고, 완료 후에는 원래대로 되돌리세요. 접속 기록이 장시간 쌓이지 않도록 주의해야 합니다.
- 테스트 조건 통일: 같은 노드, 같은 라우팅 모드, 같은 대상을 사용하세요. 기존 연결을 종료한 뒤 요청을 새로 보내야 합니다. 계속 사용 중인 연결은 데이터베이스를 교체해도 아웃바운드가 즉시 다시 선택되지 않습니다.
- 복구 절차 마련: 새 리소스로 인해 시작에 실패하면 커널을 중지하고 기존 파일이나 리소스 출처를 복원한 뒤 다시 시작해 확인하세요. 복구가 확인되면 새 태그와 리소스 형식을 하나씩 점검합니다.
geosite.dat을 찾을 수 없다고 나오면 구독을 다시 가져와야 하나요?
먼저 실제 리소스 디렉터리, 파일명, 읽기 권한을 확인한 다음 클라이언트의 Geo 업데이트를 실행하세요. 구독에는 보통 서버 설정만 포함되므로 다시 가져와도 커널에 필요한 데이터베이스가 추가되지는 않습니다.
list not found 오류가 발생합니다. 파일은 이미 다운로드했는데 왜 그런가요?
이 메시지는 대개 규칙에서 참조하는 분류가 현재 데이터베이스에 없다는 뜻입니다. 오류에 표시된 태그와 데이터 출처를 확인하세요. 기존 데이터 출처를 복원하거나 현재 데이터베이스에서 실제로 제공하는 분류로 규칙을 수정하면 됩니다.
리소스 업데이트가 시간 초과되는데 브라우저에서는 다운로드 주소가 열리나요?
클라이언트의 업데이트 요청이 프록시를 통과하는지, 프록시 연결이 준비됐는지, 업데이트 주소가 웹페이지가 아닌 파일을 반환하는지 확인하세요. 직접 연결과 프록시 업데이트를 모두 지원한다면 방식을 바꿔 다시 시도하고 로그 결과를 기준으로 판단하세요.
업데이트했는데도 중국 본토 웹사이트가 프록시를 이용하면 다음으로 무엇을 확인해야 하나요?
먼저 현재 라우팅에서 geosite:cn 또는 geoip:cn을 참조하는지 확인한 뒤, 앞쪽에 있는 프록시 규칙이 먼저 매칭되는지 살펴보세요. 앱이 IP만 전달하면 도메인 규칙은 매칭에 사용되지 않을 수 있습니다. 대상 정보와 DNS 확인 방식도 함께 점검해야 합니다.
데이터베이스를 매일 직접 업데이트해야 하나요?
매일 업데이트해야 한다는 일괄 기준은 없습니다. 데이터 출처의 배포 일정에 맞춰 관리하고, 분류 누락이 확인됐을 때 업데이트하세요. 알 수 없는 출처의 데이터로 자주 교체하기보다 매번 복구 가능한 기존 리소스를 보관해 두는 편이 문제 해결에 유리합니다.