V2RAY / CONFIGURATION REFERENCE

V2Ray 고급 설정 가이드

구독, 규칙, 이름 조회, 트래픽 처리 계층별로 설정을 살펴봅니다. 먼저 설정이 적용되는 위치를 확인하고 매개변수를 수정한 다음 로그로 실제 경로를 검증하세요.

구독을 처음 가져오고 서버를 선택해 연결을 시작하려면 빠른 시작을 참고하세요. 이 페이지는 연결이 정상적으로 작동한 뒤 설정을 찾아볼 수 있도록 구성했습니다. 데스크톱에서는 v2rayN을 권장하며, Android에서는 커널 요구 사항에 따라 v2rayNG 또는 v2flyNG를 선택하세요. 설치 파일은 클라이언트 다운로드 페이지에서 확인할 수 있습니다. 클라이언트 관리 설정을 코어 JSON 설정으로 간주하지 마세요.

구독 그룹 및 서버 필터링

구독 주소와 연결 설정을 분리해 관리하기

v2rayN에서 ‘구독 그룹 설정’을 열고 먼저 별도의 그룹을 만든 다음 구독 주소를 입력하세요. 그룹에는 업데이트 출처, 메모, 필터 조건이 저장되고 서버 항목에는 가져온 연결 프로토콜 매개변수가 저장됩니다. 그룹 메모를 바꿔도 원격 연결 정보는 변경되지 않으며, 구독을 업데이트해도 현재 서버가 자동으로 바뀌지는 않습니다. 업데이트가 끝나면 메인 창에서 현재 선택된 항목을 확인하세요.

그룹 이름에는 ‘일상 사용’이나 ‘호환성 테스트’처럼 용도와 출처를 드러내는 표현을 사용하세요. 구독 주소를 메모, 스크린샷 또는 공유 문서에 그대로 적지 마세요. 주소의 경로와 쿼리 매개변수는 접근 권한을 부여할 수 있습니다. 문제를 점검할 때는 주소 유형, 응답 상태, 오류 문구만 기록하고 구체적인 내용은 숨기세요. 주소를 복사할 때는 기존 인코딩을 유지하고 중복처럼 보이는 매개변수도 임의로 삭제하지 마세요.

처음 업데이트할 때는 필터 조건을 끄고 서버 목록을 가져올 수 있는지 확인한 뒤 제한 조건을 하나씩 추가하세요. ‘주소 응답이 비어 있음’과 ‘응답은 있지만 필터에서 제외됨’을 구분해야 합니다. 전자는 구독 유효성, 네트워크 연결, 응답 형식을 확인해야 하고 후자는 필터 표현식을 확인해야 합니다. 반복 새로고침으로 잘못된 필터 조건을 고칠 수는 없으며, 오히려 실제 응답 정보를 놓칠 수 있습니다.

필드와 일치 방식에 따라 범위 좁히기

서버 필터를 사용하기 전에 설정 설명을 확인하세요. 서버 메모, 프로토콜 유형 또는 다른 필드 중 무엇을 대상으로 하는지, 일반 텍스트·부분 일치·정규식 중 어떤 방식인지 확인해야 합니다. 화면이 다르면 규칙도 같다고 가정할 수 없습니다. 해당 필드에서 정규식을 지원한다고 명시된 경우 아래 표현식으로 메모에 있는 테스트 또는 예비 표시를 찾을 수 있습니다. 이 표현식은 일치 조건일 뿐이며, 해당 항목을 남길지는 필터 설정의 동작에 따라 달라집니다.

(테스트|예비)

처음부터 복잡한 제외 조건을 조합하지 마세요. 먼저 메모가 확인된 항목 하나로 테스트하고, 일치하지 않아야 하는 다른 항목을 확인한 뒤, 메모가 비어 있는 경우도 검사하세요. 정규식에서 괄호, 세로줄, 마침표는 특수한 의미가 있습니다. 마침표 문자 자체를 찾으려면 역슬래시와 마침표를 함께 써야 합니다. 대소문자 구분 여부는 해당 필드의 구현을 기준으로 판단하세요. 화면에 표시된 문자 모양만으로 추측해서는 안 됩니다.

구독 출처마다 이름 지정 방식이 다르면 모든 이름을 하나의 표현식에 넣기보다 그룹별로 필터를 설정하세요. 원격에서 메모 형식이 바뀌면 기존 조건이 갑자기 모든 항목을 제외할 수 있습니다. 업데이트 전에 남아 있어야 할 이름의 특징을 기록하고, 업데이트 후에도 해당 특징이 있는지 확인하세요. 목록 개수 변화만으로 서비스 이상 여부를 판단하지 마세요. 구독 출처에서 제공하는 내용 자체가 바뀌었을 수도 있습니다.

업데이트 덮어쓰기와 연결 매개변수 차이 처리

구독 항목은 일반적으로 원격 데이터로 다시 생성됩니다. 전송 매개변수를 장기간 수정해야 한다면 클라이언트에 별도 저장 또는 수동 항목으로 복사하는 기능이 있는지 먼저 확인하세요. 복사한 항목은 별도의 그룹에 넣고 구독 업데이트가 더 이상 자동으로 반영되지 않는다는 점을 분명히 해 두세요. 구독 항목을 직접 수정한 뒤 다음 새로고침에도 변경 사항이 유지될 것이라고 단정하지 마세요. 먼저 업데이트를 한 번 제어된 방식으로 수행해 어떤 필드가 덮어써지는지 확인하세요.

‘가져오기는 성공했지만 연결되지 않음’ 문제가 발생하면 프로토콜, 서버 주소, 포트, 전송 방식, TLS 관련 필드를 확인하세요. 가져오기에 성공했다는 것은 클라이언트가 형식을 인식했다는 뜻일 뿐, 현재 코어가 모든 기능을 지원한다는 뜻은 아닙니다. v2rayNG와 v2flyNG는 서로 다른 코어 계열을 사용하므로 겉모습이 비슷하다는 이유로 설정을 서로 바꿔 사용할 수 없습니다. 먼저 필요한 프로토콜을 확인한 뒤 사용할 클라이언트를 선택하세요.

구독 업데이트에 실패하면 현재 사용할 수 있는 설정을 먼저 저장하고 모든 그룹을 바로 비우지 마세요. 주소의 완전성, 시스템 시간, 인증서 오류, 업데이트 요청의 프록시 경유 여부를 순서대로 확인하세요. 자세한 항목은 v2rayN 구독 업데이트 실패 문제 해결을 참고하세요. 출처 문제를 바로잡은 다음 필터 조건을 다시 적용해 주소와 필터 로직을 동시에 바꾸지 않도록 하세요.

마지막으로 최소한의 검증을 수행하세요. 그룹 하나를 업데이트하고 용도가 확인된 항목 하나를 선택해 코어를 시작한 뒤 로그에 설정 파싱 오류가 없는지 확인합니다. 검증이 끝난 다음 자동 업데이트를 활성화하세요. 이렇게 하면 구독 형식, 필터 조건, 연결 매개변수를 서로 다른 문제로 분리할 수 있어 한 번의 일괄 작업으로 사용 가능한 기준 설정을 잃지 않습니다.

