한눈에 보는 설정 · 고급 구성

V2Ray 고급 설정

구독, 라우팅, DNS를 단계별로 설정하세요. 먼저 트래픽 유입 방식을 정한 뒤 규칙과 아웃바운드를 확인하고, 마지막으로 이름 해석과 가상 주소를 점검합니다.

처음 사용한다면 먼저 빠른 시작 가이드 →에서 가져오기, 연결, 확인 절차를 완료하세요. 이 페이지는 작동하는 설정을 갖춘 사용자를 위한 참고 자료입니다. 가이드에서 분기 처리, 이름 해석 또는 트래픽 적용 범위에 문제가 생기면 아래 항목을 확인하세요. 데스크톱에서는 v2rayN, Android에서는 v2rayNG를 주로 사용하며 v2flyNG는 v2fly 코어를 사용하는 대안입니다.

구독 관리 domain / ip DNS / FakeDNS TUN / VPN

구독 그룹 및 서버 필터

구독 그룹은 설정의 출처를 관리하는 기능이지 트래픽이 어디로 가는지를 정하는 기능은 아닙니다. 일반적으로 그룹에는 이름, 구독 주소, 필터 조건이 저장됩니다. 업데이트하면 클라이언트가 해당 주소에 요청을 보내고, 응답을 서버 항목으로 변환합니다. 서버 별칭은 식별을 돕지만 실제 출구 위치를 결정하지는 않습니다. 설정을 시작하기 전에 구성 목록을 제공하는 구독 주소인지, 단일 서버 정보를 담은 공유 링크인지 확인하세요. 두 주소는 서로 다른 입력란에 넣어야 합니다.

출처별로 그룹 만들기

v2rayN에서 ‘구독 그룹 설정’을 열고 그룹을 추가한 다음 알아보기 쉬운 이름과 구독 주소를 입력하고 저장합니다. 메인 화면으로 돌아와 구독 메뉴에서 해당 그룹을 업데이트하세요. v2rayNG에서는 보통 사이드 메뉴의 ‘구독 그룹 설정’으로 이동합니다. 일부 화면에서는 ‘구독 설정’으로 표시될 수 있습니다. 저장한 뒤 서버 목록으로 돌아가 구독을 업데이트하세요. 메뉴 이름은 화면에 따라 달라질 수 있으므로 그룹 이름과 구독 URL을 수정할 수 있는 화면인지 확인하면 됩니다.

그룹 이름에는 ‘업무용 예비’나 ‘개인 테스트’처럼 출처와 용도를 기록하세요. 접근 자격 정보가 포함된 전체 주소를 이름으로 사용하지 마세요. 구독 주소는 민감한 정보입니다. 주소를 가진 사람이 전체 설정 목록을 받을 수 있기 때문입니다. 스크린샷, 로그, 문의 내용에서 경로의 토큰, 쿼리 매개변수, 계정 정보를 삭제하고 프로토콜과 오류 유형만 남기세요. 사용 가능한 설정을 공개하지 않도록 주의해야 합니다.

처음 업데이트할 때는 모든 항목을 남겨 별칭, 프로토콜, 전송 설정이 정상적으로 생성되는지 확인하세요. 먼저 작동이 확인된 설정 하나로 연결한 다음 필터 조건을 적용합니다. 이렇게 하면 ‘구독을 파싱하지 못한 문제’와 ‘필터를 적용한 뒤 일치하는 항목이 없는 문제’를 구분할 수 있습니다. 구독 주소와 필터식을 한꺼번에 바꾸지 마세요. 업데이트 후 목록이 비었을 때 어느 단계에서 문제가 생겼는지 확인하기 어렵습니다.

간단한 키워드부터 필터링하기

서버 필터는 보통 별칭 텍스트를 기준으로 작동하며 서버의 실제 위치를 자동으로 파악하지 않습니다. 먼저 별칭에서 고유한 단어 하나를 복사해 조건으로 저장하고, 그룹을 업데이트한 뒤 남은 항목을 확인하세요. 대소문자, 공백, 전각 기호, 구독 제공자가 이름을 변경했는지가 일치 여부에 영향을 줄 수 있습니다. 별칭에 특정 지역명이 있다고 해서 연결이 반드시 해당 지역을 출구로 사용한다는 뜻은 아닙니다.

클라이언트나 화면에 따라 필터 입력란은 일반 키워드 또는 정규식을 사용할 수 있으며, 여러 키워드를 구분하는 문자도 다를 수 있습니다. 현재 입력란이 정규식을 지원한다고 명시된 경우에만 아래 예시를 사용하세요. 식의 세로줄은 둘 중 하나를 뜻하며 우선순위를 나타내지 않습니다. 입력란이 일반 텍스트만 지원한다면 정규식 기호를 그대로 붙여 넣지 말고 키워드를 각각 테스트하세요.

(?i)(업무|예비)

이 식은 해당 정규식 문법을 지원하는 입력란에서 별칭에 ‘업무’ 또는 ‘예비’가 포함된 항목을 찾습니다. 라우팅 방식은 바꾸지 않습니다. 원래 식을 로컬에 따로 기록하고, 변경할 때는 기존 조건을 지운 뒤 새 조건 하나만 입력하세요. 제외 키워드, 괄호, 복잡한 조합은 단계적으로 추가합니다. 조건을 하나 더할 때마다 업데이트하고 남아야 할 항목 하나와 제외되어야 할 항목 하나가 제대로 처리되는지 확인하세요.

업데이트 후 목록이 비면 단계별로 점검하기

먼저 필터 조건을 잠시 비우고 같은 그룹을 다시 업데이트하세요. 항목이 돌아오면 매칭 방식이나 별칭 변경이 원인입니다. 계속 비어 있다면 구독 주소가 만료되었는지, 로그인 페이지나 오류 페이지가 반환되는지 확인하세요. 브라우저에서 주소를 열 수 있다고 해서 클라이언트가 파싱 가능한 구독 데이터를 받는 것은 아닙니다. 일부 주소는 특정 응답 형식이 필요하므로 웹페이지에 표시된 내용을 구독 데이터로 바로 사용할 수 없습니다.

