V2Ray 트래픽 분기 설정 가이드: 중국 내 사이트는 직접 연결, 해외 트래픽은 프록시로

v2rayN 사용자 지정 라우팅을 예로 들어 domain, ip, outboundTag 필드를 살펴보고, 직접 연결·프록시·차단 규칙의 우선순위와 작성 방법을 알아봅니다.

이 글 미리보기

노드를 가져와 연결할 수 있지만 중국 내 트래픽은 직접 연결하고 해외 트래픽은 프록시로 보내고 싶은 사용자를 위한 안내입니다. 먼저 트래픽을 가로채는 방식과 코어 라우팅을 구분한 뒤 v2rayN에서 별도의 라우팅 프로필을 만듭니다. 본문에서는 V2Ray/Xray 형식의 JSON 예시와 규칙 순서, 검증 방법을 설명합니다. 예시는 완성된 클라이언트 설정이 아니므로 적용하기 전에 실제 아웃바운드 태그를 확인하세요.

1. 시스템 프록시와 라우팅 분기의 차이

시스템 프록시는 앱이 연결을 v2rayN의 로컬 프록시 포트로 전달할지 결정하고, 라우팅 분기는 코어가 연결을 받은 뒤 직접 연결·프록시·차단 중 어떤 아웃바운드를 사용할지 결정합니다. 서로 다른 계층의 설정입니다. 시스템 프록시를 켜도 모든 앱이 이를 사용하는 것은 아닙니다. 터미널, 자체 네트워크 스택을 사용하는 프로그램, 프록시 예외가 설정된 브라우저는 로컬 프록시를 거치지 않을 수 있습니다.

앱 요청 로컬 프록시 포트 규칙 매칭 아웃바운드 선택 대상 서버

이 글에서는 브라우저 트래픽을 시스템 프록시로 전달하는 환경에서 확인하며 TUN 설정은 함께 변경하지 않습니다. VMess, VLESS 등의 프로토콜은 프록시 아웃바운드의 연결 방식일 뿐, 중국 내 도메인을 직접 연결할지 결정하지 않습니다. 구독은 노드 정보를 제공하지만 현재 선택된 로컬 라우팅 프로필을 대신하지는 않습니다.

10808
이 글의 테스트에서는 로컬 프록시 포트를 사용합니다. 실제 설정을 확인하세요.
3가지
직접 연결·프록시·차단 아웃바운드 용도
1개
처음 일치하는 규칙이 해당 연결의 라우팅을 결정합니다

10808은 아래 명령에서 사용하는 예시 포트이며 모든 설치 환경의 기본값을 의미하지 않습니다. 먼저 ‘설정’ → ‘매개변수 설정’에서 로컬 수신 포트와 프록시 유형을 확인하세요. 해당 포트가 실제로 HTTP 프록시 요청을 받는 경우에만 본문의 HTTP 프록시 테스트 명령을 사용할 수 있습니다.

2. v2rayN에서 별도의 라우팅 프로필 만들기

먼저 기존 라우팅을 백업한 뒤 테스트용 프로필을 새로 만드세요. v2rayN의 메뉴는 버전과 데스크톱 UI 종류에 따라 달라질 수 있습니다. 아래에서는 흔히 사용하는 중국어 메뉴명을 기준으로 설명합니다. 라우팅 규칙 JSON을 구독 주소 입력란에 붙여 넣거나, 실행 중 생성되는 임시 파일을 직접 덮어쓰지 마세요.

  1. ‘설정’ → ‘라우팅 설정’을 열어 현재 활성 프로필을 기록한 다음, 해당 화면의 내보내기 기능으로 사본을 저장하세요. 사용 중인 버전에 내보내기 기능이 없다면 기존 규칙 내용을 복사해 보관하세요.
  2. 라우팅 설정에서 프로필을 새로 만들거나 기존 프로필을 복사한 뒤 ‘중국 내 직접 연결 테스트’라고 이름을 지정하세요. 규칙 목록에서 추가·편집·정렬 기능을 사용해 규칙을 구성하고 기존 프로필은 수정하지 마세요.
  3. geoip.dat와 geosite.dat를 사용할 수 있는지 확인하세요. 로그에 로드 실패나 태그를 찾을 수 없다는 메시지가 표시되면 라우팅을 테스트하기 전에 규칙 파일 문제부터 해결하세요.
  4. 저장한 뒤 메인 창의 라우팅 선택 메뉴에서 새 프로필로 전환하고 코어가 정상적으로 재시작되거나 설정을 다시 불러왔는지 확인하세요. 편집만 하고 프로필을 선택하지 않으면 현재 연결에는 반영되지 않습니다.
  5. 문제가 생기면 기존 프로필로 되돌린 뒤 테스트 연결을 새로 만드세요. 한 번에 노드, DNS, 트래픽 처리 방식을 모두 바꾸지 마세요.

