v2rayN Windows 설치·설정 가이드: 데스크톱 버전과 WPF 버전 비교, 자주 발생하는 문제 해결

Windows에서 v2rayN 버전 선택, 압축 해제와 실행, 구독 가져오기, 시스템 프록시 설정까지 안내합니다. 데스크톱·WPF 버전 차이와 런타임 누락, 포트 충돌 해결법도 확인하세요.

이 글의 핵심 내용

Windows에서 처음 v2rayN을 설정하거나, 실행 실패·빈 구독 목록·연결 후에도 브라우저가 열리지 않는 문제를 해결하려는 사용자에게 적합합니다. 먼저 CPU 아키텍처와 UI 버전을 선택한 다음 압축 해제, 구독 업데이트, 활성 서버 선택, 시스템 프록시 설정을 진행합니다. 마지막으로 로그와 수신 대기 포트, 프록시를 명시한 요청을 확인해 문제 원인이 클라이언트인지, 코어인지, 앱인지 좁혀 보세요.

1. 데스크톱 버전과 WPF 버전: UI를 먼저 선택하고 아키텍처 확인하기

v2rayN은 설정과 관리를 위한 UI이며, 실제 연결은 v2rayN이 실행하는 프록시 코어가 처리합니다. 데스크톱 버전은 크로스 플랫폼 UI를, 클래식 WPF 버전은 Windows UI 기술을 사용합니다. 두 버전의 차이는 주로 화면 구성, 조작 방식, 배포 패키지의 종속성에 있습니다. ‘데스크톱’ 또는 ‘WPF’라는 이유만으로 특정 서버 설정의 연결 가능 여부를 판단할 수는 없습니다.

데스크톱 버전

추천

처음 사용하는 경우 데스크톱 버전으로 시작해 보세요. 이 가이드의 순서에 따라 설정하면서 구독 그룹, 활성 서버, 시스템 프록시, 라우팅 메뉴를 확인하면 됩니다.

추천 대상: 처음 설정하거나 크로스 플랫폼 UI를 사용하려는 사용자

클래식 WPF 버전

기존 Windows 조작 방식에 익숙한 사용자에게 적합합니다. 다른 UI 버전의 프로그램 파일을 섞어 사용하지 마세요. 버전을 바꿀 때는 먼저 설정을 백업하고 별도 폴더에 압축을 풀어 확인하세요.

추천 대상: WPF 사용에 익숙하거나 기존 작업 흐름을 유지하려는 사용자

다운로드하기 전에 Windows에서 ‘설정’ → ‘시스템’ → ‘정보’를 열어 ‘시스템 종류’를 확인하세요. x64 기반 프로세서로 표시되면 x64 패키지를 선택하고, ARM64 기기에서는 해당 아키텍처용 패키지를 우선 선택하세요. UI 프로그램이 호환 계층에서 실행되더라도 패키지에 포함된 코어까지 호환된다는 뜻은 아니므로, 주 창이 열리는지만 확인해서는 안 됩니다.

2. 압축을 모두 풀고 처음 실행하기

압축 파일은 D:\Tools\v2rayN처럼 쓰기 가능한 폴더에 모두 압축 해제해야 합니다. 압축 프로그램의 미리보기 창에서 메인 프로그램을 바로 실행하거나 실행 파일 하나만 따로 꺼내지 마세요. UI, 코어, 데이터 파일은 배포 패키지의 원래 폴더 구조를 유지해야 합니다.

  1. 설치 패키지 확인

    이 사이트의 다운로드 페이지에서 Windows용 아키텍처와 UI 버전을 선택하세요. 선택한 버전을 기록해 두고, 문제를 해결하는 동안 여러 버전의 파일을 같은 폴더에 덮어쓰지 마세요.

  2. 파일 전체 압축 해제

    파일 탐색기에서 압축 파일을 선택하고 ‘모두 압축 풀기’를 실행하세요. 압축을 푼 전체 폴더를 현재 계정에서 쓸 수 있는 위치에 두고, 보호된 프로그램 폴더에 바로 풀지 마세요.

  3. 메인 프로그램 실행

    압축을 푼 폴더에서 v2rayN.exe를 실행하세요. 먼저 메인 창과 트레이 아이콘이 나타나는지 확인합니다. 아직 서버 설정이 없으므로 이 단계만으로 연결이 정상인지 판단할 수는 없습니다.

  4. 시작 로그 확인

    메인 화면의 로그나 정보 영역을 확인하세요. 런타임 누락, 코어를 찾을 수 없음, 액세스 거부 메시지가 표시되면 구독을 가져오기 전에 해당 오류부터 해결하세요.

