V2Ray 설정 가이드
구독 가져오기부터 라우팅과 TUN까지
9단계로 설정의 기본 흐름을 익혀 보세요. Android에서는 v2rayNG를 주로 사용하고, 데스크톱에서는 v2rayN을 권장합니다. v2fly 커널이 필요하다면 v2flyNG도 살펴보세요.
처음 연결만 설정하려면 사용 설명서의 빠른 시작 과정을 먼저 확인하세요. 이 페이지에서는 각 설정이 어느 단계에 영향을 주는지, 변경 사항을 어떻게 확인하는지, 문제가 생겼을 때 어디서 복구를 시작할지 체계적으로 안내합니다. 처음 사용하는 경우 1장부터 순서대로 읽고, 이미 설정을 마쳤다면 필요한 장으로 바로 이동하면 됩니다. 클라이언트와 빌드 버전에 따라 메뉴 이름이 조금씩 다를 수 있으니 현재 화면과 로그를 기준으로 확인하세요.
1단계: 클라이언트, 커널, 연결 경로 이해하기
화면과 설정을 실행하는 커널 구분하기
클라이언트를 열면 그래픽 인터페이스가 보입니다. 인터페이스는 서버 항목 저장, 구독 업데이트, 설정 생성, 서비스 시작을 담당하고, 실제 연결 처리는 커널이 맡습니다. v2rayNG는 주로 Xray 커널을 사용하고 v2flyNG는 v2fly 커널을 사용합니다. v2rayN은 데스크톱 클라이언트이며, 어떤 커널을 사용하는지는 선택한 설정과 클라이언트의 지원 범위에 따라 달라집니다. 인터페이스에서 어떤 항목을 저장할 수 있다고 해서 현재 커널이 그 항목을 반드시 실행할 수 있는 것은 아닙니다.
Project V는 프록시 생태계를 이해하는 배경 지식입니다. V2Fly와 Xray는 관련 커널 계열이며, 서로 바꿔 쓸 수 있는 세 가지 앱 이름이 아닙니다. 자료를 찾아볼 때는 클라이언트 메뉴를 설명하는지, 커널 설정 항목을 설명하는지 먼저 확인하세요. 낯선 용어는 용어 설명에서 찾아볼 수 있습니다. 이름에 V2Ray가 들어간다는 이유만으로 다른 커널의 설정 전체를 현재 클라이언트에 덮어쓰지 마세요.
요청의 진입점, 규칙, 출구 따라가기
일반적으로 요청은 앱에서 시작해 로컬 프록시 진입점으로 들어간 다음, 라우팅 규칙에 따라 출구를 선택하고 대상 서비스에 연결됩니다. 데스크톱 시스템 프록시는 일부 앱이 요청을 로컬 진입점으로 보내도록 설정합니다. Android VPN 서비스는 시스템에서 제공하는 가상 네트워크 인터페이스를 통해 트래픽을 받습니다. 진입점은 요청을 받아들이고 출구는 요청을 어떻게 전송할지 결정합니다. 어떤 진입점을 거치는지와 최종적으로 어떤 출구를 사용하는지는 별개의 문제입니다.
서버 항목은 원격 연결 방식을 설명하며, 일반적으로 주소, 포트, 사용자 ID, 프로토콜, 전송 방식, 보안 매개변수가 포함됩니다. 구독은 이러한 항목을 일괄적으로 가져오는 주소이지 연결 자체가 아닙니다. 구독 업데이트에 성공했다는 것은 설정을 가져와 해석했다는 뜻일 뿐, 원격 서버에 연결할 수 있다는 의미는 아닙니다. 반대로 기존 항목으로 연결할 수 있다면 구독 업데이트 실패가 현재 연결에 즉시 영향을 주지 않을 수도 있습니다.
프로토콜·전송 방식·보안 계층을 각각 확인하기
VMess, VLESS, Trojan, Shadowsocks는 서로 다른 프록시 프로토콜입니다. WebSocket과 gRPC 등은 전송 방식을 나타내며, TLS와 REALITY는 연결 보안 메커니즘과 관련이 있습니다. 각 항목은 서버에서 제공한 조합에 맞춰 입력해야 합니다. 프로토콜 이름이 같다고 다른 매개변수까지 모두 같다고 볼 수는 없습니다. 예를 들어 주소와 포트가 정확해도 전송 경로, 서비스 이름, 서버 이름이 틀리면 연결을 설정하지 못할 수 있습니다.
VLESS는 일반적으로 적절한 보안 계층과 함께 사용해야 합니다. 프로토콜 자체가 간결하다는 이유로 모든 연결에 암호화가 기본 제공된다고 생각하지 마세요. VMess의 시간 기반 검증을 위해서는 기기 시간이 정확해야 합니다. REALITY에는 공개 키, 짧은 ID, 서버 이름 등의 조건이 있으며, 일반 TLS 옵션을 켜는 것으로 대체할 수 없습니다. 프로토콜 차이는 VMess와 VLESS 프로토콜 빠른 비교에서 더 자세히 확인하세요.
이 단계를 마치면 현재 앱이 어떤 클라이언트와 커널을 사용하고, 어떤 진입점과 출구를 거치는지 설명할 수 있어야 합니다. 아직 전체 설정을 직접 작성할 필요는 없습니다. 매개변수의 출처가 분명한 연결 하나를 먼저 설정한 뒤 라우팅과 트래픽 처리 범위를 단계적으로 추가하세요. 처음부터 모든 고급 기능을 켜면 문제가 여러 계층에서 동시에 발생해 어떤 변경이 효과가 있었는지 판단하기 어려워집니다.
2단계: 플랫폼과 설정 요구에 맞는 클라이언트 선택하기
데스크톱은 v2rayN, Android는 우선 v2rayNG
클라이언트 다운로드에서 먼저 기기의 운영체제에 맞는 플랫폼을 선택한 뒤 프로세서 아키텍처를 확인하세요. Windows, macOS, Linux 데스크톱에서는 v2rayN을, Android에서는 v2rayNG를 우선 권장합니다. 이렇게 선택하면 안내서의 과정과 실제 화면을 맞추기 쉽습니다. 다만 같은 구독이라도 환경에 따라 지원 기능이 달라질 수 있습니다. 필요한 프로토콜과 전송 방식, 시스템 트래픽 처리 방법은 각각 확인해야 합니다.
Android에서 v2fly 커널 관련 설정이 필요하다면 v2flyNG를 대안으로 고려할 수 있습니다. 연결에 한 번 실패했다고 바로 클라이언트를 바꾸지 마세요. 먼저 원인이 커널 지원, 구독 해석, 네트워크 또는 권한 중 어디에 있는지 확인하세요. Android 클라이언트 간에 옮길 때는 복구할 수 있도록 기존 앱과 설정을 남겨 두고, 새 환경을 확인한 뒤 정리 여부를 결정하세요. 사용 가능한 설정을 동시에 잃는 일을 막을 수 있습니다.
설치 파일 형식과 프로세서 아키텍처를 따로 확인하기
Windows 다운로드 페이지에서는 v2rayN 데스크톱판과 클래식 WPF판을 제공합니다. 데스크톱판은 차세대 크로스 플랫폼 인터페이스를 사용하고, WPF판은 클래식 인터페이스를 유지합니다. 메뉴 구성과 일부 시스템 연동 방식이 다를 수 있으므로 안내서를 따라가기 전에 어떤 인터페이스를 사용하는지 확인하세요. 새 인터페이스에서 같은 이름의 버튼을 찾을 수 없다고 기능이 없다고 단정하지 마세요. 매개변수 설정이나 서비스 메뉴에서 해당 항목을 찾아보세요.
macOS에서는 시스템 정보에서 칩을 확인한 뒤 Apple Silicon은 arm64, Intel은 x64를 선택하세요. Linux는 아키텍처뿐 아니라 배포판의 패키지 관리 방식도 확인해야 합니다. 파일 크기만 보고 deb와 rpm 중 하나를 고르면 안 됩니다. 최신 Android 스마트폰은 대부분 arm64를 사용하지만, 프로세서가 해당 아키텍처를 지원한다고 해서 운영체제도 같은 비트 폭으로 실행된다는 뜻은 아닙니다. 설치가 호환되지 않으면 시스템 정보를 확인하고 범용 패키지 사용을 검토하세요.
| 플랫폼 | 클라이언트 선택 | 우선 확인할 항목 |
|---|---|---|
| Windows | v2rayN | 데스크톱판 또는 WPF판, 시스템 지원 조건 |
| macOS | v2rayN | Apple Silicon 또는 Intel |
| Android | v2rayNG, 대안은 v2flyNG | 시스템 아키텍처, 커널 호환성 |
| Linux | v2rayN | deb 또는 rpm, x64 또는 arm64 |
실제 기능 요구에 따라 호환성 확인
서버에서 VLESS와 REALITY 조합을 제공한다면 현재 클라이언트가 호출하는 커널이 관련 항목을 지원하는지, 가져온 뒤 모든 항목이 제대로 유지됐는지 확인하세요. 기존 설정을 사용한다면 제공된 자료에 없는 보안 매개변수를 임의로 추가하지 마세요. 설정을 다른 환경에서 사용할 수 있는지는 앱 이름이 비슷한지가 아니라 양쪽에서 같은 항목을 지원하는지에 달려 있습니다. 비교할 때는 프로토콜, 전송 방식, 보안 계층, 특수 옵션을 모두 기록하세요.
기기를 평소 어떻게 사용하는지도 고려해야 합니다. 일부 데스크톱 앱만 프록시를 사용하게 하려면 시스템 프록시나 앱 자체 프록시부터 적용할 수 있습니다. 시스템 프록시를 따르지 않는 앱의 트래픽까지 더 많이 처리해야 한다면 TUN을 검토하세요. Android에서는 다른 VPN 유형 도구를 상시 실행하는지 확인해야 합니다. 시스템에서 활성 VPN 서비스를 하나만 허용하는 경우가 많습니다. 요구 사항에 따라 적절한 처리 범위가 달라지므로 기능을 최대한 많이 켜는 것을 선택 기준으로 삼을 필요는 없습니다.
마지막으로 선택 결과를 확인 가능한 문장으로 정리하세요. 예를 들면 “Android에서 v2rayNG를 사용하고 VPN 서비스로 선택한 앱의 트래픽을 받는다”와 같습니다. 이렇게 하면 이후 설치, 권한 설정, 문제 해결의 범위가 분명해집니다. 세 가지 클라이언트의 특징을 비교하려면 클라이언트 비교 리뷰를 확인하세요. 이 가이드에서는 같은 설정 흐름을 따라가며, 클라이언트 교체를 기본적인 해결 방법으로 취급하지 않습니다.
3단계: 클라이언트 설치 및 권한 설정 확인하기
Android 설치 및 첫 실행
다운로드 페이지에서 아키텍처를 선택한 다음 시스템 설치 프로그램으로 설치 파일을 여세요. 현재 출처에서 앱을 설치할 수 없다는 안내가 표시되면 안내에 나온 ‘알 수 없는 앱 설치’ 화면으로 이동해 실제로 사용할 브라우저나 파일 관리자에만 일시적으로 권한을 허용하세요. 설치가 끝나면 해당 출처의 권한을 끌 수 있습니다. 설치 안내를 통과하려고 설치와 무관한 기기 보안 설정을 변경하지 말고, 출처와 용도를 모르는 앱에 권한을 계속 허용하지 마세요.
v2rayNG를 열고 먼저 기본 화면이 정상적으로 표시되는지 확인한 뒤 알림 권한을 살펴보세요. 상시 알림은 서비스 상태를 파악하는 데 도움이 되지만, 알림 권한과 VPN 권한은 서로 다릅니다. 프록시 서비스를 처음 시작하면 시스템에서 별도로 VPN 연결 확인 창을 표시합니다. 앱 이름을 확인한 뒤 허용하세요. 이전에 다른 VPN 서비스를 사용했다면 먼저 중지해야 합니다. 새 서비스가 트래픽을 처리하지 못하는 문제를 설정 오류로 오해하지 않도록 하세요.
데스크톱에서는 파일과 시스템 연동부터 확인하기
Windows에서는 선택한 설치 형식에 따라 설치하거나 압축을 푸세요. 앱에 필요한 파일을 함께 보관하고 주 프로그램만 따로 다른 폴더로 옮기지 마세요. 일반 사용자 권한으로 실행하는 것을 우선으로 하세요. 관리자 권한이 필요한 기능을 실제로 사용할 때만 클라이언트 안내에 따라 권한을 허용하세요. 현재 사용자가 설정을 저장할 수 있는 위치에 설치해야 합니다. 특히 보호된 폴더, 동기화 폴더, 읽기 전용 매체에서는 저장이 실패할 수 있습니다.
macOS에서는 설치 후 응용 프로그램 폴더에서 실행하세요. 시스템 보안 안내가 표시되면 파일 출처와 현재 시스템에서 허용하는 방법을 먼저 확인하고, 시스템 보호 기능을 무조건 끄지 마세요. Linux에서는 배포판에 맞는 패키지 관리 방식으로 설치한 뒤 앱 메뉴에서 실행하세요. 화면이 열리지 않으면 오류 메시지와 시스템 아키텍처를 기록하세요. 이 단계에서는 아직 원격 연결을 시도하지 않았으므로 구독, 프로토콜, DNS를 바꿔도 앱 실행 문제는 해결되지 않는 경우가 많습니다.
환경을 기록한 다음 첫 연결 시도하기
클라이언트 설정에서 현재 로컬 수신 포트, 실행 모드, 라우팅 사전 설정을 기록하세요. 버전마다 같은 포트를 사용한다고 가정하지 말고 화면에 표시된 값을 기준으로 하세요. 기기에 다른 프록시 프로그램이 있다면 새 클라이언트를 시작하기 전에 해당 프로그램의 시스템 프록시와 가상 네트워크 인터페이스 처리를 종료하세요. 이전 앱의 창만 닫아도 백그라운드 서비스가 남아 포트가 충돌하거나 트래픽이 다른 프로그램으로 들어갈 수 있습니다.
이어서 시스템 시간과 시간대, 네트워크 상태를 확인하세요. 자동 시간 동기화를 켜고 일반 네트워크에서 필요한 기본 연결을 사용할 수 있는지 확인합니다. 시간이 틀리면 인증서 유효 기간 확인에 실패할 수 있고, 네트워크 로그인 페이지가 이후 요청을 막을 수도 있습니다. 현재 네트워크에서 먼저 웹 인증을 해야 한다면 트래픽 처리를 중지하고 인증을 완료한 뒤 클라이언트로 돌아오세요. 이러한 환경 문제를 해결하려고 인증서 검증을 끄지 마세요.
설치 단계의 확인 기준은 웹페이지가 열리는지가 아닙니다. 앱을 실행할 수 있는지, 설정을 저장할 수 있는지, 서비스가 올바른 권한을 요청하는지, 종료 후 시스템 네트워크가 복구되는지 확인해야 합니다. 네 가지 항목을 모두 점검한 뒤 구독을 가져오세요. 로컬 포트가 이미 사용 중이면 로컬 수신 포트 충돌 문제 해결을 참고하세요. 먼저 기기 환경을 확인하면 로컬 실행 실패와 원격 연결 실패를 한 번에 다루지 않아도 됩니다.
새 설정을 복구할 수 있도록 기준 상태를 남겨 두세요. 기존 시스템 프록시가 켜져 있었는지, 기존 VPN이 자동으로 실행됐는지 기록합니다. 공유 기기나 관리 대상 기기에는 조직에서 설정한 네트워크 정책이 있을 수 있으므로 사용자가 임의로 제거하지 마세요. 기준 상태로 되돌릴 때는 새 서비스를 중지한 다음 기존 네트워크 방식으로 복구하세요. 여러 클라이언트를 연달아 설치해 서로 덮어쓰게 하지 마세요.
4단계: 구독 가져오기 및 설정 출처 관리하기
구독 그룹에 주소를 저장한 뒤 업데이트하기
v2rayNG 사이드 메뉴에서 ‘구독 그룹 설정’으로 이동해 새 그룹을 만들고 알아보기 쉬운 메모와 전체 구독 주소를 입력하세요. 저장한 다음 기본 화면의 구독 메뉴로 돌아가 구독을 업데이트합니다. 화면에 따라 업데이트 메뉴가 더보기 안에 있을 수 있지만 순서는 같습니다. 먼저 출처를 저장한 다음 내용을 가져오세요. 주소를 그룹에 저장하기만 하고 업데이트를 실행하지 않으면 서버 항목이 기본 목록에 자동으로 나타나지 않습니다.
주소를 복사할 때 앞뒤와 중간에 공백이나 줄바꿈이 섞이지 않았는지 확인하세요. 구독 주소에 계정을 식별할 수 있는 접근 매개변수가 포함될 수 있으므로 민감 정보로 취급해야 합니다. 스크린샷, 로그, 문의 내용에 공개하지 마세요. 구독 주소를 모르는 온라인 변환 도구에 직접 입력하지 마세요. 형식을 변환해야 한다면 도구의 출처와 데이터 처리 방식을 먼저 확인하고, 변환 과정에서 어떤 프로토콜 항목이 사라질 수 있는지 알아보세요.
구독·공유 링크·전체 설정 구분하기
구독은 보통 여러 서버 항목을 제공하고, 공유 링크 하나는 단일 설정을 설명합니다. 전체 커널 설정에는 진입점, 출구, 라우팅, DNS가 포함될 수도 있습니다. 세 가지는 서로 다른 가져오기 대상입니다. 클립보드에서 가져올 때는 먼저 복사한 내용의 유형을 확인하고 알맞은 메뉴를 선택하세요. 웹페이지 주소를 구독 주소로 사용하거나 전체 설정을 단일 노드 링크처럼 가져오면 해석에 실패하거나 목록이 비어 있을 수 있습니다.
v2rayN에서 구독 그룹 관련 설정을 열고 새 출처를 추가해 저장한 다음 구독 업데이트 메뉴에서 항목을 가져오세요. 처음 업데이트할 때는 일반 업데이트 방식을 사용하세요. 현재 프록시를 통해 업데이트하는 옵션은 기존 프록시가 이미 작동할 때만 적합합니다. 그렇지 않으면 프록시에 연결해야 업데이트할 수 있는데, 연결하려면 업데이트된 설정이 필요한 순환 의존이 발생합니다.
업데이트가 끝나면 항목의 편집 화면을 열고 서버 정보에 맞춰 주소, 포트, 프로토콜, 사용자 ID, 전송 방식, 보안 항목을 확인하세요. 목록에 표시되는 메모는 식별용 이름일 뿐 매개변수가 올바르다는 근거가 아닙니다. 서버에서 특정 경로, 서비스 이름, 서버 이름을 지정했다면 대소문자와 전체 내용을 하나씩 확인하세요. 자료가 없는데 다른 항목을 참고해 값을 채우거나 보안 계층을 무작위로 바꾸지 마세요.
업데이트 전에 백업하고 이후 변경 사항 확인하기
구독 항목은 다음 업데이트에서 덮어쓸 수 있으므로 중요한 매개변수를 장기간 직접 수정하는 방식은 적합하지 않습니다. 테스트가 필요하면 먼저 내보내거나 복사해 별도 항목으로 만들고 메모로 출처를 구분하세요. 정상 작동이 확인된 설정을 보관한 뒤 원래 그룹을 업데이트합니다. 항목이 삭제되거나 매개변수가 바뀌거나 출처에 일시적으로 접속할 수 없어도 내용 업데이트와 연결 환경 중 어디서 문제가 생겼는지 판단할 수 있습니다.
업데이트 실패가 발생하면 먼저 이름 해석 실패, 연결 시간 초과, 원격 서버 오류 응답, 콘텐츠 해석 실패 중 어느 유형인지 확인하세요. 주소 만료, 권한 변경, 로그인 페이지 반환은 모두 업데이트 실패를 일으킬 수 있지만 해결 방법은 다릅니다. 주소를 공개하지 않는 방식으로 출처 상태를 확인한 뒤 업데이트 경로를 바꾸세요. 전체 설정을 반복해서 지워도 원격에서 잘못된 내용을 반환하는 문제는 해결되지 않습니다.
이 단계를 마치면 출처가 분명하고 모든 항목이 갖춰진 서버 설정을 최소 하나 보유하고, 해당 설정이 구독 업데이트로 덮어써질 수 있는지 알아야 합니다. 출처가 불분명한 그룹을 여러 개 한꺼번에 가져오지 마세요. 출처가 늘면 중복 항목, 서로 다른 매개변수, 만료된 설정이 뒤섞이기 쉽습니다. 먼저 하나의 설정을 검증한 뒤 그룹을 늘리면 일상적인 관리와 추적이 수월해집니다.
5단계: 진입점과 프록시 모드 선택 후 연결 확인하기
시스템 프록시와 라우팅 사전 설정은 별개의 설정
v2rayN에서 먼저 가져온 항목을 활성 설정으로 선택하고 서비스를 시작한 뒤 필요에 따라 시스템 프록시를 설정하세요. 시스템 프록시는 해당 설정을 따르는 앱이 요청을 어디로 보낼지 알려줍니다. 라우팅 사전 설정은 요청이 커널에 들어온 뒤 어떤 출구를 사용할지 결정합니다. 따라서 화면에서 전역 라우팅을 선택해도 모든 앱의 트래픽이 자동으로 클라이언트에 들어오는 것은 아닙니다. 시스템 프록시를 따르지 않는 프로그램은 기존 네트워크를 직접 사용할 수 있습니다.
데스크톱에서 처음 확인할 때는 브라우저부터 테스트할 수 있습니다. 먼저 클라이언트 커널이 정상적으로 시작됐는지 확인하고, 브라우저가 시스템 프록시를 사용하도록 설정한 뒤 접속 가능한 테스트 대상으로 요청을 보내세요. 브라우저에서는 접속되지만 다른 앱에서는 안 된다면 서버를 바로 바꾸지 말고 해당 앱이 시스템 설정을 따르는지, 자체 프록시를 설정했는지 확인하세요. 진입점에서 트래픽을 받지 못한다면 원격 프로토콜을 바꿔도 대개 효과가 없습니다.
Android에서는 VPN 모드와 프록시 전용 모드 구분하기
v2rayNG의 VPN 모드는 Android VPN 서비스를 통해 트래픽을 받고 시스템에 해당 VPN 상태를 표시합니다. 프록시 전용 모드는 일반적으로 로컬 프록시 진입점만 제공하므로 앱에서 직접 사용하도록 설정해야 합니다. 모든 앱의 트래픽이 자동으로 전달된다고 기대할 수 없습니다. 처음 사용할 때는 안내에 따라 VPN 모드를 선택하고 시스템 권한을 허용한 다음, 앱별 설정에서 대상 앱이 처리 범위에서 제외되지 않았는지 확인하세요.
앱별 프록시에서는 허용 목록과 우회 모드도 구분해야 합니다. 우회 모드를 켜면 선택한 앱이 VPN을 거치지 않을 수 있습니다. 우회 모드가 꺼져 있으면 선택한 앱이 처리 대상일 수 있습니다. 체크 표시만 보고 의미를 추측하지 말고 현재 화면의 설명을 확인하세요. 목록을 수정한 뒤에는 클라이언트 안내에 따라 서비스를 다시 시작하고 테스트 앱을 완전히 종료한 후 다시 열어 이전 연결 경로가 남지 않게 하세요.
단일 지연 시간 대신 단계별로 테스트하기
연결 테스트는 원격 포트나 특정 요청 하나만 확인할 수 있으므로 모든 대상, 프로토콜, 이름 해석 과정이 정상이라는 뜻은 아닙니다. 확인할 때는 커널이 계속 실행되는지, 테스트 앱에서 새 요청이 발생하는지, 요청이 예상대로 완료되는지 최소 세 가지를 살펴보세요. 앱 하나와 대상 하나만 먼저 테스트하고 성공하면 범위를 넓히세요. 웹페이지가 열리지 않으면 대상 서비스 자체의 장애와 브라우저 캐시도 확인해야 합니다.
모든 앱에서 실패하면 로그의 시작 및 핸드셰이크 정보를 먼저 살펴보세요. 일부 대상에서만 실패한다면 라우팅, DNS, 대상 서비스의 제한을 확인하세요. UDP를 사용하는 앱만 문제가 있다면 클라이언트 진입점, 커널, 원격 서버, 네트워크 경로가 모두 필요한 트래픽을 지원하는지 확인해야 합니다. TCP 웹 요청이 성공해도 다른 트래픽까지 정상이라는 뜻은 아니며, 기기의 모든 프로세스가 처리 범위에 들어왔다는 의미도 아닙니다.
| 방식 | 트래픽 수신 조건 | 확인할 항목 |
|---|---|---|
| 데스크톱 시스템 프록시 | 앱이 시스템 프록시 설정을 따름 | 로컬 포트와 앱 자체 설정 |
| 앱에서 프록시 수동 설정 | 앱에 올바른 진입점 입력 | 프로토콜 유형, 주소, 포트 |
| Android VPN | 시스템 권한 허용 및 앱이 처리 범위에 포함됨 | 활성 VPN 및 앱별 규칙 |
| 데스크톱 TUN | 가상 인터페이스 및 시스템 라우팅 정상 작동 | 권한, DNS, 우회 경로 |
테스트가 끝나면 종료 동작도 확인해야 합니다. 먼저 서비스를 중지한 뒤 시스템 프록시가 예상대로 복구됐는지 확인하세요. 시스템이 중지된 로컬 포트를 계속 가리키면 시스템 프록시를 따르는 앱은 연결할 수 없게 됩니다. 이를 원격 서버가 작동하지 않는 문제로 오해하지 마세요. 시작과 중지 과정을 모두 익혀야 기본 설정을 마친 것입니다. 이후 라우팅을 추가하면 트래픽 처리 문제와 분기 규칙 문제를 구분하기 쉬워집니다.
6단계: 설명 가능한 라우팅 및 DNS 규칙 만들기
규칙 순서와 출구 이름부터 확인하기
클라이언트의 라우팅 설정을 열어 현재 사전 설정을 확인한 다음 사용자 지정 규칙을 추가할지 결정하세요. 규칙은 일반적으로 순서대로 매칭되며, 먼저 일치한 규칙이 출구를 결정하면 뒤의 규칙은 해당 요청을 처리하지 않습니다. 따라서 특정 도메인에 대한 예외는 범위가 넓은 규칙보다 앞에 배치해야 합니다. 먼저 직접 연결할 요청, 프록시를 사용할 요청, 차단할 요청을 적은 뒤 이를 규칙으로 옮기세요. 이해하지 못한 설정 전체를 그대로 복사하지 마세요.
출구 태그는 설정 내부에서 참조하는 이름이지 프로토콜 이름이 아닙니다. 아래 조각은 규칙 구조를 설명하는 예시이므로 기존 설정에 병합해야 합니다. 여기에서 참조하는 direct와 proxy는 현재 설정에 실제로 존재하는 출구 태그와 일치해야 합니다. 이 조각을 완전한 설정으로 간주해 바로 실행하지 마세요. 클라이언트에서 그래픽 규칙 편집기를 제공한다면 다음 저장 때 설정이 다시 생성되어 변경 사항이 사라지는 일을 줄이도록 인터페이스에서 같은 규칙을 만드는 것이 좋습니다.
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["domain:example.com"],
"outboundTag": "proxy"
}
]
}
}
도메인 정책에 따라 이름 해석 시점 결정하기
AsIs는 받은 도메인 이름을 기준으로 최대한 매칭하고 IP 규칙을 위해 이름을 주소로 변환하지 않습니다. IPIfNonMatch는 도메인 규칙이 일치하지 않을 때 이름을 해석한 다음 IP 규칙과 비교합니다. IPOnDemand는 주소 정보가 필요한 규칙을 매칭할 때 이름을 해석합니다. 실제로 사용할 수 있는 항목은 해당 커널을 기준으로 확인하세요. 라우팅의 도메인 정책과 출구 연결 시 사용하는 주소 선택 매개변수를 혼동하지 마세요.
진입점이 IP 주소만 전달하면 도메인 규칙만으로 원하는 매칭을 보장할 수 없습니다. 일부 프로토콜에서는 트래픽 스니핑으로 대상 이름을 식별할 수 있지만 모든 요청의 도메인 이름을 복원할 수 있는 것은 아니며, DNS 설정 오류를 대신 해결하는 방법도 아닙니다. 사용 전에 지원 범위와 개인정보 영향을 확인하고, 변경 후 로그에서 실제 매칭 결과를 살펴보세요. 규칙 적용 여부는 도메인, 주소, 진입점에서 제공하는 정보에 따라 달라집니다.
DNS 조회 경로와 실제 요청을 따로 확인하기
DNS 관련 설정을 열었을 때는 먼저 앱, 시스템, 클라이언트 내장 리졸버, 원격 서버 중 누가 이름을 해석하는지 확인하세요. DNS 서버 주소를 설정해도 조회 요청이 자동으로 프록시를 통해 전송되는 것은 아닙니다. 리졸버의 연결 경로, 라우팅 규칙, 보안 DNS 연결에 필요한 도메인 해석이 모두 결과에 영향을 줄 수 있습니다. 특히 아직 연결되지 않은 연결에 DNS 서버가 의존해 시작 단계에서 해석이 불가능한 순환 구조가 생기지 않도록 하세요.
로컬 네트워크의 프린터, 관리 페이지, 내부 도메인은 로컬 DNS와 직접 연결이 필요할 수 있습니다. 원격 리졸버가 이러한 이름을 알지 못할 수도 있습니다. 먼저 로컬 네트워크 주소에 접속할 수 있는지 확인한 다음 내부 도메인을 따로 테스트하세요. 주소로는 접속되지만 이름으로 접속되지 않으면 프록시 프로토콜보다 DNS를 우선 확인하세요. 반대로 이름이 해석되는데 연결 시간이 초과되면 반환된 주소, 출구 경로, 대상 서비스 상태를 살펴보세요.
한 번에 규칙 하나만 추가하고 규칙과 일치해야 하는 대상 하나, 일치하지 않아야 하는 대상 하나를 테스트하세요. 확인이 끝나면 규칙 위치, 출구, 이름 해석 방식을 기록한 뒤 예외를 추가합니다. 완전한 규칙 세트의 가치는 항목이 많다는 데 있지 않고 각 요청이 왜 특정 경로를 사용하는지 설명할 수 있다는 데 있습니다. 문제가 생기면 검증된 사전 설정으로 되돌린 뒤 추가한 규칙을 하나씩 복구하세요.
7단계: VPN 및 TUN으로 트래픽 처리 범위 넓히기
더 넓은 트래픽 처리 범위가 필요한지 먼저 판단하기
앱이 시스템 프록시를 따르지 않거나 더 다양한 유형의 트래픽을 받아야 할 때만 데스크톱 TUN을 고려하세요. TUN은 가상 네트워크 인터페이스와 시스템 라우팅을 통해 트래픽을 프록시로 전달합니다. 잘못된 서버 항목을 수정해 주거나 원격 서버가 모든 프로토콜을 지원하도록 해 주지는 않습니다. 사용하기 전에 더 단순한 시스템 프록시 경로에서 같은 설정이 작동하는지 확인하세요. 그렇지 않으면 가상 인터페이스를 추가해 문제 해결 범위가 더 넓어집니다.
Android VPN 모드와 데스크톱 TUN은 개념상 모두 가상 네트워크 인터페이스와 관련이 있지만 시스템 권한, 라우팅 방식, 메뉴 설정은 서로 다릅니다. 데스크톱의 드라이버 설치 방법을 Android에 그대로 적용하거나 Android VPN 권한을 데스크톱 관리자 권한과 동일하게 취급하지 마세요. 데스크톱에서 실제로 지원되는 TUN 동작은 선택한 커널과 클라이언트의 구현에 따라 달라지므로 현재 화면의 안내에 맞춰 설정하세요.
사용 전에 충돌과 복구 방법 확인하기
v2rayN에서 TUN 관련 설정이나 스위치를 찾아 권한 안내를 먼저 읽고 서비스 모드나 시스템 권한이 필요한지 확인하세요. 다른 가상 네트워크 인터페이스 처리 도구는 중지하고 기존 시스템 프록시 상태를 기록합니다. 처음 테스트할 때는 여러 트래픽 처리 방식이 동시에 기본 경로를 바꾸지 않도록 하세요. 함께 사용할 수 있더라도 각각 먼저 검증해야 합니다. 조직에서 관리하는 컴퓨터에서는 기기 정책을 따르고 기존 네트워크 구성 요소를 임의로 제거하지 마세요.
시작한 다음 가상 인터페이스가 생성됐는지, 커널이 계속 실행되는지 확인하고 일반 웹페이지, 로컬 네트워크 기기, 실제 업무 앱을 테스트하세요. 원격 서버 연결이 트래픽 처리 경로를 우회하지 못하면 요청이 진입점으로 계속 되돌아오는 순환이 생길 수 있습니다. 클라이언트에서 이를 처리하는 경우가 많지만 사용자 지정 라우팅, 정적 경로, 다른 네트워크 소프트웨어가 해당 설정을 덮어쓸 수 있습니다. 이상이 있으면 기본 설정으로 먼저 되돌리세요.
DNS, UDP, 연결 끊김 동작을 중점적으로 확인하기
TUN이 트래픽을 받는다고 해서 DNS 요청이 예상한 리졸버로 전달되는 것은 아닙니다. 앱이 자체 보안 DNS를 사용할 수 있고 시스템에 기존 캐시가 남아 있을 수 있으며 클라이언트마다 DNS 처리 방식이 다를 수 있습니다. 명확한 조회 경로 하나를 먼저 선택하고 설정을 이해하기 전에 리디렉션 기능을 여러 개 동시에 켜지 마세요. 로컬 네트워크 이름이 해석되지 않으면 로컬 DNS 요청이 불필요하게 원격으로 전달되는지 확인하세요.
UDP 사용 가능 여부는 진입점, 커널, 원격 서버, 네트워크 경로가 모두 지원하는지에 달려 있습니다. 테스트할 때는 해당 트래픽이 실제로 필요한 앱을 사용하고 관련 로그를 확인하세요. 웹페이지 한 번 방문한 결과로 모든 전송 방식이 정상이라고 판단하지 마세요. 일부 앱에서만 문제가 발생하면 앱 자체 제한과 전송 문제도 구분해야 합니다. 가상 인터페이스 관련 매개변수를 바꾸기 전에 기존 값을 기록하고, 다른 기기의 설정을 검증 없이 조합하지 마세요.
Wi-Fi에서 모바일 네트워크로 전환하거나 컴퓨터가 절전 모드에서 깨어나면 기본 경로와 DNS 환경이 달라질 수 있습니다. 전환 후 연결이 끊기면 먼저 클라이언트 서비스를 중지했다가 다시 시작해 인터페이스를 재설정하세요. 이후 시스템에 이전 프록시 설정이 남아 있지 않은지 확인합니다. 기기를 재시작해야만 복구된다면 전환 전후 오류를 추가로 기록하세요. 반복해서 재시작하는 것을 장기적인 유지 관리 방법으로 삼지 마세요.
이 단계의 최종 확인에는 서비스를 직접 중지하는 과정도 포함됩니다. TUN을 종료한 뒤 시스템 라우팅, DNS, 일반 네트워크가 복구되는지 확인하고 다시 시작해 같은 테스트를 반복하세요. 로컬 네트워크나 기본 인터넷 연결에 문제가 생기면 TUN을 끄고 시스템 프록시와 기존 네트워크 방식을 복구한 다음 원인을 하나씩 확인하세요. 검증된 단순한 진입점을 하나 남겨 두면 문제가 트래픽 처리 계층에만 있는지 빠르게 판단할 수 있어 구독을 전부 다시 가져올 필요가 없습니다.
8단계: 백업, 업데이트, 일상적인 문제 진단
정상 설정과 테스트 설정을 분리해 보관하기
클라이언트의 내보내기 또는 백업 메뉴에서 현재 설정을 저장하고 어떤 항목이 포함되는지 확인하세요. 내보내기에 서버 항목만 들어 있고 구독 출처, 앱별 목록, 라우팅 사전 설정은 빠질 수 있으므로 해당 설정도 별도로 기록해야 합니다. 백업 파일에 접근 자격 증명이 들어 있을 수 있으니 관리되는 위치에 보관하고 공개 폴더에 함부로 동기화하지 마세요. 복구한 뒤에도 모든 기기 상태가 설정과 함께 이동한다고 가정하지 말고 시스템 권한을 다시 확인하세요.
별도 테스트 항목에는 전송 매개변수 확인이나 라우팅 예외 테스트처럼 용도를 분명히 적으세요. 비슷한 기본 메모만 사용하지 마세요. 구독을 업데이트할 때 항목이 바뀌는지 확인하고, 클라이언트를 업데이트하기 전에 사용 가능한 설정과 현재 설정을 저장하세요. 한 번의 유지 관리에서 앱 업데이트, 커널 변경, 라우팅 수정, DNS 교체를 동시에 하지 마세요. 변경 사항이 한꺼번에 많으면 문제가 생겼을 때 어느 단계로 되돌려야 할지 판단하기 어렵습니다.
시작 로그를 먼저 확인하고 연결 로그는 그다음 살펴보기
서비스가 시작되지 않으면 로그를 열고 가장 먼저 나타난 명확한 오류부터 확인하세요. 설정 해석 오류, 필수 항목 누락, 없는 출구 태그 참조, 리소스 파일 누락, 포트 충돌은 원격 연결을 시도하기 전에 발생할 수 있습니다. 시작을 막는 첫 오류를 해결한 다음 다시 테스트하세요. 뒤이어 나타나는 오류는 같은 원인으로 연쇄적으로 발생한 결과일 수 있으므로 각 줄마다 매개변수를 하나씩 바꿀 필요는 없습니다.
커널이 정상적으로 시작됐다면 연결 시간 초과, 이름 해석 실패, 인증 실패, TLS 핸드셰이크 오류를 구분하세요. 연결 시간 초과가 반드시 프로토콜 문제인 것은 아닙니다. 주소, 포트 또는 현재 네트워크 경로에 접속할 수 없는 것이 원인일 수도 있습니다. 인증 실패가 발생하면 서버에서 제공한 사용자 항목을 확인하세요. 설정 관련 오류는 커널 시작 실패 로그 확인의 순서에 따라 문법과 항목을 먼저 점검한 다음 진입점과 출구 참조를 확인하세요.
증상에 맞춰 필요한 정보만 충분히 기록하기
도움을 요청하기 전에 운영체제, 클라이언트 이름, 실행 모드, 문제가 발생한 동작, 오류 원문을 기록하고 문제가 계속 발생하는지 네트워크 전환 후에만 나타나는지도 설명하세요. 로그는 해당 시간대만 잘라내고 구독 주소, 사용자 ID, 비밀번호 및 다른 접근 매개변수는 가리세요. 설정 파일 전체를 공개하지 마세요. 핵심 오류 유형과 주변 맥락을 함께 남기면 ‘실패’라는 문구만 있는 스크린샷보다 문제를 파악하는 데 도움이 됩니다.
인증서 오류가 발생하면 먼저 시스템 시간과 시간대를 확인한 다음 서버 이름 및 서버 측 인증서 설정을 점검하세요. ‘안전하지 않은 연결 허용’을 기본 해결 방법으로 사용하지 마세요. 원래 해결해야 할 문제를 건너뛰는 데 그칠 수 있습니다. 서버에서 인증서나 이름을 변경했다면 서버 자료에 맞춰 항목을 업데이트하세요. 자세한 내용은 TLS 핸드셰이크 및 인증서 오류 원인에서 확인하고, 보안 매개변수를 무작위로 바꾸지 마세요.
유지 관리에는 앱의 백그라운드 동작 확인도 포함됩니다. Android에서 화면을 잠근 뒤 서비스가 중지되면 먼저 시스템의 배터리 제한, 백그라운드 실행, 자동 시작 설정을 확인하세요. 메뉴 위치는 기기마다 다르므로 시스템 안내에 따라 조정하고 모든 앱의 권한을 한꺼번에 허용하지 마세요. 데스크톱이 절전 모드에서 복귀한 뒤 작동하지 않으면 커널과 가상 인터페이스가 여전히 정상인지 확인하세요. 권한을 무작정 추가하기보다 문제가 발생한 시점에 맞춰 점검할 계층을 선택하는 편이 효과적입니다.
마지막으로 유지 관리 때마다 무엇을 바꿨고, 무엇을 확인했으며, 어떻게 복구할 수 있는지 간단히 기록하세요. 민감한 매개변수는 적지 않아도 되며 설정 이름과 결과만 남기면 됩니다. 다음에 비슷한 증상이 생기면 최근 변경 사항과 환경을 먼저 비교한 뒤 업데이트하거나 설정을 바꿀지 결정하세요. 안정적으로 사용하려면 검증되지 않은 최적화 항목을 계속 추가하기보다 재현할 수 있는 절차와 복구 가능한 설정을 유지해야 합니다.
9단계: 그래픽 설정에서 설정 파일 읽기로 나아가기
생성된 결과를 먼저 읽고 일부 항목만 수정하기
클라이언트의 설정 보기 또는 내보내기 메뉴에서 현재 활성 설정을 찾아 먼저 읽기만 하고 수정하지 마세요. 진입점, 출구, 라우팅, DNS 네 부분으로 용도를 구분하고 그래픽 인터페이스의 각 설정이 결과 파일의 어느 부분에 반영되는지 살펴보세요. 생성된 결과에는 클라이언트가 자동으로 추가한 항목이 포함될 수 있으므로 안내서에 설명이 없다는 이유로 삭제하지 마세요. 빈 파일에서 전체 설정을 작성하는 것보다 인터페이스 설정과 결과 파일의 대응 관계를 이해하는 편이 안전합니다.
읽을 때는 태그 참조, 배열 순서, 중첩 구조를 특히 주의해서 확인하세요. 라우팅에서 참조하는 출구 태그가 실제로 존재해야 합니다. 같은 이름의 항목이라도 서로 다른 객체에 있으면 의미가 다를 수 있습니다. JSON의 큰따옴표, 쉼표, 괄호도 모두 문법의 일부입니다. 일부 도구가 주석을 허용한다고 해서 클라이언트에서 사용하는 파서도 지원하는 것은 아닙니다. 저장하기 전에 현재 커널이 지원하는 형식인지 확인하고 서로 다른 형식의 설정 조각을 한 파일에 섞지 마세요.
짧은 연습으로 매개변수 판단 능력 키우기
첫 연습에서는 로그 수준만 조정해 변경을 최소화하고 출력 차이를 살펴보세요. 아래는 자주 사용하는 로그 설정 예시입니다. 완전한 설정의 해당 위치에 넣어야 하며, 단독으로 실행할 수 있는 파일이 아닙니다. 문제를 진단하는 동안은 더 자세한 로그를 사용하고 완료한 뒤 평소 수준으로 되돌리세요. 로그가 자세할수록 대상 주소와 연결 맥락이 포함될 가능성이 높으므로 공유하기 전에 내용을 확인해야 합니다.
{
"log": {
"loglevel": "warning"
}
}
두 번째 연습에서는 기본 출구를 그대로 둔 채 명확한 도메인 라우팅 규칙 하나만 추가하세요. 일치해야 하는 테스트 대상과 비교용 대상을 준비하고 로그나 클라이언트의 연결 정보에서 경로를 확인합니다. 규칙이 적용됐음을 보여 주는 정보가 충분하지 않다면 웹페이지가 열렸다는 이유만으로 성공을 판단하지 마세요. 서로 다른 출구를 통해서도 같은 대상에 접속할 수 있습니다. 중요한 것은 결과를 얻는 데 그치지 않고 가정을 검증하는 것입니다.
세 번째 연습에서는 DNS의 의존 관계를 정리하세요. 누가 이름을 조회하고, 어디에 요청하며, 요청 자체를 어떻게 전송하고, 반환된 주소는 최종적으로 어떤 출구에서 사용하는지 확인합니다. 이 관계를 몇 줄로 적은 뒤 실제 설정과 비교하세요. 전체 과정을 설명할 수 있게 된 다음 도메인 세분화, 주소 계열 선택, 로컬 네트워크 예외를 검토하세요. 복잡하게 만들기 위해 조회 경로를 나누지 마세요. 복잡한 설정에는 명확하고 검증 가능한 요구가 있어야 합니다.
클라이언트 생성 설정과 사용자 지정 설정의 경계 이해하기
일부 클라이언트는 설정 저장, 항목 전환, 구독 업데이트 후 실행 설정을 다시 생성합니다. 임시 생성 파일을 직접 수정하면 다음 실행 때 변경 사항이 사라질 수 있습니다. 계속 유지할 설정은 우선 그래픽 인터페이스에서 저장하고, 사용자 지정 설정을 사용할 때는 클라이언트가 이를 어떻게 시작, 업데이트, 백업하는지 확인하세요. 서로 덮어쓰는 두 가지 출처를 동시에 관리하면 화면에 표시된 내용과 실제 실행 설정이 달라질 수 있습니다.
커널 전환도 별도의 실험으로 진행해야 합니다. 대상 커널이 지원하는 프로토콜, 보안 항목, 라우팅 문법을 확인한 뒤 설정을 복사해 테스트하고 기존에 작동하는 경로를 덮어쓰지 마세요. 항목 이름이 같아도 동작 방식의 세부 사항까지 같다는 보장은 없습니다. 호환성 문제가 발생하면 원본 오류와 재현에 필요한 최소 설정을 보관하고 민감한 값만 바꾸세요. 문제 재현을 위해 실제 구독이나 접근 자격 증명을 공개하지 마세요.
앞으로는 필요한 내용에 따라 학습 경로를 선택하세요. 첫 연결 과정을 다시 확인하려면 빠른 시작 안내서를 참고하고, 구체적인 오류가 발생했다면 자주 묻는 질문과 관련 기술 문서를 확인하세요. 설정 항목이 익숙하지 않다면 용어 설명을 살펴보세요. 모든 매개변수를 한 번에 익힐 필요는 없습니다. 현재 기기의 실제 요구를 먼저 구현하고 검증한 다음 단계적으로 확장해야 설정을 오래 읽기 쉽고 관리와 복구도 수월합니다.