Project V는 프로젝트 생태계, V2Fly는 V2Ray를 유지 관리하는 커뮤니티, Xray는 V2Ray에서 파생된 독립 코어 프로젝트입니다. v2rayN, v2rayNG, v2flyNG는 사용자가 조작하는 클라이언트입니다. 클라이언트를 고르거나 구독을 옮기거나 프로토콜 호환성을 확인하려는 경우, 먼저 각 이름이 가리키는 계층을 구분하고 노드 설정에 맞는 코어를 선택한 뒤 로그로 연결 상태를 확인하세요. 이름만 보고 사용 가능 여부를 판단하지 않는 것이 중요합니다.
Project V, V2Ray, V2Fly는 각각 무엇인가요?
Project V는 처음에 모듈형 네트워크 프록시 도구를 중심으로 시작했으며, V2Ray는 그중 가장 핵심적이고 잘 알려진 구현입니다. 특정 프록시 프로토콜 하나를 뜻하는 것이 아니라 인바운드, 아웃바운드, 라우팅, DNS, 전송 방식을 함께 구성하는 도구입니다. 일상적으로 말하는 'V2Ray 노드'는 서비스 제공자가 여러 연결 설정을 통칭하는 표현인 경우가 많으므로, 이 말만으로 VMess인지 VLESS인지 판단할 수 없습니다.
V2Fly는 V2Ray를 이어서 유지 관리하고 발전시키는 커뮤니티입니다. 커뮤니티 이름과 프로그램 이름을 구분해야 합니다. V2Fly가 관리하는 핵심 프로그램은 보통 V2Ray 또는 v2ray-core라고 부릅니다. 클라이언트 설명에 'V2Fly 코어'라고 적혀 있다면 대개 V2Fly 유지 관리 체계의 코어 구현을 사용한다는 뜻이지, V2Fly라는 별도의 네트워크 프로토콜이 있다는 의미는 아닙니다.
| 이름 | 해당 계층 | 주요 역할 | 이 정보만으로는 알 수 없는 것 |
|---|---|---|---|
| Project V | 프로젝트 생태계 | 모듈형 네트워크 프록시 도구를 중심으로 형성된 프로젝트 배경 | 특정 구독의 호환 여부 |
| V2Ray | 코어 프로그램 및 프로젝트 이름 | 연결, 프로토콜, 라우팅, DNS 등의 설정 처리 | 이름이 같은 모든 클라이언트가 동일한 코어를 사용한다는 점 |
| V2Fly | 커뮤니티 및 유지 관리 체계 | V2Ray 코어 및 관련 문서 유지 관리 | 노드에서 사용하는 프로토콜 |
| Xray | 독립 코어 프로젝트 | 포크를 바탕으로 프로토콜과 전송 기능을 지속적으로 발전 | 어떤 설정이든 코어 간에 그대로 사용할 수 있다는 점 |
| v2rayN、v2rayNG、v2flyNG | GUI 클라이언트 | 노드 가져오기, 구독 관리, 설정 생성 및 코어 실행 | 클라이언트 이름만으로 모든 기능을 판단할 수 있다는 점 |
따라서 'V2Fly와 v2rayN 중 어느 쪽이 더 나은가요?'라는 질문은 유지 관리 커뮤니티와 GUI 클라이언트라는 서로 다른 계층을 한데 묶은 것입니다. 대신 현재 v2rayN이 어떤 코어를 실행하는지, 그 코어가 노드에서 요구하는 프로토콜·전송 방식·보안 매개변수를 지원하는지 확인하는 편이 좋습니다.
Xray와 V2Ray의 관계: 공통 기반이 설정 호환을 보장하지는 않습니다
Xray는 2020년 V2Ray 코드 기반에서 포크되어 독립적으로 발전하기 시작했습니다. 두 프로젝트는 기술적 기반을 공유하므로 설정에서 인바운드, 아웃바운드, 라우팅 개념이 비슷한 경우가 많습니다. 그렇다고 모든 필드와 전송 옵션, 프로토콜 확장이 양쪽에 동일하게 구현되어 있다는 뜻은 아닙니다.
호환성을 확인할 때는 'V2Ray 지원'이라는 문구만 보지 말고 노드 설정을 여러 항목으로 나누어 살펴보세요. VMess와 VLESS는 프로토콜이고, TCP와 WebSocket 등은 전송 관련 옵션이며, TLS와 REALITY는 연결 보안 방식과 관련됩니다. REALITY는 VMess나 VLESS와 나란히 선택하는 프록시 프로토콜이 아니며, VLESS를 사용한다고 전송 암호화가 자동으로 활성화되는 것도 아닙니다.
- 먼저 프로토콜을 확인하세요: 공유 링크가
vmess://로 시작하는지vless://로 시작하는지 확인하고, 가져온 뒤 클라이언트에 표시되는 프로토콜 유형도 살펴보세요. - 다음은 전송 방식입니다: TCP 또는 WebSocket 등의 설정을 확인하세요. WebSocket을 사용하는 경우 경로와 Host도 확인해야 하며, 서버 주소만 입력해서는 안 됩니다.
- 보안 매개변수도 확인하세요: TLS에서는 서버 이름과 인증서 검증을, REALITY에서는 서버 이름, 공개 키, short ID 등의 매개변수를 확인해야 합니다.
- 마지막으로 확장 기능을 확인하세요: 노드에서
xtls-rprx-vision흐름 제어를 지정했다면 클라이언트와 사용 중인 코어 모두 해당 설정을 표현하고 처리할 수 있는지 확인하세요.
마찬가지로 JSON을 파싱할 수 있다는 것은 문법이나 필드 구조가 일부 검사를 통과했다는 뜻일 뿐, 서버와의 협상 성공을 보장하지 않습니다. 환경을 옮길 때는 시작 로그와 연결 로그를 확인하세요. 설정 필드를 인식하지 못하는 문제, 핸드셰이크 실패, 연결 시간 초과는 각각 점검 방향이 다릅니다.
v2rayN, v2rayNG, v2flyNG 중 무엇을 선택할까요?
v2rayN은 구독 관리, 노드 선택, 시스템 프록시, 설정 생성 등을 담당하는 데스크톱 클라이언트입니다. 실제 연결은 클라이언트가 호출하는 코어가 처리합니다. 사용할 수 있는 코어와 인터페이스 옵션은 배포 패키지와 버전에 따라 달라지므로 설치 파일 안내, 설정 화면, 시작 로그를 확인하세요. 이름에 'v2ray'가 들어간다고 해서 V2Ray만 실행한다고 단정할 수 없습니다.
Android에서는 v2rayNG가 Xray 코어를 기반으로 하며, v2flyNG는 V2Fly가 유지 관리하는 V2Ray 코어를 사용합니다. 두 클라이언트의 이름은 비슷하지만 코어 기능과 인터페이스에서 제공하는 항목이 완전히 같다고 보면 안 됩니다. 아래 권장 사항은 Xray 기능이 필요한 경우를 위한 것이며, 모든 네트워크 환경의 속도를 비교한 결과는 아닙니다.
v2rayNG: Android용 Xray 구성
권장 사항노드가 VLESS + REALITY를 사용하거나 Xray 기능을 명시적으로 요구한다면 v2rayNG가 관련 매개변수를 지원하는지 먼저 확인하세요. 가져온 뒤 보안 유형, 서버 이름, 흐름 제어를 점검하고 노드 이름만 확인해서는 안 됩니다.
적합한 사용자: Android 기기에서 Xray 설정이 포함된 구독을 사용하는 경우
v2flyNG: Android용 V2Fly 구성
V2Fly가 유지 관리하는 V2Ray 코어를 사용합니다. 이미 검증된 V2Ray 설정이 있고 기존 설정 체계를 계속 사용하려는 경우에 적합합니다. 선택하기 전에는 구체적인 프로토콜과 전송 기능을 확인하세요.
적합한 사용자: Android 기기에서 사용 가능한 V2Ray 설정을 이미 보유한 경우
v2rayN: 데스크톱 구독 및 설정 관리
Windows, macOS, Linux 데스크톱 환경에서 사용할 수 있습니다. 운영체제와 아키텍처에 맞는 배포 패키지를 선택한 다음 현재 사용하는 코어를 확인하세요. 플랫폼이나 인터페이스 버전에 따라 메뉴 위치가 다를 수 있습니다.
적합한 용도: 데스크톱 구독 관리, 시스템 프록시 및 라우팅 분기
결론: 노드 요구 사항을 먼저 확인한 다음 클라이언트를 선택하세요
구독을 받으면 먼저 REALITY나 Vision처럼 명시적으로 요구되는 기능이 있는지 확인하세요. 해당 기능이 필요하면 Xray 지원 여부를 점검하고, 그렇지 않다면 기존 설정이 안정적으로 작동하는지를 기준으로 선택하면 됩니다. 코어 이름만 바꾸려고 이미 잘 작동하는 환경을 옮길 필요는 없습니다.
구독, 공유 링크, 전체 JSON: 변환은 누가 담당할까요?
구독 주소는 보통 여러 노드 정보가 담긴 자료를 반환하며, Base64로 인코딩된 공유 링크 목록을 반환하기도 합니다. 클라이언트는 이 정보를 파싱한 뒤 로컬 포트, DNS, 라우팅 규칙 등의 설정을 결합해 코어 설정을 생성합니다. 따라서 '구독을 가져올 수 있음'과 '생성된 연결 설정이 정상 작동함'은 별도로 확인해야 합니다.
전체 JSON에는 인바운드, 아웃바운드, 라우팅, DNS, 로그 설정이 함께 들어갈 수 있어 단순한 노드 목록과는 다릅니다. 서버용 JSON을 클라이언트 노드로 가져오거나 한 코어의 전체 설정을 다른 코어에 그대로 전달하면 설정 방향 오류, 필드 비호환, 로컬 리스닝 충돌이 발생할 수 있습니다.
- 자료 유형을 확인하세요. 단일
vless://링크는 노드 공유 정보입니다. HTTP 또는 HTTPS로 시작하는 주소는 구독 URL일 수 있습니다.inbounds,outbounds가 포함된 JSON은 대개 전체 설정이므로 용도를 추가로 확인해야 합니다. - 가져온 결과를 확인하세요. 서버 주소, 포트, 사용자 ID, 전송 방식, 보안 유형이 그대로 유지되었는지 살펴보세요. 노드 이름은 식별용 메모일 뿐, 매개변수가 모두 보존되었다는 증거는 아닙니다.
- 실행 중인 코어를 확인하세요. 클라이언트 로그에서 코어 이름과 버전 정보를 찾으세요. 데스크톱 클라이언트 업데이트와 코어 업데이트는 별개이므로 인터페이스 버전만 기록해서는 안 됩니다.
- 로컬 프록시 주소를 확인하세요. 예를 들어 클라이언트가 실제로
127.0.0.1:10808에서 SOCKS 인바운드를 수신한다면 테스트 도구도 해당 주소와 포트에 연결해야 합니다. 여기서10808은 예시이며 실제 값은 로컬 설정을 따르세요.
구독을 사용한다고 모든 로컬 설정까지 동기화되는 것은 아닙니다. 두 기기에서 같은 주소를 가져와도 앱별 프록시, DNS, 시스템 프록시, 라우팅 규칙은 다를 수 있습니다. 이를 이해하면 '노드가 같다'는 이유만으로 트래픽 처리 방식까지 완전히 같다고 오해하지 않을 수 있습니다.
데스크톱과 Android에서 구독을 함께 사용하는 점검 방법
여러 기기에서 사용할 때는 먼저 한 기기에서 단일 노드를 확인한 뒤, 다른 기기에서 동일한 프로토콜 조합을 재현하세요. 코어, 노드, DNS, 라우팅 규칙을 한꺼번에 바꾸지 마세요. 연결이 복구되어도 어떤 변경이 효과가 있었는지 알 수 없습니다. 아래 양쪽 기기 점검 목록에 항목별로 기록하세요.
점검 방법: 두 기기에서 같은 구독을 사용하고 실행 환경을 각각 확인
데스크톱: v2rayN
- 클라이언트 버전, 코어 이름, 코어 버전을 기록합니다.
- 구독을 가져온 뒤 특정 노드 하나를 선택해 테스트합니다.
- 로컬 리스닝 주소와 포트, 시스템 프록시 상태를 확인합니다.
- 먼저 시스템 프록시를 따르는 앱을 테스트한 다음 다른 프로그램을 확인합니다.
Android: v2rayNG 또는 v2flyNG
- 노드에 필요한 기능에 맞춰 해당 코어를 사용하는 클라이언트를 선택합니다.
- 데스크톱과 같은 노드를 선택하고 전송 및 보안 매개변수를 확인합니다.
- 처음 연결할 때 시스템 VPN 권한 설정이 완료되었는지 확인합니다.
- 테스트할 앱이 앱별 프록시 설정에서 제외되지 않았는지 확인합니다.
구독을 공유하면 중복 입력을 줄일 수 있지만 로컬 라우팅, DNS, 프록시 적용 범위는 두 기기에서 각각 확인해야 합니다.
예를 들어 데스크톱 브라우저는 연결되지만 터미널에서 연결되지 않는다면 Xray나 V2Ray의 프로토콜 지원 문제라고 단정할 수 없습니다. 터미널 프로그램이 시스템 프록시를 따르지 않아 프록시를 직접 지정해야 할 수 있습니다. Android에서 특정 앱만 접속할 수 없는 경우에도 코어를 바로 바꾸기보다 앱별 설정부터 확인하세요. 트래픽 처리와 라우팅 분기에 대한 자세한 내용은 시작 안내와 고급 설정을 참고하세요.
코어와 클라이언트 관계에 관한 자주 묻는 질문
v2rayN 이름에 V2Ray가 있는데 로그에는 왜 Xray가 표시되나요?
클라이언트 이름과 실행 중인 코어 이름은 다를 수 있습니다. 먼저 연결을 중지하고 현재 노드와 코어 관련 설정을 확인한 다음 다시 시작해 로그에 표시되는 코어 이름과 버전을 읽으세요. 문제를 재현할 때는 클라이언트 버전과 코어 버전을 함께 기록해야 합니다. 'v2rayN'만 적어서는 정보가 부족합니다.
v2rayNG에서는 연결되는데 같은 구독을 v2flyNG에 넣으면 실패합니다. 어떻게 해야 하나요?
먼저 구독 전체가 업데이트되었는지가 아니라 같은 노드끼리 비교하세요. REALITY, xtls-rprx-vision 또는 코어에 종속된 다른 매개변수가 있는지 확인합니다. Xray 기능이 필요하다면 해당 기능을 지원하는 구성을 사용하고, 보안 매개변수를 삭제해 억지로 가져오지 마세요.
Xray로 바꾸면 반드시 더 빨라지나요?
코어 이름만으로는 판단할 수 없습니다. 노드, 대상 주소, 네트워크, 테스트 방식을 고정하고 연결 성공 여부, 지연 시간, 지속 전송 성능을 각각 기록한 뒤 로그와 함께 비교하세요. 노드나 네트워크가 동시에 바뀌면 결과가 코어 때문인지 알 수 없으며 일반적인 속도 결론을 내릴 수도 없습니다.
클라이언트를 업그레이드했는데도 특정 필드를 인식하지 못한다는 메시지가 나옵니다. 무엇을 확인해야 하나요?
먼저 로그에서 실제로 실행된 코어와 버전을 확인한 다음, 해당 필드가 구독 변환 결과인지 사용자 지정 JSON에서 온 것인지 구분하세요. 기존 설정을 백업한 뒤 일반 노드 하나만 따로 테스트합니다. 일반 노드는 작동하지만 사용자 지정 설정이 실패한다면 설정 형식과 필드가 속한 코어를 중점적으로 확인하세요. 로컬 프록시 포트를 반복해서 바꾸지 마세요.
선택 순서는 하나만 기억하면 됩니다. 노드 요구 사항을 파악하고, 이를 지원하는 코어를 선택한 다음, 클라이언트로 가져와 시스템에 연결하세요. Project V, V2Fly, Xray는 생태계를 이해하기 위한 단서입니다. 실제 연결 여부는 양쪽 설정의 호환성과 로컬 트래픽이 올바른 진입점으로 들어가는지에 달려 있습니다.