창을 닫아도 프로그램이 트레이에 계속 실행 중일 수 있습니다. 다시 실행하기 전에 작업 표시줄의 알림 영역을 확인해 ‘창이 숨겨진 상태’를 ‘실행 실패’로 오해하지 않도록 하세요. 나중에 업그레이드하거나 파일을 교체할 때는 트레이 메뉴에서 종료하고 관련 코어 프로세스도 끝났는지 확인해야 합니다.

3. 구독 가져오기: 주소 저장 후 업데이트 실행

구독 주소는 설정 목록을 가져오는 데 사용하며, 서버 주소나 일반 웹페이지 링크가 아닙니다. 계정 식별자나 액세스 토큰이 포함되는 경우가 많으므로 비밀번호처럼 안전하게 보관하세요. UI에서 구독 그룹을 추가하는 것은 주소를 저장한 것뿐입니다. 서버 목록을 표시하려면 업데이트를 실행해야 합니다.

  1. 그룹 추가

    메인 화면에서 ‘구독 그룹’ → ‘구독 그룹 설정’을 열고 항목을 추가한 다음 알아보기 쉬운 이름과 구독 주소를 입력하고 저장하세요. 버전에 따라 추가 버튼이 ‘추가’ 또는 더하기 기호로 표시될 수 있습니다.

  2. 구독 업데이트

    ‘구독 그룹’ 메뉴로 돌아가 ‘모든 구독 업데이트(프록시 사용 안 함)’를 실행하세요. 사용할 수 있는 연결이 아직 없다면 먼저 구독을 직접 가져오고 로그에 표시된 요청 결과를 확인하세요.

  3. 설정 확인

    서버 목록에 항목이 표시되는지, 유형·주소·포트가 올바른지 확인하세요. 그룹 필터가 적용된 상태라면 해당 그룹으로 전환해 필터 결과가 비어 있는 것을 가져오기 실패로 오해하지 않도록 하세요.

  4. 활성 서버로 지정

    서버 목록에서 원하는 항목을 마우스 오른쪽 버튼으로 클릭하고 ‘활성 서버로 지정’을 선택하세요. 행을 선택하는 것만으로 활성 설정이 바뀌지 않을 수 있으므로 활성 표시와 이후 생성되는 코어 로그를 확인하세요.

사용 가능한 연결이 있고 구독 서비스에서 프록시를 통한 접속을 요구한다면 메뉴에서 프록시를 사용해 업데이트하는 옵션을 시도할 수 있습니다. 사용 가능한 서버가 하나도 없을 때 이 옵션을 반복해서 선택하지 마세요. 업데이트 요청 자체에도 작동하는 프록시 연결이 필요합니다.

VMess, VLESS 등의 유형은 서버 설정과 일치해야 합니다. 포트, 사용자 식별자, 전송 방식, TLS, 서버 이름 등의 매개변수를 임의로 추측해 입력하지 마세요. 구독을 업데이트하면 직접 수정한 항목이 덮어써질 수 있습니다. 임시로 수정해야 한다면 먼저 별도 설정으로 복사하고 비교를 위해 원래 그룹을 보존하세요.

4. 시스템 프록시와 라우팅: 트래픽 진입점과 출구를 따로 설정하기

활성 서버를 선택한 후 메인 화면 하단이나 트레이 메뉴의 ‘시스템 프록시’에서 ‘시스템 프록시 자동 설정’을 선택하세요. 이 설정은 Windows의 프록시 진입점을 로컬 수신 주소로 지정합니다. 라우팅 모드는 트래픽이 코어에 들어온 뒤 프록시, 직접 연결 또는 다른 설정된 아웃바운드 중 무엇을 사용할지 결정합니다. 두 설정은 서로 다른 기능입니다.

첫 연결 확인: 시스템 프록시를 설정한 뒤 라우팅 확인

앱에서 프록시 사용
  • ‘시스템 프록시’에서 ‘시스템 프록시 자동 설정’을 선택하세요.
  • Windows의 ‘설정’ → ‘네트워크 및 인터넷’ → ‘프록시’에서 로컬 주소와 포트를 확인하세요.
  • 브라우저에서 별도의 프록시 확장 프로그램을 사용한다면 시스템 설정을 덮어쓰는지 확인하세요.
