· 라우팅 · 약 10분

V2Ray 라우팅 규칙 설정법: domain·IP 규칙과 트래픽 분기 가이드

v2rayN의 domain·IP 규칙과 geosite·geoip 설정을 살펴보고, 중국 본토 우회·전체 프록시·사용자 지정 직접 연결을 위한 라우팅 방법을 안내합니다.

핵심 내용

구독을 가져와 노드 연결까지 마쳤지만 중국 본토와 해외 트래픽을 다르게 라우팅하고 싶은 사용자를 위한 안내입니다. 먼저 트래픽이 클라이언트로 들어오는지 확인하고, domain과 IP가 각각 무엇을 기준으로 일치하는지 살펴본 뒤 ‘사용자 지정 예외 → 일반 분류 → 기본 출구’ 순서로 규칙을 설정합니다. V2Ray/Xray 형식의 라우팅 예시와 v2rayN 설정 절차, 확인 방법을 제공합니다. 코드의 출구 태그는 현재 설정에 맞춰야 하며, 전체 클라이언트 설정으로 그대로 가져오면 안 됩니다.

라우팅 전제 조건: 먼저 트래픽이 코어에 들어와야 합니다

라우팅 규칙은 트래픽이 나갈 출구를 선택할 뿐, 모든 앱의 트래픽을 자동으로 프록시로 보내지는 않습니다. 시스템 프록시를 따르는 브라우저의 요청은 로컬 프록시 포트로 전달됩니다. 시스템 프록시를 무시하는 프로그램은 별도로 프록시를 설정하거나 TUN으로 트래픽을 가져와야 합니다. TUN을 켜도 모든 트래픽이 프록시를 통과하는 것은 아닙니다. 트래픽이 코어에 들어온 뒤에도 라우팅 규칙에 따라 직접 연결될 수 있습니다.

v2rayN은 데스크톱 클라이언트이며, 실제 라우팅은 현재 실행 중인 코어가 처리합니다. 이 문서의 JSON은 V2Ray/Xray 라우팅 형식으로, 해당 코어의 설정에 적용할 수 있으며 모든 코어에서 공통으로 쓰이는 문법은 아닙니다. Android의 v2rayNG는 Xray 코어를, v2flyNG는 v2fly 코어를 사용합니다. 두 앱은 화면 구성, 기본 규칙, 리소스 업데이트 방식이 서로 다를 수 있습니다.

10808
이 문서에서 사용하는 로컬 프록시 포트입니다. 실제 리슨 포트에 맞게 바꾸세요.
53
일반적인 DNS 포트이며, 모든 도메인 조회 트래픽을 뜻하지는 않습니다.

domain과 IP: 매칭 대상과 작성법

domain은 요청의 대상 도메인과 일치하고, ip는 대상 IP 또는 정책에 따라 조회된 IP와 일치합니다. 도메인 규칙은 전체 URL을 필터링하지 않습니다. https://, 웹 경로, 쿼리 매개변수는 입력하지 마세요. 같은 도메인이라면 경로가 달라도 일반적으로 동일한 출구를 사용합니다.

규칙 형식의미사용 예
full:example.comexample.com 자체만 일치특정 호스트 이름 하나에 예외 적용
domain:example.com루트 도메인과 하위 도메인 일치같은 도메인의 서비스를 동일한 출구로 연결
example일반 문자열을 키워드로 사용해 도메인 매칭범위가 넓어 의도치 않게 일치할 수 있으므로 주의해서 사용
geosite:cn도메인 리소스의 cn 분류 참조관리되는 도메인 목록에 따라 트래픽 분기
192.168.0.0/16지정한 IPv4 대역과 일치로컬 네트워크 주소를 직접 연결
geoip:cnIP 리소스의 cn 분류 참조대상 IP가 속한 주소 목록에 따라 트래픽 분기

예를 들어 domain:example.com은 api.example.com과 일치하지만, notexample.com을 하위 도메인으로 취급하지는 않습니다. 정확하게 제어하려면 full: 또는 domain:을 우선 사용하고, 도메인 경계를 확인하지 않은 채 짧은 키워드로 대체하지 마세요.

도메인 예외 규칙

규칙 필드
domain
매칭 대상
domain:example.com
대상 출구
direct
권장 위치
일반 분류 규칙보다 앞

도메인을 정확히 알고 있는 서비스에 적합합니다. 예시 도메인은 형식 설명용입니다.

로컬 네트워크 IP 규칙

규칙 필드
ip
매칭 대상
geoip:private
대상 출구
direct
확인 사항
IPv4 및 IPv6 주소 범위

리소스 파일에 해당 분류가 있는지 확인하세요. 실제 네트워크에 맞는 CIDR 대역을 직접 지정할 수도 있습니다.

규칙 순서: 처음 일치한 규칙이 출구를 결정합니다

