v2rayN 라우팅 규칙 설정: geosite와 geoip로 중국 본토·해외 트래픽 분기

domainStrategy 선택부터 direct·proxy·block 규칙 순서까지 살펴보고, 중국 본토는 직접 연결하고 해외는 프록시로 보내며 광고를 차단하는 라우팅을 구성합니다.

이 글의 핵심 내용

구독을 가져와 노드에 연결했지만 중국 본토 사이트는 직접 연결하고 해외 사이트는 프록시로 접속하고 싶은 v2rayN 사용자를 위한 안내입니다. 도메인 목록과 IP 목록의 차이를 파악하고 도메인 해석 전략을 선택한 다음, 규칙을 순서대로 설정하고 로그로 확인합니다. 마지막에 전체 트래픽 프록시 규칙을 두면 geoip의 재검사가 작동하지 않을 수 있는 이유도 설명합니다. 예시는 코어 라우팅 부분 설정이며 클라이언트에 바로 가져올 수 있는 전체 설정은 아닙니다.

1. geosite와 geoip는 무엇을 기준으로 매칭하나요?

v2rayN은 클라이언트 인터페이스이며, 연결을 실제로 처리하는 것은 선택한 코어입니다. 구독에는 주로 서버 주소, 프로토콜, 인증 정보와 전송 매개변수가 포함됩니다. 라우팅은 로컬 코어로 들어온 연결에 어떤 아웃바운드를 사용할지 결정합니다. 구독을 업데이트해도 라우팅 데이터베이스는 업데이트되지 않으며 사용자 지정 규칙 순서도 자동으로 바로잡히지 않습니다.

geosite는 도메인 목록을 기준으로, geoip는 IP 주소 목록을 기준으로 매칭합니다. 둘 다 해당 데이터 파일이 있어야 하며, 이름만 보고 실시간 위치 추적 서비스라고 생각해서는 안 됩니다. 특히 geosite:cn은 데이터베이스에서 관리하는 도메인 분류를 뜻합니다. .cn으로 끝나는 모든 사이트를 가리키는 것도 아니고 서버의 물리적 위치를 보장하는 것도 아닙니다.

조건매칭 대상일반적인 용도주의 사항
geosite:cn대상 도메인데이터베이스에 등록된 중국 본토 사이트 직접 연결사용하는 geosite 데이터에 따라 분류가 달라짐
geosite:category-ads-all광고 관련 도메인block 아웃바운드로 전송데이터 파일에 해당 분류가 포함되어야 함
geoip:cn대상 IP중국 IP 대역 직접 연결도메인 연결은 먼저 DNS 조회가 필요할 수 있음
geoip:private사설·로컬 주소 목록내부 네트워크 기기 접속데이터셋 정의를 따르며, 모든 로컬 네트워크 도메인을 뜻하지는 않음
full:example.com정확히 일치하는 도메인단일 도메인 예외 규칙하위 도메인은 함께 매칭되지 않음
domain:example.com도메인과 하위 도메인같은 사이트 계열에 동일한 아웃바운드 적용정확한 도메인 규칙보다 넓은 범위를 적용

여기서 example.com은 문법 설명을 위한 예시일 뿐, 실제 규칙에 추가할 도메인이 아닙니다. 본인 사이트를 확인할 때는 브라우저나 코어 로그에 표시된 실제 호스트명을 사용하세요. 한 페이지가 여러 도메인을 불러올 수 있으므로 홈페이지가 직접 연결된다고 해서 로그인 API, 이미지, 동영상도 같은 규칙에 매칭된다는 뜻은 아닙니다.

2. domainStrategy 선택: 도메인을 먼저 볼까요, IP를 먼저 볼까요?

routing.domainStrategy는 라우팅 규칙을 매칭할 때 대상 도메인을 조회할지 결정합니다. DNS 서버 주소를 뜻하지 않으며 direct 아웃바운드 내부의 DNS 조회 방식도 아닙니다. 이름은 비슷해도 적용 위치가 다릅니다. 하나는 아웃바운드를 선택할 때 IP 정보를 제공하고, 다른 하나는 실제 직접 연결을 설정할 때 주소를 조회할 수 있습니다.