코어의 아웃바운드 선택
  • 먼저 클라이언트가 제공하는 일반 라우팅 사전 설정을 선택하세요.
  • 대상 도메인이 사용자 지정 규칙에 의해 직접 연결 또는 차단으로 설정되어 있는지 확인하세요.
  • 비교를 위해 잠시 전역 프록시로 전환한 뒤 확인을 마치면 평소 사용하던 규칙으로 되돌리세요.

시스템 프록시를 사용하지 않는 앱은 라우팅을 바꿔도 자동으로 프록시를 사용하지 않습니다. 코어에 들어온 뒤 트래픽이 직접 연결로 지정된 경우에도 시스템 프록시를 다시 설정하는 것만으로는 해결되지 않습니다.

처음 문제를 확인할 때 TUN을 켜고, DNS를 바꾸고, LAN 액세스를 활성화할 필요는 없습니다. 먼저 시스템 프록시를 따르는 브라우저 하나로 접속을 확인한 뒤 필요에 따라 범위를 넓히세요. TUN은 트래픽을 가로채는 방식이 다르고 가상 네트워크 인터페이스, 권한, 라우팅도 관련되므로 기본 설치 문제와 한 번에 함께 테스트하지 않는 것이 좋습니다.

종료하기 전에 클라이언트에서 ‘시스템 프록시 해제’를 선택한 다음 트레이 메뉴를 통해 종료하는 것이 좋습니다. 프로그램이 비정상 종료된 후 브라우저에 접속 문제가 생기면 Windows 프록시 설정으로 돌아가 실행이 중지된 로컬 포트를 계속 가리키는지 확인하세요. 이번 테스트에서 설정한 항목만 제거하고 회사나 다른 프로그램이 관리하는 프록시 설정은 덮어쓰지 마세요.

5. 로컬 포트: 실제 수신 상태와 점유 프로세스 확인

버전과 기존 설정에 따라 수신 포트는 다를 수 있습니다. 아래 두 숫자는 일반적인 설정을 파악하기 위한 예시이지, 모든 버전의 포트를 같은 값으로 바꾸라는 뜻은 아닙니다. ‘설정’ → ‘매개변수 설정’을 열어 로컬 수신 포트와 인바운드 유형을 확인하고 코어 시작 로그와 대조하세요.

10808
일반적인 로컬 인바운드 포트입니다. HTTP 지원 여부는 인바운드 유형에 따라 다릅니다.
10809
일부 이전 설정에서 사용하던 별도 HTTP 포트입니다. 현재 설정에 없을 수도 있습니다.

로그에 address already in use 또는 수신 바인딩 실패가 표시되면 먼저 해당 포트를 다른 클라이언트 인스턴스나 프로그램이 사용 중인지 확인하세요. PowerShell에서 아래의 읽기 전용 명령을 실행하면 됩니다. 실제 포트가 다르면 명령의 포트 번호를 바꾸세요.

Get-NetTCPConnection -State Listen -LocalPort 10808 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress, LocalPort, OwningProcess

Get-Process -Id 1234

두 번째 명령의 1234는 예시 프로세스 번호입니다. 앞 명령의 출력에 표시된 OwningProcess 값으로 바꾸세요. 결과가 없으면 조회 시점에 해당 TCP 수신 포트를 찾지 못했다는 뜻입니다. 아직 포트 수신이 시작되지 않았을 수도 있으므로 포트가 점유되었다고 단정할 수 없습니다.

6. 런타임 누락 및 코어 시작 실패

실행 파일을 두 번 클릭해도 전혀 열리지 않는 문제와 창은 정상적으로 뜨지만 연결할 수 없는 문제는 서로 다릅니다. 전자는 UI 프로그램의 종속성을, 후자는 코어 로그를 먼저 확인하세요. 구독을 다시 가져와도 런타임 누락은 해결되지 않으며, 런타임을 설치해도 서버 인증 매개변수 오류는 해결되지 않습니다.

