처음 설치한다면 먼저 운영체제와 프로세서 아키텍처에 맞는 패키지를 고른 뒤 Avalonia 데스크톱 버전과 WPF 버전 중에서 선택하세요. Windows에서는 기존 설정과 사용 습관을 기준으로 정하면 됩니다. macOS와 Linux에서는 해당 OS용 크로스 플랫폼 데스크톱 패키지를 선택하세요. 두 UI는 서로 다른 프록시 프로토콜이 아니며, UI 프레임워크만으로 연결 속도를 판단할 수도 없습니다. 아래에서 패키지 선택 순서, 종속성 확인, 설정 비교, 별도 디렉터리를 이용한 마이그레이션 방법을 설명합니다.
UI 프레임워크, 클라이언트, 프록시 코어의 차이
Avalonia와 WPF는 모두 그래픽 UI를 만드는 기술입니다. 서버 목록, 구독 그룹, 설정 창, 트레이 메뉴는 클라이언트 UI에 속하고, 연결 수립과 프로토콜 처리, 트래픽 전달은 클라이언트가 호출하는 프록시 코어가 담당합니다. ‘UI 변경’을 ‘프로토콜 변경’으로 생각하면 문제 해결 방향을 잘못 잡기 쉽습니다.
WPF는 Windows 데스크톱 UI 기술이므로 v2rayN WPF 버전은 Windows에서 사용합니다. Avalonia는 크로스 플랫폼 UI를 지원하며 v2rayN 데스크톱 버전은 이를 바탕으로 운영체제별 패키지를 제공합니다. 크로스 플랫폼이란 같은 UI 기술로 여러 운영체제용 프로그램을 만들 수 있다는 뜻이지, Windows 실행 파일 하나를 모든 운영체제에서 그대로 실행할 수 있다는 뜻은 아닙니다.
- v2rayN: 서버 정보를 저장하고 구독을 관리하며 실행 설정을 생성한 뒤 해당 프록시 코어를 호출합니다.
- Xray와 V2Ray: 프록시 코어입니다. 사용할 수 있는 코어와 기능은 설치한 버전 및 패키지 구성에 따라 달라집니다.
- VMess와 VLESS: 프로토콜입니다. 노드 사용 가능 여부는 전송 방식, 보안 설정, 서버 측 매개변수에도 좌우됩니다.
- Avalonia와 WPF: UI 기술입니다. 프로토콜명이나 코어명을 대신할 수 없습니다.
판단 순서: 먼저 코어를 확인하고 UI를 비교하세요
같은 VLESS 노드가 두 버전에서 다르게 작동한다면 먼저 코어 버전, 노드 매개변수, 라우팅, DNS 설정을 맞춰 보세요. 그다음 UI 설정이 저장되지 않았는지, 기능 위치가 다른지 확인하면 됩니다. 창 모양만 보고 프로토콜 호환성을 판단하지 마세요.
Avalonia 데스크톱 버전과 WPF 버전 비교
버전을 고를 때 중요한 차이는 대상 운영체제, 기능 위치, 실행 환경입니다. 아래 표는 선택을 돕기 위한 것이며 두 버전이 모든 출시 시점에 완전히 같은 기능을 제공한다는 뜻은 아닙니다. 새 기능의 적용 시점, 옵션 이름, UI 구성은 버전에 따라 달라질 수 있습니다.
| 비교 항목 | Avalonia 데스크톱 버전 | WPF 버전 |
|---|---|---|
| 지원 운영체제 | 배포 패키지에 따라 Windows, macOS 또는 Linux 선택 | Windows |
| 프로세서 아키텍처 | 대상 운영체제용 x64, ARM64 등 실제 제공 패키지와 일치해야 함 | Windows 기기와 배포 패키지에서 제공하는 아키텍처에 맞춰야 함 |
| 일상적인 사용 | 크로스 플랫폼 UI에서 구독, 서버, 설정 관리 | Windows UI에서 구독, 서버, 설정 관리 |
| 프록시 기능 | 실제 코어, 버전, 설정에 따라 결정 | 마찬가지로 실제 코어, 버전, 설정에 따라 결정 |
| 실행 종속성 | 패키지에 런타임이 포함됐는지와 운영체제의 기본 종속성에 따라 달라짐 | 패키지에 런타임이 포함됐는지에 따라 달라짐. 프레임워크 종속 패키지는 .NET Desktop Runtime이 필요함 |
| 시스템 통합 | 트레이, 시스템 프록시, 권한 동작이 운영체제에 따라 달라짐 | Windows의 트레이, 시스템 프록시, 권한 체계를 기준으로 동작 |
조건을 통제한 비교 테스트가 없다면 ‘특정 UI 버전이 항상 메모리를 적게 쓴다’거나 ‘항상 더 빠르다’고 단정할 수 없습니다. 메모리 사용량은 노드 수, 로그 표시 여부, 코어 실행 상태, 창을 열어 두었는지에 따라서도 달라집니다. 다운로드 속도는 대체로 네트워크 경로, 서버 부하, 라우팅 규칙 적용 여부에 더 큰 영향을 받습니다.
운영체제와 기존 설정에 맞춰 버전 선택
먼저 실행 가능한 패키지를 고른 다음 원하는 UI를 선택하세요. Windows에 새로 설치한다면 다운로드 페이지에 해당 아키텍처용 Avalonia 데스크톱 패키지가 있는지 확인하고, 이를 사용해 설정을 시작해도 좋습니다. WPF 환경을 안정적으로 사용 중이라면 UI 프레임워크만 바꾸려고 작업 디렉터리를 변경할 필요는 없습니다.
Avalonia 데스크톱 버전
추천새로 설치할 때 시작점으로 적합합니다. macOS나 Linux에서는 해당 운영체제용 패키지를 선택하고, Windows에서도 데스크톱 패키지를 사용할 수 있습니다. 운영체제마다 트레이, 프록시, 권한 설정은 별도로 확인해야 합니다.
추천 대상: 처음 설정하는 사용자, 여러 운영체제에서 사용하는 사용자, 비슷한 사용 흐름을 유지하고 싶은 사용자.
WPF 버전
기존 Windows 사용 흐름을 유지하기에 적합합니다. 구독, 라우팅, 시스템 프록시가 정상 작동한다면 계속 사용하면서 필요한 새 기능이 있는지를 전환 기준으로 삼아도 됩니다.
추천 대상: Windows만 사용하고 WPF UI에 익숙하며 안정적인 설정을 이미 갖춘 사용자.
- 운영체제 확인: Windows에서는 ‘설정’ → ‘시스템’ → ‘시스템 정보’에서 시스템 종류를 확인할 수 있습니다. macOS에서는 ‘이 Mac에 관하여’에서 칩 정보를 확인하세요.
- 아키텍처 확인: x64와 ARM64를 구분하세요. PC 브랜드만으로 판단하거나 운영체제 비트 수와 프로세서 아키텍처를 같은 것으로 보면 안 됩니다.
- 패키지 안내 확인: 대상 운영체제, 아키텍처, 런타임 포함 여부, 최소 시스템 요구 사항을 확인하세요.
- 필수 기능 확인: TUN, 특수 라우팅, 특정 코어가 필요하다면 선택한 버전에 해당 기능의 UI와 실행 구성 요소가 실제로 포함되어 있는지 확인하세요.
실행 종속성과 첫 실행 점검
‘.NET이 설치되어 있음’이 곧 ‘프로그램에 필요한 런타임이 설치되어 있음’을 뜻하지는 않습니다. 런타임은 버전, 아키텍처, 종류가 다릅니다. WPF 프로그램에는 데스크톱 지원 구성 요소가 필요하므로 일반 .NET Runtime만 설치해서는 요구 사항을 충족하지 못할 수 있습니다. SDK는 개발용이므로 첫 실행 오류를 해결하기 위한 기본 선택지로 설치하지 마세요.
종속성 확인: 배포 방식에 따라 두 가지 경로
런타임 포함 패키지
- 먼저 패키지 전체를 압축 해제한 뒤 압축 해제한 폴더에서 실행하세요.
- 실행 파일만 복사해 같은 폴더에 있어야 할 종속성 파일을 빠뜨리지 마세요.
- 실행되지 않으면 시스템 요구 사항, 실행 권한, 보안 프로그램 기록을 확인하세요.
시스템 런타임에 의존하는 패키지
- 오류 창에 표시된 런타임 이름과 주 버전을 기록하세요.
- 런타임 아키텍처가 애플리케이션 패키지와 일치하는지 확인하세요.
- WPF 패키지는 안내에 따라 .NET Desktop Runtime을 설치한 다음 프로그램을 다시 실행하세요.
결론: 패키지 안내에 따라 필요한 종속성을 먼저 설치하세요. 정체를 모르는 런타임을 여러 버전 연달아 설치하며 해결하려고 하지 마세요.
Windows 사용자는 터미널에서 아래 명령을 실행해 설치된 .NET 런타임을 확인할 수 있습니다. 명령을 찾을 수 없다면 패키지 안내를 보고 시스템 런타임이 필요한지 확인하세요. 런타임 포함 패키지는 이 명령 결과만으로 실행 가능 여부를 판단할 수 없습니다.
dotnet --list-runtimes
결과를 확인할 때 Microsoft.WindowsDesktop.App과 Microsoft.NETCore.App의 차이에 유의하고 오류 메시지의 버전 요구 사항과 대조하세요. macOS와 Linux용 Avalonia 패키지는 시스템 그래픽 라이브러리나 실행 권한에 의존할 수도 있으므로 Windows의 런타임 설치 방법을 그대로 적용할 수 없습니다. 창이 열리지 않는 문제와 코어 연결 실패는 따로 기록하세요. 후자는 대개 클라이언트 로그를 확인해야 합니다.
구독, 시스템 프록시, 리스닝 포트 확인 순서
두 UI에서 모두 서버 목록이 보인다고 해서 현재 연결 환경까지 같다는 뜻은 아닙니다. ‘구독 그룹’ → ‘구독 그룹 설정’, 현재 선택된 서버, ‘설정’ → ‘매개변수 설정’, ‘라우팅 설정’ 순서로 확인하세요. 버튼 위치와 하위 항목 이름은 버전에 따라 달라질 수 있으니 현재 UI를 기준으로 확인해야 합니다.
포트는 이전 과정에서 빠뜨리기 쉬운 구체적인 설정입니다. 아래에서는 로컬 프록시 예시로 127.0.0.1:10808을 사용하고, 충돌이 발생했을 때 후보 포트로 10818을 제시합니다. 이 값은 확인 방법을 설명하기 위한 예시이며 모든 버전의 기본 포트가 같다는 뜻은 아닙니다.
- 구독: ‘구독 그룹’ → ‘구독 그룹 설정’에서 주소를 확인한 다음 ‘모든 구독 업데이트’를 실행하세요. 구독 주소에는 접속 정보가 포함될 수 있으므로 공개 스크린샷에 노출하지 마세요.
- 리스닝: ‘설정’ → ‘매개변수 설정’에서 로컬 리스닝 관련 항목을 찾으세요. 일부 버전에서는 ‘Core 기본 설정’에 있습니다. 필드가 혼합 포트인지 별도의 SOCKS·HTTP 포트인지 확인한 뒤 애플리케이션 프록시를 설정하세요.
- 시스템 프록시: Windows 메인 창이나 트레이의 ‘시스템 프록시’ 메뉴에서 상태를 확인하세요. 노드를 선택했다고 시스템 프록시가 자동으로 켜지는 것은 아닙니다.
- 라우팅: ‘라우팅 설정’에서 규칙과 적용 순서를 확인하세요. ‘중국 본토 우회(Whitelist)’를 사용하는 경우 일부 요청이 직접 연결되는 것은 규칙에 따른 동작이므로 곧바로 프록시 오류로 판단하면 안 됩니다.
- DNS와 TUN: DNS 정책과 TUN 상태를 각각 기록하세요. TUN은 해당 코어, 운영체제 지원, 권한이 필요하며 UI를 바꾼다고 자동으로 이어지는 공통 설정이 아닙니다.
이전 후 점검: 클라이언트 인스턴스 하나만 실행
이전 버전을 종료하고 기존 코어도 중지됐는지 확인한 다음 새 버전을 실행하세요. 포트 사용 중 로그가 계속 표시되면 먼저 점유 프로세스를 찾으세요. 두 버전을 동시에 실행해야 하는 경우에만 두 번째 인스턴스에 다른 포트를 지정해 시스템 프록시를 두 UI가 동시에 변경하지 않도록 하세요.
WPF에서 Avalonia로 전환할 때 별도 디렉터리로 이전하기
UI를 바꿀 때 기존 디렉터리를 그대로 덮어쓰지 마세요. 버전마다 데이터 구조, 설정 항목, 마이그레이션 방식이 다를 수 있고 폴더 전체를 복사하면 기존 코어와 새 파일이 섞일 수 있습니다. 먼저 되돌릴 수 있는 복사본을 보관하고 새 환경을 검증하는 편이 문제가 생긴 뒤 옛 설정을 찾는 것보다 수월합니다.
- 기존 환경 기록: 클라이언트 버전, 사용 중인 코어, 활성 구독 그룹, 리스닝 포트, 라우팅 이름, 시스템 프록시 상태를 기록하세요. 사용자 지정 DNS나 TUN 설정이 있다면 함께 적어 두세요.
- 자료 보관: 현재 버전에서 제공하는 내보내기 또는 백업 기능을 사용하세요. 명확한 메뉴가 없다면 프로그램을 종료한 뒤 설정 데이터 폴더를 백업하세요. 백업에는 노드 접속 정보가 포함될 수 있으므로 안전한 위치에 보관해야 합니다.
- 새 디렉터리 준비: 새 패키지 전체를 별도 디렉터리에 압축 해제하세요. 기존 디렉터리를 덮어쓰거나 두 프로그램이 같은 설정 파일을 함께 수정하게 하지 마세요.
- 구독을 먼저 다시 설정: 새 UI에서 구독 그룹을 추가하고 업데이트하세요. 구독에는 보통 노드 정보만 포함되며 로컬 라우팅, 리스닝 포트, DNS, 시스템 프록시 설정까지 자동으로 복원되지는 않습니다.
- 설정을 하나씩 복원: 먼저 노드 하나를 테스트하고 라우팅과 DNS를 복원한 뒤 필요에 따라 TUN을 켜세요. 설정 종류를 하나씩 바꿀 때마다 확인하면 실패한 단계를 찾기 쉽습니다.
- 되돌리는 방법 확인: 새 버전에서 문제가 생기면 먼저 시스템 프록시를 끄고 프로그램을 종료한 다음 기존 버전을 복원하세요. 이미 리스닝을 중지한 포트를 시스템 프록시가 계속 가리키지 않도록 하세요.
운영체제 간에 이전할 때는 특히 로컬 설정을 다시 구성해야 합니다. Windows의 디렉터리 경로, 시작 프로그램 등록 방식, 인증서 파일 위치, 권한 설정을 macOS나 Linux에 그대로 적용할 수 없습니다. 구독을 가져올 수 있다는 사실은 노드 정보를 읽을 수 있다는 뜻일 뿐, 로컬 프록시 연결이 모두 설정됐다는 뜻은 아닙니다.
버전 선택 및 전환 관련 자주 묻는 질문
Windows에서 WPF를 문제없이 사용 중인데 바꿔야 하나요?
프레임워크 이름만 보고 바꿀 필요는 없습니다. 먼저 현재 필요한 기능 중 빠진 것이 무엇인지 정리하고 대상 버전의 안내를 확인하세요. 꼭 시험해 보고 싶다면 별도 디렉터리에 설치하고 기존 설정을 보존한 상태에서 같은 노드와 라우팅으로 비교하세요.
데스크톱 버전으로 바꾸면 기존 VMess 또는 VLESS 구독도 계속 쓸 수 있나요?
먼저 ‘구독 그룹’ → ‘구독 그룹 설정’에서 기존 주소를 추가하고 업데이트하세요. 구독을 읽고 연결할 수 있는지는 구독 형식, 노드 매개변수, 코어 지원 여부에 따라 다릅니다. 오류가 발생하면 UI 종류만 보지 말고 업데이트 로그를 확인하세요.
노드는 보이는데 브라우저가 열리지 않는 이유는 무엇인가요?
먼저 활성 서버와 코어 로그를 확인한 다음 ‘시스템 프록시’ 상태를 확인하세요. 브라우저에 프록시를 직접 설정했다면 현재 리스닝 주소와 포트가 입력값과 일치하는지 확인하세요. 포트를 10818로 바꿔도 10808을 가리키는 애플리케이션이 자동으로 따라 바뀌지는 않습니다.
새 UI에서 예전 안내서에 나온 버튼을 찾을 수 없으면 어떻게 하나요?
스크린샷의 위치만 따라 하지 말고 ‘구독 그룹’, ‘매개변수 설정’, ‘라우팅 설정’처럼 기능 이름으로 찾으세요. 먼저 클라이언트 버전을 확인하고, 현재 빌드에 필요한 옵션이 없다면 해당 버전의 안내를 살펴보세요. 설정 메뉴 대신 생성된 코어 설정 파일을 임의로 수정하지 마세요.
두 버전을 모두 설치해 동시에 실행하면서 비교해도 되나요?
처음 확인할 때는 번갈아 실행하는 것을 권장합니다. 동시에 실행해야 한다면 설정 디렉터리, 리스닝 포트, 시스템 프록시 제어를 반드시 분리하세요. 두 인스턴스가 모두 시스템 프록시를 자동으로 설정하게 하지 마세요. 비교 전에 노드, 라우팅, DNS도 맞춰야 결과를 비교할 수 있습니다.