라우팅 규칙 활용

규칙의 일치 순서에 따라 구성하기

먼저 요청이 클라이언트에 들어왔는지 확인한 다음 라우팅을 분석하세요. 시스템 프록시, 앱 내 프록시 또는 TUN 인바운드는 요청을 받아들이고, 라우팅은 코어가 이미 받은 연결만 처리합니다. 시스템 프록시를 사용하지 않는 앱은 도메인 규칙을 추가해도 자동으로 트래픽이 처리되지 않습니다. 규칙을 테스트하기 전에 프록시를 명확히 설정한 앱을 샘플로 사용해 트래픽 처리 범위에 따른 변수를 제외하세요.

v2rayN에서 ‘라우팅 설정’을 열고 현재 활성화된 프리셋과 규칙 순서를 확인하세요. 일반적으로 규칙은 위에서 아래로 평가되며 먼저 일치한 규칙이 아웃바운드를 결정합니다. 범위가 좁은 예외를 앞에 두고 범위가 넓은 분류는 뒤에 배치하세요. 예를 들어 특정 도메인만 프록시로 보내려면 해당 도메인을 포함하는 직접 연결 규칙을 앞에 두면 안 됩니다. 규칙이 존재해도 실행 기회가 없을 수 있습니다.

하나의 규칙 안에 있는 서로 다른 필드는 보통 모두 충족해야 하지만, 하나의 도메인 목록에서는 항목 중 하나만 일치해도 됩니다. ‘도메인 일치 또는 포트 일치’를 도메인과 포트를 모두 포함하는 단일 규칙으로 잘못 작성하지 마세요. 서로 독립적인 두 조건을 표현해야 한다면 규칙을 나누고 각각의 일치 결과를 확인하세요. 수정 후 저장하고 다시 불러오세요. 기존 연결은 이전 경로를 계속 사용할 수 있습니다.

도메인 일치와 주소 일치 구분하기

아래는 Xray 및 일반적인 V2Ray 라우팅 설정에서 사용하는 필드 예시입니다. 기존 routing 객체에 병합하기 전에 아웃바운드 태그와 규칙 리소스가 실제로 존재하는지 확인하세요. 예시는 광고 분류, 로컬 도메인, 사설 주소 순으로 처리합니다. 여기서 block과 direct는 태그일 뿐이며 실제 설정에 해당 아웃바운드가 있어야 합니다.

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "domain": ["domain:localhost"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      }
    ]
  }
}

domain:은 도메인과 하위 도메인 일치에 적합하고, full:은 전체 도메인 일치에, regexp:는 정규식 일치에 사용됩니다. 의미가 분명한 방식을 우선 사용하고 복잡한 패턴이 꼭 필요할 때만 정규식을 사용하세요. 문자열 포함을 도메인 경계와 혼동하지 마세요. 이름만 비슷하고 관계없는 대상까지 일치해 알아채기 어려운 잘못된 분기가 발생할 수 있습니다.

geosite:와 geoip:를 사용하려면 실행 환경에 해당 데이터 파일이 있어야 하며 분류 이름도 존재해야 합니다. 로그에 분류를 불러올 수 없다고 표시되면 규칙을 모두 삭제해 문제를 덮지 말고 리소스와 이름을 확인하세요. 클라이언트가 다른 리소스 방식을 사용해 설정을 생성할 수도 있으므로 실제 코어 형식에 맞게 처리해야 합니다. 서로 다른 형식의 규칙 세트 주소를 혼용하지 마세요.

도메인 정책일치 동작중점 확인 사항
AsIs대상 형식을 그대로 유지하며 라우팅을 위해 도메인을 미리 조회하지 않음도메인 규칙만으로 충분히 처리되는지
IPIfNonMatch도메인 규칙이 일치하지 않으면 조회한 뒤 주소 규칙으로 일치 여부 확인조회 결과와 주소 규칙 순서
IPOnDemand규칙을 평가하다 주소 규칙에 도달하면 필요한 경우 조회앞쪽의 주소 규칙이 예상 경로를 바꾸는지

기본 경로와 스니핑 범위 확인

어떤 규칙에도 일치하지 않는 연결에도 기본 경로가 필요합니다. 네이티브 설정은 일반적으로 기본 아웃바운드를 사용하고, 클라이언트가 대체 규칙을 추가로 생성할 수도 있습니다. 규칙 편집기의 마지막이 비어 있는지만 보지 말고 실제 실행 설정을 확인하세요. 특히 사용자 지정 아웃바운드를 추가한 뒤에는 아웃바운드 순서가 바뀌어 일치하지 않는 요청의 경로가 달라질 수 있습니다. 기본 경로를 명시적으로 표현하면 설정을 더 쉽게 파악할 수 있습니다.

‘트래픽 스니핑 활성화 sniffing’은 지원되는 트래픽에서 도메인 정보를 보완할 수 있지만 모든 프로토콜의 도메인을 복원해 주지는 않습니다. 대상 주소를 변경할지는 스니핑 옵션에도 영향을 받습니다. 앱이 주소에 직접 접속하거나 인식할 수 없는 암호화 핸드셰이크를 사용하거나 기존 연결을 재사용하면 로그에 대상이 여전히 주소로 표시될 수 있습니다. 도메인 규칙 하나를 일치시키기 위해 스니핑 범위를 무조건 넓히지 마세요.

검증할 때는 한 번에 대상 하나만 접속해 대상 이름, 일치한 태그, 오류 발생 단계를 확인하세요. 예상한 규칙이 일치하지 않으면 먼저 테스트 규칙을 더 위로 옮겨 규칙 자체가 작동하는지 확인한 뒤 원래 순서로 되돌리세요. 규칙은 일치했지만 연결에 실패했다면 일치 조건을 계속 수정하지 말고 아웃바운드 연결과 DNS를 확인하세요. 규칙이 올바르게 일치하는지와 네트워크에 연결할 수 있는지는 별개의 문제입니다.

‘전역 프록시’도 문맥에 따라 구분해야 합니다. 시스템 프록시는 앱이 연결되는 방식이고, 프리셋 라우팅에서 말하는 전역 모드는 코어 내부의 출구 선택에 영향을 줍니다. 전역 모드로 전환해도 모든 프로그램이 프록시로 들어오는 것은 아닙니다. 용어를 다시 확인하려면 용어집을, 트래픽이 처리되지 않는 앱을 다루려면 TUN 장을 참고하세요.

DNS 설정 최적화

실제 DNS 조회 경로부터 정리하기

DNS는 앱, 운영체제, 클라이언트, 원격 출구의 각 위치에서 확인하세요. 브라우저가 자체 보안 DNS를 사용할 수 있고, 시스템이 로컬 네트워크의 리졸버를 사용할 수도 있으며, 코어가 별도의 캐시를 유지하거나 프록시 서버가 최종 대상 도메인을 조회할 수도 있습니다. ‘DNS 설정’을 변경해도 해당 설정이 처리하는 쿼리만 영향을 받습니다. 모든 앱이 새 서버를 즉시 사용한다고 가정하지 마세요.