규칙은 목록의 위에서 아래로 확인하며, 일치하면 더 정확한 후속 규칙을 찾지 않습니다. 범위가 넓은 규칙을 맨 앞에 두면 뒤에 있는 사용자 지정 예외가 적용되지 않을 수 있습니다. 동일 필드 배열의 여러 값은 대개 ‘또는’ 조건입니다. 한 규칙에 domain, ip, port 등 서로 다른 조건을 함께 입력하면 해당 조건을 모두 충족해야 합니다.

어떤 규칙에도 일치하지 않으면 일반적으로 outbounds 배열의 첫 번째 출구가 사용됩니다. 아래 예시는 끝에 TCP/UDP 규칙을 추가해 프록시로 명시적으로 보내므로, ‘일치하지 않음’을 반드시 직접 연결로 오해하지 않도록 합니다. 이 코드는 routing 부분만 포함합니다. direct와 proxy는 현재 전체 설정에 이미 있는 출구 태그여야 합니다.

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["domain:example.com"],
        "outboundTag": "direct"
      },
      {
        "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"
      }
    ]
  }
}

geosite, geoip 및 DNS 정책

geosite는 도메인 목록이고 geoip는 IP 주소 목록입니다. 둘 다 실시간 조회 서비스가 아닙니다. 존재하지 않는 분류를 지정하거나 리소스 파일이 없거나 형식이 호환되지 않으면 코어 로드에 실패할 수 있습니다. 구독을 업데이트해도 노드만 새로 가져올 뿐, 라우팅 리소스까지 함께 업데이트된다는 보장은 없습니다.

domainStrategy는 라우팅 단계에서 도메인 조회를 처리하는 방식을 정하며, DNS 서버 설정 전체를 뜻하지는 않습니다. IPIfNonMatch로 설정하면 도메인 규칙에 일치하지 않을 때 IP를 조회해 다시 매칭할 수 있습니다. 마지막에 모든 트래픽과 일치하는 규칙이 있으면 이미 규칙이 일치했으므로 이 조건을 충족하지 않습니다.

정책라우팅 동작참고 사항
AsIs라우팅 단계에서 도메인의 IP를 별도로 조회하지 않음도메인 요청은 주로 domain 규칙으로 처리하며, IP 필드는 IP에 직접 접속하는 경우에도 적용 가능
IPIfNonMatch도메인이 일치하지 않으면 IP를 조회해 다시 매칭 시도마지막의 전체 일치 규칙이 먼저 적용되므로 IP 대체 매칭을 기대할 수 없음
IPOnDemandIP가 필요한 규칙을 만나면 조회 시도규칙 순서에 따라 조회 시점이 달라지므로 DNS 사용 가능 여부도 확인해야 함

앞 절의 설정에서 geoip:cn은 IP를 직접 대상으로 하는 연결을 처리할 수 있습니다. 하지만 마지막에 전체 일치 규칙이 있으면 분류되지 않은 모든 도메인이 IP 대체 매칭을 거친다고 보장할 수 없습니다. 일치하지 않은 도메인도 조회된 IP를 기준으로 분류하려면 IPOnDemand를 고려하고, 먼저 적용할 도메인 규칙을 IP 규칙보다 앞에 두세요. 또는 전체 일치 규칙을 제거하고 첫 번째 출구가 실제로 프록시인지 확인하세요.

세 가지 설정: 중국 본토 우회, 전체 프록시, 사용자 지정 직접 연결

‘중국 본토 우회’는 일반적으로 로컬 네트워크와 중국 본토 대상은 직접 연결하고 나머지는 프록시를 사용하는 방식입니다. ‘전체 프록시’는 코어에 들어온 트래픽을 모두 프록시 출구로 보냅니다. 어느 방식도 앱 트래픽이 반드시 코어에 들어온다고 보장하지 않습니다. 회사 내부망, 프린터, 가정용 저장 장치 등이 필요하다면 설정을 바꾼 뒤에도 접속 가능한지 따로 확인하세요.

방식규칙 구성확인할 사항
중국 본토 우회사용자 지정 예외 → 로컬 네트워크 직접 연결 → 중국 본토 도메인/IP 직접 연결 → 나머지는 프록시중국 본토 서비스는 direct, 그 외 테스트 대상은 proxy로 연결되는지 확인
전체 프록시필요한 로컬 네트워크 예외만 남기고 나머지 TCP/UDP는 proxy로 지정먼저 적용되는 직접 연결 규칙이 남아 있는지, 앱 트래픽이 코어에 들어오는지 확인
사용자 지정 직접 연결지정한 full/domain 규칙을 맨 위에 두고 기존 트래픽 분기 규칙 유지기본 도메인, 로그인 도메인, 리소스 도메인을 각각 처리해야 하는지 확인

