노드에 연결된다는 것은 프록시 아웃바운드가 기본적으로 작동한다는 뜻일 뿐입니다. 중국 본토 사이트 접속이 우회되거나, 로컬 네트워크 주소가 프록시로 전송되거나, 특정 도메인이 계속 지정한 경로를 사용하지 않는다면 라우팅 계층을 추가로 확인해야 합니다. GeoIP와 GeoSite는 라우팅 계층에서 자주 사용하는 두 가지 매칭 데이터입니다. VMess·VLESS 같은 프로토콜 설정을 대신하거나 구독을 업데이트하는 기능이 아니라, Xray 및 V2Fly 코어가 조회할 수 있는 IP·도메인 집합을 제공합니다.
구독을 이미 가져왔고 노드 연결도 정상이지만 v2rayN 또는 v2rayNG에서 규칙이 매칭되지 않거나, 중국 본토 트래픽이 잘못 프록시로 전송되거나, 시작 시 데이터 파일 오류가 발생하는 사용자를 위한 글입니다. 파일 위치와 업데이트 시간을 확인하고 두 데이터베이스를 업데이트한 뒤 규칙 접두사와 순서를 점검하고, 로그와 실제 연결 결과로 하나씩 검증하는 것이 핵심입니다.
GeoIP와 GeoSite의 역할
geoip.dat에는 국가·지역·용도별로 정리된 IP 대역 집합이 저장됩니다. 규칙의 geoip:cn은 대상 IP를 해당 집합과 비교하며, geoip:private는 일반적으로 로컬 네트워크·루프백 주소 및 기타 사설 주소를 매칭하는 데 사용됩니다. 이미 대상 IP를 확인한 연결에 적합하며, 도메인 규칙을 적용한 뒤 보완 조건으로도 사용할 수 있습니다.
geosite.dat에는 도메인 집합이 저장됩니다. geosite:cn이나 geosite:category-ads-all 같은 규칙은 일반 도메인이 아니라 데이터 파일에서 읽어 오는 도메인 항목 그룹입니다. 코어는 전체 도메인·하위 도메인·정규식 항목을 기준으로 매칭하므로, 실제 대상 서버에 연결하기 전에 도메인별 트래픽을 분기할 수 있습니다.
두 데이터 유형의 역할은 서로 바꿀 수 없습니다. 도메인 요청은 먼저 GeoSite에 매칭될 수 있지만, 애플리케이션이 IP에 직접 연결하면 비교할 도메인이 없으므로 GeoIP·포트·기타 조건에 의존해야 합니다. TUN을 사용할 때는 스니핑과 DNS 설정도 함께 확인해야 합니다. 스니핑으로 도메인이 복원되면 도메인 규칙이 다시 매칭에 참여할 수 있고, 도메인이 복원되지 않으면 연결은 IP 규칙이나 최종 규칙으로 처리됩니다.
v2rayN에서 Geo 파일 업데이트
아래 예시는 v2rayN 7.15.0 중국어 인터페이스를 기준으로 합니다. 세부 버전에 따라 업데이트 메뉴가 기본 메뉴나 트레이 메뉴에 있을 수 있지만, 일반적으로 메뉴 항목에 “检查更新”과 “Geo files”가 포함됩니다. 업데이트 전에 현재 연결을 안정적으로 유지하세요. 데이터 소스에 프록시로만 접근할 수 있다면 시스템 프록시 또는 TUN이 정상 작동하는지 먼저 확인해야 합니다.
-
코어 유형 확인
「设置」→「参数设置」→「Core 类型」을 열고 현재 설정이 Xray 코어를 사용하는지 V2Fly 코어를 사용하는지 확인합니다. 구독 이름에 VLESS 또는 VMess가 표시된다고 해서 실행 중인 코어까지 확인된 것은 아닙니다.
-
업데이트 메뉴 열기
기본 창으로 돌아가 「检查更新」→「Geo files」를 선택합니다. 현재 버전에 「更新 Geo 文件」이 표시되면 해당 항목을 선택하세요. “업데이트 구독”을 잘못 선택하지 않도록 주의합니다.
-
파일 저장 완료 대기
메시지 영역에서 geoip.dat와 geosite.dat가 모두 다운로드되고 저장되었는지 확인합니다. 한 테스트에서는 두 파일의 합계가 약 11.9MB였으며, 네트워크가 안정적이면 보통 5~30초 안에 완료됩니다.
-
실행 중인 코어 재시작
「重启服务」를 사용하거나 현재 설정을 중지한 뒤 다시 시작합니다. 설정 창만 닫아서는 실행 중인 코어가 데이터 파일을 다시 읽지 않습니다.
-
시작 로그 확인
「日志」 창을 열고 load geosite, load geoip 또는 failed to start 같은 메시지가 없는지 확인한 뒤 대상 도메인의 아웃바운드 결과를 테스트합니다.
포터블 버전의 v2rayN에서는 파일 쓰기 권한을 특히 확인해야 합니다. 프로그램이 시스템 보호 폴더에 있으면 화면에는 다운로드 완료로 표시되어도 기존 파일이 교체되지 않을 수 있습니다. 클라이언트를 종료한 뒤 프로그램 폴더에서 두 파일의 수정 시간을 확인하세요. 수정 시간은 방금 업데이트한 시각에 가까워야 하며, 설치 패키지를 압축 해제한 시각과 같아서는 안 됩니다.
업데이트가 끝난 직후 DNS·라우팅·노드 설정을 동시에 변경하지 않는 것이 좋습니다. 기존 규칙을 유지한 채 코어만 재시작하고 다시 테스트하면 변화가 실제로 데이터 파일에서 비롯되었는지 판단할 수 있습니다. 세 가지 설정을 한꺼번에 바꾸면 잘못된 분기의 원인을 찾기 어렵습니다.
결론: 먼저 파일이 다시 로드되었는지 확인
“다운로드 성공”은 파일 전송이 끝났다는 뜻일 뿐입니다. 수정 시간이 변경되고, 코어가 재시작되었으며, 시작 로그에 로드 오류가 없어야 새 데이터가 실제로 적용되었다고 볼 수 있습니다.
v2rayNG에서 Geo 파일 업데이트
아래 예시는 v2rayNG 1.10.31 중국어 인터페이스를 기준으로 합니다. Android에서는 화면 너비에 따라 메뉴 배치가 조금 달라질 수 있으며, 관련 메뉴가 오른쪽 상단에 있을 수 있습니다. 작업 중에는 사용 가능한 설정 하나를 선택해 두세요. 업데이트 주소에 프록시가 필요할 때 정상적으로 접근할 수 있습니다.
-
파일 주소 확인
오른쪽 상단 메뉴에서 「设置」→「Geo files 设置」로 들어가 GeoIP와 GeoSite 다운로드 주소가 각각 해당 dat 파일을 가리키는지 확인합니다. 두 입력란에 같은 파일 주소를 넣지 않도록 주의하세요.
-
데이터 업데이트 실행
기본 화면으로 돌아가 오른쪽 상단 메뉴를 연 다음 「更新 Geo files」를 선택합니다. 두 파일의 처리가 완료되었다는 안내가 나올 때까지 기다리고, 중간에 클라이언트 프로세스를 강제 종료하지 마세요.
-
연결 서비스 재시작
현재 연결을 끊고 약 2초 후 다시 연결합니다. 이렇게 하면 Xray 코어가 라우팅 모듈을 다시 초기화하고 새 파일을 읽습니다.
-
실행 로그 열기
기본 화면에서 「日志」로 들어가
geoip·geosite·routing등의 키워드를 검색하여 시작 단계에 파일 읽기 오류가 없는지 확인합니다. -
대상 연결 재테스트
먼저 확실히 직접 연결되어야 하는 중국 본토 도메인을 테스트한 다음, 프록시를 사용해야 하는 도메인을 테스트합니다. 각각의 출구 주소와 연결 시간을 기록하고, 페이지가 열리는지만으로 규칙 매칭 여부를 판단하지 마세요.
현재 버전에 별도의 Geo 업데이트 메뉴가 없다면 클라이언트 버전과 사용 중인 코어를 먼저 확인하세요. “업데이트 구독”을 데이터베이스 업데이트로 착각하면 안 됩니다. 구독 업데이트는 서버 설정 목록을 처리하고, Geo 업데이트는 라우팅 집합을 처리하므로 저장 위치와 로드 시점이 서로 다릅니다. v2flyNG도 Geo 데이터 개념을 사용하지만, V2Fly 코어와 규칙 태그에 맞는 데이터 파일을 사용해야 합니다.
규칙 작성법과 매칭 순서 확인
데이터베이스가 최신이어도 규칙 작성이 잘못되면 전혀 적용되지 않을 수 있습니다. 가장 흔한 문제는 접두사를 빠뜨리거나, 도메인 태그를 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"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
이 예시는 먼저 사설 IP를 직접 연결하고, 이어서 중국 본토 도메인을 직접 연결한 다음 중국 본토 IP를 직접 연결하며, 마지막으로 나머지 TCP·UDP 연결을 프록시 아웃바운드로 보냅니다. 실제 설정의 direct와 proxy는 기존 아웃바운드 태그와 일치해야 합니다. 클라이언트가 생성한 태그가 freedom·block 또는 다른 이름이라면 현재 전체 설정을 기준으로 확인하세요.
geosite:cn은 도메인 조건에 입력해야 하며 IP 조건에 입력하면 안 됩니다.geoip:cn과geoip:private는 IP 조건에 입력해야 합니다.domain:example.com은 해당 도메인과 일반적인 하위 도메인 범위를 매칭하는 데 사용하며, 완전 일치는 코어가 지원하는 규칙 형식에 맞춰 설정할 수 있습니다.- 사용자 지정 데이터 태그는 사용하는 dat 파일에 실제로 존재해야 하며, 파일 이름만 보고 태그를 추측해서는 안 됩니다.
- 차단·직접 연결·프록시 규칙은 구체적인 범위가 좁은 것부터 넓은 순서로 배치하고, 마지막에 기본 규칙을 둡니다.
domainStrategy도 결과에 영향을 줍니다. AsIs는 주로 원래 도메인 정보를 기준으로 매칭하고, IPIfNonMatch는 도메인 규칙이 매칭되지 않으면 IP를 확인한 뒤 IP 규칙을 다시 시도합니다. IPOnDemand는 더 이른 시점에 확인을 시작할 수 있습니다. 이 옵션을 변경하면 DNS 경로에도 영향을 주므로 단순한 “분기 강화” 스위치로 보면 안 됩니다.
결론: 먼저 첫 번째 매칭 규칙을 확인
규칙 결과가 예상과 반대라면 더 넓은 도메인·IP·포트 또는 전체 네트워크 규칙이 앞에 있는지 먼저 확인하세요. 대상 규칙을 목록 맨 아래로 옮기는 것만으로는 일반적으로 우선순위가 높아지지 않습니다.
시작 오류 및 데이터베이스 문제 해결
파일이 없거나 손상되었거나 태그가 누락되면 코어는 일반적으로 시작 로그에 “연결 실패”보다 구체적인 정보를 남깁니다. 문제를 확인할 때는 전체 오류 흐름, 특히 파일명·태그명·하위 계층의 읽기 원인을 보존하고 마지막 한 줄만 잘라내지 마세요.
오류:failed to load geosite: geosite.dat: no such file or directory
원인 및 해결:코어의 작업 디렉터리에서 geosite.dat를 찾지 못했거나 클라이언트가 잘못된 경로를 가리키고 있습니다. Geo files 업데이트를 다시 실행하고 파일이 현재 코어 디렉터리에 저장되었는지 확인한 뒤 서비스를 재시작하세요.
오류:failed to load GeoIP: geoip.dat: no such file or directory
원인 및 해결:GeoIP 파일이 없거나 이동되었거나 업데이트가 완료되지 않았습니다. 클라이언트를 종료하고 geoip.dat가 존재하며 크기가 0바이트가 아닌지 확인한 뒤 다시 다운로드하세요.
오류:failed to decode geosite.dat: invalid wire-format data
원인 및 해결:다운로드 결과가 유효한 데이터 파일이 아닙니다. 전송이 중단되었거나 주소가 웹 페이지를 반환할 때 자주 발생합니다. 문제가 있는 파일을 삭제하고 클라이언트의 업데이트 메뉴에서 다시 받은 뒤 코어를 재시작하세요.
오류:failed to load geosite: list not found
원인 및 해결:규칙에서 참조한 태그가 현재 geosite.dat에 없습니다. 태그 철자와 데이터 출처를 확인하고, 해당 규칙을 임시로 제거한 뒤 코어가 정상적으로 시작되는지 확인하세요.
업데이트 후 클라이언트를 시작할 수 없다면 먼저 라우팅 설정을 백업한 다음 Geo 태그를 참조하는 사용자 지정 규칙을 모두 임시로 비활성화하세요. 코어가 시작되면 노드 프로토콜과 기본 아웃바운드는 대체로 정상이며, 문제는 데이터 파일이나 규칙 태그에 집중됩니다. 그래도 시작되지 않으면 포트 사용 여부·설정 문법·코어 경로를 계속 확인해야 합니다.
파일이 중복 배치되지 않았는지도 확인해야 합니다. 클라이언트 폴더·코어 하위 폴더·사용자 지정 리소스 폴더에 같은 이름의 파일이 각각 있을 수 있으며, 실제로 읽히는 파일이 방금 업데이트한 파일이 아닐 수 있습니다. 가장 직접적인 방법은 시작 로그에 표시된 리소스 경로를 확인한 뒤 해당 경로의 파일 수정 시간과 크기를 대조하는 것입니다.
규칙은 매칭되지만 트래픽이 잘못 분기되는 경우
로그에 오류가 없다고 해서 분기 결과가 항상 예상과 일치하는 것은 아닙니다. Geo 데이터는 집합으로 관리되며 도메인 분류와 서버 IP는 바뀔 수 있습니다. 대형 사이트는 여러 지역의 DNS 응답과 콘텐츠 전송을 사용하므로 같은 도메인도 네트워크에 따라 다른 주소를 받을 수 있습니다. 이때는 “규칙이 매칭되지 않은 것”과 “매칭 후 선택된 아웃바운드가 예상과 다른 것”을 구분해야 합니다.
| 현상 | 우선 확인할 항목 | 검증 방법 |
|---|---|---|
| 중국 본토 도메인이 프록시로 연결됨 | GeoSite 태그와 규칙 순서 | 대상 도메인을 직접 연결 규칙에 따로 추가하고 포괄적인 프록시 규칙보다 앞에 배치 |
| IP에 직접 연결할 때 매칭되지 않음 | GeoIP 조건과 대상 IP의 소속 | 대상 IP를 기록한 뒤 geoip:cn 또는 사설 주소 집합에 매칭되는지 확인 |
| TUN에서 시스템 프록시와 결과가 다름 | 스니핑·DNS·domainStrategy | 노드는 그대로 두고 두 모드에서 로그에 기록된 대상 도메인과 IP를 각각 확인 |
| 업데이트 후 일부 규칙만 작동하지 않음 | 사용자 지정 태그 존재 여부 | 확장 태그를 하나씩 비활성화하고 geosite:cn과 geoip:cn만 남겨 기준 테스트 |
| 로컬 네트워크 장치에 접속할 수 없음 | geoip:private의 위치 | 사설 IP 직접 연결 규칙을 프록시 기본 규칙보다 앞에 배치한 뒤 다시 연결 |
최소 테스트 설정을 구성하는 것이 좋습니다. 사용 가능한 노드 하나, 사설 주소 직접 연결 규칙 하나, 중국 본토 도메인 직접 연결 규칙 하나, 중국 본토 IP 직접 연결 규칙 하나, 프록시 기본 규칙 하나만 남기세요. 이 규칙들이 정상 작동하는지 확인한 뒤 광고 도메인·사용자 지정 도메인·프로세스·포트 규칙을 묶음별로 복원합니다. 한 번에 수십 개의 규칙을 불러오는 것보다 각 묶음마다 테스트하는 편이 충돌 원인을 찾기 쉽습니다.
검증할 때는 최소한 세 가지 결과를 기록하세요. 대상 도메인이 해석한 IP, 코어가 선택한 아웃바운드 태그, 최종 출구 주소입니다. 웹 페이지의 로딩 속도는 캐시·서버 부하·네트워크 변동의 영향을 받으므로 분기가 올바른지 단독으로 증명할 수 없습니다. 로컬 SOCKS 수신 포트가 10808이라면 테스트 도구가 실제로 해당 포트에 연결되는지, 클라이언트를 우회해 시스템 직접 연결을 사용하지 않는지도 확인해야 합니다.
결론: 최소 규칙 집합으로 데이터 문제와 순서 문제 구분
기본 geosite:cn과 geoip:cn이 정상 작동하고 확장 규칙을 단계적으로 복원한 뒤에만 잘못된 분기가 발생한다면, 문제는 대개 두 데이터베이스 자체가 아니라 새 규칙의 범위나 순서에 있습니다.
업데이트 후 전체 검증 목록
신뢰할 수 있는 업데이트는 파일·코어·규칙·연결 네 가지 계층을 모두 확인해야 합니다. 메뉴에 “완료”가 표시된 것만으로는 라우팅이 새 데이터로 실행된다고 증명할 수 없습니다. 아래 점검을 마친 뒤 자동 시작과 정기 구독 업데이트 같은 일상 설정을 복원하세요.
- geoip.dat와 geosite.dat가 모두 존재하고 크기가 0바이트보다 크며, 수정 시간이 이번 업데이트 시각에 가까운지 확인합니다.
- 예상한 코어가 실행 중인지 확인합니다. v2rayN에서는 「设置」→「参数设置」→「Core 类型」에서 확인할 수 있습니다.
- 연결을 끊었다가 다시 연결하여 기존 코어 프로세스가 종료되고 새 프로세스가 리소스 파일을 다시 읽었는지 확인합니다.
- 시작 로그를 확인하여 file not found·decode·list not found 등의 로드 오류를 제거합니다.
- GeoSite 태그는 도메인 조건에, GeoIP 태그는 IP 조건에 있는지 확인하고 아웃바운드 태그가 기존 설정과 일치하는지 확인합니다.
- 사설 주소와 정확한 도메인 같은 좁은 범위의 규칙을 포괄적인 프록시 기본 규칙보다 앞에 배치하여 먼저 매칭되지 않도록 합니다.
- 도메인 연결과 IP 직접 연결을 각각 테스트하고, 페이지가 열리는지만 보지 말고 실제로 선택된 아웃바운드를 기록합니다.
- 시스템 프록시 또는 TUN 모드의 애플리케이션 트래픽이 실제로 클라이언트로 들어오는지, 테스트 도구가 로컬 프록시 포트를 우회하지 않는지 확인합니다.
구독을 업데이트할 때마다 Geo 데이터를 다시 다운로드할 필요는 없습니다. 구독 변경은 주로 노드 목록에 영향을 주고 Geo 파일 변경은 라우팅 집합에 영향을 줍니다. 필요에 따라 정기적으로 업데이트하거나, 새 도메인이 분류되지 않거나 기존 IP의 소속이 뚜렷하게 바뀌거나 확장 태그가 누락되었을 때 수동으로 업데이트하면 됩니다. 파일을 자주 덮어쓰면서 코어를 재시작하지 않으면 디스크 버전과 실행 버전이 달라질 수 있습니다.
특정 도메인이 집합에서 장기간 잘못 분류된 것으로 확인되면, 가장 안전한 임시 방법은 범위가 더 좁은 사용자 지정 도메인 규칙을 추가하여 해당 집합 규칙보다 앞에 배치하는 것입니다. 이렇게 하면 현재 연결을 수정하면서 전체 GeoSite 또는 GeoIP 규칙을 삭제하지 않아도 됩니다. 이후 데이터를 업데이트한 뒤에도 해당 도메인에 예외 규칙이 필요한지 다시 테스트하세요.