먼저 앱이 프록시에 도메인과 주소 중 무엇을 전달하는지 확인하세요. 원격 조회를 지원하는 프록시 방식에서는 앱이 도메인을 프록시에 전달할 수 있습니다. 앱이 먼저 직접 조회한 뒤 주소를 클라이언트에 전달하면 도메인 기반 분기에 필요한 원래 정보가 사라질 수 있습니다. 이 경우 앱의 프록시 옵션이나 트래픽 처리 방식을 확인해야 하며 DNS 도메인 규칙을 하나 추가하는 것만으로 전체 맥락을 복구할 수는 없습니다.

중요한 조회 경로 두 가지를 구분하세요. 프록시 서버 자체 주소의 조회와 서비스 대상의 조회입니다. 첫 번째는 프록시 연결을 수립하기 전에 이루어지므로 독립적으로 작동하는 경로가 있어야 합니다. 유일한 부트스트랩 리졸버를 ‘프록시 연결 이후에만 접근 가능’하게 설정하면 시작 과정에서 순환이 발생합니다. 도메인 형식의 암호화 DNS 서비스를 설정할 때는 서비스 이름의 주소를 처음에 어떻게 조회하는지도 고려하세요.

용도에 따라 리졸버 지정하기

아래는 해당 필드를 지원하는 V2Fly 또는 Xray 설정에서 사용할 수 있는 내장 DNS 설정 조각입니다. 일반 쿼리는 공용 리졸버로 보내고 로컬 도메인은 시스템 리졸버에 전달합니다. 도메인 조건과 쿼리 정책을 설명하기 위한 예시이며, 공용 리졸버가 모든 네트워크에서 접속 가능하다는 뜻은 아닙니다. 실제로 사용하기 전에 네트워크 요구 사항에 맞게 바꾸고 클라이언트가 이 설정을 덮어쓰는지 확인하세요.

{
  "dns": {
    "queryStrategy": "UseIP",
    "servers": [
      "1.1.1.1",
      {
        "address": "localhost",
        "domains": ["domain:localhost"]
      }
    ]
  }
}

내부 네트워크 서비스는 로컬 DNS의 사설 레코드에 의존하는 경우가 많습니다. 모든 쿼리를 공용 리졸버로 보내면 해당 레코드가 없거나 현재 네트워크에 적합하지 않은 주소를 반환할 수 있습니다. 기업 내부 도메인, 라우터 관리 이름, 자체 호스팅 서비스에는 명확한 로컬 조회 경로를 유지하세요. 한 단어로 된 이름을 모두 공용 도메인으로 취급하지 말고, 내부 이름 하나를 해결하려고 전체 DNS 분기를 끄지도 마세요.

리졸버의 전송 방식과 쿼리가 실제로 이동하는 경로는 서로 다른 문제입니다. 암호화 DNS를 사용하면 해당 전송 경로를 보호할 수 있지만 프록시를 통과하는지는 코어 구현, 아웃바운드 규칙, 클라이언트 설정 생성 방식에 따라 달라집니다. 일부 로컬 조회 모드는 일반 라우팅 처리를 우회할 수 있습니다. 동작을 확인할 때는 실행 설정과 연결 로그를 살펴보세요. 주소 문자열에 암호화 프로토콜 이름이 있는지만으로 경로를 판단하지 마세요.

‘기대 주소’와 같은 조건은 반환 결과가 규칙의 기대에 맞는지 판단하는 용도이지 속도를 높이는 범용 설정이 아닙니다. 활성화한 뒤 정상 응답이 거부되면 대체 조회가 발생해 오히려 문제를 찾기 어려워질 수 있습니다. 기본 조회가 성공하는지 먼저 확인하고 결과 조건을 추가하세요. 조건을 하나 더할 때마다 결과를 비교할 수 있는 도메인 하나와 예상 조회 범위를 기록해 두세요.

주소 계열과 캐시를 각각 확인하기

IPv4와 IPv6를 함께 지원하는 네트워크에서는 조회와 연결을 각각 확인해야 합니다. IPv6 주소를 얻었다고 현재 출구에서 IPv6 경로를 사용할 수 있다는 뜻은 아닙니다. 주소를 선택한 뒤 연결에 실패하는 로그가 나타나면 시스템 라우팅과 출구 지원을 확인한 다음 조회 정책을 조정하세요. IPv6 설정을 모두 삭제하면 증상이 일시적으로 바뀔 수는 있지만 DNS 서비스가 원래 문제였다는 증거가 되지는 않습니다.

리졸버를 변경한 뒤에도 브라우저, 시스템, 코어에 각자 캐시가 남아 있을 수 있습니다. 테스트할 때 기존 연결을 끊고 테스트 앱을 다시 시작한 뒤 필요하면 관련 캐시를 갱신하세요. 서버와 조회 정책을 동시에 바꾸지 마세요. 결과 변화의 원인을 알 수 없습니다. 시스템 조회 도구는 시스템 DNS 경로를 검증하지만 코어 내장 DNS를 통과하지 않을 수 있으므로 시스템 도구와 브라우저 결과가 다른 것이 설정 미적용을 뜻하지는 않습니다.

문제를 찾을 때는 비교용으로 간단한 조회 경로 하나를 유지하세요. 복잡한 대체 조회와 결과 필터를 먼저 끄고 기본 쿼리가 완료되는지 확인한 뒤 도메인 분류, 주소 계열 선호, 암호화 전송을 차례로 복구하세요. 로컬 이름은 정상인데 외부 이름이 실패하면 외부 리졸버에 연결할 수 있는지 확인하세요. 쿼리는 완료됐지만 대상에 연결할 수 없다면 조회 서버를 계속 추가하지 말고 라우팅 장으로 돌아가 아웃바운드를 확인하세요.

마지막으로 DNS 로그의 개인정보 영향을 확인하세요. 디버그 로그에는 방문한 전체 도메인이 포함될 수 있으며 장기간 보관하면 상세한 활동 기록이 됩니다. 검증이 끝나면 평소 로그 수준으로 되돌리고 오류 정보를 공유할 때 내부 이름과 구독 관련 정보를 숨기세요. DNS 최적화의 목표는 경로를 명확하게 하고 결과를 설명할 수 있게 하는 것이지 업스트림을 최대한 많이 설정하는 것이 아닙니다.

TUN 모드

시스템 프록시와 가상 네트워크 인터페이스의 트래픽 처리 구분하기

시스템 프록시는 해당 설정을 따르는 앱에만 영향을 줍니다. TUN 모드는 가상 네트워크 인터페이스로 시스템 트래픽을 받아 사용자 공간 네트워크 스택이나 전달 구성 요소에서 처리하므로 더 많은 앱의 트래픽을 처리해야 하는 상황에 적합합니다. 시스템 라우팅, 인터페이스 권한, DNS 처리에 관여하기 때문에 일반 프록시보다 영향 범위가 넓습니다. 활성화하기 전에 시스템 프록시 모드에서 기본 연결이 정상 작동하는지 확인하세요.

