v2rayN, v2rayNG 또는 v2flyNG에서 라우팅을 설정하는 사용자를 위한 안내입니다. 도메인 데이터와 IP 데이터를 구분하고, 클라이언트에서 파일을 업데이트하는 방법을 살펴본 뒤 Xray/V2Fly 형식의 규칙으로 태그 참조, 매칭 순서, DNS 조건을 설명합니다. 문제의 원인이 데이터 출처인지 파일 경로인지 라우팅 설정인지 파악해 클라이언트를 반복해서 재설치하지 않도록 도와줍니다.
1. GeoIP와 GeoSite는 무엇을 매칭할까
geosite.dat에는 태그별 도메인 규칙이, geoip.dat에는 태그별 IP 주소 대역이 저장됩니다. 두 파일은 코어가 읽는 바이너리 데이터 파일이지, 노드 목록이나 DNS 서버가 아닙니다. 파일을 업데이트해도 각 집합의 항목만 바뀌며, 규칙의 출구 방향은 자동으로 변경되지 않습니다.
| 대상 | 참조 예시 | 판단 기준 |
|---|---|---|
| 도메인 집합 | geosite:cn | 데이터 출처에서 cn 집합에 포함한 도메인 규칙입니다. .cn으로 끝나는 도메인만 매칭하는 것은 아닙니다. |
| IP 지리 정보 집합 | geoip:cn | 대상 IP가 데이터 출처에 등록된 해당 주소 대역에 속하는지 확인합니다. |
| 사설 및 특수 주소 집합 | geoip:private | 데이터 출처에서 정의한 사설·예약 주소 대역입니다. 구체적인 범위는 출처에 따라 다릅니다. |
연결 요청은 도메인으로 코어에 전달될 수도 있고, 대상 IP만 전달될 수도 있습니다. 도메인 규칙을 적용하려면 코어가 도메인을 알아야 합니다. IP 규칙은 대상 주소가 있어야 하며, 라우팅 단계에서 도메인을 해석하도록 설정할 수도 있습니다. 브라우저에서 사이트가 열린다고 해서 이번 요청에 도메인 집합과 IP 집합이 모두 사용됐다는 뜻은 아닙니다.
예를 들어 192.168.1.1 같은 로컬 네트워크 관리 주소는 주소 대역으로 바로 판단할 수 있습니다. 도메인으로 접속하는 경우, 해당 도메인이 geosite:cn에 포함돼 있어도 해석 결과는 해외 CDN 주소일 수 있습니다. 두 데이터베이스가 나타내는 속성은 서로 다르므로 대체해서 사용할 수 없습니다.
판단 기준: 로컬 네트워크 규칙은 먼저 주소 범위를 확인합니다
실제 게이트웨이 주소로 직접 연결 규칙을 먼저 확인한 다음 사이트 분류를 점검하세요. 위 세 대역은 명확하게 정해진 사설 IPv4 범위이며, 특정 데이터베이스의 private 목록 전체를 뜻하지는 않습니다. 루프백, 링크 로컬 또는 IPv6 주소도 필요하다면 데이터 출처의 내용을 추가로 확인하세요.
2. 규칙 파일 출처와 태그 호환성
일반적인 데이터 출처로는 V2Fly의 domain-list-community 도메인 모음, geoip 데이터 프로젝트, Loyalsoldier 등이 관리하는 규칙 데이터 빌드가 있습니다. 원본 프로젝트는 텍스트 목록을 제공할 수 있으며, 코어가 실제로 읽는 .dat 파일은 빌드 결과물입니다. 웹페이지나 원본 도메인 목록의 파일 이름만 geosite.dat로 바꾸지 마세요.
클라이언트 기본 데이터 출처
권장클라이언트에 이미 설정된 Geo 데이터 다운로드 출처를 그대로 사용하고, 현재 라우팅 규칙의 태그가 모두 로드되는지 먼저 확인하세요. 출처와 규칙을 동시에 바꾸면 문제를 추적할 때 확인할 변수가 늘어납니다.
적합한 경우: 일반적인 라우팅, 첫 업데이트, 기존 설정 복구
관리 프로젝트의 빌드 결과물
특정 분류가 필요하다면 해당 태그를 지원한다고 명시된 출처를 선택하세요. 출처 이름, 업데이트 날짜, 파일 이름을 기록하고 태그 안내와 코어 형식이 일치하는지 확인하세요.
적합한 경우: 사용자 지정 분류, 데이터 출처 고정, 태그 누락 문제 해결
파일 이름이 같다고 해서 태그 구성까지 같은 것은 아닙니다. cn은 대체로 포함되지만, 세부 서비스나 광고 분류, 속성이 붙은 그룹은 일부 데이터 소스에만 있을 수 있습니다. 설정에서 데이터 파일에 없는 태그를 참조하면 해당 규칙만 적용되지 않는 데 그치지 않고 코어가 설정을 불러오지 못할 수도 있습니다.
- 먼저 형식을 확인하세요: 이 글의
geosite:,geoip:및 JSON 예시는 Xray/V2Fly 라우팅 형식 기준입니다. 다른 규칙 형식에 그대로 적용하면 안 됩니다. - 태그도 확인하세요: 이름만 보고 분류가 있을 것이라고 추측하지 말고 데이터 출처에서 공개한 분류 목록을 확인하세요.
- 복구 지점을 남겨 두세요: 업데이트 전에 기존 데이터 파일 두 개와 라우팅 설정을 백업하세요. 출처를 바꿀 때는 파일과 규칙을 한 묶음으로 점검해야 합니다.
3. v2rayN에서 Geo 파일을 업데이트하는 순서
데스크톱에서는 먼저 현재 설정이 Xray 코어를 사용하는지 V2Fly 코어를 사용하는지 확인한 뒤 해당 데이터 파일을 처리하세요. 아래 절차는 ‘Geo 파일 업데이트’ 메뉴가 있는 v2rayN 인터페이스를 기준으로 합니다. 버전에 따라 메뉴 위치나 분류가 달라질 수 있으므로 화면의 문구 차이를 파일 손상으로 오해하지 마세요.
-
라우팅 설정 백업
‘설정’ → ‘라우팅 설정’을 열어 현재 활성화된 라우팅 구성과 사용자 지정 규칙을 기록하세요. Geo 파일을 직접 관리하고 있다면 기존 파일도 백업 폴더에 복사해 두세요.
-
데이터 업데이트
메인 창에서 ‘업데이트 확인’ → ‘Geo 파일 업데이트’를 선택하세요. 업데이트가 끝나면 geoip.dat와 geosite.dat의 처리 상태를 각각 확인하세요. 노드 구독 업데이트 알림을 규칙 데이터 업데이트 결과로 혼동하지 마세요.
-
로그 확인
메인 창의 로그 또는 메시지 영역을 확인하세요. 다운로드에 실패했다면 네트워크와 출처 주소부터 점검하세요. 태그를 불러올 수 없다는 메시지가 표시되면 참조한 이름과 데이터 출처를 확인하고, 라우팅 전체를 바로 삭제하지 마세요.
-
다시 불러오기
클라이언트에서 현재 연결을 중지한 뒤 다시 시작해 코어가 데이터를 다시 읽도록 하세요. 업데이트 과정에서 클라이언트가 이미 재시작됐더라도 시작 로그에 Geo 파일 로드 오류가 없는지 확인해야 합니다.
-
규칙 재검증
노드, 프록시 모드, DNS 설정은 그대로 두고 데이터 파일만 바꾼 다음 같은 대상을 테스트하세요. 그래야 데이터 업데이트 효과와 다른 설정 변경의 영향을 구분할 수 있습니다.
v2rayNG와 v2flyNG에서는 사이드 메뉴의 ‘라우팅 설정’을 열어 현재 규칙과 사용할 수 있는 데이터 업데이트 메뉴를 확인하세요. Android 클라이언트는 버전에 따라 메뉴가 다릅니다. 별도의 Geo 업데이트 항목이 없다면 해당 버전의 안내에 따라 파일 가져오기나 리소스 업데이트 기능을 사용하세요. 데스크톱의 디렉터리 경로를 그대로 적용하면 안 됩니다. 구독을 업데이트하면 주로 노드 정보가 갱신되므로 Geo 데이터까지 업데이트됐다고 판단할 수 없습니다.
4. geosite:cn과 geoip:private 규칙 작성법
다음은 Xray/V2Fly의 routing 객체 예시입니다. 먼저 사설 주소를 직접 연결하고, 다음으로 도메인 집합을 처리한 뒤, 중국 IP 집합을 보충 규칙으로 사용합니다. 태그 이름은 설치된 데이터 파일에 따라 달라집니다. 규칙은 위에서 아래로 확인하며 처음으로 일치한 규칙이 출구를 결정합니다.
{
"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"
}
]
}
}
| 필드 | 올바른 사용법 | 흔한 잘못된 사용법 |
|---|---|---|
domain | geosite:cn 같은 도메인 매칭 항목을 입력합니다. | geoip:cn을 도메인 집합으로 입력합니다. |
ip | geoip:private 또는 CIDR을 입력합니다. | 웹사이트 도메인을 IP 주소 배열에 직접 입력합니다. |
outboundTag | 현재 전체 설정에 정의된 태그를 참조합니다. | 인터페이스에 표시된 노드 이름을 코어의 출구 태그로 사용합니다. |
rules | 범위가 명확한 예외 규칙을 포괄적인 규칙보다 앞에 둡니다. | 수정 규칙을 맨 뒤에 추가해도 앞선 규칙이 먼저 매칭됩니다. |
일반적으로 한 규칙에 서로 다른 조건이 여러 개 있으면 모든 조건을 충족해야 합니다. 같은 배열에 후보 항목이 여러 개 있으면 그중 하나에 일치하면 됩니다. ‘도메인이 cn에 속하거나 IP가 cn에 속하면 직접 연결’하려면 예시처럼 규칙을 두 개로 나눠야 합니다. 두 필드를 한 규칙에 넣고 ‘또는’ 조건으로 처리할 수는 없습니다.
5. domainStrategy와 DNS가 라우팅에 미치는 영향
routing.domainStrategy는 라우팅 판단 중 도메인을 어떻게 해석할지 정합니다. 클라이언트 전체의 DNS 설정과는 다릅니다. 특히 출구 설정에 있는 이름이 같거나 비슷한 항목과 혼동하지 마세요. 라우팅 단계에서는 사용할 출구를 결정하고, 출구 단계에서는 연결 방법을 결정합니다.
AsIs: 라우팅 단계에서 IP 규칙을 적용하기 위해 도메인을 능동적으로 해석하지 않습니다. 대상 IP가 이미 있는 요청은 IP 규칙에 매칭될 수 있지만, 모든 도메인이 GeoIP 판정을 거친다고 기대하면 안 됩니다.IPIfNonMatch: 도메인이 어떤 규칙에도 일치하지 않으면 IP를 해석한 뒤 계속 판단합니다. 도메인이 앞선 규칙에 이미 매칭됐다면 일반적으로 해당 라우팅 판단을 위해 다시 해석할 필요가 없습니다.IPOnDemand: IP 판정이 필요한 규칙을 만나면 바로 해석을 시작할 수 있습니다. IP 규칙을 앞쪽에 두면 라우팅 단계에서 도메인 요청을 DNS로 조회할 가능성이 높아질 수 있습니다.
따라서 예시에서는 IPIfNonMatch를 사용합니다. 알려진 도메인 집합을 먼저 확인하고, 매칭되지 않은 대상은 그다음 IP 분류를 시도합니다. 다만 DNS 조회가 어떤 경로를 통하는지는 DNS 서버, 조회 규칙, 연결 설정에 따라 달라집니다. 데이터 파일 두 개만 업데이트해서는 잘못된 DNS 응답이나 DNS 요청 시간 초과를 해결할 수 없습니다.
확인 방법: 코어에 도메인과 IP 중 무엇이 전달되는지 파악하기
‘도메인 직접 연결 규칙이 적용되지 않는다’면 먼저 요청 대상과 라우팅 로그를 확인하세요. 앱이 IP만 코어에 전달한다면 geosite.dat만 업데이트해도 도메인 정보가 복원되지는 않습니다. 앱의 프록시 사용 방식을 확인하고 필요한 경우 스니핑 설정과 적용 범위를 점검한 뒤 규칙을 조정할지 판단하세요.
6. 수동 교체, 검증 및 자주 발생하는 오류
자동 업데이트에 실패했다면 같은 관리 출처에서 빌드한 파일 두 개를 직접 받을 수 있습니다. 교체 전 코어를 중지하고 현재 코어가 실제로 읽는 리소스 디렉터리를 찾은 다음, 정확한 파일 이름을 유지해 새 파일로 교체하고 다시 시작하세요. 데스크톱 설치형, 포터블 버전, Android 앱의 리소스 위치는 서로 다르므로 모든 환경에 적용되는 공통 경로는 없습니다.
- 읽는 위치 확인: 클라이언트의 디렉터리 안내, 리소스 설정 또는 로그를 기준으로 확인하세요. 프로그램 디렉터리에 같은 이름의 파일이 있다는 이유만으로 실행 중인 코어가 그 파일을 읽는다고 단정하지 마세요.
- 다운로드한 파일 확인: 파일이 비어 있거나 로그인 페이지, 오류 안내 페이지 또는 압축 파일이어서는 안 됩니다. 시스템에서 확장자를 숨기는 경우
geosite.dat.dat로 저장되지 않았는지도 확인하세요. - 정상 실행 여부 확인: 다시 시작한 뒤 파일을 찾을 수 없음, 데이터 파싱 실패, 집합 태그를 찾을 수 없음 등의 메시지가 표시되는지 확인하세요. 시작에 실패하면 수정 사항을 더 추가하지 말고 먼저 백업을 복원하세요.
- 실제 라우팅 확인: 앱이 클라이언트 프록시를 실제로 사용하는지 확인한 뒤 로컬 네트워크 대상, 직접 연결할 대상, 프록시로 연결할 대상을 각각 방문하세요. 사용 가능한 접속 로그를 참고해 출구 태그를 확인합니다.
| 증상 | 우선 확인할 항목 | 해결 방법 |
|---|---|---|
| 다운로드는 성공했지만 파일을 찾을 수 없다는 오류가 표시됨 | 실행 중인 코어의 리소스 디렉터리와 파일 이름 | 파일을 실제 읽기 경로에 넣고 코어를 다시 시작합니다. |
| 업데이트 후 특정 태그가 없다는 메시지가 표시됨 | 새 데이터 출처에서 해당 태그를 제공하는지 확인합니다. | 기존 데이터를 복원하거나 새 출처의 분류에 맞게 관련 규칙을 조정합니다. |
| 사이트가 여전히 잘못된 출구로 연결됨 | 규칙 순서, 도메인 확인 여부, 현재 선택된 구성 | 먼저 매칭된 규칙을 확인하고 현재 사용 중인 라우팅을 편집하는지 점검합니다. |
| 정상적으로 시작되지만 사이트가 열리지 않음 | 노드 연결, DNS, 대상 서비스 상태 | 연결 문제와 분류 문제를 먼저 구분하고 문제 해결 가이드에 따라 항목별로 확인하세요. |
Geo 파일은 매일 업데이트해야 하나요?
매일 업데이트해야 한다는 기준은 없습니다. 분류 변경, 주소 할당 조정, 관리 프로젝트의 수정 사항이 업데이트의 실질적인 이점입니다. 우선 매주 확인하고 분류 오류가 확인되거나 새 태그가 필요할 때 업데이트하면 됩니다. 클라이언트에 Geo 자동 업데이트 기능이 없다면 구독 자동 갱신 주기를 대신 사용하지 마세요.
데이터베이스를 업데이트하면 중국 국내 트래픽이 자동으로 직접 연결되나요?
아니요. 데이터 파일은 집합만 제공합니다. geosite:cn 또는 geoip:cn을 참조하고 유효한 직접 연결 출구를 지정하는 규칙이 별도로 필요합니다. 현재 모드에서 이 라우팅을 우회한다면 데이터베이스가 최신이어도 결과는 달라지지 않습니다.
파일 수정 시간이 바뀌었는데 분류는 왜 그대로인가요?
수정 시간이 바뀌었다는 것은 로컬 파일에 쓰기 작업이 있었다는 뜻일 뿐, 필요한 항목이 변경됐거나 코어가 파일을 다시 읽었다는 의미는 아닙니다. 계속 다시 다운로드하기보다는 데이터 출처의 내용, 실행 중인 파일 경로, 코어 재시작 여부, 실제 매칭된 규칙을 차례로 확인하세요.