증상먼저 확인할 항목해결 방법
.NET 설치 또는 업데이트 요청 표시안내에 표시된 프레임워크 이름, 버전, 아키텍처배포 패키지 요구 사항에 맞는 런타임을 설치하세요. Windows Desktop Runtime이 명시되어 있으면 기본 런타임만 포함된 구성 요소로 대체하지 마세요.
UI는 표시되지만 코어 파일을 찾을 수 없음압축 해제가 제대로 되었는지, 보안 프로그램이 파일을 처리했는지 확인출처가 신뢰할 수 있는지 확인한 뒤 전체 압축을 다시 푸세요. 다른 버전 폴더에서 코어 파일을 일부만 복사하지 마세요.
설정을 생성한 직후 코어가 종료됨로그에 기록된 첫 번째 구체적인 오류설정 필드 비호환, 리소스 파일 누락, 포트 바인딩 실패를 구분해 오류 유형에 맞게 해결하세요.
TLS 또는 인증서 오류시스템 시간, 서버 이름, 서버 설정 매개변수시스템 시간을 동기화하고 설정을 확인하세요. 인증서 검증을 끄는 것을 일반적인 해결 방법으로 여기지 마세요.

다른 버전의 가이드를 보고 특정 .NET 메이저 버전을 그대로 설치하지 마세요. 프레임워크 종속성은 배포 버전에 따라 달라질 수 있으므로 현재 시작 안내를 기준으로 확인하세요. 설치된 구성 요소를 확인하려면 명령줄에서 dotnet --list-runtimes를 실행할 수 있습니다. 명령을 사용할 수 없더라도 자체 포함 패키지가 실행되지 않는다고 단정할 수는 없습니다.

v2rayN과 V2Fly, Xray는 같은 계층의 소프트웨어가 아닙니다. v2rayN은 설정을 관리하며, V2Fly와 Xray는 Project V 생태계에서 발전한 코어 프로젝트입니다. VLESS나 특정 보안·전송 조합을 사용할 때는 해당 조합을 지원하는 코어가 필요합니다. 오류를 없애려고 UI에서 코어를 무작정 바꾸지 말고 서버에서 요구하는 사항부터 확인하세요.

7. 연결 확인: 앱 문제와 연결 문제를 구분하기

지연 시간 테스트가 성공해도 해당 테스트 방식의 요청에 응답이 있었다는 뜻일 뿐, 브라우저의 모든 접속 경로가 정상이라는 뜻은 아닙니다. 확인할 때는 같은 활성 서버와 같은 대상 주소를 유지하고 설정을 한 번에 하나씩만 바꾸세요. 그래야 어떤 변경이 결과에 영향을 주었는지 알 수 있습니다.

  1. 코어 작동 확인: 시작 로그에 설정 파싱 또는 포트 바인딩 오류가 없고 로컬 포트가 수신 중인지 확인하세요.
  2. 프록시 주소 직접 지정: 명령줄에서 로컬 HTTP 또는 혼합 인바운드에 직접 요청해 앱이 시스템 프록시를 사용하는지 여부를 변수에서 제외하세요.
  3. 브라우저 확인: 명령은 성공하지만 브라우저에서 실패한다면 시스템 프록시, 확장 프로그램, 브라우저별 네트워크 설정을 확인하세요.
  4. 평소 라우팅 규칙 복원: 전역 프록시로 임시 테스트했을 때 성공했다면 기존 라우팅으로 돌아가 분기 규칙 중 차이를 일으키는 항목이 있는지 확인하세요.

아래 명령은 로컬 10808 포트에서 HTTP 또는 혼합 프록시를 제공하는 경우에만 사용할 수 있습니다. SOCKS 인바운드만 있다면 HTTP 프록시 주소로 그대로 입력할 수 없습니다. --max-time 15는 요청 전체의 최대 대기 시간을 15초로 제한합니다. 속도 측정값이나 서비스 가용성을 보장하는 설정은 아닙니다.

curl.exe --proxy http://127.0.0.1:10808 --max-time 15 -I https://example.com/

로컬 포트에 연결할 수 없다는 메시지가 표시되면 수신 상태를 다시 확인하세요. 로컬 연결이 성립된 뒤 원격 요청이 시간 초과되면 활성 서버, 서버 상태, 라우팅 로그를 확인하세요. HTTP 응답을 받았다면 상태 코드가 성공이 아니더라도 HTTP 엔드포인트에서 응답을 받은 것입니다. 응답 내용을 확인해야 하며 무조건 프록시 실패로 판단해서는 안 됩니다.

설정이 끝나면 사용할 활성 설정, 수신 포트, 라우팅 모드를 기록하고 필요한 설정을 백업하세요. 업그레이드할 때는 되돌릴 수 있도록 기존 폴더를 보관하고 새 폴더에서 실행과 연결을 확인한 뒤 평소 사용하는 경로를 교체하세요. UI 버전, 코어, 사용자 지정 규칙을 동시에 변경하면 문제 원인을 찾기 어려워집니다.

v2rayN 다운로드