v2rayN의 ‘TUN 모드 설정’은 클라이언트 관리 계층의 설정이며 V2Fly 또는 Xray 네이티브 설정의 같은 이름을 가진 객체로 바로 해석해서는 안 됩니다. 인터페이스를 어떤 구성 요소가 만들고 설정을 어떻게 생성하는지 클라이언트 실행 정보를 확인하세요. 코어마다 TUN 인바운드 형식이 다르므로 다른 코어의 필드를 V2Ray JSON에 붙여 넣어도 자동 변환되지 않습니다.

현재 사용할 수 있는 설정을 먼저 저장하고 시스템 라우팅을 처리하는 다른 도구를 종료한 다음 클라이언트 안내에 따라 필요한 권한을 부여하세요. 처음에는 기본 트래픽 처리만 검증하고 FakeDNS, 사용자 지정 네트워크 대역, 복잡한 프로세스 규칙을 동시에 추가하지 마세요. 권한이 부족하면 권한과 시작 방식을 바로잡으세요. 가상 인터페이스가 저절로 나타날 거라 기대하며 스위치를 반복해서 켜고 끄지 말고 불필요한 높은 권한을 계속 사용하지 마세요.

라우팅, 제외 항목, 플랫폼 차이 확인하기

기본 경로 처리 방식을 확인하고 프록시 서버 자체 연결이 올바른 출구를 사용하도록 하세요. 서버 연결이 같은 TUN 인터페이스로 다시 들어가면 루프가 생겨 연결이 반복되거나 시간 초과가 발생할 수 있습니다. 클라이언트는 인터페이스 바인딩, 라우팅 제외 또는 다른 방식으로 루프를 방지할 수 있습니다. 사용자 지정 라우팅을 수정하기 전에 기존 동작을 파악하고 불필요해 보이는 제외 항목을 삭제하지 마세요.

로컬 네트워크 기기에 접속할 때는 사설 주소가 직접 연결되는지, 시스템에 로컬 네트워크 대역으로 향하는 경로가 남아 있는지 확인하세요. 코어의 직접 연결 규칙은 받은 트래픽의 출구를 정하고 시스템 라우팅은 트래픽이 처음 어디로 전달되는지 결정하므로 둘 다 올바르게 설정해야 합니다. 프린터, 네트워크 저장소, 원격 관리 연결을 각각 테스트하세요. 브라우저로 웹페이지 하나를 열어 보는 것만으로 로컬 네트워크가 정상이라고 판단할 수 없습니다.

플랫폼확인 위치일반적인 제한 사항
Windows네트워크 어댑터, 라우팅 테이블, 클라이언트 권한 안내보안 소프트웨어 또는 다른 가상 네트워크 인터페이스가 트래픽 처리에 영향을 줌
macOS시스템 네트워크 설정, 권한 안내, 실행 로그인터페이스 생성과 라우팅 변경에 필요한 권한
LinuxTUN 장치, 라우팅 규칙, 서비스 실행 권한데스크톱 세션과 백그라운드 서비스의 권한 환경이 다름
AndroidVPN 권한, 앱별 프록시, 백그라운드 제한클라이언트가 일반적으로 시스템 VPN 인터페이스로 트래픽 처리

Android에서 v2rayNG 또는 v2flyNG를 사용할 때 시스템 VPN 권한은 데스크톱 클라이언트의 가상 네트워크 인터페이스 관리와 완전히 같지 않습니다. 앱별 프록시 목록을 확인해 테스트 앱이 트래픽 처리 범위에 포함되어 있는지 확인하세요. 선택한 앱만 프록시하는 모드에서는 새로 설치한 앱이 자동으로 추가되지 않을 수 있습니다. 제외 모드라면 실제로 사용하는 브라우저나 백그라운드 서비스가 잘못 제외되지 않았는지도 확인하세요.

기업용 네트워크 도구, 컨테이너 네트워크, 가상 머신 소프트웨어가 자체 라우팅을 관리할 수 있습니다. 트래픽 처리 이후 특정 주소에 접근할 수 없다면 활성화 전후의 대상 네트워크 대역과 인터페이스 선택을 비교한 뒤 제외 항목을 추가할지 결정하세요. 모든 사설 네트워크 대역을 한꺼번에 프록시로 보내거나 컨테이너 주소 하나 때문에 전체 트래픽 처리를 끄지 마세요. 규칙을 명확히 작성할수록 네트워크 영향 범위를 확인하고 복구하기 쉽습니다.

UDP, MTU, 종료 후 복구 처리하기

웹페이지가 열렸다는 사실은 일부 TCP 경로가 작동한다는 뜻일 뿐 UDP도 정상이라는 뜻은 아닙니다. 실시간 통신, 일부 이름 조회, UDP를 사용하는 앱은 아웃바운드 기능, 원격 지원 여부, 로컬 방화벽에도 영향을 받습니다. 특정 앱에서만 문제가 생기면 사용 중인 전송 프로토콜을 먼저 확인하고 해당 로그를 살펴보세요. 모든 문제를 가상 네트워크 인터페이스 생성 실패 탓으로 돌리지 마세요.

작은 요청은 정상인데 응답이 큰 요청에서 멈춘다면 MTU를 점검 항목으로 고려할 수 있지만 다른 사람이 사용한 고정값을 그대로 복사하지 마세요. DNS, 핸드셰이크, 아웃바운드 오류를 먼저 제외한 뒤 클라이언트가 허용하는 범위 안에서 조금씩 조정하고 다른 설정은 그대로 유지하세요. 변경할 때마다 연결을 새로 만들고 현상이 일관되게 나타나는지 기록하세요. 근거가 없다면 기본값으로 되돌려 새로운 성능 문제를 피하세요.

TUN을 종료할 때는 클라이언트의 정상 종료 절차를 따른 다음 시스템 프록시와 DNS가 복구되었는지 확인하세요. 비정상 종료 후 모든 네트워크 인터페이스를 바로 삭제하지 마세요. 먼저 클라이언트를 다시 열어 정리하고, 필요한 경우 시스템 네트워크 설정에서 복구하세요. macOS 권한 및 네트워크 권한 문제는 macOS 설치 및 권한 처리 방법을 참고하세요. 모바일 백그라운드 문제는 배터리 설정을 별도로 확인해야 합니다.

FakeDNS

가상 주소와 도메인 매핑 이해하기

FakeDNS는 대상의 실제 주소를 반환하는 대신 전용 주소 풀에서 가상 주소를 할당하고 도메인과 주소의 대응 관계를 저장합니다. 앱이 해당 주소에 연결하면 트래픽 처리 구성 요소가 매핑을 통해 원래 도메인을 복원한 뒤 라우팅과 아웃바운드 처리를 수행합니다. 주로 주소 형태로 전달되는 트래픽에서 도메인을 식별하는 데 사용되며, 전체 DNS 경로를 단독으로 대체하는 공용 조회 서비스는 아닙니다.