IPIfNonMatch

권장

현재 확인 가능한 대상 정보로 먼저 규칙을 매칭합니다. 도메인 단계에서 어떤 규칙에도 매칭되지 않으면 도메인을 조회한 뒤 IP 조건을 적용합니다. 이 글에서 다루는 도메인 우선·IP 보완 방식에 적합하지만, 완전히 미매칭인 상태가 유지되어야 합니다. 전체 트래픽 규칙이 먼저 연결을 가져가면 안 됩니다.

적합한 경우: 도메인 규칙이 중심이고 geoip를 보완용으로 사용하며 기본 아웃바운드가 명확한 설정

AsIs

라우팅 단계에서 도메인을 추가로 조회하지 않습니다. 도메인으로 들어오는 연결은 주로 도메인 규칙을 따르고, IP로 들어오는 연결은 IP 규칙에 매칭될 수 있습니다. 연결 과정 전체에서 DNS를 사용하지 않는다는 뜻은 아닙니다.

적합한 경우: 도메인 규칙의 적용 범위가 명확하고 라우팅 단계에서 추가 조회를 피하고 싶은 설정

IPOnDemand

매칭 중 IP가 필요한 규칙을 만나면 도메인을 조회합니다. 사설 주소나 국가별 IP 규칙이 앞에 있으면 도메인 연결에서 DNS 조회가 일찍 발생할 수 있습니다. 마지막 기본 규칙 전에 IP 규칙을 적용할 수 있지만, 조회 결과에 더 크게 좌우됩니다.

적합한 경우: 대상 IP를 기준으로 판단해야 하며 DNS 동작을 확인한 설정

가장 놓치기 쉬운 경우는 IPIfNonMatch를 사용하면서 마지막에 network: tcp,udp → proxy를 추가하는 것입니다. 이 규칙은 첫 매칭 시점에 연결을 처리하므로 완전히 미매칭된 상태가 되지 않습니다. 따라서 도메인 조회 단계로 넘어가지 않을 수 있고, 앞에 둔 geoip:cn도 해당 도메인 연결을 보완 매칭하지 못합니다.

3. direct·proxy·block과 규칙 순서

코어는 규칙 목록을 위에서 아래로 확인하며, 처음 매칭된 규칙이 아웃바운드를 결정합니다. 여기서 direct, proxy, block은 아웃바운드 태그이며, 아무 데나 적는다고 작동하는 키워드가 아닙니다. 전체 설정에 같은 이름의 아웃바운드가 있어야 합니다. 사용자 지정 설정에서 다른 태그를 쓴다면 라우팅 참조도 함께 수정해야 합니다.

직접 연결·프록시 아웃바운드

직접 연결 태그
direct
직접 연결 방식
일반적으로 freedom 아웃바운드를 사용
프록시 태그
proxy
프록시 대상
현재 선택한 사용 가능한 노드
미매칭 트래픽
이 글에서는 첫 번째 아웃바운드가 proxy여야 함

노드를 바꾸면 프록시 연결 대상은 달라지지만 규칙의 매칭 순서는 바뀌지 않아야 합니다.

차단과 규칙 적용 전제

차단 태그
block
차단 방식
일반적으로 blackhole 아웃바운드를 사용
도메인 데이터베이스
geosite.dat
IP 데이터베이스
geoip.dat
매칭 원칙
위에서 아래로 확인하며 처음 매칭된 규칙 적용

데이터 파일이 없거나 분류가 존재하지 않으면 코어가 설정을 불러오지 못할 수 있습니다. 먼저 시작 로그의 오류를 해결하세요.