3. domain, ip, outboundTag 매칭 방식

규칙은 목록 순서대로 검사하며 처음 일치하는 규칙이 아웃바운드를 결정합니다. 같은 필드 안의 여러 조건은 일반적으로 ‘또는’ 관계이고, 한 규칙에서 서로 다른 조건 필드는 ‘그리고’ 관계입니다. 예를 들어 domain과 port를 함께 지정하면 도메인과 포트가 모두 일치해야 규칙이 적용됩니다. 도메인과 IP를 한 규칙에 넣고 둘 중 하나만 일치해도 적용된다고 생각하지 마세요.

대상 매칭 필드

domain
도메인 조건 배열. 예: domain:example.com
ip
IP, CIDR 또는 geoip 분류 배열
port
대상 포트. 예: 443 또는 80,443
network
네트워크 유형. 예: tcp,udp

서로 다른 필드의 조건을 함께 지정하면 매칭 범위가 좁아집니다. 먼저 조건 하나로 확인한 뒤 제한을 추가하세요.

라우팅 제어 필드

type
이 글의 규칙에서는 field를 일관되게 사용합니다
outboundTag
이미 정의된 아웃바운드의 tag를 지정합니다
domainStrategy
routing 아래에 있으며 라우팅 단계의 도메인 확인 방식을 제어합니다
rules
우선순위 순으로 배치한 규칙 배열

태그는 설정에서 사용하는 식별자이지 프로토콜 이름이 아닙니다. 대소문자와 철자가 아웃바운드 설정과 정확히 일치해야 합니다.

작성 예시매칭 범위주의 사항
full:example.com해당 도메인 전체와 일치www.example.com은 포함하지 않음
domain:example.com해당 도메인과 하위 도메인사이트별 예외 규칙에 적합
geosite:cn규칙 파일에 정의된 cn 도메인 목록중국어 웹사이트 전체를 뜻하지 않음
geoip:cn규칙 파일에 정의된 중국 IP 대역 목록대상 IP 또는 라우팅 단계의 도메인 확인 결과에 따라 달라짐
geoip:private데이터 파일에 정의된 사설 및 예약 주소 목록LAN 주소 등에 사용하며 구체적인 범위는 데이터 소스에 따라 다름
192.168.1.0/24지정된 IPv4 서브넷사설 주소 전체 목록보다 범위가 구체적

접두사가 없는 일반 도메인 문자열은 이러한 규칙에서 부분 문자열로 매칭될 수 있어 의도보다 넓은 범위에 적용될 수 있습니다. 사이트 범위를 정확히 지정하려면 full: 또는 domain:을 명시하세요. 또한 geosite:cn과 geoip:cn은 서로 다른 데이터 분류이며 같은 조건으로 바꿔 쓸 수 없습니다.

4. 직접 연결·프록시·차단 규칙 예시