설정이 제대로 작동하려면 전체 경로가 이어져야 합니다. 쿼리가 FakeDNS로 들어오고, 반환된 가상 주소가 동일한 트래픽 처리 경로로 전달되며, 매핑이 유지되고, 인바운드가 올바르게 도메인을 복원해야 합니다. 어느 한 단계라도 빠지면 ‘조회 결과는 있지만 사이트가 전혀 열리지 않음’ 문제가 생길 수 있습니다. 따라서 먼저 일반 DNS와 TUN을 검증한 뒤 FakeDNS를 추가하세요. 아직 안정적이지 않은 트래픽 처리 경로에 매핑을 더하지 마세요.

라우팅에서 가상 주소를 실제 네트워크로 직접 보내지 마세요. 가상 주소는 대상 서버의 주소가 아니며 일반 네트워크에서 접속할 수도 없습니다. 로그에서 주소 풀의 주소에 계속 연결을 시도한다면 해당 주소에 연결할 프록시 서버를 찾지 말고 매핑 복원과 트래픽 처리 범위를 확인하세요. 원래 도메인을 복원해야 이후 도메인 규칙과 원격 조회에 올바른 입력값이 전달됩니다.

코어 지원 여부와 인바운드 설정 맞추기

아래는 FakeDNS를 지원하는 Xray 설정의 요소로 주소 풀, DNS 서버, 대상 인바운드의 스니핑 설정에 각각 해당합니다. 세 요소는 실제 실행 설정의 올바른 위치에 병합해야 하며 임의로 추가할 수 있는 최상위 객체 세 개가 아닙니다. 클라이언트가 이미 해당 부분을 생성했다면 전용 설정을 사용해 중복 선언이나 다른 필수 옵션 덮어쓰기를 피하세요.

{
  "fakedns": [
    {
      "ipPool": "198.18.0.0/15",
      "poolSize": 65535
    }
  ],
  "dns": {
    "servers": ["fakedns"]
  }
}
{
  "sniffing": {
    "enabled": true,
    "destOverride": ["fakedns"]
  }
}

두 번째 부분은 인바운드 내부의 sniffing 객체이며 기존 설정을 대체하는 완전한 인바운드 객체가 아닙니다. 현재 인바운드에 HTTP 또는 TLS 스니핑도 필요하다면 기존 내용을 기계적으로 삭제하지 말고 코어 문서에 따라 목록을 병합하세요. 코어마다 가상 주소와 스니핑 구현이 다를 수 있습니다. v2flyNG에서 설정하기 전에 사용 중인 코어와 클라이언트가 해당 기능을 실제로 지원하는지 확인하세요.

예시 주소 풀은 가상 용도 대역이지만 로컬 기기나 현재 네트워크에서 이미 사용 중인지 확인해야 합니다. 테스트 환경, 다른 프록시 구성 요소, 네트워크 진단 도구가 같은 대역을 사용할 수 있습니다. 주소가 겹치면 라우팅 의미가 불분명해집니다. 비어 있는 것처럼 보이는 공인 대역을 임의로 선택하지 마세요. 클라이언트에서 주소 풀을 바꿀 수 있다면 해당 구현의 요구 사항을 따르고 라우팅 제외 항목도 함께 확인하세요.

주소 풀 용량은 보존할 수 있는 매핑 개수에 영향을 줄 뿐 접속 가능한 서버 수나 속도 설정을 뜻하지 않습니다. 용량이 너무 작으면 도메인이 많을 때 오래된 매핑이 더 빨리 제거될 수 있고, 무작정 늘리면 리소스 사용량이 증가할 수 있습니다. 먼저 구현에서 제공하는 적절한 기본값을 사용하세요. 로그와 재현 조건에서 매핑 제거가 원인으로 확인된 경우에만 조정하고 앱 하나가 느리게 열린다는 이유만으로 용량 부족이라고 단정하지 마세요.

캐시와 우회 앱 처리하기

FakeDNS를 활성화하거나 비활성화한 뒤에도 앱과 시스템에 이전 캐시가 남을 수 있습니다. 앱이 이전 가상 주소를 계속 사용하는데 해당 매핑이 재시작으로 사라지면 간헐적인 실패가 발생할 수 있습니다. 전환을 테스트할 때는 관련 앱 연결을 끊고 해당 조회 캐시를 지운 다음 새 요청을 보내세요. 브라우저가 이전 주소와 연결을 계속 재사용하도록 둔 채 코어만 재시작하지 마세요. 새 상태와 이전 상태가 뒤섞일 수 있습니다.

앱에 내장된 암호화 DNS는 예상한 쿼리 경로를 우회할 수 있으며 주소를 고정해 접속하면 도메인 조회 과정 자체가 없습니다. 이 두 유형의 트래픽에는 FakeDNS 매핑이 자동으로 적용되지 않습니다. 먼저 앱의 실제 동작을 확인한 뒤 앱 DNS, 프록시 방식 또는 트래픽 처리 범위를 조정할지 결정하세요. 다른 앱이 정상이라고 해서 문제 앱도 같은 조회 경로를 사용한다고 단정할 수 없습니다.

로컬 네트워크 이름과 실제 주소에 의존하는 앱에는 일반 DNS 경로를 유지하세요. 일부 서비스는 조회 결과를 트래픽이 처리되지 않는 다른 프로세스에 전달할 수 있으며, 해당 프로세스는 가상 주소를 사용하지 못할 수 있습니다. 이런 제한이 확인되면 가상 주소의 시스템 노출 범위를 넓히기보다 대상 이름에 명확한 조회 예외를 설정하세요. 프로세스 간 주소 전달 동작은 앱 구조에 따라 판단해야 합니다.

롤백할 때는 일반 조회를 먼저 복구하고 가상 매핑을 비활성화한 다음 오래된 캐시를 지우고 연결을 새로 만드세요. 롤백 후에도 가상 주소에 접속한다면 서버 설정을 계속 수정하지 말고 캐시 잔여분부터 처리하세요. FakeDNS의 목적은 라우팅에 필요한 도메인 정보를 보존하는 것입니다. 일반 도메인 인바운드로 요구 사항을 충족할 수 있다면 설정을 복잡하게 만들기 위해 FakeDNS를 활성화할 필요는 없습니다.

다중 구독 관리

그룹으로 명확한 업데이트 경계 만들기

출처마다 별도의 구독 그룹을 만들고 용도에 맞게 메모와 필터 조건을 설정하세요. 출처는 같지만 용도가 다르다면 관리 단계에서 분리할 수도 있지만 중복 업데이트와 중복 항목에 주의해야 합니다. 그룹은 연결을 합치는 기능이 아닙니다. 구독을 더 추가해도 현재 연결 성능이 자동으로 향상되지 않습니다. 실제 동작은 현재 서버, 라우팅 규칙, 설정에서 선택한 아웃바운드에 따라 결정됩니다.