권장 순서는 필요한 단일 사이트 예외, 광고 차단, 내부 네트워크 주소 직접 연결, 중국 본토 도메인 직접 연결, 중국 본토 IP 직접 연결입니다. 그 뒤에는 기본 아웃바운드가 프록시를 사용합니다. 예외 규칙을 맨 앞에 두는 이유는 더 넓은 분류에 먼저 매칭되지 않도록 하기 위해서입니다. 다만 뒤에 있는 광고 규칙도 덮어쓰므로 꼭 필요한 도메인만 추가하세요.

우선순위규칙 용도아웃바운드배치 이유
1단일 사이트 수동 예외direct 또는 proxy뒤에 있는 광범위한 분류보다 우선 적용
2광고 도메인 목록block중국 본토 직접 연결 분류에 먼저 매칭되는 상황 방지
3사설 IP와 로컬 네트워크 대역direct내부 네트워크 연결은 원격 노드로 보내지 않아야 함
4중국 본토 도메인 목록direct도메인으로 바로 판단할 수 있으면 IP 재검사를 기다릴 필요가 없음
5중국 본토 IP 목록directIP로 직접 접속하는 연결과 목록에 없는 도메인을 보완
기본값어떤 규칙에도 매칭되지 않은 연결proxy생성된 설정에서 첫 번째 아웃바운드 사용

4. v2rayN에서 별도의 라우팅 설정 만들기

아래 메뉴 경로는 v2rayN 7.x의 Windows WPF 인터페이스를 기준으로 합니다. 데스크톱 버전이나 세부 버전에 따라 버튼 이름이 다를 수 있습니다. 같은 이름의 메뉴를 찾을 수 없다면 현재 인터페이스의 설정 메뉴에서 라우팅 편집 기능을 확인하세요. 아래 코어 JSON을 노드 주소나 구독 주소 입력란에 붙여 넣으면 안 됩니다. 설정을 시작하기 전에 기존 라우팅 설정을 보관해 두면 필요할 때 되돌릴 수 있습니다.

  1. 노드 연결 확인

    메인 화면에서 사용할 수 있는 노드를 선택하고 활성 서버로 설정합니다. 먼저 기존 라우팅으로 웹사이트에 접속되는지 확인하세요. 노드 시간 초과, 인증 실패 또는 TLS 핸드셰이크 실패가 발생하면 먼저 문제 해결 안내를 확인하세요. 라우팅 규칙으로 원격 연결 문제를 해결할 수는 없습니다.

  2. 라우팅 설정 열기

    「설정」→「라우팅 설정」에서 새 라우팅 설정을 만들고 ‘중국 본토 직접 연결 테스트’라고 이름을 지정합니다. 고급 라우팅 스위치가 있다면 고급 규칙을 활성화하고, 새 설정을 현재 라우팅으로 선택하세요.

  3. 도메인 전략 선택

    라우팅 설정의 도메인 전략에서 IPIfNonMatch를 선택합니다. 이어서 마지막에 ‘모든 TCP·UDP를 프록시로’ 보내는 규칙이 있는지 확인하세요. 이 글의 설정에서는 해당 규칙을 두지 않고 기본 아웃바운드를 proxy로 지정합니다.

  4. 조건을 나누어 추가

    광고 도메인, 사설 IP, 중국 본토 도메인, 중국 본토 IP 규칙을 차례로 추가합니다. geosite:는 도메인 조건에, geoip:는 IP 조건에 입력합니다. ‘둘 중 하나’를 표현하려고 한 규칙에 도메인 조건과 IP 조건을 함께 넣지 마세요.

  5. 저장하고 확인

    설정을 저장하고 코어가 설정을 다시 불러오도록 합니다. 생성된 설정에서 규칙 순서, 아웃바운드 태그, outbounds 순서를 확인하세요. 기본 아웃바운드가 proxy가 아니라면 현재 버전에서 제공하는 기본 아웃바운드 설정을 조정하거나 앞서 설명한 명시적 기본 규칙 방식을 사용하세요.

  6. 항목별 테스트

    노드, 브라우저, 프록시 연결 방식을 그대로 둔 채 중국 본토 도메인, 해외 도메인, 내부 네트워크 IP를 각각 테스트합니다. 변경할 때마다 새 연결을 만들어 브라우저가 기존 연결을 재사용하지 않도록 하세요. 로그에 표시된 아웃바운드가 예상과 일치해야 규칙이 적용된 것입니다.