규칙은 지정 도메인 차단, 사설 주소 직접 연결, 지정 도메인 프록시, 중국 내 도메인 직접 연결, 중국 IP 직접 연결, 나머지 TCP/UDP 프록시 순으로 배치합니다. 예시에 나오는 ads.example.com과 remote.example.com은 작성 방법을 보여 주기 위한 가상 도메인으로, 실제 광고 목록이나 테스트 가능한 서비스가 아닙니다.

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["domain:ads.example.com"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["domain:remote.example.com"],
        "outboundTag": "proxy"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

이 코드는 routing 부분만 보여 주며 인바운드, DNS, 아웃바운드 정의는 포함하지 않습니다. 전체 설정에는 direct, proxy, block 태그가 이미 있어야 합니다. V2Ray/Xray에서는 일반적으로 직접 연결에 freedom 아웃바운드를, 차단에 blackhole 아웃바운드를 사용합니다. 프록시 태그는 선택한 노드의 실제 아웃바운드를 가리켜야 합니다. 예시를 완성하려고 불완전한 노드 객체를 새로 만들지 마세요.

정리: 도메인과 IP 분류로 분기하며, 특정 서비스에는 별도 규칙이 필요합니다

해외 사이트가 중국 내 CDN 주소를 사용하면 geoip:cn 규칙에 일치해 직접 연결될 수도 있습니다. 특정 서비스를 반드시 프록시로 보내려면 ‘해외 사이트’ 같은 일반적인 분류에 기대지 말고 명시적인 도메인 규칙을 추가해 중국 내 분류보다 앞에 배치하세요.

5. domainStrategy와 DNS가 미치는 영향

도메인 규칙을 적용하려면 코어가 먼저 대상 도메인을 알아야 합니다. 앱이 IP 주소만 전달하면 geosite로 사이트 이름을 알아낼 수 없습니다. 스니핑으로 일부 연결의 도메인 정보를 보완할 수는 있지만, 모든 프로토콜과 연결에서 도메인을 확인할 수 있는 것은 아니므로 항상 동작한다고 가정하지 마세요.

전략라우팅 동작확인할 사항
AsIs라우팅 매칭을 위해 도메인을 추가로 조회하지 않음도메인 대상은 보통 geoip 규칙으로 분류할 수 없음
IPIfNonMatch도메인 단계에서 규칙이 일치하지 않으면 IP를 조회한 뒤 IP 조건을 적용범위가 넓은 최종 규칙이 이미 일치하면 일반적으로 이 조회는 수행되지 않음
IPOnDemand규칙 검사 중 IP가 필요한 경우 도메인 조회 시도앞쪽에 있는 IP 규칙이 도메인 예외보다 먼저 아웃바운드를 결정할 수 있음

앞 절의 설정에는 명시적인 프록시 최종 규칙이 있습니다. 따라서 IPIfNonMatch를 사용하면 아직 IP로 확인되지 않았고 중국 내 도메인 목록에도 일치하지 않은 도메인이 마지막 프록시 규칙에 바로 걸릴 수 있으며, 이후 geoip:cn으로 다시 판별하지 않을 수 있습니다. 이 예시의 중국 IP 규칙은 주로 IP 형식으로 코어에 전달된 대상을 처리합니다. 분류되지 않은 도메인도 IP 지역 정보로 판별해야 한다면 최종 규칙과 주소 조회 전략을 다시 설계해야 합니다. 설정 하나만 바꾸는 것으로 해결되지 않습니다.

6. 새 연결과 로그로 트래픽 분기 확인

웹페이지가 열린다는 사실만으로는 어떤 경로로 접속했는지만 확인할 수 있을 뿐, 예상한 아웃바운드를 사용했는지는 알 수 없습니다. 기존 연결이 재사용되면 설정 변경 전의 경로가 유지될 수도 있습니다. 프로필을 저장하고 적용할 때마다 기존 테스트 연결을 종료한 뒤 요청을 새로 보내세요. 필요하면 로그 수준을 잠시 info로 높이고 확인이 끝나면 원래 값으로 되돌리세요.

  1. v2rayN 로그 영역에서 코어가 정상적으로 시작되었는지 확인하세요. 먼저 규칙 파일 누락, JSON 문법 오류, 존재하지 않는 아웃바운드 태그 등의 문제를 해결하세요.
  2. 브라우저가 실제로 로컬 프록시를 사용하는지 확인하고 시스템 프록시 설정을 덮어쓰는 확장 프로그램은 잠시 비활성화하세요. 브라우저 캐시 페이지와 다른 트래픽 처리 방식을 동시에 사용해 규칙을 판단하지 마세요.
  3. 중국 내 도메인, 분류되지 않은 도메인, 접속 가능한 LAN 주소를 각각 테스트하세요. 대상, 시간, 예상 아웃바운드를 기록한 뒤 같은 시간대의 로그에서 라우팅 결과를 확인하세요.
  4. 현재 버전의 일반 로그에 규칙 세부 정보가 표시되지 않으면 잠시 더 자세한 로그를 사용하세요. 전체 접속 대상이 포함된 로그를 오랫동안 보관하지 말고, 공유하기 전에 민감한 정보를 삭제하세요.
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://www.baidu.com/
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

Windows PowerShell에서 curl이 다른 명령의 별칭으로 연결되어 있다면 curl.exe를 사용하세요. 아래 두 명령은 지정한 로컬 프록시를 통해 새 요청을 보내는 용도입니다. HTTP 상태 코드, 시간 초과, 응답 헤더만으로 아웃바운드 선택을 확인할 수는 없습니다. 일부 서비스는 HEAD 요청을 지원하지 않으므로, 그 결과만으로 라우팅 오류라고 판단하지 마세요.

7. 사용자 지정 라우팅 자주 묻는 질문

중국 내 사이트가 계속 프록시를 사용합니다. 무엇부터 확인해야 하나요?

먼저 메인 창에서 방금 수정한 라우팅 프로필이 선택되어 있는지 확인한 다음 geosite:cn이 정상적으로 로드되었는지 확인하세요. 로그에서 확인한 실제 서비스 도메인에 domain: 직접 연결 규칙을 추가하고 최종 규칙보다 앞에 배치하세요. 사이트 첫 화면, 로그인, 이미지 서버가 서로 다른 도메인을 사용할 수 있으므로 각각 확인해야 합니다.

프록시 도메인을 추가했는데 왜 계속 직접 연결되나요?

지정 도메인 규칙을 범위가 넓은 중국 내 분류보다 앞에 배치하고 요청에 도메인 정보가 전달되는지 확인하세요. 필요할 때 주소를 조회하는 설정에서는 앞쪽의 사설 IP 규칙이 먼저 적용될 수도 있습니다. 연결을 새로 만든 뒤 아웃바운드 태그를 확인하세요. 이전 연결을 재사용하는 탭을 새로고침하는 것만으로는 충분하지 않습니다.

구독을 업데이트하면 사용자 지정 분기 규칙이 덮어써지나요?

일반적인 노드 구독 업데이트와 로컬 라우팅 프로필은 보통 따로 관리됩니다. 업데이트 후에도 현재 선택된 라우팅을 확인하세요. 전체 설정을 가져오거나 백업을 복원하면 라우팅 내용이 달라질 수 있습니다. 별도의 프로필과 내보낸 사본을 보관하면 어느 계층에서 변경되었는지 더 빠르게 확인할 수 있습니다.

같은 JSON을 Android 클라이언트에 그대로 붙여 넣을 수 있나요?

코어 설정 조각을 모든 클라이언트에 통용되는 UI 가져오기 형식으로 사용할 수는 없습니다. v2rayNG는 Xray를, v2flyNG는 v2fly를 사용합니다. 관련 필드의 기본 구조는 비슷하지만 UI 규칙 편집 방식과 코어 버전에는 차이가 있습니다. 먼저 클라이언트에서 제공하는 라우팅 편집 기능으로 같은 규칙을 만든 다음 데이터 파일, 태그, 실제 적용 결과를 확인하세요.

안정적인 트래픽 분기 설정은 규칙을 무작정 늘리는 데서 나오지 않습니다. 명확한 예외만 남기고 중국 내 분류와 마지막 대체 규칙이 각자 역할을 하도록 구성하세요. 한 번에 한 곳만 수정하고 재현 가능한 테스트 대상을 기록하면 ‘중국 내 사이트가 직접 연결되지 않음’이나 ‘특정 서비스가 프록시를 사용하지 않음’ 같은 문제를 로컬 프록시 진입부터 대상 유형, 규칙 순서, 아웃바운드까지 단계별로 확인할 수 있습니다.

v2rayN 다운로드데스크톱 및 Android 클라이언트