먼저 창이 종료된 것인지, 코어 실행이 실패한 것인지, 백그라운드 연결이 시스템에 의해 중단된 것인지 구분한 뒤 런타임, 설치 파일 아키텍처, 권한을 확인하세요. v2rayN 데스크톱 및 v2rayNG Android 사용자를 위해 설정을 유지하면서 점검하는 순서와 실행 가능한 확인 명령, 복구 후 재검증 항목을 정리했습니다. v2flyNG의 Android 권한도 같은 시스템 설정 경로에서 확인할 수 있습니다.
1. 창 종료, 코어 중단, 연결 실패 구분하기
“두 번 클릭해도 반응이 없음”과 “연결을 눌렀는데 인터넷이 안 됨”은 서로 다른 문제입니다. v2rayN은 관리 인터페이스이고 Xray 또는 V2Fly는 프록시 트래픽을 처리하는 코어입니다. 창이 열려도 코어가 포트를 정상적으로 열었다는 뜻은 아니며, 코어가 실행되어도 노드의 서버 주소, 포트, 인증 정보가 올바르다는 보장은 없습니다. 문제가 발생한 단계를 먼저 찾아야 불필요한 재설치를 피할 수 있습니다.
- 창이 전혀 나타나지 않음: 시스템 보안 경고, 설치 파일의 프로세서 아키텍처, 종속 런타임을 먼저 확인하세요.
- 창이 나타난 직후 닫힘: 앱 충돌 기록, 설정 읽기 오류, 폴더 쓰기 권한을 확인하세요.
- 창은 열려 있지만 로그에 시작 실패가 표시됨: 코어 파일, 포트 충돌, 설정 항목을 확인하세요. 먼저 데스크톱 런타임 문제로 단정하지 마세요.
- Android에서 백그라운드로 전환한 뒤 연결이 끊김: VPN 상태와 시스템의 백그라운드 제한부터 확인하세요. 아이콘을 누르자마자 앱이 종료되는 문제와는 다릅니다.
Windows 작업 관리자를 열어 v2rayN 프로세스가 이미 실행 중인지 확인한 다음, 작업 표시줄의 숨겨진 아이콘도 살펴보세요. 기본 창을 닫아도 트레이로 최소화된 것일 수 있으므로 바로 앱 종료로 판단하면 안 됩니다. 다시 시도하기 전에 트레이 메뉴에서 기존 인스턴스를 종료해 설정 폴더나 포트를 두 인스턴스가 동시에 사용하지 않도록 하세요.
2. Windows: 설치 파일 유형에 따라 .NET 런타임 확인하기
v2rayN Desktop과 WPF는 서로 다른 UI 빌드이므로 앱 이름만으로 필요한 종속성을 판단할 수 없습니다. 프레임워크 종속 WPF 빌드에는 해당 .NET Desktop Runtime이 필요하고, 자체 포함 빌드에는 필요한 런타임이 포함된 경우가 많습니다. 먼저 다운로드한 패키지의 안내를 확인하고 압축 해제 폴더의 v2rayN.runtimeconfig.json을 살펴보세요. 파일에 명시된 정보를 기준으로 판단하고, 최신 런타임을 설치하는 것을 만능 해결책으로 여기지 마세요.
-
아키텍처 확인
Windows에서 「설정」→「시스템」→「정보」를 열고 「시스템 종류」를 확인하세요. x64 또는 ARM64에 맞는 패키지를 선택하고, 운영체제 이름만 보고 파일을 고르지 마세요.
-
압축 파일 완전히 풀기
실행 중인 인스턴스를 종료한 뒤 압축 파일을 현재 사용자에게 쓰기 권한이 있는 폴더에 모두 풀어 주세요. 예:
C:\Users\Public\Documents\v2rayN-test. 압축 프로그램의 미리보기에서 실행하거나 실행 파일 하나만 따로 복사하지 마세요. -
종속성 확인
메모장에서
v2rayN.runtimeconfig.json을 여세요. 프레임워크 항목에Microsoft.WindowsDesktop.App이 있으면 지정된 주 버전과 아키텍처에 맞는 Desktop Runtime을 설치하세요. 파일이 없다면 패키지 배포 안내를 확인하세요. 파일이 없다는 이유만으로 종속성이 누락됐다고 단정할 수는 없습니다. -
설치된 런타임 확인
PowerShell에서
dotnet --list-runtimes를 실행하세요. 예를 들어 설정에서 8.0 계열을 요구한다면 해당 아키텍처에 호환되는Microsoft.WindowsDesktop.App 8.0.x가 있는지 확인해야 합니다.Microsoft.NETCore.App만 설치된 것은 Desktop Runtime 설치를 의미하지 않습니다. -
다시 실행하기
필요한 런타임을 설치한 뒤 클라이언트를 다시 실행하세요. 명령을 실행했을 때
dotnet을 찾을 수 없다는 메시지가 나오면 명령 경로나 설치 상태에 문제가 있을 수 있습니다. 「설정」→「앱」→「설치된 앱」도 확인하고, 이 명령 하나만으로 판단하지 마세요.
오류: You must install or update .NET to run this application.
원인 및 해결: 프로그램이 필요한 런타임을 찾지 못했습니다. 메시지에 표시된 Framework, Architecture, 버전을 확인하고 해당 구성 요소를 설치하세요. x86 런타임은 x64 종속성을 대신할 수 없습니다.
오류: A fatal error occurred. The required library hostfxr.dll could not be found.
원인 및 해결: 런타임이 없거나 패키지 파일이 불완전할 수 있습니다. 패키지 유형을 확인하고 압축 파일을 다시 완전히 푼 다음, 호환되는 런타임을 복구하세요. 출처가 불분명한 사이트에서 DLL을 따로 내려받아 시스템 폴더에 넣지 마세요.
계속 실행 직후 종료된다면 Win + R을 누르고 eventvwr.msc를 입력한 다음 「Windows 로그」→「응용 프로그램」으로 이동하세요. 실행 시각과 일치하는 Application Error 또는 .NET Runtime 이벤트를 찾아 오류가 발생한 앱, 예외 코드, 오류 모듈을 기록하세요. 반복해서 두 번 클릭하는 것보다 이 정보가 문제 해결에 유용합니다.
3. 설정 및 권한: 별도 폴더에서 최소 구성으로 테스트하기
업데이트 직후 앱이 종료된다면 기존 설정, 데이터베이스 접근 또는 폴더 권한이 원인일 수 있습니다. 클라이언트를 종료하고 원래 설정 폴더와 보관할 구독 그룹을 백업한 다음, 새 폴더에서 전체 패키지를 실행하세요. 테스트할 때 기존 데이터베이스, 모든 라우팅 규칙, 기타 설정을 한꺼번에 복사하지 마세요. 원래 데이터가 원인인지 확인하기 어려워집니다.
- 새 폴더에서 실행됨: 구독, 노드, 라우팅 설정을 하나씩 복원하고 항목을 추가할 때마다 다시 시작하세요. 구독을 다시 가져온 뒤에는 노드 하나만 테스트하세요.
- 새 폴더에서도 계속 종료됨: 런타임, 시스템 이벤트, 보안 소프트웨어 기록을 계속 확인하세요. 이 단계에서는 노드 설정을 변경하지 마세요.
- 접근 거부 메시지가 표시됨: 현재 사용자에게 프로그램 및 설정 폴더의 쓰기 권한이 있는지 확인하세요. 항상 관리자 권한으로 실행하는 것은 폴더 권한 문제의 해결책이 아닙니다.
- 파일이 격리된 것으로 의심됨: 「Windows 보안」→「바이러스 및 위협 방지」→「보호 기록」에서 발생 시각, 경로, 감지 결과를 확인하고 파일 출처도 검증하세요. 시스템 전체의 보호 기능을 끄지 마세요.
4. macOS: 아키텍처 및 시스템 보안 차단 확인하기
macOS용 v2rayN에는 Windows의 .NET Desktop Runtime 설치 프로그램이 사용되지 않습니다. 먼저 Apple 메뉴의 「이 Mac에 관하여」에서 칩이 Apple Silicon인지 Intel인지 확인한 뒤 맞는 빌드를 선택하세요. 아키텍처가 맞지 않으면 앱이 열리지 않거나 호환 계층이 필요하거나 시작 오류가 발생할 수 있으므로 하드웨어에 맞는 패키지를 우선 사용하세요.
- 기존 인스턴스를 종료하고 패키지 압축을 풀거나 디스크 이미지를 마운트한 다음, 패키지 안내에 따라 앱을 「응용 프로그램」 폴더로 옮기세요. 다운로드 중인 임시 파일을 반복해서 실행하지 마세요.
- 처음 실행할 때 개발자 확인 경고가 나타나면 먼저 앱의 출처와 전체 이름을 확인한 뒤 「시스템 설정」→「개인정보 보호 및 보안」에서 해당 차단 기록을 살펴보세요. 출처를 신뢰할 수 있다고 확인한 경우에만 시스템에서 제공하는 「그래도 열기」를 선택하세요.
- 앱이 손상되었다는 메시지가 표시되어도 터미널에서 보안 속성을 재귀적으로 제거하지 마세요. 올바른 아키텍처의 전체 패키지를 다시 받으세요. 문제가 계속되면 「콘솔」 앱에서 같은 시각의 충돌 보고서를 확인하세요.
- 먼저 일반 프록시 모드로 실행해 인터페이스와 코어가 정상 작동하는지 확인하세요. TUN처럼 추가 권한이 필요한 기능을 켤 때만 클라이언트와 시스템 안내에 따라 권한을 부여하세요. 여러 조건을 동시에 변경하지 마세요.
“시스템이 실행을 차단함”과 “실행 후 프로그램이 충돌함”은 따로 기록해야 합니다. 전자는 시스템 경고 창의 문구를 남기고, 후자는 충돌 보고서의 프로세스 이름, 예외 유형, 발생 시각을 기록하세요. 특정 앱의 문제를 해결하려고 시스템 보안 검사를 전역으로 끄지 마세요.
5. Android: VPN 권한과 백그라운드 배터리 제한 구분하기
v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용합니다. 두 앱 모두 Android VPN 서비스를 통해 트래픽을 처리할 수 있지만 지원하는 프로토콜 범위가 완전히 같지는 않습니다. 특히 노드가 특정 코어 기능에 의존한다면, 클라이언트를 바꾸는 것이 모든 충돌 문제의 해결책은 아닙니다.
아이콘을 누르자마자 앱이 종료되고 연결을 시도하기 전이라면 설치 파일 아키텍처, 시스템 호환성, 앱 데이터를 먼저 확인하세요. VPN 권한은 보통 서비스 시작 시 요청되며, 배터리 제한은 백그라운드 실행에 더 큰 영향을 줍니다. 이 세 가지 상황을 구분하면 불필요하게 권한을 조정하는 일을 줄일 수 있습니다.
- 앱을 열자마자 충돌함: 「설정」→「앱」→「v2rayNG」→「강제 종료」를 누른 뒤 「저장공간 및 캐시」에서 캐시를 삭제하고 다시 시도하세요. 「저장공간 삭제」는 로컬 설정을 지우므로 우선 선택하지 마세요.
- 연결을 누른 뒤 실패함: 서비스를 다시 시작하고 시스템 VPN 연결 요청이 나타나는지 확인한 다음 권한을 허용하세요. 「설정」→「네트워크 및 인터넷」→「VPN」에서 다른 VPN 서비스나 상시 연결 VPN 설정이 충돌하는지 확인하세요.
- 화면을 잠근 뒤 연결이 끊김: 「설정」→「앱」→「v2rayNG」→「앱 배터리 사용량」으로 이동해 기기에서 제공하는 옵션에 따라 백그라운드 실행을 허용하거나 「제한 없음」으로 설정하세요. 제조사 시스템에는 별도의 자동 시작 관리 기능이 있을 수도 있습니다.
- 알림만 표시되지 않음: 「설정」→「앱」→「v2rayNG」→「알림」을 확인하세요. Android 13 이상에서 알림 권한과 VPN 연결 권한은 서로 다른 권한입니다. 알림이 차단됐다고 해서 프로세스가 충돌했다고 단정할 수는 없습니다.
6. 창은 정상인데 연결 실패: 코어와 포트 확인하기
v2rayN 창이 계속 열려 있고 연결을 누를 때만 오류가 난다면 코어 로그를 확인해야 합니다. 흔한 원인으로는 로컬 수신 포트 충돌, 코어 파일 누락, 현재 코어에서 지원하지 않는 노드 설정 항목이 있습니다. 이 경우 .NET을 추가로 설치해도 보통 문제가 해결되지 않습니다.
오류: bind: address already in use
원인 및 해결: 시스템의 다른 프로세스가 같은 주소와 포트를 이미 사용 중입니다. 중복 실행 중인 인스턴스를 종료하거나 클라이언트의 수신 설정에서 사용 가능한 포트로 변경하고, 해당 포트를 사용하는 앱 설정도 함께 바꾸세요.
오류: Only one usage of each socket address (protocol/network address/port) is normally permitted.
원인 및 해결: Windows에서 자주 나타나는 소켓 사용 중 오류입니다. 포트를 사용하는 프로세스를 확인한 뒤 조치하세요. 포트 번호만 보고 알 수 없는 시스템 프로세스를 강제 종료하지 마세요.
「설정」→「매개변수 설정」의 로컬 수신 포트에 실제로 10808을 입력했다고 가정하면, 아래 PowerShell 명령으로 해당 포트를 사용하는 프로세스를 확인할 수 있습니다. 이 포트는 예시일 뿐이며 모든 버전의 기본값은 아닙니다. 클라이언트에 다른 포트가 설정되어 있다면 명령의 숫자도 같은 값으로 바꾸세요.
Get-NetTCPConnection -LocalPort 10808 -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess
출력의 OwningProcess에 표시된 PID를 작업 관리자의 「세부 정보」에서 확인하세요. 수신 중인 프로세스가 없다면 로그로 돌아가 코어가 정상적으로 시작됐는지 살펴보세요. 로그가 원격 연결 단계에 들어간 뒤 시간 초과나 인증 실패가 발생한다면 서버 주소, 포트, UUID, 전송 방식, 보안 옵션을 확인하세요. 이 경우는 클라이언트가 갑자기 종료되는 문제와 다릅니다.
- VMess와 VLESS의 프로토콜 항목은 서버 설정과 일치해야 합니다. 프로토콜 이름만 바꿔서는 해결되지 않습니다.
- REALITY 같은 설정을 사용할 때는 현재 선택한 코어와 버전이 관련 항목을 지원하는지 확인한 뒤 서버에서 제공한 매개변수를 하나씩 대조하세요.
- 복구 테스트에서는 필요하지 않은 사용자 지정 라우팅과 TUN을 먼저 끄고, 노드 하나와 트래픽 처리 방식 하나만 남기세요. 연결이 성공하면 설정을 하나씩 복원하세요.
7. 자주 묻는 질문 및 재검사 기록
.NET을 이미 설치했는데도 왜 실행되지 않나요?
런타임 종류, 주 버전, 아키텍처를 확인하세요. 프레임워크 종속 WPF 패키지에는 Desktop Runtime이 필요하며 기본 Runtime만으로는 충분하지 않습니다. 다른 주 버전이 현재 앱의 요구 사항을 자동으로 충족하는 것도 아닙니다. 시작 오류 메시지와 runtimeconfig 파일을 기준으로 판단하세요.
매번 관리자 권한으로 실행해야 하나요?
일반 시스템 프록시 모드는 보통 계속 관리자 권한으로 실행할 필요가 없습니다. 현재 사용자에게 쓰기 권한이 있는 폴더에 프로그램을 두고 권한 문제를 해결하세요. 추가 권한이 필요한 TUN 기능은 해당 버전의 안내에 따라 처리하고, 모든 실행 오류를 권한 부족으로만 판단하지 마세요.
Android에서 데이터를 지우면 바로 해결되나요?
로컬 데이터 일부가 손상된 문제를 확인하는 데 도움이 될 수 있지만, 저장된 노드와 설정이 삭제됩니다. 먼저 백업하고 앱을 강제 종료한 뒤 캐시를 삭제하세요. 초기화가 필요하더라도 노드 하나만 다시 가져와 테스트하고, 처음부터 기존 설정을 모두 복원하지 마세요.
구독을 업데이트하면 실행 직후 종료되는 문제가 해결되나요?
구독 업데이트는 주로 노드 설정을 바꾸며 런타임 누락이나 시스템 보안 차단을 해결하지는 않습니다. 특정 설정을 불러오거나 코어를 시작할 때 문제가 발생한 경우에만 해당 노드 항목을 확인하세요. 앱 창조차 열리지 않는다면 먼저 앱 시작 단계부터 점검해야 합니다.
문제를 문의하기 전에 운영체제 버전, 프로세서 아키텍처, 클라이언트 전체 버전, 패키지 유형, 선택한 코어 버전, 오류 발생 시각을 기록하세요. “아이콘을 누르면 바로 종료됨”, “연결 후 코어가 중단됨”, “화면을 잠근 뒤 연결이 끊김” 중 어떤 상황인지 구체적으로 적고, 해당 시간대의 민감 정보를 가린 로그를 첨부하세요. “열리지 않음” 한마디만 남기거나 설정 파일 전체를 공개하지 마세요.
- 데스크톱 재검사: 앱을 종료한 뒤 두 번 다시 실행해 창이 유지되고 시작 실패 로그가 반복되지 않는지 확인하세요. 시스템 프록시가 실제 수신 포트를 가리키는지도 점검하세요.
- Android 재검사: VPN 권한을 허용하고 화면이 켜진 상태에서 정상적으로 연결되는지 확인한 뒤 화면 잠금 테스트를 진행하세요. 서비스가 계속 중단되면 시스템 백그라운드 제한과 앱 로그를 추가로 확인하세요.
- 설정 복원: 구독, 라우팅, DNS, TUN 순서로 설정을 하나씩 복원하세요. 한 번에 한 항목만 변경하고 문제를 재현할 수 있는 최소 단계를 기록해 두세요.