하나의 field 규칙에 서로 다른 유형의 조건을 넣으면 일반적으로 모든 조건을 충족해야 합니다. 같은 조건 배열에 여러 값을 넣었을 때는 그중 하나에 매칭되면 됩니다. domain과 ip를 한 규칙에 합쳐도 서로 독립적인 직접 연결 규칙 두 개를 대신할 수 없습니다. 직접 설정을 작성할 때나 그래픽 인터페이스에서 편집할 때 모두 자주 발생하는 실수입니다.

5. 코어 라우팅 설정 예시: 도메인 우선, IP 보완

아래 예시는 routing 객체만 보여 줍니다. 인바운드, 노드 인증 정보, DNS, 아웃바운드 정의가 포함되지 않은 부분 설정이며, 전체 설정이나 v2rayN 라우팅 설정의 가져오기 형식이 아닙니다. 인터페이스에서 규칙을 하나씩 입력할 때 참고하세요. 사용자 지정 코어 설정을 쓴다면 기존 설정 구조와 합치고 세 가지 아웃바운드 태그가 모두 있는지 확인해야 합니다.

{
  "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"
      }
    ]
  }
}

중국 본토 분류에 속한 사이트 중 프록시를 계속 사용해야 하는 곳이 있다면 광고 규칙 앞에 별도의 도메인 예외를 추가하고 proxy로 보내세요. 하위 도메인 하나에만 문제가 있다면 full:로 정확히 매칭하는 편이 좋습니다. 곧바로 기본 도메인 전체와 모든 하위 도메인으로 범위를 넓히지 마세요.

6. 트래픽 분기 확인: 연결 경로, DNS, 아웃바운드 점검

웹페이지가 열린다는 것은 어떤 경로로든 접속할 수 있다는 뜻일 뿐, 예상한 아웃바운드를 사용했다는 증거는 아닙니다. 테스트할 때는 먼저 노드를 하나로 고정한 뒤 앱에서 사용하는 로컬 프록시 포트를 확인하세요. v2rayN의 일반적인 로컬 리스닝 포트는 10808이지만 기존 설치에서 변경했을 수 있으므로 현재 설정과 코어 시작 로그를 기준으로 확인하세요. 포트가 항상 고정되어 있다고 가정하지 마세요.

테스트 대상예상 결과확인할 내용
cn 목록에 포함된 것으로 확인된 도메인direct로그의 대상 도메인과 아웃바운드 태그
직접 연결 분류에 매칭되지 않은 해외 도메인proxy기본 아웃바운드가 프록시인지 확인
192.168.1.1 등 실제 내부 네트워크 주소direct연결이 코어에 들어오는지, 사설 IP 규칙에 매칭되는지
로그에 실제로 표시된 광고 도메인block분류에 포함되어 있는지, 예외 규칙이 먼저 매칭되는지

도메인 정보를 유지한 채 SOCKS 프록시로 전달해야 한다면 아래 테스트 명령을 사용할 수 있습니다. socks5h의 h는 대상 도메인 조회를 프록시 쪽에서 처리한다는 뜻입니다. 로컬에서 먼저 조회한 뒤 IP만 코어에 전달하는 상황을 피할 수 있습니다. 이 명령을 사용하려면 로컬 포트에서 SOCKS 서비스를 제공해야 하며 curl도 설치되어 있어야 합니다.

curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 https://www.baidu.com/ --output /dev/null