‘출처 정보’, ‘표시 이름’, ‘연결 매개변수’를 구분하세요. 메모가 같은 두 항목이 서로 다른 서버를 가리킬 수 있고, 메모가 달라도 같은 연결의 이름만 바뀐 것일 수 있습니다. 중복 항목을 정리할 때는 프로토콜, 주소, 포트, 주요 전송 매개변수를 확인하고 이름만으로 삭제하지 마세요. 클라이언트에 중복 제거 기능이 있다면 비교 필드를 먼저 파악하고 실행 전에 복구할 수 있는 설정 사본을 보관하세요.

자동 업데이트는 출처의 변경 사항을 반영하기 위한 기능이지 목록을 계속 새로고침하는 기능이 아닙니다. 구독 변경 빈도와 사용 습관에 맞게 적절한 간격을 설정해 여러 출처가 동시에 업데이트될 때 오류 원인을 구분하기 어렵지 않도록 하세요. 문제를 점검하는 동안에는 관련 그룹의 자동 업데이트를 잠시 중지해 테스트 환경을 고정하세요. 문제가 해결된 다음 다시 활성화해 원격 변경이 로컬 매개변수 검증과 겹치지 않도록 하세요.

업데이트 경로와 사용 경로를 따로 검증하기

구독 업데이트는 클라이언트 옵션에 따라 직접 연결하거나 현재 프록시를 사용할 수 있습니다. 현재 프록시가 특정 구독에 의존하는데 해당 구독은 현재 프록시를 통해서만 업데이트할 수 있다면 실행 가능한 복구 경로를 미리 준비하세요. 검증되지 않은 서버를 유일한 업데이트 경로로 설정한 다음 마지막으로 사용할 수 있는 항목까지 삭제하지 마세요. 관리 경로와 연결 경로가 동시에 막힐 수 있습니다.

업데이트 경로를 테스트할 때는 한 번에 그룹 하나만 처리하세요. 업데이트 방식, 오류 발생 단계, 이전 항목을 유지할 수 있는지 기록한 다음 다른 경로와 비교하세요. 인증서 오류가 있으면 인증서 검증을 바로 끄지 말고 시스템 시간과 네트워크 환경부터 확인하세요. 네트워크 인증 페이지, 변조된 응답, 잘못된 리디렉션으로 가져오기에 실패할 수도 있습니다. 클라이언트의 빈 목록 표시는 결과일 뿐 원인이 아닙니다.

업데이트 후 현재 선택된 서버의 출처를 다시 확인하세요. 원격에서 항목이 삭제되거나 교체되면 클라이언트가 이전 선택을 유지하거나 다시 선택하라고 할 수 있습니다. ‘업데이트 성공’이 현재 연결이 최신 매개변수를 사용한다는 뜻이라고 가정하지 마세요. 메인 창에서 선택된 항목을 확인하고 연결을 다시 만든 다음 로그의 대상 주소와 설정 출처를 살펴 실제 사용 항목을 확인하세요.

작업주요 영향작업 후 확인
그룹 하나 업데이트해당 출처에서 생성된 서버 항목필터 결과, 현재 선택, 주요 매개변수
그룹 필터 수정가져온 항목의 표시 또는 유지 범위확인된 대상이 잘못 제외되었는지
현재 서버 전환이후 새 연결에 사용할 프록시 출구앱 연결을 다시 만들어야 하는지
구독 출처 삭제향후 업데이트 기능과 관련 항목현재 항목을 계속 관리하고 복구할 수 있는지

수동 항목과 구독 항목은 별도로 보관하세요. 수동 항목은 확인된 특정 매개변수를 저장하는 데 적합하지만 출처의 수정 사항을 자동으로 받지 않으므로 직접 관리해야 합니다. 변경 이유와 수정한 필드를 기록하고 메모에 인증 정보를 저장하지 마세요. 임시 테스트라면 검증이 끝난 뒤 테스트 사본을 삭제해 몇 달 후에도 어떤 항목이 출처에서 계속 관리되는 설정인지 헷갈리지 않도록 하세요.

백업, 이전, 민감 정보 보호 계획하기

클라이언트 설정을 백업하기 전에 내보내기 범위를 확인하세요. 구독 주소, 서버 인증 정보, 사용자 지정 라우팅, 인터페이스 설정이 포함될 수 있습니다. 백업은 민감한 자료로 취급해 접근이 제한된 위치에 저장하세요. 도움을 요청할 때는 오류 정보와 필요한 필드만 남긴 별도 자료를 만드세요. 전체 내보내기 파일을 공개 토론 공간에 올리거나 권한 매개변수가 포함된 QR 코드를 보여주지 마세요.

다른 기기로 이전할 때는 먼저 해당 플랫폼에 맞는 클라이언트를 설치한 뒤 필요한 최소 범위만 가져오세요. v2rayN의 데스크톱 관리 설정을 Android 클라이언트에서 바로 읽을 수 있다고 가정하지 마세요. 공용 구독 콘텐츠와 클라이언트 전용 설정은 서로 다른 데이터입니다. 먼저 출처 하나를 복원해 연결을 검증한 다음 라우팅, DNS, 트래픽 처리 설정을 옮겨 이전 기기 전용 경로와 권한 설정까지 한꺼번에 가져오지 않도록 하세요.

구독 주소가 유출된 것으로 의심되면 출처에서 제공하는 관리 기능으로 권한을 새로 발급한 다음 로컬 항목을 업데이트하세요. 그룹 메모만 바꿔서는 이전 주소의 접근 권한이 바뀌지 않습니다. 새 주소로 교체한 뒤 모든 기기가 업데이트되었는지 확인하고 이전 자동 작업과 캐시 사본을 비활성화하세요. 클라이언트는 구독 출처의 접근 권한을 취소할 수 없습니다. 실제 주소를 발급한 쪽에서 관리해야 합니다.

안정적인 관리 절차를 유지하세요. 먼저 출처를 검증하고, 다음으로 필터를 검증한 뒤 연결을 확인합니다. 여러 그룹에서 동시에 문제가 발생하면 시스템 시간, 네트워크, 현재 프록시 등 공통 의존성을 우선 점검하세요. 한 그룹에서만 실패하면 주소와 응답 형식을 확인하세요. 관련 문제는 FAQ에서 설치 및 설정, 문제 해결 항목별로 찾아볼 수 있습니다. 출처 문제를 클라이언트 전체의 손상으로 오해하지 마세요.

사용자 지정 아웃바운드

태그로 라우팅과 출구 연결하기

아웃바운드는 코어에서 연결이 빠져나가는 방식을 정의하고 라우팅은 태그를 통해 아웃바운드를 선택합니다. 태그는 설정 내부에서 참조하는 이름일 뿐 특별한 기능이 없습니다. 아웃바운드 이름을 direct로 지정해도 자동으로 직접 연결되지 않습니다. 실제 동작은 프로토콜과 설정으로 결정됩니다. 먼저 아웃바운드 객체를 확인하고 다음으로 라우팅 참조를 확인하세요. 이름의 철자가 일치하는 것은 설정에 필요한 조건이지 충분조건은 아닙니다.