구독을 업데이트하면 해당 그룹의 항목이 다시 생성되는 경우가 많아 수동으로 수정한 별칭이나 연결 매개변수가 유지되지 않을 수 있습니다. 장기간 유지해야 하는 설정은 별도의 로컬 항목으로 복사하고 출처를 기록하세요. 이후 서버 매개변수 변경은 직접 반영해야 합니다. 가져오기 위치와 형식의 차이는 구독 링크 가져오기 안내에서, 키워드 정리 예시는 여러 구독 그룹 필터링 실전에서 확인하세요.

라우팅 규칙 및 매칭 순서

라우팅 규칙은 코어에 들어온 연결이 어떤 아웃바운드를 사용할지 결정합니다. 규칙만으로 앱 트래픽이 프록시로 들어오게 만들거나 작동하지 않는 서버를 복구할 수는 없습니다. 라우팅을 이해하려면 유입, 매칭 조건, 아웃바운드를 구분하세요. 유입은 연결을 받고, 조건은 도메인·대상 IP·포트를 확인하며, 아웃바운드는 직접 연결·프록시·차단을 수행합니다. 앱 트래픽이 유입 단계에 도달하지 않으면 규칙을 아무리 완벽하게 작성해도 적용되지 않습니다.

생성된 설정의 태그부터 확인하기

v2rayN과 v2rayNG에서는 라우팅 설정 화면에서 규칙과 프리셋을 조정할 수 있습니다. 편집하기 전에 현재 설정이나 실행 로그를 확인해 프록시, 직접 연결, 차단 아웃바운드의 실제 태그를 파악하세요. 아래 예시는 proxy, direct, block이라는 아웃바운드가 있다고 가정합니다. 이 태그는 읽기 쉬운 이름일 뿐, 현재 클라이언트가 실제로 같은 이름을 사용한다고 보장하지 않습니다.

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

아래는 순서를 설명하기 위한 라우팅 예시이며 완전한 클라이언트 설정은 아닙니다. 예시 도메인은 실제 서비스 도메인으로 바꾸고, 분류 목록은 사용할 수 있는 데이터 파일과 맞춰야 합니다. 규칙은 위에서 아래 순서로 확인하며 처음 일치하는 규칙이 연결 경로를 결정합니다. 마지막의 전체 매칭 규칙은 남은 TCP 및 UDP 트래픽을 처리하므로 세부 규칙보다 앞에 두면 안 됩니다. 앞에 놓으면 뒤에 있는 도메인 및 IP 조건이 검사되지 않습니다.

도메인 조건과 IP 조건의 범위 이해하기

full:은 정확한 도메인을 매칭합니다. domain:은 도메인과 하위 도메인을 대상으로 합니다. geosite:는 도메인 목록을 참조하고, geoip:는 IP 목록을 참조합니다. 한 규칙에 도메인과 포트를 함께 지정하면 보통 두 조건을 모두 만족해야 하며, 둘 중 하나만 만족해도 된다는 뜻이 아닙니다. ‘특정 도메인 또는 특정 IP는 모두 직접 연결’하려면 규칙을 각각 만들어야 합니다.

domainStrategy는 라우팅 단계에서 매칭을 위해 도메인을 조회할지 결정합니다. AsIs는 원래 대상 정보를 최대한 사용합니다. IPIfNonMatch는 도메인 조건이 일치하지 않을 때 주소를 조회해 IP 조건을 추가로 검사합니다. IPOnDemand는 IP 판단이 필요한 규칙에서 주소 조회를 시작할 수 있습니다. 이 설정은 DNS 서버 목록이 아니며 앱이 자체적으로 수행하는 이름 조회를 코어가 자동으로 처리하도록 보장하지도 않습니다.

도메인이 여러 서비스에서 공유하는 IP 주소로 해석되면 IP 분류만으로는 서로 다른 서비스를 같은 출구로 보낼 수 있습니다. 출구를 명확히 제어해야 하는 서비스에는 구체적인 도메인 규칙을 사용하고, 포괄적인 분류 규칙보다 앞에 배치하세요. 소프트웨어가 로그인, 이미지, 인증, 업데이트 등 여러 도메인에 의존한다면 대표 도메인만 추가해서는 부족할 수 있습니다. 연결 로그를 참고해 필요한 도메인을 보완하되 전체 트래픽으로 범위를 무작정 넓히지는 마세요.

스니핑과 로컬 네트워크 규칙

‘트래픽 스니핑 사용’은 지원되는 연결 내용에서 도메인 정보를 복원해 도메인 기반 분기를 돕습니다. 모든 프로토콜을 식별하거나 암호화된 내용을 해독할 수 있는 것은 아닙니다. 대상 IP만 있는 연결에서는 도메인을 복원하지 못할 수도 있습니다. 활성화한 뒤 일부 앱에 문제가 생기면 먼저 스니핑 관련 대상 덮어쓰기 동작을 확인하고 해당 설정만 되돌리세요. DNS와 라우팅을 동시에 바꾸면 원인을 구분하기 어려워집니다.

로컬 네트워크에 직접 연결하려면 보통 사설 주소 규칙이 필요하며, 클라이언트의 ‘로컬 네트워크 우회’, 시스템 라우팅, TUN 제외 대역의 영향도 받습니다. 코어에 직접 연결 규칙이 있다고 해서 모든 로컬 네트워크 접근이 가상 네트워크 인터페이스를 우회한다고 단정하지 마세요. 사설 주소 대역을 원격으로 프록시하지도 마세요. 기업 네트워크의 내부 도메인과 주소는 실제 네트워크 구성에 맞춰 설정하고, 원격 사설망과 로컬 사설망이 겹치지 않는지 특히 확인해야 합니다.

확인할 때는 서버 하나를 고정하고 정확한 도메인, 분류 도메인, 매칭되지 않는 대상을 차례로 테스트한 뒤 로그에서 아웃바운드 태그를 확인하세요. 규칙을 편집해도 달라지지 않는다면 수정한 라우팅 설정이 선택되어 있는지, 연결을 다시 시작해야 하는지 확인합니다. 분류 데이터가 누락되었다면 먼저 로딩 오류를 해결하세요. 무작정 더 포괄적인 직접 연결 규칙으로 바꾸지 마세요. 기본 개념은 도움말 센터에서 더 확인할 수 있습니다.

DNS 설정 및 이름 해석 경로