위 명령은 Linux 및 macOS 터미널용입니다. Windows 명령 프롬프트에서는 /dev/null을 NUL로 바꾸고 필요하면 curl.exe를 사용하세요. 연결 시간 초과 10초와 전체 시간 초과 20초는 테스트 한도일 뿐, 실제 지연 시간이나 속도를 보장하지 않습니다. 해당 도메인이 직접 연결될지는 본인의 데이터 파일과 로그를 기준으로 확인하세요.

7. 자주 묻는 질문: 규칙 미적용과 광고 오차단

geoip:cn을 설정했는데 중국 본토 사이트가 왜 프록시를 사용하나요?

「설정」→「라우팅 설정」에서 현재 설정과 도메인 전략을 먼저 확인하세요. IPIfNonMatch를 사용 중이라면 마지막에 tcp,udp 전체 프록시 규칙이 있는지 살펴보세요. 첫 매칭에서 처리가 끝날 수 있습니다. 로그에 표시된 대상이 도메인인지 IP인지, 실제 조회된 주소가 현재 geoip 데이터의 cn 분류에 속하는지도 확인하세요.

광고 규칙을 맨 마지막에 뒀는데 왜 전혀 차단되지 않나요?

geosite:category-ads-all → block을 중국 본토 직접 연결 규칙과 광범위한 프록시 규칙보다 앞에 옮기세요. 저장한 뒤 설정을 다시 불러오고 브라우저에서 새 연결을 만드세요. 그래도 매칭되지 않으면 해당 도메인이 현재 분류에 포함되어 있는지 확인하세요. 페이지에 광고가 계속 보인다는 이유만으로 규칙이 실패했다고 판단하지 마세요. 콘텐츠와 도메인을 공유하는 광고는 도메인 차단에 적합하지 않을 수 있습니다.

라우팅을 바꾼 뒤 코어가 실행되지 않으면 어디부터 확인해야 하나요?

먼저 기존 라우팅 설정으로 되돌려 연결을 복구한 다음 코어 시작 로그를 확인하세요. 데이터 파일을 읽을 수 없는 오류, 분류 누락, 아웃바운드 태그 참조 오류, JSON 문법 오류를 중점적으로 살펴보세요. geosite.dat 또는 지정한 분류를 불러올 수 없다는 메시지가 나오면 규칙을 더 추가하지 말고 데이터 출처와 파일 위치를 바로잡으세요.

내부 네트워크 관리 페이지가 열리지 않으면 어떤 규칙을 추가해야 하나요?

먼저 기기의 실제 IP 주소로 접속하고 사설 IP 규칙이 direct를 가리키는지 확인하세요. 사용자 지정 내부 네트워크 도메인을 쓰는 경우에는 로컬 DNS가 도메인을 올바르게 조회하는지도 확인해야 합니다. 실제 도메인에 대해 정확히 일치하는 직접 연결 예외를 추가할 수 있습니다. 도메인 라우팅만으로 DNS에 없는 주소가 접속 가능한 주소로 바뀌지는 않습니다.

이 규칙을 Android 클라이언트에 그대로 복사해도 되나요?

v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용합니다. 기본 라우팅 개념은 비슷하지만 인터페이스 항목, 가져오기 형식, 데이터 분류, 코어 기능은 각각 확인해야 합니다. 규칙 조건과 순서는 옮길 수 있지만 v2rayN 클라이언트 백업을 범용 설정처럼 그대로 가져오면 안 됩니다. 이전한 뒤에도 기본 아웃바운드와 DNS를 확인하세요.

검증이 끝난 라우팅 설정을 하나 보관해 두세요. 이후 특정 사이트에 문제가 생기면 한 번에 변수 하나만 바꾸세요. 먼저 도메인 분류, IP 분류, DNS, 노드 연결 중 무엇이 원인인지 확인한 뒤 범위가 가장 좁은 예외를 추가합니다. 이렇게 하면 변경 원인을 파악하기 쉽고, 수정해도 효과가 없을 때 되돌리기도 편합니다.

v2rayN 다운로드