특정 서비스 사이트를 직접 연결하려면 기본 도메인 규칙 하나만으로 부족할 수 있습니다. 로그인, API, 정적 파일이 서로 다른 도메인을 사용할 수 있습니다. 먼저 로그에서 실제 요청을 확인한 다음 필요한 도메인만 추가하세요. 편의를 위해 여러 사이트가 공유하는 CDN의 전체 주소 범위를 직접 연결로 설정하면 관계없는 사이트에도 영향을 줄 수 있습니다.

  1. 현재 설정 저장

    현재 라우팅 설정 이름을 기록하고 규칙을 백업하세요. 노드가 작동하는지 확인하고, 문제가 생겼을 때 복구할 수 있도록 수정 전 설정을 보관합니다.

  2. 라우팅 설정 열기

    해당 메뉴를 제공하는 v2rayN 데스크톱 화면에서 ‘설정’ → ‘라우팅 설정’으로 이동합니다. 버전에 따라 메인 화면의 ‘라우팅’ 메뉴에 있을 수 있으니 현재 설치된 버전에 표시되는 메뉴명을 확인하세요.

  3. 대상 규칙 편집

    사용할 라우팅 설정을 선택하고 규칙 편집 창을 엽니다. 예를 들어 domain:example.com 같은 domain 항목을 추가하고 출구를 직접 연결로 설정하세요. 화면에서 접두어와 내용을 별도로 입력한다면 유형을 선택한 뒤 도메인을 입력합니다.

  4. 규칙 순서 조정

    예외 규칙을 중국 본토 분류와 기본 규칙보다 앞에 배치합니다. 도메인 규칙과 IP 규칙은 따로 추가하세요. 저장한 뒤 메인 화면의 ‘라우팅’ 선택기에서 해당 설정을 활성화합니다.

  5. 연결을 다시 만들어 확인

    설정이 다시 로드될 때까지 기다리고 필요한 경우 코어를 재시작하세요. 기존 웹 연결을 닫고 다시 접속한 다음 새 연결 로그에서 대상과 출구를 확인합니다. 이미 열린 장시간 연결로 새 규칙의 적용 여부를 판단하지 마세요.

라우팅 확인: 포트, 로그, 출구를 함께 점검

웹사이트가 열린다는 사실만으로는 예상한 출구를 사용했다고 볼 수 없습니다. 직접 연결해야 하는 대상 하나, 프록시를 사용해야 하는 대상 하나, 로컬 네트워크 주소 하나를 각각 테스트하세요. 로그에서는 대상 도메인 또는 IP, 선택된 출구 태그, 오류 메시지를 확인합니다. 로그 수준이 너무 낮다면 테스트 중에만 높이고 끝난 뒤 원래대로 되돌리세요.

아래 명령은 요청이 로컬 HTTP 프록시를 거치도록 합니다. 예시에서는 HTTP 또는 혼합형 인바운드가 127.0.0.1:10808에서 수신 대기한다고 가정합니다. 먼저 클라이언트에서 실제 프로토콜과 포트를 확인하세요. 해당 포트가 SOCKS 서비스만 제공한다면 HTTP 프록시 매개변수를 그대로 사용할 수 없습니다. 이 명령은 요청 방법을 보여주는 예시일 뿐, 대상 사이트에 특정 라우팅 정책을 적용해야 한다는 뜻은 아닙니다.

curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

라우팅 규칙 자주 묻는 질문

domain 규칙을 추가했는데 왜 여전히 프록시를 사용하나요?

먼저 프로토콜과 경로를 제외한 도메인만 입력했는지 확인하세요. 그런 다음 규칙을 일반 규칙보다 앞에 두고 현재 설정이 활성화됐는지 확인합니다. 로그에 대상 IP만 표시된다면 앱이 코어에 들어오기 전에 도메인을 조회했는지, 현재 인바운드가 대상 도메인 정보를 제공할 수 있는지 확인하세요.

geosite:cn과 geoip:cn을 모두 추가해야 하나요?

문법상 필수는 아니지만 두 분류가 적용되는 대상은 다릅니다. geosite:cn은 알려진 도메인에, geoip:cn은 대상 IP나 조회된 주소에 적합합니다. 두 범위를 모두 적용하려면 규칙을 나눠 추가하고 domainStrategy도 확인하세요. 분류 이름을 추가하는 것만으로 IP 조회까지 이루어진다고 생각하면 안 됩니다.

구독을 업데이트하면 사용자 지정 직접 연결 규칙이 사라지나요?

노드 구독과 클라이언트 라우팅 설정은 대개 별도로 관리됩니다. 다만 전체 설정 가져오기, 설정 복원, 라우팅 설정 덮어쓰기로 규칙이 바뀔 수 있습니다. 사용자 지정 설정을 먼저 백업하고 실행 중 생성되는 임시 설정 파일은 직접 수정하지 마세요.

Android에서 데스크톱 규칙을 그대로 복사해도 되나요?

도메인, CIDR, 규칙 우선순위의 구성 원칙은 재사용할 수 있지만 데스크톱 설정 파일 전체를 그대로 복사하면 안 됩니다. v2rayNG와 v2flyNG의 리소스 파일, 출구 태그, 사용자 지정 규칙 메뉴를 각각 확인하세요. 저장 후 연결을 다시 설정하고 로그에서 실제 출구를 확인합니다.

클라이언트 다운로드플랫폼에 맞는 설치 파일 선택