DNS 문제를 서버 장애로 오해하는 경우가 많습니다. 일반적으로 접속은 대상 주소를 조회한 뒤 연결을 맺지만, 브라우저·운영체제·프록시 코어가 각각 이름 조회를 수행할 수 있습니다. 클라이언트에서 DNS 주소를 바꿔도 실제로 해당 클라이언트가 처리하는 요청에만 영향을 줍니다. 문제를 확인할 때는 먼저 도메인 조회를 어느 구성요소가 처리하는지 파악한 다음, 조회 서버·정책·전송 방식을 선택하세요. 모든 DNS 항목에 같은 주소를 입력하는 것으로 해결하려고 해서는 안 됩니다.

세 가지 이름 해석 경로 구분하기

첫 번째 경로는 앱이 시스템 DNS로 주소를 조회한 뒤 대상 IP를 프록시에 전달하는 방식입니다. 두 번째는 앱이 도메인을 로컬 프록시에 전달하고 코어나 원격 서버가 이어서 처리하는 방식입니다. 세 번째는 앱이 암호화 DNS를 직접 사용해 일반 암호화 연결처럼 조회 트래픽을 보내는 방식입니다. 한 기기에서 이 경로들이 동시에 사용될 수 있으므로 브라우저는 정상인데 다른 앱은 실패하더라도 클라이언트 DNS 설정 전체가 맞거나 틀렸다고 단정할 수 없습니다.

설정 계층주요 기능확인 위치
앱 및 시스템 DNS트래픽이 프록시에 들어오기 전에 이름 조회앱 네트워크 설정, 시스템 네트워크 설정
코어 DNS서비스 라우팅 판단 및 지정된 이름 조회클라이언트 DNS 설정, 생성된 설정
TUN DNS 가로채기지정된 DNS 요청을 처리 구성요소로 전달TUN 설정, 가상 네트워크 인터페이스, 로그

v2rayN에서는 설정의 DNS 관련 화면에서 이름 해석 동작을 구성할 수 있습니다. TUN의 DNS 설정은 별도 계층에 있을 수 있습니다. v2rayNG에서는 DNS 설정, VPN 모드, FakeDNS 스위치를 함께 확인하세요. v2flyNG는 v2fly 코어를 사용하므로 Xray 전용 필드를 그대로 적용해서는 안 됩니다. 옵션 이름이 비슷해도 해당 클라이언트가 생성한 설정과 코어의 지원 여부를 확인해야 합니다.

독립적으로 작동하는 기본 DNS 구성하기

먼저 FakeDNS를 끄고 일반 DNS 경로만 사용해 서버 주소 자체가 조회되는지 확인하세요. 서버 주소가 도메인인데 이를 조회하는 암호화 DNS가 아직 연결되지 않은 프록시를 거쳐야 한다면 연결 시작 단계에서 의존성이 생깁니다. 이 경우 서버 도메인을 조회할 수 있는 기본 경로를 마련하거나 서비스 제공자가 명시한 연결 주소를 사용하세요. TLS의 도메인 이름과 SNI 설정은 올바르게 유지해야 합니다.

{
  "dns": {
    "hosts": {
      "resolver.home.arpa": "192.168.1.53"
    },
    "servers": [
      {
        "address": "192.168.1.53",
        "domains": ["domain:home.arpa"]
      },
      "1.1.1.1"
    ],
    "queryStrategy": "UseIP"
  }
}

다음은 일반 DNS 설정 예시입니다. 가정용 DNS 서버 주소는 실제 로컬 주소로 바꾸고 해당 주소에 연결할 수 있어야 합니다. home.arpa는 가정 내 이름에 사용합니다. 이 예시는 지정 도메인과 일반 조회를 다르게 처리할 수 있음을 보여줄 뿐, 서버 배열이 엄격한 순차 장애 조치 목록이라는 뜻은 아닙니다. 매칭, 대체, 병렬 요청 동작은 코어 구현과 추가 매개변수에 따라 달라지므로 로그로 확인하세요.

주소 계열과 암호화 DNS 처리하기

조회 정책에 따라 반환할 주소 계열이 결정됩니다. 기기에 IPv6 주소가 있다고 해서 현재 서버, 원격 출구, 대상 사이트까지 IPv6 경로가 모두 갖춰져 있다는 뜻은 아닙니다. 일부 사이트만 오래 기다린다면 비교를 위해 잠시 IPv4만 조회해 볼 수 있습니다. 문제가 확인되면 IPv6 라우팅이나 출구 기능을 점검하세요. 주소 계열 하나를 계속 끄는 것을 모든 DNS 문제의 해결책으로 삼지 마세요.

암호화 DNS를 사용한다면 DNS 서버 도메인의 최초 조회, 인증서 검증, 연결 라우팅을 함께 고려해야 합니다. DNS 서버가 프록시를 이용한다면 프록시가 시작되기 전에 서버 도메인을 어떻게 조회할지 확인하세요. 직접 연결을 이용한다면 로컬 네트워크에서 접속 가능한지 확인해야 합니다. DNS 전송 방식을 바꿔도 서비스 트래픽의 아웃바운드가 자동으로 바뀌지는 않습니다. 반대로 서비스 트래픽을 프록시로 설정했다고 해서 모든 DNS 요청이 같은 경로로 전송되는 것도 아닙니다.

테스트에는 실제로 존재하는 전체 도메인 하나를 사용해 주소를 얻는지, 어떤 주소 계열을 받는지, 이후 연결이 어느 출구를 사용하는지 각각 확인하세요. 이름 조회는 성공했는데 TLS 연결이 실패한다면 DNS 서버를 계속 바꾸지 말고 시스템 시간, SNI, 인증서를 점검하세요. 관련 내용은 TLS 핸드셰이크 및 인증서 문제 해결을 참고하세요. 내부 도메인이 실패한다면 지정 DNS 서버와 사설망 라우팅을 먼저 확인하고 공용 DNS 서버에 반복해서 조회하지 마세요.

TUN 모드 및 트래픽 적용 범위

