Project V는 프로젝트 생태계, V2Ray는 그 안의 핵심 소프트웨어, V2Fly는 V2Ray 개발을 이어가는 커뮤니티, Xray는 관련 코드에서 발전한 독립 분기입니다. v2rayN, v2rayNG, v2flyNG는 사용자가 조작하는 그래픽 클라이언트입니다. 클라이언트를 고르거나 구독 프로토콜을 확인하고 코어를 바꾸려는 사용자를 위해 각 이름이 가리키는 범위와 기존 설정에 따른 선택 기준을 설명합니다.
먼저 프로젝트·코어·클라이언트·프로토콜로 구분하기
‘V2Ray 다운로드’를 검색하면 프로젝트 소개, 명령줄 프로그램, 그래픽 클라이언트가 함께 나올 수 있습니다. 서로 관련은 있지만 같은 종류는 아닙니다. 안내를 따라 해도 되는지 판단하려면 이름이 비슷한지 비교하기보다 먼저 어떤 계층을 다루는지 확인해야 합니다.
| 구분 | 대표 이름 | 주요 역할 |
|---|---|---|
| 프로젝트 및 커뮤니티 | Project V、V2Fly | 프로젝트 운영, 코드·문서·관련 도구 유지보수 |
| 프록시 코어 | V2Ray、Xray | 로컬 연결을 수신하고 라우팅, DNS, 프로토콜 연결 처리 |
| 그래픽 클라이언트 | v2rayN、v2rayNG、v2flyNG | 구독 관리, 설정 편집, 코어 실행 및 로그 표시 |
| 통신 프로토콜 | VMess、VLESS | 클라이언트와 서버 간 인증 및 데이터 통신 방식 규정 |
데스크톱을 예로 들면, 사용자가 v2rayN에서 서버를 선택하고 시스템 프록시를 켜면 앱은 로컬 프록시에 연결되고 코어는 규칙에 따라 아웃바운드를 선택합니다. 인터페이스는 설정을 만들고 관리하며, 실제로 원격 서버와 프로토콜 연결을 맺는 것은 코어입니다. 인터페이스를 바꿔도 프로토콜이 바뀌는 것은 아니며, 구독을 업데이트해도 코어가 업데이트되는 것은 아닙니다.
Project V에서 V2Fly·Xray까지: 분기 관계 이해하기
Project V의 역사는 2015년 무렵으로 거슬러 올라가며, V2Ray는 이 프로젝트 생태계의 주요 구현체입니다. 단일 프로토콜만을 중심으로 설계된 것이 아니라 인바운드, 아웃바운드, 전송, 라우팅 등의 기능을 조합합니다. 따라서 V2Ray는 VMess의 다른 이름도 아니고 단순한 구독 관리 인터페이스도 아닙니다.
2020년 무렵 기존 프로젝트의 유지보수 속도가 달라지면서 V2Fly 커뮤니티가 V2Ray 코어와 관련 생태계의 개발을 이어받았습니다. 이후 같은 기술 계보에서 Xray가 독립 분기로 발전해 XTLS를 비롯한 연결 기술을 계속 개선했습니다. 여기서 ‘분기’는 코드와 역사의 관계를 뜻하며, 이후 양쪽의 모든 기능이 동시에 출시된다는 의미는 아닙니다.
Project V 프로젝트 생태계
└─ V2Ray 코어 및 관련 도구
├─ V2Fly 커뮤니티가 V2Ray 개발을 이어감
│ └─ v2flyNG: Android 그래픽 클라이언트, V2Fly 코어 통합
└─ Xray: 관련 코드에서 발전한 독립 분기
└─ v2rayNG: Android 그래픽 클라이언트, Xray 코어 통합
v2rayN: 데스크톱 그래픽 클라이언트
└─ 여러 코어 관리 가능. 실제 선택지는 배포 패키지와 설정에 따라 다름
이 관계도는 주요 출처와 일반적인 조합을 보여줄 뿐, 상하위 관리 구조를 나타내지는 않습니다. v2rayN은 V2Fly나 Xray의 다른 이름이 아니며, 두 Android 클라이언트도 같은 프로그램의 아이콘만 바꾼 것이 아닙니다. 각 클라이언트는 통합된 코어의 설정 기능, 구독 파싱, 시스템 네트워크 연결 방식을 지원합니다.
- V2Fly는 새로운 프로토콜이 아닙니다: 이 이름은 커뮤니티와 커뮤니티가 유지보수하는 V2Ray 구현체를 가리킵니다.
- Xray는 V2Ray의 범용 최신 버전이 아닙니다: 독립적으로 발전하는 분기이므로 업데이트 경로와 설정 세부 사항을 별도로 확인해야 합니다.
- 같은 계보라고 설정이 완전히 호환되는 것은 아닙니다: 같은 JSON 필드라도 지원 범위, 기본값, 동작이 다를 수 있으므로 이전 전에 검증해야 합니다.
클라이언트별로 어떤 코어를 사용할까
먼저 운영체제로 클라이언트를 좁힌 다음 구독 요구 사항에 맞춰 선택하면 됩니다. 데스크톱용 v2rayN은 Windows, macOS, Linux를 지원하며, 실제 설치 파일과 기능은 해당 배포판을 확인하세요. Android에서는 주로 v2rayNG와 v2flyNG 중에서 고릅니다. 아래 추천은 ‘서버에서 Xray 기능을 명시적으로 요구하는 경우’에 한정되며, 모든 연결 환경의 성능을 비교한 순위가 아닙니다.
v2rayNG: Android와 Xray 코어
추천Xray 코어를 통합합니다. VLESS, REALITY 또는 XTLS Vision 설정이 있다면 먼저 현재 배포판이 서버에서 요구하는 전체 매개변수를 지원하는지 확인한 뒤 가져오세요.
추천 대상: Android 사용자이며 구독에서 Xray 관련 기능을 명시적으로 요구하는 경우
v2flyNG: Android와 V2Fly 코어
V2Fly 코어를 통합하며, V2Fly 환경에서 이미 검증한 연결 설정을 계속 사용할 때 적합합니다. 클라이언트 이름이 V2Ray와 더 비슷한지가 아니라 프로토콜·전송 방식·매개변수의 호환성을 기준으로 선택하세요.
추천 대상: Android 사용자이며 기존 서버와 설정이 V2Fly 기능을 기준으로 제공되는 경우
v2rayN: 데스크톱과 선택 가능한 코어
데스크톱 구독, 라우팅, 코어 실행을 관리합니다. Xray 또는 V2Fly 관련 설정을 사용하기 전에 배포 패키지에 포함된 코어, 설정에서 선택한 코어, 실제 실행 결과를 확인하세요.
추천 대상: 데스크톱에서 연결을 관리하려는 Windows·macOS·Linux 사용자
선택 순서: 운영체제 → 서버 요구 사항 → 실제 코어
먼저 기기에 설치할 수 있는 클라이언트를 확인하고, 구독에서 요구하는 프로토콜 조합을 살펴본 뒤 실행 로그에서 실제 코어를 확인하세요. 클라이언트 이름에 ‘v2ray’가 들어간다고 해서 V2Fly 코어가 실행된다고 단정하면 안 됩니다.
그래픽 클라이언트 업데이트와 코어 업데이트도 별개입니다. 새 인터페이스에서 구독 파싱이 개선되더라도 실제 연결은 현재 로드된 코어가 처리합니다. 문제를 확인할 때는 창 제목만 캡처하지 말고 클라이언트 이름, 현재 코어 이름, 로그에 표시된 코어 버전을 함께 기록하세요.
VMess·VLESS·REALITY: 프로토콜 이름만으로 설정을 판단하지 마세요
VMess와 VLESS는 프록시 프로토콜 계층에 속하고, WebSocket 등은 전송 방식이며, TLS와 REALITY는 연결 보안 메커니즘과 관련이 있습니다. XTLS Vision은 특정 흐름 제어 설정과 연관됩니다. 각 항목은 서로 다른 계층에 있으므로 가져오기에 실패했다고 임의로 바꿔서는 안 됩니다. 특히 VMess 설정의 프로토콜을 VLESS로 바꾸면 서버가 자동으로 맞춰 줄 것이라고 기대할 수 없습니다.
| 설정 조합 | 확인할 매개변수 | 선택 시 유의 사항 |
|---|---|---|
| VMess + WebSocket + TLS | 주소, 포트, 사용자 ID, 경로, Host, 서버 이름 | 일반적인 코어에서 관련 기능을 지원하지만 각 필드는 서버 설정과 일치해야 합니다. |
| VLESS + TLS | 사용자 ID, 전송 방식, 서버 이름, 흐름 제어 요구 사항 | VLESS라는 표시만 보지 말고 현재 구현이 지원하는 구체적인 조합을 확인하세요. |
| VLESS + REALITY + Vision | 서버 이름, 공개 키, short ID, 지문, flow | 일반적으로 Xray 관련 설정으로 취급하고 양쪽의 지원 여부를 확인하세요. |
예를 들어 원격 포트가 443이라고 해서 연결 대상 포트만 알 수 있을 뿐, 일반 HTTPS 연결이라고 단정할 수는 없습니다. TLS나 REALITY 매개변수를 생략할 근거도 되지 않습니다. VMess 사용자 ID가 맞더라도 WebSocket 경로가 틀리면 핸드셰이크에 실패할 수 있습니다. VLESS 주소에 연결할 수 있어도 공개 키나 서버 이름이 일치하지 않으면 라우팅 모드를 바꿔 해결할 수 없습니다.
- 먼저 서버 안내를 확인하세요: 공유 링크의 시작 부분만 보지 말고 필요한 클라이언트와 코어 기능, 전체 매개변수를 확인하세요.
- 그다음 가져온 설정을 확인하세요: 노드 편집 화면을 열어 전송 방식, 연결 보안, 흐름 제어 항목이 누락되지 않았는지 살펴보세요.
- 마지막으로 로그를 확인하세요: 설정 파싱 오류, 핸드셰이크 실패, 연결 시간 초과를 구분하고 모든 문제를 코어 비호환으로 돌리지 마세요.
REALITY는 ‘Xray를 설치하면 자동으로 활성화되는’ 기능이 아닙니다. 서버에 해당 설정이 적용되어 있어야 하고 클라이언트에도 일치하는 매개변수가 있어야 합니다. 마찬가지로 구독에 VMess 항목이 있다고 해서 특정 코어를 반드시 사용해야 하는 것은 아닙니다. 실제 지원 여부와 연결 결과를 기준으로 판단하세요.
데스크톱과 Android에서 같은 구독 사용하기: 설정을 일치시키는 방법
하나의 구독 링크를 여러 기기에 배포할 수 있지만, 같은 구독 주소를 사용한다고 가져온 뒤 모든 필드와 항목이 같아지는 것은 아닙니다. 클라이언트의 파싱 기능, 필터 옵션, 업데이트 시각, 코어 지원 범위에 따라 결과가 달라집니다. 먼저 설정 하나를 검증한 다음 나머지 항목을 일괄 업데이트하세요.
같은 구독을 사용하고 로컬 연결 지점은 기기별로 확인
데스크톱: v2rayN
- 구독을 가져온 뒤 대표 설정 하나를 골라 프로토콜, 전송 방식, 보안 매개변수를 확인합니다.
- 연결을 시작하고 로그에서 실제로 실행된 코어를 확인합니다.
- 시스템 프록시를 사용한다면 앱이 시스템 프록시 설정을 따르는지 확인합니다.
Android: v2rayNG 또는 v2flyNG
- 서버 요구 사항에 맞는 코어를 사용하는 클라이언트를 선택합니다.
- 처음 연결을 시작할 때 시스템 VPN 권한을 승인합니다.
- 앱별 설정을 확인해 대상 앱이 트래픽 처리 범위에 포함되어 있는지 확인합니다.
구독은 원격 설정의 출처를 통일할 뿐입니다. 로컬 포트, 시스템 프록시, VPN 권한, 앱별 적용 범위는 각 기기에서 따로 설정해야 합니다.
데스크톱 시스템 프록시와 Android의 VPN 트래픽 처리는 연결 방식이 다릅니다. 전자는 보통 앱이 프록시 설정을 따르는 방식이고, 후자는 시스템 권한을 받은 가상 네트워크 인터페이스로 트래픽을 처리합니다. 양쪽에서 같은 원격 설정을 선택해도 코어로 전달되는 앱, DNS 해석 위치, 사설 주소의 직접 연결 방식이 서로 다를 수 있습니다.
- 양쪽에서 같은 설정을 사용해 주소, 원격 포트, 프로토콜, 전송 방식, 보안 유형을 기록하세요. 사용자 ID, 구독 주소, 키는 공개하지 마세요.
- 기기별로 구독을 업데이트하고 업데이트 시각을 확인한 뒤 필터링되어 표시되지 않는 항목이 있는지 살펴보세요.
- 같은 대상 사이트로 테스트하세요. 먼저 로컬 연결 지점이 트래픽을 받는지 확인하고, 이어서 코어의 아웃바운드와 DNS 로그를 살펴보세요.
- 연결이 정상임을 확인한 다음 라우팅을 조정하세요. 코어, DNS, 규칙을 동시에 바꾸면 무엇이 결과를 바꿨는지 파악하기 어렵습니다.
생태계 선택 FAQ: 어디서 확인할까
v2rayN을 설치했는데 로그에 Xray가 표시되는 이유는 무엇인가요?
클라이언트와 코어의 역할이 다르기 때문에 정상적으로 나타날 수 있습니다. 먼저 시작 로그 첫 부분에서 코어 이름을 확인한 다음 현재 설정에서 어떤 코어를 선택했는지 살펴보세요. 세부 매개변수를 확인하려면 v2rayN의 ‘설정’ → ‘매개변수 설정’에서 관련 항목을 찾을 수 있습니다. 배포판에 따라 메뉴 이름이 다를 수 있으므로 현재 인터페이스를 기준으로 확인하세요.
v2rayNG와 v2flyNG 사이에 데이터 디렉터리 전체를 그대로 복사해도 되나요?
대상 클라이언트에서 구독이나 공유 링크를 다시 가져오는 방법을 우선 사용하고, 내부 데이터 디렉터리를 통째로 덮어쓰지는 마세요. 가져온 뒤 설정 하나를 열어 주요 필드를 확인하고 VPN 권한과 앱별 설정을 다시 지정하세요. 구독은 설정 출처를 제공할 뿐 시스템 권한을 이전해 주지는 않습니다.
구독을 가져올 수 있는데 시작할 때 오류가 발생하는 이유는 무엇인가요?
가져오기에 성공했다는 것은 클라이언트가 구독 형식을 파싱했다는 뜻일 뿐입니다. 실행 로그를 확인하세요. 알 수 없는 필드나 잘못된 설정을 알리는 경우 현재 코어와 프로토콜 조합을 확인해야 합니다. 주소가 이미 사용 중이라는 메시지가 나오면 로컬 수신 포트를 살펴보세요. 예를 들어 10808을 다른 프로세스가 사용 중이라면 충돌하는 프로세스를 중지하거나 연결 지점의 포트를 바꾸고, 해당 연결 지점을 사용하는 앱도 함께 조정해야 합니다.
Xray로 바꾸면 속도가 반드시 빨라지나요?
코어 이름만으로는 판단할 수 없습니다. 같은 원격 서버, 같은 네트워크, 같은 대상을 고정하고 매번 설정 하나만 바꾼 뒤 연결 성공 여부와 로그 오류를 기록하세요. 서버 부하, 네트워크 패킷 손실, 전송 방식, 라우팅이 사용 경험에 더 큰 영향을 줄 수 있습니다. 호환되지 않는 설정부터 바로잡은 다음 성능을 비교하세요.
코어를 바꾸기 전에 복구할 방법을 마련하세요
계보를 이해하는 목적은 무작정 설정을 바꾸며 시행착오를 겪지 않는 데 있습니다. 기존 연결이 정상이라면 이름이 바뀌었다는 이유만으로 코어를 교체할 필요가 없습니다. 서버에서 새로운 기능을 요구하더라도 인터페이스만 업데이트해서는 안 됩니다. 기존 설정을 보존하고 테스트 설정을 추가한 뒤 검증을 마치면 일상적으로 사용하는 설정을 전환하는 편이 안전합니다.
- 백업 범위: 클라이언트 설정을 내보내고 구독 그룹, 현재 라우팅 모드, DNS 설정, 로컬 연결 포트를 기록하세요.
- 테스트 범위: 설정 하나와 대상 하나부터 시험하고, 직접 연결해야 하는 사설 네트워크 주소가 예상대로 처리되는지 확인하세요.
- 로그 기록: 코어 시작 정보와 관련된 첫 오류를 저장하세요. 로그를 공유하기 전에 구독 토큰, 사용자 ID, 키를 가리세요.
- 복구 조건: 새 설정이 시작되지 않거나 주요 앱을 사용할 수 없다면 기존 설정으로 되돌린 다음 호환되지 않는 필드를 하나씩 확인하세요.
정리하면 Project V는 기술의 출처를, V2Fly와 Xray는 코어의 발전 경로를, 세 가지 클라이언트는 플랫폼별 연결 관리 방식을 보여줍니다. 실제로 선택할 때는 세 가지를 확인하면 됩니다. 기기에 무엇을 설치할 수 있는지, 서버가 무엇을 요구하는지, 실행 중 실제로 어떤 코어가 로드되는지입니다. 연결 지점과 트래픽 분할 설정을 더 알아보려면 입문 가이드 또는 고급 설정 안내를 참고하세요.