그래픽 클라이언트는 보통 현재 선택한 서버에 맞는 프록시 아웃바운드와 직접 연결 및 차단 아웃바운드를 생성합니다. 사용자 지정 객체를 추가해야 한다면 클라이언트에서 제공하는 기능이 ‘조각 추가’, ‘전체 설정 교체’, 전용 사용자 설정 입력란 중 무엇인지 먼저 확인하세요. 부분 설정을 전체 설정 입력란에 넣으면 인바운드와 같은 필수 부분이 빠지고, 전체 설정을 추가 영역에 넣으면 정의가 중복될 수 있습니다.

아래는 네이티브 V2Ray 또는 Xray 설정에서 흔히 사용하는 직접 연결 및 차단 아웃바운드 조각으로 태그 구조를 이해하는 데 도움이 됩니다. 병합하기 전에 같은 태그가 이미 있는지 확인하세요. 이 예시에는 프록시 서버 인증 정보가 없고 완전한 클라이언트 설정도 포함되어 있지 않습니다. 전송 및 보안 매개변수가 누락되지 않도록 검증된 서버 항목에서 프록시 아웃바운드를 생성하세요.

{
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {}
    }
  ]
}

단일 라우팅을 테스트한 뒤 조합 추가하기

아웃바운드를 추가한 뒤에는 범위가 작고 동작이 명확한 규칙 하나에서 먼저 참조하세요. 제어 가능한 테스트 대상을 선택해 코어가 시작되는지, 태그가 존재하는지, 규칙이 일치하는지 확인한 뒤 범위를 넓히세요. 기본 트래픽 전체를 바로 교체하지 마세요. 설정 오류가 있으면 모든 앱이 동시에 실패해 비교할 정보가 줄어들고 구독 업데이트나 도움말 페이지 연결도 끊길 수 있습니다.

직접 연결 아웃바운드도 DNS 조회와 시스템 네트워크의 영향을 받습니다. 방화벽을 우회하거나 특정 물리 인터페이스를 사용한다는 뜻은 아닙니다. 인터페이스를 바인딩하거나 발신 주소를 지정해야 한다면 현재 코어가 해당 옵션을 지원하는지, 시스템 권한이 있는지 확인하고 지정한 주소가 실제 기기에 할당되어 있는지 검증하세요. 다른 기기의 인터페이스 이름이나 주소를 복사하면 같은 경로를 얻는 대신 연결이 실패할 수 있습니다.

프록시 체인은 프록시 아웃바운드를 여러 개 배치하는 것만으로 만들어지지 않습니다. 명확한 전달 관계를 설정해야 연결이 여러 단계를 통과합니다. 일반 라우팅은 대개 여러 출구 중 하나를 선택할 뿐입니다. 체인을 구성하기 전에 각 구간이 개별적으로 작동하는지 확인하고 각 구간의 도메인 조회, 전송 프로토콜, 인증 요구 사항을 점검하세요. 어느 한 구간이 실패해도 전체 체인에 영향을 주므로 로그를 단계별로 살펴야 하며 마지막 시간 초과만 확인해서는 안 됩니다.

특히 UDP와 멀티플렉싱 동작을 확인하세요. 한 아웃바운드가 웹 연결을 처리한다고 해서 모든 데이터그램 트래픽에 적합한 것은 아닙니다. 특정 프로토콜이 멀티플렉싱을 지원한다고 해서 활성화하는 것이 모든 앱에 유리한 것도 아닙니다. 기본 설정을 먼저 유지하고 연결 설정 비용이나 호환성 문제를 명확히 확인한 경우에만 비교 테스트를 하세요. Mux를 무조건 속도를 높이는 스위치로 여기지 말고 서로 다른 코어의 멀티플렉싱 필드를 혼용하지 마세요.

기본 아웃바운드, 루프, 호환성 처리하기

명시적인 대체 규칙이 없으면 기본 아웃바운드는 객체 순서의 영향을 받을 수 있습니다. 새 객체를 삽입하면 기존 규칙을 바꾸지 않았더라도 일치하지 않는 트래픽의 경로가 달라질 수 있습니다. 수정 전에 기본 동작을 기록하고 수정 후에는 앞쪽 규칙과 일치하지 않는 대상을 별도로 테스트하세요. 기본 동작을 안정적으로 표현하려면 우연한 배치 순서에 의존하지 말고 현재 코어에서 지원하는 대체 방식을 사용하세요.

아웃바운드끼리 서로 참조해 루프를 만들지 않도록 하고 아웃바운드 연결이 다시 로컬 프록시 인바운드로 들어오지 않게 하세요. 전자는 코어 설정의 전달 관계에서 발생하고 후자는 시스템 프록시, TUN, 앱 프록시 설정 때문에 발생할 수 있습니다. 둘 다 연결 반복과 시간 초과로 나타날 수 있습니다. 문제를 점검할 때 실제 네트워크 출구까지 각 단계의 다음 홉을 그려 보세요. 출발점으로 돌아오는 화살표가 있다면 그 이유를 확인해야 합니다.

코어를 전환하기 전에 설정을 저장하고 프로토콜, 전송, 보안 옵션, 리소스 형식을 항목별로 확인하세요. V2Fly와 Xray는 일부 설정 개념을 공유하지만 모든 확장 기능이 호환되는 것은 아닙니다. v2rayNG와 v2flyNG도 이름이 비슷하다는 이유로 같은 실행 환경으로 간주할 수 없습니다. 코어에서 알 수 없는 필드를 보고하면 실제 지원 범위에 맞게 수정하세요. 오류 줄을 무작정 삭제한 뒤 원래 기능을 무시하지 마세요.

사용자 지정 설정을 관리할 때는 태그의 용도를 외부 기록에 적으세요. 엄격한 JSON에 주석을 넣으면 파싱이 실패할 수 있습니다. 저장할 때 괄호, 쉼표, 문자열의 따옴표, 중복 키를 확인하세요. 한 번에 논리 단위 하나만 수정하고 코어가 정상적으로 시작된 뒤 네트워크를 검증하세요. 문법 오류가 없다고 해서 출구에 연결할 수 있다는 뜻은 아닙니다. 다른 클라이언트를 선택해야 한다면 다운로드 페이지에서 플랫폼과 코어 용도를 확인하세요.

사용자 지정 아웃바운드를 되돌릴 때는 먼저 해당 아웃바운드를 참조하는 규칙을 삭제하거나 수정하고, 다음으로 객체를 삭제한 뒤 기본 경로를 확인하세요. 아웃바운드만 삭제하고 태그 참조를 남겨 두면 코어 시작이나 규칙 평가 단계에서 실패할 수 있습니다. 롤백이 끝나면 테스트 연결을 새로 만들고 클라이언트가 예상한 설정 생성 방식을 다시 사용하는지 확인하세요. 인터페이스 설정은 복원됐는데 실행 파일은 이전 상태로 남아 있을 수 있습니다.

설정 검증 및 단계별 롤백

반복해서 사용할 검증 기준 설정 저장하기