TUN은 가상 네트워크 인터페이스로 IP 트래픽을 받아 시스템 프록시를 따르지 않는 앱을 처리할 수 있습니다. 이는 서버 프로토콜의 한 종류가 아니며 모든 앱의 정상 작동을 보장하지 않습니다. 사용하기 전에 일반 프록시 모드가 작동하는지 확인한 뒤 가상 인터페이스를 통한 트래픽 처리를 활성화하세요. 이렇게 하면 서버 문제와 시스템 라우팅 문제를 구분할 수 있습니다. 데스크톱에서는 먼저 v2rayN의 기존 설정을 사용하고, 연결 실패를 해결하려고 TUN을 무작정 켜지 마세요.

데스크톱 TUN과 Android VPN 모드

v2rayN의 시스템 프록시는 프록시 설정을 읽는 앱을 주로 처리하고, TUN은 네트워크 인터페이스 계층에서 더 넓은 범위의 트래픽을 처리합니다. 두 기능은 같은 의미가 아닙니다. Android의 v2rayNG는 시스템 VPN 서비스를 사용해 앱 트래픽을 받으며 설정에 ‘VPN 모드’, ‘프록시 전용 모드’ 등의 옵션이 표시됩니다. 프록시 전용 모드는 보통 앱이 로컬 리스닝 포트에 직접 연결해야 합니다. 기기 전체가 자동으로 해당 경로를 사용한다고 기대하지 마세요.

데스크톱에서 TUN을 활성화할 때 관리자 권한이나 시스템 네트워크 승인이 필요할 수 있습니다. 먼저 시스템에서 인터페이스 생성을 허용하는지 확인하고 로그에서 시작 완료 여부를 살펴보세요. Windows에서는 권한과 보안 소프트웨어의 네트워크 차단을 확인합니다. macOS에서는 시스템 권한과 남아 있는 프록시 설정을 확인합니다. Linux에서는 인터페이스 생성 권한과 라우팅 변경을 점검하세요. 문제를 해결한다며 보안 정책을 전부 끄지 말고 로그로 확인된 차단만 처리하세요.

Android에서 처음 연결하면 시스템 VPN 권한 요청이 표시됩니다. 앱 이름을 확인한 뒤 승인하세요. 다른 VPN 도구가 동시에 트래픽 처리 권한을 사용 중이면 충돌할 수 있고, 백그라운드 제한이 서비스를 중단시킬 수도 있습니다. 앱을 전환한 뒤 연결이 끊긴다면 서버 전송 매개변수를 반복해서 바꾸지 말고 배터리 최적화, 백그라운드 실행 허용, 다른 네트워크 도구의 트래픽 처리 여부를 먼저 확인하세요.

라우팅과 DNS를 순서대로 점검하기

TUN을 시작하기 전에 기본 네트워크 인터페이스, 기존 시스템 프록시, 실행 중인 다른 네트워크 도구를 기록하세요. 시작 후에는 가상 인터페이스가 생성되고 라우팅이 설정되었는지, 서버 연결이 다시 가상 인터페이스로 들어가지는 않는지 확인합니다. 원격 서버 연결에는 올바른 출구 경로가 필요합니다. 서버 연결까지 계속 가로채면 라우팅 루프가 생겨 전체 기기의 네트워크가 끊기거나 로그에 연결이 반복해서 기록될 수 있습니다.

TUN의 DNS 가로채기와 코어 DNS 설정은 서로 다른 구성요소가 담당할 수 있습니다. 먼저 일반 도메인이 조회되는지 확인한 다음 IP 주소 대상과 로컬 네트워크 리소스를 테스트하세요. 도메인만 실패하고 IP 연결은 정상이라면 DNS를 중점적으로 확인합니다. 둘 다 실패한다면 인터페이스, 기본 라우트, 아웃바운드 연결을 먼저 점검하세요. 가상 인터페이스가 정상 작동하기 전에 FakeDNS까지 켜면 주소 매핑이라는 변수가 추가됩니다.

유입 방식필요 조건주요 한계
시스템 프록시앱이 시스템 프록시를 사용하거나 직접 설정함일부 앱은 시스템 프록시 설정을 따르지 않음
데스크톱 TUN인터페이스 권한, 라우팅, DNS가 함께 작동해야 함라우팅 루프, 대역 충돌, UDP 지원 여부
Android VPN 모드시스템 권한과 앱 트래픽 적용 범위가 올바름앱별 선택 및 백그라운드 제한

앱별 프록시 및 로컬 네트워크 접근

v2rayNG의 ‘앱별 프록시’는 VPN이 처리할 앱을 지정합니다. 화면에서 선택한 앱만 프록시하는지, 선택한 앱을 제외하는지 먼저 확인한 다음 대상을 선택하세요. 앱 옆의 체크 표시만 보고 의미를 판단하면 안 됩니다. 저장한 뒤 연결을 다시 시작하고 테스트 앱도 완전히 종료한 다음 다시 여세요. 기존 연결은 이전 경로를 계속 사용할 수 있습니다.

데스크톱에서 일부 프로세스별 분기는 TUN 구현 계층에서 제공하므로 프로세스 이름을 일반 V2Ray 라우팅 규칙에 직접 적으면 작동한다고 가정해서는 안 됩니다. 앱별 처리가 필요하다면 현재 클라이언트가 명확히 지원하는 기능을 사용하고 하위 프로세스와 업데이트 프로그램도 고려하세요. 앱 트래픽 유입 제외와 도메인 직접 연결 규칙은 서로 다른 계층입니다. 전자는 트래픽이 코어에 전혀 들어오지 않게 할 수 있고, 후자는 코어에 들어온 뒤 직접 연결을 선택합니다.

로컬 프린터, 공유 폴더, 내부 서비스에 문제가 있으면 먼저 ‘로컬 네트워크 우회’와 제외 대역을 확인하세요. 회사 네트워크와 가정 네트워크의 사설 IP 대역이 겹치면 실제 대상에 맞춰 세분화해야 합니다. 사설망 전체를 원격으로 보내지 마세요. TUN을 끈 뒤 시스템 기본 라우트와 프록시 설정이 복구되었는지 확인하고 다음 테스트를 진행하세요. 설치 및 권한 준비는 클라이언트 다운로드 페이지와 macOS 설치 및 권한 안내를 참고하세요.

FakeDNS 및 가상 주소 매핑

