구독을 가져온 뒤 라우팅 규칙을 조정하려는 사용자를 위한 안내입니다. 먼저 IP 데이터베이스와 도메인 데이터베이스의 차이를 살펴보고, v2rayN에서 Geo 파일을 업데이트한 다음 커널이 실제로 읽는 위치를 확인합니다. 마지막으로 국가 및 광고 카테고리 규칙을 설정합니다. 예제에는 V2Ray/Xray의 DAT 라우팅 문법을 사용합니다. 적용 전 현재 연결에 사용하는 커널과 데이터 소스에 참조할 카테고리가 포함되어 있는지 확인하세요.
GeoIP와 GeoSite의 매칭 대상
geoip.dat에는 국가나 기타 태그별로 분류된 IP 대역이 저장되고, geosite.dat에는 태그별 도메인 규칙이 저장됩니다. 두 파일은 커널이 읽는 데이터 파일이며 노드 목록이나 구독 주소가 아닙니다. 구독을 업데이트하면 서버 설정은 새로고침되지만 Geo 파일까지 업데이트되었다고 볼 수는 없습니다.
| 항목 | GeoIP | GeoSite |
|---|---|---|
| 주요 파일 이름 | geoip.dat | geosite.dat |
| 매칭 대상 | 대상 IPv4 또는 IPv6 주소 | 연결에 포함되거나 스니핑으로 확인한 도메인 |
| 규칙 예시 | "ip": ["geoip:cn"] | "domain": ["geosite:cn"] |
| 주요 한계 | IP의 국가·지역 정보만으로 운영 주체의 소재지를 판단할 수 없음 | 카테고리 범위는 데이터 소스에 따라 다르며 도메인 정보가 필요함 |
geoip:cn은 데이터베이스의 cn IP 목록을 참조한다는 뜻이지, ‘중국어 웹사이트 전체’를 의미하지 않습니다. geosite:cn은 도메인 카테고리를 참조하며 두 목록이 일대일로 대응하지도 않습니다. 웹사이트가 여러 국가에 걸친 CDN을 사용할 수 있고 같은 도메인도 네트워크에 따라 다른 IP 주소로 연결될 수 있으므로 도메인 규칙과 IP 규칙은 구분해서 이해해야 합니다.
v2rayN에서 Geo 파일 업데이트하기
먼저 현재 노드에서 V2Ray와 Xray 중 어떤 커널을 사용하는지, 어떤 라우팅 프로필이 활성화되어 있는지 확인하세요. v2rayN은 설정을 생성하고 커널을 관리하며, 데이터베이스를 읽고 라우팅을 매칭하는 작업은 커널이 담당합니다. 아래 단계는 데스크톱 UI에 ‘업데이트 확인’ → ‘Geo 파일 업데이트’ 메뉴가 있는 경우를 기준으로 합니다. UI 버전에 따라 메뉴 이름이나 위치가 다를 수 있으며, 구독 업데이트로 Geo 파일 업데이트를 대신할 수는 없습니다.
-
현재 상태 기록
현재 활성 라우팅 프로필, 노드에서 사용하는 커널, 이번에 해결하려는 도메인을 기록하세요. 규칙 변경과 데이터베이스 업데이트를 한 번에 진행하지 않도록 라우팅 설정을 먼저 복사해 두세요.
-
업데이트 실행
메인 화면에서 ‘업데이트 확인’ → ‘Geo 파일 업데이트’를 선택합니다. 화면 메시지나 로그에서 다운로드 작업이 완료되었는지 확인하세요. 메뉴를 눌렀다는 사실만으로 파일이 정상 저장되었다고 볼 수는 없습니다.
-
파일 확인
실행 중인 클라이언트의 데이터 디렉터리를 찾아
geoip.dat와geosite.dat의 수정 시간, 파일 크기, 업데이트 로그를 확인하세요. 같은 이름의 파일이 여러 개라면 커널이 실제로 사용하는 파일이 무엇인지 추가로 확인해야 합니다. -
재시작 후 확인
현재 커널을 재시작하세요. UI에 별도 재시작 메뉴가 없다면 클라이언트를 완전히 종료한 뒤 다시 실행합니다. 로그에 Geo 파일 로딩 오류가 없는지 확인하고 테스트 연결을 새로 만들어 규칙이 예상한 출구로 연결되는지 살펴보세요.
업데이트에 실패했다면 오류 유형에 따라 점검하세요. 다운로드 시간 초과는 업데이트 서버까지의 네트워크 경로를 확인하고, 인증서 오류는 시스템 날짜와 시간을 먼저 확인하세요. 파일 쓰기 오류라면 디렉터리 권한과 다른 프로세스가 파일을 사용 중인지 확인합니다. 구독 그룹의 ‘프록시를 통해 업데이트’는 구독 업데이트 옵션이므로 Geo 파일 다운로드에도 적용된다고 단정할 수 없습니다.
파일 위치: 현재 인스턴스와 커널 로그를 기준으로 확인
온라인에서 찾은 고정 경로만 믿고 파일을 덮어쓰지 마세요. 포터블 디렉터리, 설치 디렉터리, 사용자 데이터 디렉터리와 배포 패키지에 따라 리소스 구조가 다를 수 있습니다. 특히 PC에 v2rayN이 두 개 설치되어 있다면 이전 디렉터리의 파일을 업데이트해도 현재 인스턴스가 읽는 데이터는 바뀌지 않습니다.
위치 찾기: 인스턴스를 확인한 다음 리소스 디렉터리 찾기
Windows
- 작업 관리자에서 현재 프로세스를 선택해 ‘파일 위치 열기’를 실행하고 어떤 프로그램이 실행 중인지 확인하세요.
- 현재 인스턴스와 관련된 디렉터리에서 두 DAT 파일을 검색하고 업데이트 후 수정 시간을 확인하세요.
- 클라이언트 로그, 생성된 설정, 커널 시작 정보를 함께 살펴 실제 리소스 경로를 확인하세요.
macOS 및 Linux
- 앱 설치 위치와 현재 사용자의 데이터 디렉터리를 구분하세요. 리소스가 모두 프로그램 폴더에 있다고 가정하지 마세요.
- 시작 환경과 커널 로그를 확인해 리소스 디렉터리가 명시적으로 지정되어 있는지 살펴보세요.
- 파일을 직접 교체하기 전에 커널을 중지하고 원본 파일을 보관한 뒤 대상 디렉터리에 쓰기 권한이 있는지 확인하세요.
같은 이름의 파일이 있다고 해서 커널이 그 파일을 읽는 것은 아닙니다. 현재 인스턴스, 시작 환경, 로딩 로그를 대조해 확인하세요.
예를 들어 Windows PowerShell에서는 확인된 클라이언트 디렉터리로 이동한 뒤 아래 읽기 전용 검색을 실행할 수 있습니다. 결과에는 해당 디렉터리 트리의 파일만 표시되며 어떤 파일도 자동으로 덮어쓰지 않습니다. 리소스가 사용자 데이터 디렉터리에 있다면 해당 디렉터리에서도 검색해야 합니다.
Get-ChildItem -Path . -Recurse -File -Filter '*.dat' |
Where-Object { $_.Name -in @('geoip.dat', 'geosite.dat') } |
Select-Object FullName, Length, LastWriteTime
커널을 직접 관리한다면 V2Ray의 V2RAY_LOCATION_ASSET이나 Xray의 XRAY_LOCATION_ASSET 같은 리소스 디렉터리 환경 변수도 확인하세요. 클라이언트가 커널을 관리하는 경우에는 이런 변수를 임의로 추가하지 마세요. 커널이 방금 업데이트한 디렉터리를 건너뛸 수 있습니다. 시작 방식과 실제 파일 경로를 확인한 뒤에만 수동 교체를 진행하세요.
규칙 설정: 광고 차단, 도메인 직결, IP 직결
아래는 V2Ray/Xray 설정의 routing 부분으로, 바로 실행할 수 있는 완전한 클라이언트 설정은 아닙니다. 광고 카테고리를 차단 출구로 보내고 중국 내 도메인과 IP를 직결 출구로 보내는 세 가지 규칙을 보여 줍니다. 적용 전에 실제 출구 태그를 확인하세요. 여기서 block과 direct는 예시 태그일 뿐, 규칙에 적는 것만으로 출구가 자동 생성되지는 않습니다.
{
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"domain": [
"geosite:category-ads"
],
"outboundTag": "block"
},
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"geoip:cn"
],
"outboundTag": "direct"
}
]
}
}
- 광고 규칙을 앞에 배치: 규칙은 순서대로 매칭되며 먼저 일치한 규칙이 출구를 결정합니다. 범위가 넓은 직결 규칙이 앞에 있으면 뒤에 있는 광고 규칙이 해당 연결을 처리하지 못할 수 있습니다.
- 도메인과 IP는 규칙을 분리: 하나의
field규칙에domain과ip를 함께 입력해도 ‘둘 중 하나만 일치하면 된다’는 의미가 아닙니다. 두 조건 중 하나라도 일치할 때 직결하려면 규칙을 각각 만들어야 합니다. - 차단 출구를 지정:
block은blackhole프로토콜을 사용하는 출구 등 이미 정의된 차단 출구를 가리켜야 합니다. 직결 태그는freedom출구를 가리켜야 합니다. 실제 이름은 생성된 설정을 기준으로 확인하세요. - 기본 출구 확인: 이 예제에는 어떤 규칙에도 일치하지 않는 트래픽의 경로가 정의되어 있지 않습니다. V2Ray/Xray는 일반적으로 첫 번째 출구를 미매칭 트래픽에 사용하므로 클라이언트가 생성한 설정의 출구 순서나 기본 규칙을 확인하세요.
v2rayN의 라우팅 편집 화면에서는 도메인 조건에 geosite:category-ads, IP 조건에 geoip:cn을 입력하세요. JSON 객체 전체를 조건 입력란 하나에 붙여 넣으면 안 됩니다. 저장한 뒤 해당 프로필이 현재 활성 라우팅으로 설정되어 있는지도 확인하세요. 전체 필드 구성은 사이트의 전체 설정 가이드에서 확인할 수 있습니다.
도메인 전략: IP 규칙이 적용되지 않는 이유
이 예제에서는 AsIs를 선택했으므로 라우팅 단계에서 IP 규칙 매칭을 위해 도메인 대상 주소를 추가로 조회하지 않습니다. 연결에 처음부터 IP 주소가 포함되어 있으면 geoip:cn과 매칭될 수 있습니다. 도메인이 연결에 포함되어 있지만 도메인 규칙에 일치하지 않는 경우에는 중국 IP 직결 규칙에 반드시 적용된다고 기대할 수 없습니다.
AsIs: 도메인부터 분류
권장이 가이드의 문제 해결을 시작하기에 적합합니다. 도메인 카테고리와 IP 조건의 역할이 명확하게 나뉘어 한 번의 테스트에 추가 DNS 조회를 끌어들이지 않습니다. 다만 모든 네트워크 환경에서 이 전략을 고정적으로 사용해야 한다는 뜻은 아닙니다.
적합한 경우: 먼저 GeoSite 규칙과 순서가 올바른지 확인할 때
IPIfNonMatch: 조회한 뒤 IP로 매칭
도메인이 기존 규칙에 일치하지 않으면 IP 주소를 조회한 뒤 IP 조건으로 계속 매칭합니다. 이 방식을 적용하기 전에 커널의 DNS 설정, 조회 결과, 기본 출구를 확인하세요. 조회 결과 차이를 데이터베이스 만료 문제로 오해하지 않도록 주의해야 합니다.
적합한 경우: 도메인 트래픽에 조회한 IP를 기준으로 라우팅 규칙을 추가 적용해야 할 때
앱이 IP 주소로 직접 연결하면 GeoSite에서 도메인을 확인하지 못할 수 있습니다. 스니핑으로 일부 프로토콜 트래픽에서 도메인을 추출할 수 있지만 모든 연결에서 가능한 것은 아닙니다. 앱의 전송 방식과 암호화 방식도 결과에 영향을 줍니다. geosite.dat를 업데이트해도 ‘라우팅할 도메인 자체가 없는’ 문제는 해결되지 않습니다.
업데이트 후에도 문제가 있으면 로그로 범위를 좁히세요
검증할 때는 웹페이지가 열리는지만 확인하지 마세요. 테스트할 도메인, 예상 출구, 접속 시간을 기록한 다음 같은 시간대의 커널 로그를 확인하세요. 로그 상세 수준은 현재 로그 설정에 따라 다릅니다. 필요한 경우 문제를 확인하는 동안만 상세도를 높이고, 완료 후 원래대로 되돌리세요. 구독 주소나 인증 정보가 포함된 전체 로그를 공개하지 않도록 주의하세요.
category-ads를 찾을 수 없다는 메시지가 뜹니다. 파일은 이미 업데이트했는데 왜 그런가요?
먼저 데이터 소스에서 해당 카테고리를 제공하는지 확인하세요. 다른 광고 카테고리만 제공된다면 실제 태그에 맞춰 규칙을 수정하고 같은 파일을 반복해서 다운로드하지 마세요. 수정 후 커널을 재시작하고 카테고리 로딩 오류가 사라졌는지 확인한 다음 접속을 테스트하세요.
geoip.dat를 열 수 없다는 메시지가 뜹니다. 파일을 어디에 넣어야 하나요?
로그에 표시된 실패 경로부터 확인하세요. 디렉터리와 파일 이름이 올바른지, 프로세스에 읽기 권한이 있는지 살펴본 뒤 시작 환경에서 다른 리소스 디렉터리를 지정했는지 확인합니다. 여러 디렉터리에 파일을 복사해 가며 해결하려 하지 마세요.
광고 규칙을 저장했는데 광고가 계속 표시되는 이유는 무엇인가요?
활성 프로필, 규칙 순서, 차단 출구 태그를 확인한 다음 광고 요청에 사용된 도메인이 해당 카테고리에 포함되어 있는지 살펴보세요. 본문과 광고가 같은 도메인을 사용하는 경우 도메인 목록만으로 구분하기 어렵습니다. 페이지 캐시나 기존 연결이 이전 결과를 유지할 수도 있습니다.
중국 웹사이트가 프록시를 사용합니다. GeoIP가 오래된 건가요?
먼저 연결 대상이 도메인인지 IP인지 확인하세요. AsIs에서는 도메인이 규칙에 맞지 않아도 IP 매칭으로 자동 전환된다고 보장할 수 없습니다. 앞에 배치된 프록시 규칙이 있는지, 대상이 해외 CDN을 사용하는지, DNS 조회 결과가 예상과 일치하는지도 확인하세요.
같은 규칙이 다른 커널에서는 작동하지 않는 이유는 무엇인가요?
먼저 대상 커널이 지원하는 규칙 형식을 확인하세요. 이 문서의 DAT 파일과 geosite:, geoip: 참조는 V2Ray/Xray용이며 확장자만 바꿔 다른 커널의 규칙 세트로 변환할 수 없습니다. 대상 커널에 맞는 데이터 형식과 설정 필드를 사용하세요.
지속적인 관리: 데이터베이스와 규칙을 따로 업데이트
데이터베이스 업데이트는 카테고리 구성원을 바꾸고, 라우팅 업데이트는 조건과 순서, 출구를 바꿉니다. 두 작업은 각각 라우팅 결과에 영향을 줍니다. 한 번에 변수 하나만 조정하면 문제가 데이터 변경, 규칙 우선순위, DNS 조회 차이 중 어디에서 비롯됐는지 파악하기 쉽습니다. 구독을 새로고침할 때마다 모든 파일을 직접 교체할 필요는 없습니다.
- 변경 전에 백업: 현재 정상 작동하는 Geo 파일과 라우팅 설정을 저장하고 데이터 소스 및 업데이트 시간을 기록해 두면 문제가 생겼을 때 이전 상태로 되돌릴 수 있습니다.
- 업데이트 후 시작 상태 확인: 커널이 정상적으로 파일을 불러왔는지 먼저 확인한 다음 직결, 프록시, 차단 결과를 각각 테스트하세요. 웹페이지 하나만 확인해서는 충분하지 않습니다.
- 연결을 새로 만들기: 기존 연결은 연결이 생성될 당시의 경로를 계속 사용할 수 있습니다. 커널을 재시작한 뒤 요청을 새로 보내야 새 설정의 적용 상태를 더 정확히 확인할 수 있습니다.
- 데스크톱과 Android 구분: v2rayNG는 Xray 커널을, v2flyNG는 V2Fly 커널을 사용합니다. 클라이언트별 데이터 관리 메뉴와 리소스 디렉터리가 다르므로 데스크톱의 파일 경로를 그대로 사용하면 안 됩니다.
시작할 수 없거나 네트워크가 끊기면 먼저 직전의 정상 설정으로 복구한 뒤 항목별로 원인을 찾으세요. 일반적인 연결 문제는 문제 해결 가이드에서 더 살펴볼 수 있습니다. Geo 데이터는 라우팅 조건의 일부일 뿐이며, 진입 경로, 규칙 순서, DNS 정책, 출구 태그가 함께 최종 연결 경로를 결정합니다.