고급 설정을 조정하기 전에 정상 작동을 확인한 조합을 보관하세요. 현재 클라이언트, 사용 중인 코어, 서버 항목, 시스템 프록시 상태, 라우팅 프리셋, DNS 방식을 기록하면 됩니다. 용도와 주요 옵션만 적고 공개 문서에 민감한 주소를 저장할 필요는 없습니다. 기준 설정은 비교를 위한 것이지 앞으로도 계속 사용할 수 있다는 보장은 아닙니다. 출처가 바뀌면 다시 검증하고 달라진 조건을 기록하세요.

계층별로 수정하세요. 구독과 서버를 먼저 확인하고, 다음으로 라우팅, DNS, 마지막으로 트래픽 처리와 가상 매핑을 점검합니다. 각 단계의 검증을 마친 뒤 다음으로 넘어가세요. 코어를 바꾸고 TUN을 활성화하고 FakeDNS를 추가하면서 규칙까지 교체하면 실패 원인을 현상만으로 찾기 어렵습니다. 고급 설정은 변수를 좁혀 효율적으로 진행해야지 가능한 많은 매개변수를 한 번에 입력하는 것이 목적이 아닙니다.

고정 테스트 대상을 준비하세요. 직접 연결되어야 하는 대상 하나, 프록시를 거쳐야 하는 대상 하나, 로컬 네트워크 서비스 하나, 실제 문제가 발생한 앱 하나를 선택합니다. 매번 같은 대상을 사용하고 이전 연결이 재사용되지 않는지 확인하세요. 테스트 결과에는 클라이언트에 요청이 들어왔는지, 조회가 끝났는지, 어느 아웃바운드가 일치했는지, 어느 단계에서 실패했는지를 기록하세요. 측정하지 않은 속도나 체감만으로 내린 결론은 기록하지 마세요.

연결 수명 주기에 따라 실패 단계 찾기

코어가 정상적으로 시작되는지 먼저 확인하세요. 설정 파싱 오류, 리소스 로드 실패, 수신 포트 사용 중 문제는 실제 외부 연결이 시작되기 전에 발생합니다. 이때 서버를 바꿔도 해결되지 않습니다. 최근 수정한 객체와 로그의 첫 번째 오류를 확인하고 가장 먼저 실패한 부분부터 고치세요. 이후 재시도 메시지는 앞선 오류의 결과일 수 있으므로 반복되는 마지막 문구에 현혹되지 마세요.

코어가 시작된 다음 앱 트래픽이 들어오는지 확인하세요. 관련 인바운드 기록이 없으면 앱 프록시 설정, 시스템 프록시 상태, TUN 라우팅, 앱별 프록시 목록을 확인하세요. 요청이 들어온 것을 확인한 뒤에야 도메인 조회와 규칙 일치를 점검합니다. 일부 로그 수준에서는 모든 연결이 표시되지 않으므로 잠시 상세 수준을 높일 수 있지만 표시되지 않는다는 이유만으로 요청이 발생하지 않았다고 단정하지 마세요.

요청이 들어오면 조회 오류, 연결 오류, 핸드셰이크 오류를 구분하세요. 조회 시간 초과는 리졸버 경로를 확인해야 하고 대상 연결 실패는 주소, 포트, 출구, 방화벽과 관련될 수 있습니다. TLS 오류는 서버 이름, 시스템 시간, 인증서 체인을 확인해야 합니다. 검증을 끄고 오류를 우회하지 마세요. 연결 보안 조건만 바뀔 뿐 기존 설정이 실패한 원인은 설명되지 않습니다.

관찰 결과우선 확인할 항목아직 변경하지 않을 항목
코어가 시작되지 않음설정 문법, 리소스, 포트 사용 여부원격 서버 선택
앱 요청이 들어오지 않음프록시 인바운드, 트래픽 처리 범위, 앱 설정도메인 분류 규칙
조회 결과는 있지만 잘못된 출구 사용규칙 순서, 기본 아웃바운드, 도메인 복원구독 주소
규칙은 올바르지만 핸드셰이크 실패프로토콜 매개변수, 시간, 전송, 인증서검증된 일치 조건
종료 후에도 시스템에 문제가 남음남아 있는 프록시 설정, DNS, 가상 인터페이스, 라우팅모든 서버 항목

일부 앱에서만 문제가 발생하면 앱이 독립 DNS, 고정 주소, UDP 또는 다른 프록시 프로토콜을 사용하는지 확인하세요. 백그라운드에서만 문제가 생기면 시스템 절전, 네트워크 전환, 백그라운드 제한을 확인하세요. Android에서 지속 실행에 문제가 있다면 v2rayNG 배터리 최적화 및 백그라운드 정책을 참고하세요. 앱 수명 주기 문제라고 해서 모든 연결 매개변수를 다시 입력할 필요는 없습니다.

최소 범위로 롤백하고 점검 정보를 정리하기

가장 최근에 변경한 항목부터 역순으로 되돌리세요. 추가한 규칙이나 사용자 지정 설정 조각을 먼저 취소하고, 다음으로 조회 방식을 복원한 뒤 마지막으로 TUN을 종료합니다. FakeDNS를 사용했다면 가상 주소 캐시도 함께 처리하고 시스템 프록시를 사용했다면 시스템의 실제 상태를 확인하세요. 각 항목을 되돌릴 때마다 바로 다시 테스트하세요. 현상이 복구되면 원인을 해당 항목과 의존성으로 좁히고 다른 정상 설정은 계속 삭제하지 마세요.

정상 종료 후에도 네트워크가 복구되지 않으면 종료된 로컬 포트를 가리키는 시스템 프록시가 있는지 먼저 확인하고 DNS와 기본 라우팅도 점검하세요. 모든 네트워크 설정을 바로 지우지 마세요. 고정 주소, 기업 네트워크, 가상 머신 환경까지 영향을 받을 수 있습니다. 우선 클라이언트의 정상 정리 절차를 사용하고, 필요한 경우 운영체제 설정을 항목별로 복구하세요. 비교할 수 있도록 기존 값을 계속 보관하세요.

마지막으로 적용한 변경을 짧게 기록하세요. 어떤 설정을 왜 바꿨는지, 어떤 대상을 검증했는지, 어떻게 취소할 수 있는지를 적습니다. 출처를 설명할 수 없는 설정 파일만 보관하지 마세요. 이후 클라이언트 인터페이스나 코어 동작이 바뀌어도 이 기록을 참고해 설정을 다시 구성할 수 있으며 모든 이전 필드가 영원히 같은 의미로 유지된다고 가정할 필요가 없습니다.

문제 해결이 끝나면 평소 로그 수준으로 되돌리고 임시 테스트 기록을 삭제한 뒤 필요한 자동 업데이트를 다시 활성화하세요. 기본 절차는 빠른 시작에서 다시 확인하고, 개념과 용어는 용어집에서, 자주 발생하는 문제는 FAQ에서 살펴보세요. 명확하고 검증 가능하며 롤백할 수 있는 설정 경로를 유지한 뒤 필요한 용도로 조금씩 확장하세요.