FakeDNS는 앱에 대상 서버의 실제 주소를 반환하지 않고 내부 가상 주소를 할당한 뒤 해당 주소와 도메인의 대응 관계를 저장합니다. 앱이 가상 주소에 연결하면 트래픽 처리 구성요소가 도메인을 찾아 라우팅과 아웃바운드를 적용해야 합니다. 이 기능은 도메인 정보를 유지하는 데 목적이 있습니다. 가상 주소가 일반 네트워크에서 직접 접속 가능한 것은 아닙니다. 매핑 환경을 벗어나면 해당 주소만으로는 보통 대상에 접근할 수 없습니다.

먼저 전체 트래픽 처리 조건 충족하기

FakeDNS가 작동하려면 관련 DNS 요청이 FakeDNS 처리 경로에 들어가야 하며, 앱이 가상 주소에 연결할 때 발생하는 트래픽도 같은 처리 방식으로 가로채야 합니다. 한쪽만 작동하면 이름 조회는 성공했지만 연결은 실패할 수 있습니다. 브라우저가 자체 암호화 DNS를 사용하면 FakeDNS를 우회할 수 있습니다. 앱이 이전 주소를 캐시한 경우에도 실제 주소를 계속 사용해 같은 기기에서 동작이 일관되지 않아 보일 수 있습니다.

v2rayNG에서 ‘FakeDNS 사용’을 켤 때는 VPN 모드, DNS 설정, 스니핑 관련 설정을 함께 확인하세요. 그래픽 인터페이스의 스위치 하나가 코어 설정 여러 곳을 자동으로 생성할 수 있으므로 불리언 값 하나만 비교해서는 안 됩니다. v2rayN의 TUN DNS도 트래픽 처리 구성요소가 비슷한 방식을 구현할 수 있지만, 설정 필드와 상태 위치는 Xray 코어와 다를 수 있습니다. 한쪽의 설정 조각을 다른 쪽에 그대로 붙여 넣지 마세요.

v2flyNG는 v2fly 코어를 사용하므로 지원 기능은 현재 화면과 설정 파싱 결과를 기준으로 판단하세요. 알 수 없는 필드가 나오면 오류 메시지를 무시하고 계속 켜지 말고 해당 코어가 지원하는 설정 구조를 확인해야 합니다. 클라이언트 이름, 화면의 스위치, 코어 설정은 서로 다른 계층입니다. 기능 이름이 같아도 필드가 완전히 호환되는 것은 아닙니다. 특히 클라이언트 간 DNS 설정을 옮길 때 주의하세요.

주소 풀과 스니핑의 연동 이해하기

{
  "fakedns": [
    {
      "ipPool": "198.18.0.0/15",
      "poolSize": 65535
    }
  ]
}

위 예시는 해당 구조를 지원하는 Xray 설정의 주소 풀 부분만 보여주며 FakeDNS를 활성화하는 완전한 방법은 아닙니다. DNS에서 FakeDNS를 사용하고, 관련 유입 경로에서 도메인을 복원하며, 가상 주소 대역의 트래픽을 처리해야 합니다. ipPool은 할당 범위, poolSize는 매핑 용량을 결정합니다. 서버 수나 네트워크 성능을 나타내는 값이 아닙니다. 먼저 클라이언트가 생성하는 호환 설정을 사용하세요. 이 부분만 추가해 테스트를 시작하지 마세요.

매핑 주소 대역은 현재 네트워크나 다른 가상 네트워크와 겹치면 안 됩니다. 기업 테스트 네트워크나 다른 터널 도구가 같은 범위를 사용하고 있다면 충돌을 피하도록 통합 관리해야 합니다. 가상 주소 풀을 트래픽 처리 제외 목록에 넣으면 앱 연결이 일반 네트워크로 빠져나갑니다. 이 주소 대역을 원격 직접 연결 정책에서 실제 대상으로 취급해서도 안 됩니다. 올바른 로컬 처리 계층에서 매핑을 복원해야 합니다.

트래픽 스니핑과 FakeDNS는 함께 사용할 수 있지만 역할은 다릅니다. 일반 스니핑은 연결 내용에서 도메인을 복원하려고 시도하고, FakeDNS는 앞서 만든 매핑을 사용해 도메인을 찾습니다. 연결이 들어왔을 때 매핑이 이미 사라졌다면 일반 스니핑만으로 복구하기 어려울 수 있습니다. 클라이언트 재시작, 매핑 만료, 구성요소 상태 불일치로 앱에 남아 있는 가상 주소의 도메인 정보가 사라질 수 있습니다.

사용 범위와 복구 방법 파악하기

도메인 기준으로 안정적으로 분기해야 하지만 유입 단계에서는 IP만 얻는 경우, 기본 연결 경로가 안정된 뒤 FakeDNS를 테스트할 수 있습니다. 고정 IP에 직접 연결하는 프로그램, 로컬 네트워크 검색, DNS 응답을 검증하는 일부 앱에는 적합하지 않을 수 있습니다. 이런 앱은 전역 스위치를 더 바꾸기보다 트래픽 처리 제외를 명확히 지정하거나 일반 DNS 방식을 고려하세요.

활성화한 뒤 일반 웹페이지, 로그인, 미디어, 백그라운드 작업을 차례로 테스트하세요. 일부 앱만 실패하면 자체 암호화 DNS를 사용하는지, IP에 직접 연결하는지, 활성화 전에 실행 중이었는지 기록하세요. 먼저 앱을 완전히 종료한 뒤 다시 시도하세요. 문제가 계속되면 다른 설정은 그대로 두고 FakeDNS만 끈 다음 같은 대상으로 비교해야 주소 매핑 문제인지 판단할 수 있습니다.

문제를 기록할 때는 도메인, 트래픽 처리 모드, 아웃바운드 태그만 남기면 됩니다. 전체 설정을 공개할 필요는 없습니다. FakeDNS를 끄면 문제가 사라지고 다시 켰을 때 안정적으로 재현된다면 DNS 가로채기, 주소 풀 라우팅, 매핑 복원 과정을 계속 확인하세요. 두 모드 모두 실패한다면 서버 연결과 일반 DNS 점검으로 돌아가야 합니다. 관련 없는 매개변수를 계속 바꾸지 마세요.

여러 구독 관리 및 업데이트 전략

