노드를 가져와 프록시로 웹에 접속할 수 있지만, 중국 본토 직접 연결과 해외 프록시 규칙을 조정하려는 사용자를 위한 안내입니다. V2Ray/Xray의 라우팅 필드를 예로 들어 도메인 데이터베이스, IP 데이터베이스, 규칙 우선순위, 기본 아웃바운드의 관계를 설명하고 v2rayN 라우팅 설정에 적용합니다. 설정 후 로그를 이용해 규칙 미일치, DNS 해석 오류, 요청이 코어에 전달되지 않은 경우를 구분할 수 있습니다.
1. 먼저 요청이 코어에 전달되는지 확인
라우팅 규칙은 프록시 코어에 전달된 연결만 처리합니다. 브라우저가 시스템 프록시를 사용하지 않거나 앱이 자체적으로 직접 연결하면 geosite:cn을 수정해도 요청 경로는 바뀌지 않습니다. 먼저 v2rayN 메인 창에서 「시스템 프록시」→「시스템 프록시 자동 설정」을 선택하고, 브라우저의 별도 프록시 확장 프로그램이 시스템 설정을 덮어쓰지 않는지 확인하세요.
포트는 현재 클라이언트에 표시된 값을 기준으로 합니다. 예를 들어 로컬 혼합 리스닝 포트가 10808이면 수동으로 설정한 앱은 127.0.0.1:10808에 연결해야 합니다. 노드 서버의 원격 포트를 로컬 프록시 포트로 입력하면 안 됩니다. 「설정」→「매개변수 설정」에서 리스닝 포트를 확인한 다음, 사용 가능한 노드로 먼저 접속을 테스트하고 분할 라우팅을 조정하세요.
- v2rayN: 노드, 라우팅 설정, 코어 프로세스를 관리하는 클라이언트이며 특정 전송 프로토콜을 뜻하지 않습니다.
- V2Ray/Xray: 이 문서의 라우팅 로직을 실행합니다. 사용할 수 있는 필드는 현재 코어 버전에 따라 달라집니다.
- VMess/VLESS: 프록시 연결 방식을 설명하는 프로토콜이며, 중국 본토 도메인의 직접 연결 여부를 결정하지는 않습니다.
- 시스템 프록시와 TUN: 요청이 코어에 전달되는 방식을 결정합니다. 어느 쪽을 사용하든 실제 적용된 라우팅을 확인해야 합니다.
2. geosite는 도메인, geoip는 대상 IP를 매칭
geosite:cn은 도메인 분류 데이터베이스의 cn 집합을 참조하고, geoip:cn은 IP 데이터베이스의 중국 본토 주소 집합을 참조합니다. 두 규칙은 같은 내용을 다르게 쓴 것이 아니며, 도메인 접미사만 보고 분류 결과를 판단할 수도 없습니다. 도메인 집합은 사용하는 데이터 파일에 따라 달라지므로, 데이터를 업데이트하면 일부 사이트의 매칭 결과가 달라질 수 있습니다.
| 규칙 내용 | 입력 필드 | 용도 |
|---|---|---|
geosite:cn | domain | 도메인 데이터베이스로 중국 본토 관련 도메인을 매칭합니다. 먼저 IP를 해석할 필요가 없습니다. |
geoip:cn | ip | 대상 IP의 위치를 기준으로 매칭해 IP 연결이나 해석된 주소를 처리합니다. |
geoip:private | ip | 데이터베이스에 등록된 사설 및 특수 용도 주소를 매칭합니다. 주로 로컬 네트워크를 직접 연결할 때 사용합니다. |
geosite:category-ads-all | domain | 광고 도메인 집합을 매칭합니다. 현재 도메인 데이터베이스에 해당 집합이 포함되어 있는지 확인해야 합니다. |
domain:example.com | domain | 해당 도메인과 하위 도메인을 매칭해 수동 예외 규칙에 사용합니다. |
full:example.com | domain | 정확히 일치하는 도메인만 매칭하며 다른 하위 도메인에는 적용되지 않습니다. |
한 규칙의 domain 배열에 여러 항목이 있으면 일반적으로 어느 하나만 일치해도 매칭됩니다. 반면 domain과 ip를 한 규칙에 함께 넣으면 서로 다른 필드의 조건을 모두 충족해야 합니다. ‘중국 본토 도메인 또는 중국 본토 IP는 모두 직접 연결’하려면 한 규칙 객체에 몰아넣지 말고 규칙 두 개로 나누세요.
3. domainStrategy로 라우팅 단계의 도메인 해석 시점을 설정
routing.domainStrategy는 라우팅 단계에서 도메인을 IP로 해석할지 결정합니다. ‘모든 DNS 요청을 프록시로 보내는’ 설정이 아니며 아웃바운드 자체의 도메인 해석 정책과도 다릅니다. 여기서는 IPIfNonMatch를 사용합니다. 먼저 도메인 등의 조건을 확인하고, 일치하는 규칙이 없을 때 대상 도메인을 해석해 IP 규칙을 적용합니다.
AsIs: 입력된 대상으로만 매칭
- 항목
domainStrategy- 값
AsIs- 라우팅 단계의 해석
- IP 규칙 매칭을 위해 도메인을 별도로 해석하지 않음
- 적합한 경우
- 주로 도메인 규칙을 사용하거나 인바운드에 대상 IP가 이미 있는 경우
도메인 요청이 매칭되지 않아도 geoip 규칙이 있다는 이유만으로 주소를 자동 조회하지 않습니다.
IPIfNonMatch: 매칭되지 않으면 해석
- 항목
domainStrategy- 값
IPIfNonMatch- 라우팅 단계의 해석
- 첫 번째 규칙 확인에서 매칭되지 않았을 때 실행
- 적합한 경우
- 도메인을 우선하고 IP 분류로 보완
첫 번째 확인에서 전체 트래픽에 적용되는 기본 규칙이 매칭되면 추가 해석은 실행되지 않습니다.
자주 쓰이는 또 다른 값인 IPOnDemand는 매칭 과정에서 IP 조건을 확인해야 할 때 도메인을 해석하므로, 앞쪽에 IP 규칙을 두면 DNS 조회가 늘어날 수 있습니다. 주소를 가능한 한 빨리 비교해야 하는 설정에 적합하지만, ‘중국 본토 분할 라우팅을 더 엄격하게 적용한다’는 뜻은 아닙니다. 이름만 보고 선택하지 말고 DNS 연결 가능 여부와 규칙 순서를 함께 고려하세요.
설정 확인: IPIfNonMatch와 무조건 적용되는 기본 규칙을 함께 사용하지 마세요
이 구성을 사용할 때는 마지막에 모든 TCP/UDP 트래픽을 프록시로 보내는 규칙을 삭제하고, 기본 아웃바운드가 프록시인지 확인하세요. 그렇지 않으면 첫 번째 확인에서 기본 규칙이 매칭되어 목록에 없는 중국 본토 도메인이 geoip 보완 라우팅 단계에 도달하지 못할 수 있습니다.
4. 중국 본토 직접 연결·해외 프록시·광고 차단 구성
다음은 라우팅 설정 일부이며 바로 실행할 수 있는 완전한 클라이언트 설정이 아닙니다. 기존 설정에 proxy, direct, block이라는 세 아웃바운드 태그가 정의되어 있고, outbounds 배열의 첫 번째 아웃바운드가 프록시라고 가정합니다. V2Ray/Xray는 라우팅 규칙에 일치하는 항목이 없으면 첫 번째 아웃바운드를 사용하므로, 여기서는 마지막에 모든 항목에 매칭되는 규칙을 두지 않고 기본 아웃바운드로 해외 프록시를 지정합니다.
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["geosite:cn"],
"outboundTag": "direct"
},
{
"type": "field",
"ip": ["geoip:cn"],
"outboundTag": "direct"
}
]
}
}
- 광고 도메인을 먼저 매칭:
category-ads-all에 매칭되면 차단 아웃바운드로 전달하고 이후 직접 연결 규칙은 확인하지 않습니다. - 로컬 IP 직접 연결:
192.168.1.1같은 사설 주소에 연결할 때는 대상이 이미 IP이므로 사설 주소 규칙에 바로 매칭됩니다. - 중국 본토 도메인 직접 연결:
geosite:cn에 등록된 도메인은 IP 분류를 기다릴 필요 없이 직접 연결 아웃바운드를 선택합니다. - 중국 본토 IP 보완: 도메인이 첫 번째 확인에서 매칭되지 않으면 코어 DNS로 주소를 조회한 뒤
geoip:cn을 적용합니다. - 나머지는 기본 프록시 사용: 도메인과 IP가 모두 매칭되지 않으면 확인해 둔 첫 번째 프록시 아웃바운드로 전달됩니다.
‘위에서부터 처음 매칭되는 규칙 적용’은 해석 단계까지 고려해야 합니다. 도메인만 있는 요청의 경우 IPIfNonMatch는 앞쪽의 사설 IP 규칙을 적용하기 위해 즉시 도메인을 해석하지 않습니다. 도메인이 첫 번째 확인에서 다른 규칙에 매칭되면 이후에는 해석 결과로 판정이 바뀌지 않습니다. 따라서 내부 네트워크 도메인에도 명시적인 직접 연결 규칙을 추가하고 geoip:private에만 의존하지 마세요.
5. v2rayN에서 라우팅 설정 만들고 적용하기
먼저 기존 라우팅 설정을 백업한 뒤 「설정」→「라우팅 설정」으로 이동하세요. 버전에 따라 편집 창의 배치가 다를 수 있으므로 현재 창의 「도메인 전략」, 「규칙 목록」, 아웃바운드 선택 항목을 기준으로 설정합니다. 전체 routing 객체를 규칙 배열만 받는 입력란에 붙여넣지 마세요. 재시작하면 덮어쓰이는 실행 중 생성된 설정 파일을 직접 수정하는 것도 피하세요.
- 테스트용 설정을 별도로 만들기: 「설정」→「라우팅 설정」에서 라우팅 설정을 새로 만들거나 기존 설정을 복사하고, ‘중국 본토 직접 연결 테스트’처럼 용도를 구분할 수 있는 이름을 지정하세요. 복구할 수 있도록 원래 설정은 그대로 보존합니다.
- 도메인 전략 설정: 「도메인 전략」을
IPIfNonMatch로 설정하세요. 편집기에 영어 값이 표시되면 그대로 선택하고, 이 값을 도메인 규칙에 입력하지 마세요. - 규칙을 하나씩 추가: 광고 도메인, 사설 IP, 중국 본토 도메인, 중국 본토 IP 순으로 추가하세요. 도메인 집합은 도메인 조건에, IP 집합은 IP 조건에 입력하고 각각 차단 또는 직접 연결 아웃바운드를 선택합니다.
- 기본 프록시 확인: 모든 트래픽에 적용되는 마지막 규칙이 있는지 확인하세요. 이 구성에서는 전체 매칭 규칙을 추가해 기본 처리를 하지 말고, 생성된 설정의 첫 번째 아웃바운드가 프록시인지 확인합니다.
- 저장하고 적용: 메인 창으로 돌아가 「라우팅」에서 방금 설정한 항목을 선택하세요. 코어가 설정을 다시 불러왔는지 확인합니다. 로그에 설정 오류가 나타나면 원래 설정을 복원하고 규칙을 하나씩 확인하세요.
v2rayN에서 일반 노드 설정을 사용하면 코어에 필요한 아웃바운드가 생성됩니다. 인터페이스의 ‘프록시’, ‘직접 연결’, ‘차단’과 JSON 태그는 서로 매핑되므로, 화면에 표시된 한글 이름만 보고 최종 태그가 반드시 proxy, direct, block이라고 단정할 수 없습니다. 직접 작성한 전체 설정을 사용할 때는 태그와 기본 아웃바운드 순서를 직접 확인해야 합니다. 그래픽 규칙 편집기를 쓴다면 기존 아웃바운드 선택 항목을 우선 사용하세요.
| 인터페이스에서 할 작업 | 설정 확인 항목 | 잘못 설정했을 때의 증상 |
|---|---|---|
| 도메인 전략 선택 | routing.domainStrategy가 IPIfNonMatch인지 확인 | AsIs로 남아 있으면 IP 보완 규칙이 있어도 도메인을 별도로 해석하지 않습니다. |
| 도메인 분류 추가 | domain에 geosite:cn이 포함되어 있는지 확인 | IP 조건에 잘못 입력하면 설정을 불러오지 못할 수 있습니다. |
| 주소 분류 추가 | ip에 geoip:private가 포함되어 있는지 확인 | 도메인 조건에 잘못 입력하면 대상 주소 기준으로 분할 라우팅할 수 없습니다. |
| 기본 프록시 선택 | 첫 번째 아웃바운드가 프록시이며 첫 번째 확인에서 모든 요청을 가로채는 규칙이 없는지 확인 | 해외 대상이 직접 연결되거나 중국 본토 IP 보완 라우팅이 실행되지 않습니다. |
6. 고정 요청과 로그로 매칭 결과 확인
웹페이지가 열리는 속도만 비교해서는 분할 라우팅을 검증할 수 없습니다. 캐시, 연결 재사용, 노드 부하에 따라 걸리는 시간은 달라지지만 어떤 아웃바운드를 선택했는지는 확인할 수 없습니다. 로컬 연결 방식과 테스트 대상을 고정하고 v2rayN 로그 창에서 대상 주소와 아웃바운드 태그를 확인하세요. 현재 로그 수준에서 연결 기록이 보이지 않으면 「설정」→「매개변수 설정」에서 로그 수준 항목을 찾아 잠시 info로 설정한 뒤, 확인을 마치면 원래 값으로 되돌리세요.
아래 예제는 Windows의 curl.exe로 로컬 HTTP 프록시에 직접 연결해 브라우저 확장 프로그램과 시스템 프록시 상태의 영향을 배제합니다. 10808은 포트 예시일 뿐이므로 실제 HTTP 연결을 지원하는 리스닝 포트로 바꿔야 합니다. --max-time 15는 최대 15초까지 기다린다는 뜻이며 실제 속도 측정 결과가 아닙니다.
curl.exe --proxy http://127.0.0.1:10808 --max-time 15 -I https://www.baidu.com/
curl.exe --proxy http://127.0.0.1:10808 --max-time 15 -I https://example.com/
- 중국 본토 도메인 확인: 테스트 도메인이 현재 사용하는
cn집합에 실제로 포함되어 있는지 확인한 뒤 직접 연결이 선택되는지 살펴보세요. 사이트에서 중국어를 사용한다는 이유만으로 매칭된다고 판단하면 안 됩니다. - 기본 아웃바운드 확인: 기존 도메인 규칙에 포함되지 않고, 해석된 주소도 중국 본토나 사설 주소 집합에 속하지 않는 대상을 골라 프록시 아웃바운드로 연결되는지 확인하세요.
- 로컬 네트워크 확인:
http://192.168.1.1/처럼 실제로 존재하는 라우터 주소에 접속해 직접 연결 태그가 선택되는지 확인하세요. 기기에서 HTTP에 응답하지 않으면 요청 실패만으로 라우팅 오류라고 판단할 수 없습니다. - 광고 규칙 확인: 현재 광고 집합에 포함된 것이 확실한 도메인을 골라 테스트하고 차단 아웃바운드 기록을 확인하세요. 출처가 불분명하거나 이미 작동하지 않을 수 있는 광고 주소 하나로 결론을 내리지 마세요.
문제 해결 순서: 아웃바운드를 먼저 확인한 뒤 접속 오류를 살펴보세요
로그에 올바른 아웃바운드가 표시되면 해당 경로의 DNS, 연결, 서버 응답을 확인하세요. 잘못된 아웃바운드가 표시되면 규칙 순서와 분류 데이터를 다시 점검합니다. 한 번에 규칙 하나만 바꾸고 새 연결을 만들어 캐시나 기존 연결 때문에 결과가 혼동되지 않도록 하세요.
7. 자주 묻는 질문: 규칙은 적용됐는데 결과가 예상과 다를 때
geosite:cn을 추가했는데 중국 본토 사이트가 왜 프록시로 연결되나요?
먼저 메인 창의 「라우팅」에서 방금 저장한 설정이 선택되어 있는지 확인하고, 앞쪽의 프록시 규칙이 먼저 매칭되는지도 살펴보세요. 로그의 대상이 도메인이 아니라 IP라면 도메인 집합으로 해당 연결을 판단할 수 없으므로 IP 규칙을 확인해야 합니다. 대상이 여전히 도메인이면 현재 데이터 파일에 해당 사이트가 등록되어 있는지 확인하세요.
마지막에 모두 프록시로 보내도록 설정했는데 geoip:cn이 왜 적용되지 않나요?
IPIfNonMatch를 사용할 때 전체 매칭 프록시 규칙이 첫 번째 확인에서 요청을 처리하면 코어가 ‘매칭되지 않은 뒤 해석’ 단계를 실행하지 않습니다. 기본 규칙을 삭제하고 첫 번째 아웃바운드가 실제로 프록시인지 확인한 뒤 새 연결로 다시 테스트하세요. 기본 규칙을 유지해야 한다면 geoip 규칙만 옮기지 말고 해석 전략을 다시 설계해야 합니다.
geoip:private만 켰는데 내부 네트워크 도메인이 왜 열리지 않나요?
내부 호스트 이름은 먼저 적절한 DNS 서버에서 해석되어야 하며, 앞선 도메인 규칙이 해당 요청을 프록시로 보내지 않아야 합니다. 실제 사용하는 내부 도메인 접미사에 명시적인 직접 연결 조건을 추가하고 해당 DNS에 연결할 수 있는지 확인하세요. 직접 연결 규칙을 추가해도 공용 DNS가 조직 내부 호스트 이름을 자동으로 알게 되는 것은 아닙니다.
트래픽 탐지를 켜면 도메인 기준 분할 라우팅이 항상 가능한가요?
아닙니다. 트래픽 탐지는 일부 프로토콜 핸드셰이크에서 도메인 정보를 추출할 뿐이며, 라우팅에 사용할지는 인바운드의 탐지 설정에 따라 달라집니다. 모든 연결에서 도메인을 알아낼 수 있는 것도 아닙니다. 먼저 인바운드에 도메인과 IP 중 무엇이 들어오는지 확인한 뒤 탐지 설정 조정이 필요한지 판단하세요. 탐지를 DNS 문제 해결 방법으로 간주하면 안 됩니다.
광고 차단 후 로그인이나 결제 페이지에 문제가 생기면 어떻게 하나요?
먼저 광고 규칙을 잠시 비활성화하고 다시 테스트해 오탐인지 확인하세요. 분류 문제라면 필요한 도메인에 범위를 최소화한 예외 규칙을 추가해 광고 규칙보다 앞에 배치합니다. 예외 규칙은 실제 서비스에 맞춰 프록시 또는 직접 연결을 선택하세요. 리소스 하나를 복구하려고 사이트의 모든 하위 도메인을 허용하지 마세요.
최종 설정은 각 규칙의 역할을 설명할 수 있도록 구성하세요. 필요한 예외 규칙을 먼저 두고 광고를 차단한 다음, 사설 주소와 중국 본토 도메인은 직접 연결하고 IP 분류로 보완하며 기본 아웃바운드는 프록시로 설정합니다. DNS에서 해석된 주소에 따라 IP 매칭 결과가 달라질 수 있으며, DNS 응답이 변조되면 올바른 규칙도 잘못 분류할 수 있습니다. 라우팅 확인을 마친 뒤 DNS를 별도로 점검해 인바운드, 해석, 아웃바운드를 동시에 바꾸지 않도록 하세요.