여러 구독을 함께 사용할 때 중요한 점은 가져올 수 있는지가 아니라 출처와 용도, 업데이트 후 변경 사항을 추적할 수 있는지입니다. 출처별로 그룹을 나누고 별칭이나 로컬 기록에 용도를 남기세요. 출처를 구분할 수 없는 하나의 목록에 모든 링크를 합치지 마세요. 주소가 만료되거나 형식이 바뀌거나 항목이 삭제됐을 때 그룹을 분리해 두면 영향을 쉽게 파악하고 다른 정상 설정도 유지할 수 있습니다.

출처·선택 항목·정책을 나눠 관리하기

구독 그룹은 설정 출처를 관리하고, 현재 선택한 서버는 프록시 출구를 결정하며, 라우팅 규칙은 어떤 연결이 해당 출구를 사용할지 정합니다. 세 가지를 혼동하지 마세요. 어떤 설정이 ‘업무용’ 그룹에 있다고 해서 업무 앱이 자동으로 그 설정을 사용하는 것은 아닙니다. 그룹 필터를 바꿔도 현재 서버가 바뀌지 않을 수 있습니다. 작업 후에는 목록에 어떤 그룹이 표시되는지만 보지 말고 메인 화면의 현재 선택 항목을 확인하세요.

처음 정리할 때 각 출처의 구독 유형, 그룹 이름, 필터 조건, 사용 가능 여부 확인 방법을 기록하세요. 이 기록은 로컬에 보관하고 공개 스크린샷에 남기지 마세요. ‘수동 업데이트 후 어떤 서비스를 테스트할지’를 간단한 표로 만들 수 있지만 구독 토큰과 연결 암호를 같은 공유 문서에 적지 마세요. 출처 자격 정보가 유출되었다면 그룹 이름만 바꾸지 말고 제공자가 지원하는 방법으로 교체하세요.

로컬 독립 항목과 구독에서 생성된 항목은 따로 관리하는 것이 좋습니다. 전자는 수동 관리가 필요한 매개변수를 보존할 때, 후자는 구독 출처에 따라 업데이트할 때 적합합니다. 항목을 복사했다면 누가 관리할지 기록하세요. 구독 서버의 포트, 인증, TLS 매개변수가 바뀌어도 로컬 복사본은 보통 자동으로 동기화되지 않습니다. 이를 잊으면 목록에 비슷해 보이지만 실제 설정은 달라진 항목이 남을 수 있습니다.

먼저 수동 업데이트한 뒤 자동 업데이트 설정하기

각 그룹을 먼저 한 번 수동 업데이트해 네트워크 연결, 데이터 파싱, 필터 결과가 정상인지 확인하세요. 그런 다음 구독 출처가 바뀌는 주기에 맞춰 자동 업데이트를 설정합니다. 현재 화면에 해당 옵션이 없다면 수동 업데이트를 유지하세요. Android의 백그라운드 제한은 예약 작업을 늦출 수 있으며 자동 업데이트가 연결 장애 시 서버를 즉시 바꿔 준다는 뜻도 아닙니다. 두 문제를 별도로 판단해야 합니다.

일부 클라이언트에서는 현재 프록시를 통해 구독을 업데이트할지, 프록시 없이 업데이트할지 선택할 수 있습니다. 기존 연결이 정상이라면 프록시를 통한 구독 업데이트를 테스트해 볼 수 있습니다. 처음 시작하거나 현재 서버가 작동하지 않을 때는 업데이트에 사용할 수 있는 경로가 있는지 확인하세요. 모든 구독이 동일한 장애 출구에 의존하도록 설정하지 마세요. 업데이트 방식을 바꾸기 전에 별도로 사용할 수 있는 설정 하나를 보존해 업데이트 의존성과 연결 의존성이 서로를 막지 않도록 하세요.

업데이트가 끝나면 현재 선택 항목이 여전히 유효한지 확인하세요. 출처에서 항목 이름을 바꾸거나 삭제 또는 교체할 수 있고, 클라이언트가 선택 항목을 다시 지정할 수도 있으며 이미 유효하지 않은 참조를 그대로 유지할 수도 있습니다. 항목 별칭을 고정해도 항상 같은 서버를 가리키는 것은 아닙니다. 중요한 작업을 테스트하기 전에 이전 목록 위치에 의존하지 말고 실제 연결 매개변수와 로그의 아웃바운드를 확인하세요.

중복 이름, 항목, 형식 변경 처리

출처가 달라도 같은 별칭을 사용할 수 있고, 같은 서버가 서로 다른 별칭으로 중복 표시될 수도 있습니다. 별칭이 같아도 매개변수가 같다는 뜻은 아니며, 매개변수가 같아도 업데이트 주기가 같다고 볼 수 없습니다. 정리하기 전에 주소, 포트, 프로토콜, 전송 방식, TLS 설정을 비교한 뒤 로컬 복사본을 남길지 결정하세요. 이름만 보고 여러 항목을 한꺼번에 삭제하면 다른 용도의 유효한 설정도 지울 수 있습니다.

필터는 그룹별로 설정하고 각각 확인하세요. 구독 출처에서 이름을 바꾸면 기존 키워드가 전부 일치하지 않을 수 있지만 다른 출처는 정상 작동할 수 있습니다. 이때 영향받은 그룹의 필터만 잠시 비우면 됩니다. 클라이언트 설정 전체를 초기화할 필요는 없습니다. 출처가 반환 형식을 바꿨다면 제공자에게 현재 클라이언트용 구독 주소를 확인하세요. 웹페이지 내용을 반복해서 가져오지 마세요.

새 기기로 옮길 때는 먼저 그룹 구조를 옮긴 다음 하나씩 업데이트하고 테스트하세요. DNS, 라우팅, 트래픽 처리 설정을 한꺼번에 덮어쓰지 마세요. 구독 데이터만으로 로컬 정책 전체를 복원할 수는 없습니다. 새 기기에서 검증이 끝날 때까지 기존 기기의 작동하는 설정을 보존한 뒤 내보낸 파일을 정리하세요. 다운로드와 아키텍처 선택은 다운로드 페이지에서 진행하고, 정리 절차는 서버 키워드 필터링 실전과 함께 확인하세요.

사용자 지정 아웃바운드 및 설정 범위

아웃바운드는 연결이 코어에서 나가는 방식을 정의합니다. 직접 연결, 프록시, 차단은 대표적인 아웃바운드 유형이며 라우팅은 태그로 이를 참조합니다. 사용자 지정 아웃바운드는 출구를 고정하거나 특수한 네트워크 구성이 필요한 경우에 적합하며 처음 설정할 때부터 사용할 기능은 아닙니다. 먼저 v2rayN이나 v2rayNG의 일반 서버 항목으로 연결을 확인한 뒤 사용자 지정 구조를 구성하세요. 그러면 GUI가 생성한 설정과 직접 작성한 설정이 충돌할 가능성을 줄일 수 있습니다.

설정 조각을 넣을 계층 명확히 하기

클라이언트에서는 서버 편집, 사용자 지정 설정, 라우팅 편집, 추가 설정 입력란을 제공할 수 있습니다. 각 입력란에서 받는 형식은 다릅니다. 전체 JSON이 필요할 수도 있고 객체나 배열 하나만 필요한 경우도 있습니다. 붙여 넣기 전에 입력 안내와 저장 후 생성된 결과를 확인하세요. 전체 설정에는 유입, 아웃바운드, 라우팅 등이 포함됩니다. outbounds만 있는 조각을 완전한 설정으로 실행하면 앱이 연결할 유입 경로가 없어 작동하지 않을 수 있습니다.

{
  "outbounds": [
    {
      "tag": "local-egress",
      "protocol": "socks",
      "settings": {
        "servers": [
          {
            "address": "127.0.0.1",
            "port": 10810
          }
        ]
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {}
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "domain": ["domain:example.com"],
        "outboundTag": "local-egress"
      }
    ]
  }
}

이 예시는 지정 도메인에 대한 연결을 이미 실행 중인 로컬 SOCKS 서비스로 보내며 나머지 동작은 전체 설정에 따라 달라집니다. 유입 경로나 원격 서버는 정의하지 않습니다. 사용하기 전에 로컬에서 예시 포트를 실제로 리슨하는 서비스가 있는지 확인하세요. 기존 설정에 합칠 때는 기본 아웃바운드 순서를 보존하거나 마지막 라우팅 규칙을 명시적으로 추가해야 합니다. 일반 설정에서는 라우팅과 일치하지 않는 연결이 보통 첫 번째 아웃바운드로 전달되므로 순서를 잘못 바꾸면 전체 동작이 달라집니다.

태그, 포트, 루프 확인

tag는 내부에서 참조하는 이름이므로 고유해야 하며 라우팅의 outboundTag와 일치해야 합니다. 철자가 비슷해도 같은 태그가 아닙니다. 이름을 바꿀 때는 모든 참조를 함께 수정하고 연결을 다시 시작하세요. 설정에서 대상 아웃바운드를 찾지 못했다고 표시되면 서버 주소를 바꾸기 전에 생성된 태그를 확인하세요. 이 오류는 설정 구성 단계에서 발생하며 원격 서버 연결까지 도달하지 않은 상태입니다.

로컬 포워딩에서는 아웃바운드가 자신의 유입 포트로 되돌아오지 않도록 해야 합니다. 예를 들어 현재 코어가 특정 포트에서 SOCKS 요청을 받으면서 아웃바운드도 같은 포트로 보내면 루프가 생깁니다. 다른 서비스를 연결할 때는 ‘앱, 유입, 코어, 다음 서비스, 원격’의 흐름을 그려 보고 각 단계의 리슨 주소와 포트를 확인하세요. 포트 충돌은 로컬 리슨 포트 충돌 해결을 참고하세요.

127.0.0.1에서 리슨하면 로컬 기기에서만 접근할 수 있어 로컬 포워딩에 적합합니다. 연결 문제를 해결하려고 리슨 범위를 모든 인터페이스로 넓히지 마세요. 로컬 네트워크의 다른 기기에서도 사용해야 한다면 인증, 접근 제한, 방화벽을 별도로 설정하세요. 사용자 지정 아웃바운드의 로컬 주소는 코어를 실행하는 기기를 뜻하며 서버 쪽 로컬 주소가 아닙니다. 설정을 다른 기기에 복사할 때 특히 혼동하기 쉽습니다.

UDP, TLS 및 코어별 차이

다음 단계에서 SOCKS를 사용한다고 UDP까지 반드시 작동하는 것은 아닙니다. 유입, 코어, 다음 서비스, 최종 서버가 모두 해당 전달 방식을 지원해야 합니다. 어느 한 곳이라도 지원하지 않으면 TCP만 작동할 수 있습니다. 일반 웹페이지가 열린다고 모든 트래픽 경로가 정상이라는 뜻은 아닙니다. 실제로 필요한 프로토콜을 각각 테스트하세요. 웹페이지 하나가 열리는 것으로 전체 전달 경로를 판단하지 마세요.

TLS 서버 이름은 인증서 검증과 핸드셰이크에 사용됩니다. 연결 주소를 IP로 바꿨다고 임의로 비우면 안 됩니다. 설정 오류가 나면 실제 서비스 매개변수를 확인하고 인증서 검증을 장기간 건너뛰지 마세요. 아웃바운드 프로토콜을 바꿀 때는 전송, 인증, TLS 필드도 함께 확인해야 합니다. 프로토콜 이름만 바꾸고 이전 구조의 관련 없는 필드를 남겨두는 것으로는 올바르게 전환되지 않습니다.

Xray와 v2fly는 일부 설정 개념을 공유하지만 지원 필드, 프로토콜 확장, 기본 동작이 완전히 같지는 않습니다. v2rayNG의 사용자 지정 설정을 v2flyNG로 옮길 때는 최소한으로 작동하는 구조부터 확인하고 확장 기능을 하나씩 추가하세요. 구독 업데이트가 클라이언트에서 생성한 아웃바운드를 덮어쓸 수도 있습니다. 직접 작성한 설정을 별도로 백업하고 현재 실제로 사용자 지정 설정이 실행되는지, 목록의 다른 일반 항목이 선택된 것은 아닌지 확인하세요.

설정 확인 및 단계별 복구

고급 설정의 확인 목표는 ‘가끔 페이지가 열린다’가 아니라 요청이 어디로 들어와 어떻게 조회되고 어떤 규칙에 일치하며 어떤 아웃바운드로 나가는지 설명할 수 있는 상태입니다. 최소 설정을 기준으로 만든 다음 구독 필터, 라우팅, TUN, FakeDNS를 하나씩 추가하세요. 각 단계에서 복구할 수 있는 상태를 남겨야 문제가 생겼을 때 범위를 좁힐 수 있습니다. 원인 파악을 클라이언트 재설치로 대신하지 마세요.

고정된 테스트 항목 만들기

기본 구성에는 작동이 확인된 서버 하나, 일반 DNS, 가장 단순한 라우팅 규칙, 명확한 유입 방식이 포함되어야 합니다. 자주 사용하는 전체 도메인 하나, 로컬 네트워크 리소스 하나, 프록시가 필요한 서비스 하나를 고정 테스트 항목으로 선택하세요. 테스트 중에는 기기 네트워크와 서버를 그대로 유지하세요. 무선 네트워크를 바꾸고 DNS 서버를 수정한 뒤 접속 결과만으로 특정 설정이 유효하다고 판단하지 마세요.

변경할 때마다 원래 값, 변경 목적, 예상 결과를 기록하세요. 예를 들어 정확한 도메인 직접 연결 규칙을 추가했다면 막연히 ‘더 안정적일 것’이라고 기대하는 대신 로그의 아웃바운드 태그가 바뀌는지 확인해야 합니다. 저장하고 연결을 다시 시작한 뒤 테스트 앱의 기존 연결을 종료하고 다시 접속하세요. 구독 업데이트는 항목이 생성되는지, TUN은 인터페이스와 라우팅이 작동하는지, FakeDNS는 가상 주소가 복원되는지 각각 확인합니다.

관찰된 증상우선 확인할 항목비교 테스트
구독 업데이트 후 목록이 비어 있음필터 조건, 주소, 응답 형식현재 그룹의 필터를 비우고 수동 업데이트
이름 조회는 되지만 연결할 수 없음아웃바운드, TLS, 대상 포트기본 설정으로 같은 대상에 접속
TUN 활성화 후 전체적으로 이상 발생권한, 시스템 라우팅, 루프TUN을 끄고 일반 프록시로 테스트
FakeDNS를 끈 뒤에도 문제가 지속됨앱 캐시 및 남아 있는 가상 주소연결과 테스트 앱을 다시 시작한 뒤 비교

로그로 실패 단계 구분하기

설정 파싱 오류는 보통 시작 단계에서 발생하며 필드, 문법, 태그 문제로 나타납니다. 리슨 실패는 포트 충돌이나 권한과 관련된 경우가 많습니다. 연결이 시작된 뒤 시간 초과가 발생하면 네트워크와 원격 서버를 확인해야 합니다. 가장 먼저 발생한 오류를 찾고 반복되는 후속 연결 실패만 복사하지 마세요. 앞 단계가 성공하지 못했다면 뒤 단계 오류는 그 결과일 수 있습니다. 뒤 단계만 수정해서는 근본 원인을 해결하기 어렵습니다.

로그 상세 수준을 일시적으로 높이면 대상과 아웃바운드를 확인하는 데 도움이 되지만 높은 상세 수준을 계속 유지하지는 마세요. 로그에는 도메인, 주소, 사용 내역이 포함될 수 있으므로 공유 전에 민감한 정보를 삭제해야 합니다. 스크린샷에서도 구독 URL, 연결 자격 정보, 전체 공유 링크를 확인하세요. 점검이 끝나면 평소 로그 수준으로 되돌리고 임시 파일을 정리해 민감한 설정이 다운로드 폴더나 공유 폴더에 남지 않게 하세요.

하나의 서비스가 여러 연결을 만들 수도 있습니다. 기본 문서는 열리지만 로그인에 실패한다면 관련 도메인이 다른 규칙을 사용하는 것이 원인일 수 있습니다. 이미지가 표시되지 않는 경우에는 리소스 도메인, 조회 결과, 주소 계열이 다를 수 있습니다. 전체 트래픽을 같은 경로로 보내기보다 실패한 요청을 기준으로 규칙을 보완하고 확인하세요. 필요하다면 잠시 간소화된 라우팅으로 비교한 뒤 테스트가 끝나면 기존 정책을 복원합니다.

변수를 역순으로 되돌리기

여러 설정을 연달아 바꾼 뒤 문제가 생겼다면 가장 최근에 변경한 항목부터 되돌리세요. 새로 추가한 FakeDNS를 끄고 일반 DNS를 복구한 다음 새 라우팅 규칙을 취소하고, 마지막으로 TUN 또는 VPN 트래픽 처리를 종료해 원래 유입 방식으로 돌아갑니다. 되돌릴 때마다 같은 테스트 항목으로 확인하세요. 그룹 비우기, 서버 삭제, 시스템 네트워크 초기화를 동시에 하면 문제가 해결되어도 원인을 알 수 없습니다.

클라이언트를 종료한 뒤에도 네트워크에 접속할 수 없다면 시스템 프록시가 남아 있는지, 가상 라우팅이 복구되었는지, 다른 네트워크 도구가 실행 중인지 확인하세요. 정체를 알 수 없는 네트워크 인터페이스를 바로 삭제하거나 시스템 라우팅을 한꺼번에 변경하지 마세요. 먼저 현재 상태를 저장하고 각 항목의 소유 프로그램을 확인합니다. 브라우저만 이상하면 브라우저 전용 프록시와 암호화 DNS를 확인하고, 앱 하나만 이상하면 앱별 트래픽 처리와 해당 앱의 네트워크 옵션을 확인하세요.

설정 흐름을 처음부터 다시 정리하려면 빠른 시작 가이드로 돌아가 가져오기, 모드, 연결, 확인 순서대로 진행하세요. 특정 증상을 찾으려면 도움말 센터를 이용하세요. 설치 파일은 다운로드 페이지에서 선택할 수 있습니다. 이 가이드의 설정 조각은 해당 계층을 설명하기 위한 것으로 완전한 설정을 대체하지 않습니다. 실제 환경에서 사용하기 전에 클라이언트, 코어, 현재 생성된 설정 구조를 확인하세요.