이 글은 V2Ray 생태계의 용어를 구분하고, v2rayN이나 Android 클라이언트를 선택하며, 코어 호환성 문제를 해결하려는 분에게 적합합니다. Project V의 역사적 위치와 V2Fly·Xray의 관계를 이해하고, 구독 프로토콜과 실행 플랫폼에 맞는 클라이언트를 고를 수 있습니다.
먼저 네 가지 층위로 나누기: 프로젝트, 코어, 프로토콜, 클라이언트
이 이름들이 헷갈리는 가장 큰 이유는 서로 같은 기술 계층에 속하지 않기 때문입니다. Project V는 초기 프로젝트 체계와 생태계를 가리키는 개념에 가깝고, V2Fly는 V2Ray를 이어서 유지 관리하는 커뮤니티와 프로젝트 모음입니다. Xray는 같은 기술 계보에서 발전한 코어 계열이며, v2rayN·v2rayNG·v2flyNG는 사용자가 직접 조작하는 그래픽 클라이언트입니다.
실제로 연결을 수립하고 라우팅 규칙을 해석하며 인바운드·아웃바운드 트래픽을 처리하는 것은 코어입니다. 그래픽 클라이언트는 구독을 저장하고, 설정을 생성하며, 코어를 실행하고, 로그를 표시하는 한편 시스템 프록시나 VPN 모드 같은 조작 기능을 제공합니다. 클라이언트 이름에 “v2ray”가 들어 있다고 해서 한 종류의 코어만 실행할 수 있는 것은 아니며, 같은 이름의 프로토콜이 모두 동일한 매개변수를 지원한다는 뜻도 아닙니다.
- 프로젝트 체계: 코드, 문서, 커뮤니티 협업과 주변 도구를 아우르는 전체 범위를 설명합니다.
- 프록시 코어: 설정을 읽고 연결을 처리합니다. 예: V2Ray Core와 Xray-core.
- 프록시 프로토콜: 클라이언트와 서버가 데이터를 주고받는 방식을 정의합니다. 예: VMess, VLESS, Trojan.
- 그래픽 클라이언트: 구독, 서버 목록, 라우팅과 코어 설정을 조작 가능한 화면으로 정리합니다.
하나의 연결은 실행 체인으로 이해할 수 있습니다. 사용자가 그래픽 클라이언트에서 노드를 선택하면 클라이언트가 구독 내용을 코어 설정으로 변환하고, 코어가 VMess, VLESS 또는 Trojan 같은 프로토콜에 따라 서버에 연결합니다. 시스템 브라우저나 다른 앱은 보통 127.0.0.1:10808 같은 로컬 수신 포트에 연결하며, 그다음 코어가 트래픽을 전달합니다.
Project V, V2Fly, Xray의 발전 관계
Project V는 이 역사를 이해하는 출발점입니다. 초기에는 V2Ray를 중심으로 한 네트워크 도구와 설계 방향을 통칭하는 의미로 사용되었으며, V2Ray Core가 그중 핵심 실행 구성 요소였습니다. 이후 유지 관리와 커뮤니티 협업 방식이 바뀌면서 V2Fly 커뮤니티가 V2Ray 관련 코드, 문서와 생태계 프로젝트를 계속 관리했습니다. 따라서 오늘날 “V2Fly”는 대개 이 커뮤니티 유지 관리 계통을 뜻합니다.
Xray는 V2Ray 기술 생태계에서 발전한 또 다른 코어 계열입니다. 유사한 JSON 설정 방식, 인바운드·아웃바운드 모델과 라우팅 규칙 구조를 이어받았으며, 전송 방식과 프로토콜 구현, 하위 수준 기능을 계속 확장해 왔습니다. 두 프로젝트는 공통된 출발점과 비슷한 개념을 공유하지만 서로 다른 코어 계열이므로 버전 번호, 매개변수 지원 범위와 릴리스 주기를 혼동해서는 안 됩니다.
| 이름 | 주요 역할 | 사용자가 접하는 곳 | 판단할 핵심 |
|---|---|---|---|
| Project V | 초기 프로젝트 체계와 생태계 개념 | 역사 소개, 기술 문서, 이전 버전 문서 | 별도로 설치하는 그래픽 클라이언트가 아닙니다 |
| V2Fly | V2Ray 커뮤니티 유지 관리 계통과 프로젝트 모음 | V2Ray Core, v2flyNG, 설정 문서 | V2Ray Core의 버전과 매개변수 지원 범위를 확인합니다 |
| Xray | 독립적으로 발전한 코어 계열 | Xray-core, v2rayN 코어 설정, v2rayNG | Xray에서 전용으로 지원하거나 우선 구현한 프로토콜 기능을 확인합니다 |
| V2Ray | 핵심 소프트웨어를 뜻할 수도 있고, 전체 생태계를 통칭하기도 합니다 | 구독 안내, 노드 이름, 클라이언트 소개 | 문맥을 확인해 코어를 뜻하는지 생태계를 뜻하는지 구분합니다 |
결론: 이름이 비슷하다고 호환된다고 판단하지 마세요
설정을 가져오기 전에 노드 프로토콜, 전송 계층과 필요한 코어를 먼저 확인하세요. 클라이언트에 노드가 표시된다고 해서 현재 선택한 코어가 모든 매개변수를 올바르게 실행할 수 있다는 뜻은 아닙니다.
따라서 Xray를 단순히 “V2Fly의 새 버전”이라고 부르는 것은 정확하지 않으며, V2Fly를 데스크톱 클라이언트로 이해하는 것도 맞지 않습니다. 더 정확한 표현은 다음과 같습니다. V2Fly와 Xray는 같은 계보의 생태계에서 서로 다른 유지 관리 경로로 발전했으며, 그래픽 클라이언트는 설계에 따라 특정 코어를 고정해 사용하거나 여러 코어를 제공해 사용자가 전환하도록 할 수 있습니다.
v2rayN, v2rayNG, v2flyNG는 각각 무엇을 사용하나요?
v2rayN은 Windows, macOS, Linux용 데스크톱 그래픽 클라이언트입니다. 구독 그룹, 서버 목록, 라우팅 설정, 로그 확인과 코어 관리 기능을 제공합니다. v2rayN 7.x의 화면 구성을 예로 들면 사용자는 매개변수 설정에서 현재 Core 유형을 확인할 수 있습니다. 버전에 따라 선택 항목이 달라질 수 있으므로 설정을 옮길 때는 클라이언트 버전과 코어 계열을 함께 기록해야 합니다.
v2rayNG는 Android 클라이언트로, 주로 Xray 코어를 사용해 연결을 처리합니다. 구독에 VLESS, VMess, Trojan과 일반적인 전송 조합이 포함된 경우에 적합합니다. v2flyNG 역시 Android에서 실행되지만 V2Fly 계열 코어를 사용하므로, V2Ray Core를 명시적으로 요구하거나 V2Fly의 설정 동작을 비교해야 하는 사용자에게 더 적합합니다.
| 클라이언트 | 플랫폼 | 코어 관계 | 일반적인 사용 사례 |
|---|---|---|---|
| v2rayN | Windows、macOS、Linux | 데스크톱에서 지원되는 코어를 관리하고 선택할 수 있습니다 | 여러 구독 그룹, 일괄 속도 측정, 데스크톱 라우팅 분기 |
| v2rayNG | Android | Xray 코어 사용 | 모바일 네트워크 연결, 앱별 분기, 구독 가져오기 |
| v2flyNG | Android | V2Fly 코어 사용 | V2Ray Core 설정 실행, V2Fly 동작 비교 |
플랫폼 확인
데스크톱에서는 먼저 v2rayN을 확인하고, Android 기기에서는 필요한 코어에 따라 v2rayNG 또는 v2flyNG를 선택하세요.
프로토콜 확인
구독 노드 상세 정보를 열어 VMess, VLESS 또는 Trojan과 TCP, WebSocket, gRPC 등의 전송 매개변수를 기록하세요.
코어 확인
v2rayN에서 「설정」→「매개변수 설정」→「Core 유형」으로 이동해 현재 설정을 어떤 코어가 실행하는지 확인하세요.
구독 업데이트
코어를 전환한 뒤 해당 구독 그룹을 다시 업데이트하세요. 이전 캐시로 생성된 서버 설정을 계속 사용하는 일을 방지할 수 있습니다.
로그 확인
연결 후 로그에서 시작 버전, 수신 포트와 핸드셰이크 오류를 확인하세요. 알 수 없는 필드가 나타나면 먼저 코어의 지원 범위를 점검합니다.
VMess, VLESS, Trojan과 코어는 같은 개념이 아닙니다
VMess, VLESS와 Trojan은 아웃바운드 연결에 사용하는 프로토콜 유형이고, Xray-core와 V2Ray Core는 이 프로토콜을 실행하는 프로그램입니다. 프로토콜 이름이 같다는 것은 설정의 큰 방향이 같다는 뜻일 뿐입니다. 실제로 가져오기와 연결이 가능한지는 코어 버전, 전송 조합, 그리고 클라이언트가 구독 필드를 코어 설정으로 빠짐없이 변환했는지에 따라 달라집니다.
VMess 설정에는 보통 UUID, 서버 포트, 암호화 필드와 전송 매개변수가 포함됩니다. 이전 설정에는 추가 ID가 있을 수 있으며, 최신 설정에서는 일반적으로 alterId: 0을 사용합니다. VLESS는 VMess의 인증 구조에 의존하지 않으며 TLS, Reality, TCP, WebSocket 또는 gRPC 등과 함께 사용되는 경우가 많습니다. Trojan은 보통 비밀번호 필드를 사용하고 TLS 및 서버 이름과 함께 구성되는 경우가 많습니다.
- VMess가 보이면: UUID, 서버 포트, 전송 유형과 TLS 활성화 여부를 확인하고, 이전 노드라면 추가 ID도 살펴보세요.
- VLESS가 보이면: 흐름 제어, 암호화 필드, Reality 또는 TLS 매개변수와 현재 클라이언트가 사용하는 코어를 중점적으로 확인하세요.
- Trojan이 보이면: 비밀번호, 서버 이름, 인증서 도메인의 일치 여부와 전송 계층 설정을 중점적으로 확인하세요.
- 구독은 가져와지지만 시작되지 않으면: 로그에서 unknown field, failed to load config 또는 포트 사용 중 메시지를 먼저 찾으세요.
로컬 SOCKS 진입점: 127.0.0.1:10808
로컬 HTTP 진입점: 127.0.0.1:10809
확인 순서: 클라이언트 상태 → 코어 로그 → 로컬 포트 → 시스템 프록시 → 아웃바운드 연결
포트 번호는 “로컬 수신 포트”와 “원격 서버 포트”도 구분해야 합니다. 예를 들어 브라우저가 연결하는 127.0.0.1:10809은 로컬 HTTP 프록시 진입점이고, 노드 상세 정보의 443 또는 다른 포트는 원격 서비스 진입점입니다. 둘은 위치가 다르므로 로컬 포트를 변경해도 구독에 포함된 서버 포트가 자동으로 바뀌지는 않습니다.
자주 하는 이름 착각과 구체적인 점검 방법
생태계 이름을 혼용하면 주로 두 가지 문제가 생깁니다. 하나는 기기 플랫폼에 맞지 않는 클라이언트를 내려받는 것이고, 다른 하나는 클라이언트는 제대로 설치했지만 선택한 코어가 구독 매개변수를 해석하지 못하는 것입니다. 점검할 때는 같은 구독을 반복해서 삭제하고 다시 가져오기보다 화면 계층에서 코어 계층으로 단계적으로 확인해야 합니다.
v2rayN을 설치하면 반드시 V2Ray Core가 실행되나요?
그렇지는 않습니다. 「설정」→「매개변수 설정」→「Core 유형」에서 현재 선택 항목을 확인하고, 시작 로그에서 실제로 로드된 코어 이름과 버전을 확인하세요.
v2rayNG와 v2flyNG에서 구독을 함께 사용할 수 있나요?
일반적인 VMess, VLESS, Trojan 노드는 모두 인식될 수 있지만 특정 흐름 제어와 전송 매개변수의 지원 여부는 코어에 따라 달라집니다. 가져온 후 노드 상세 정보를 항목별로 확인하고 실제 연결 테스트를 진행하세요.
구독 가져오기는 성공했는데 연결이 즉시 끊기는 이유는 무엇인가요?
먼저 코어 로그를 확인하세요. 알 수 없는 필드가 나타나면 Core 유형을 점검하고, connection refused가 나타나면 원격 주소와 포트를 확인하세요. 로컬 수신 실패가 나타나면 10808 또는 10809가 사용 중인지 확인합니다.
코어를 바꾼 뒤 노드 목록을 다시 만들어야 하나요?
현재 구독 그룹을 다시 업데이트하고 클라이언트를 재시작하는 것이 좋습니다. 새 코어의 기능에 맞춰 설정을 다시 생성하므로 이전 프로세스나 캐시가 로컬 포트를 계속 점유하는 일을 막을 수 있습니다.
노드 이름에 Xray라고 적혀 있으면 Xray만 사용할 수 있나요?
노드 이름은 구독 제공자가 입력한 라벨일 뿐입니다. 서버 메모만 보지 말고 노드 상세 정보를 펼쳐 프로토콜, 전송 방식, 흐름 제어와 TLS 매개변수를 기준으로 판단하세요.
로그의 “코어 시작 성공”은 설정이 승인되어 수신 대기를 시작했다는 뜻일 뿐, 원격 연결이 완료되었다는 의미는 아닙니다. 더 정확한 확인 순서는 코어 프로세스 시작 여부 확인, 로컬 포트 수신 대기 확인, 시스템 프록시 또는 앱 내 프록시 활성화, 대상 사이트 접속, 마지막으로 출구 주소가 예상대로 변경되었는지 확인하는 것입니다.
요구 사항에 맞춰 코어와 클라이언트 선택하기
데스크톱에서 여러 구독을 관리하고 실제 연결 속도를 일괄 측정하며 직접 연결, 프록시와 차단 규칙을 세밀하게 나누어야 한다면 v2rayN이 더 완성도 높은 관리 화면을 제공합니다. 노드를 선택하기 전에 구독 그룹으로 출처를 분리하고, 지연 시간과 프로토콜을 비교한 뒤 Core 유형과 노드 요구 사항이 일치하는지 확인하세요.
Android 기기에서 구독 안내가 Xray를 명시적으로 대상으로 하거나 노드가 Xray 계열에서 우선 지원하는 매개변수를 사용한다면 v2rayNG를 먼저 선택할 수 있습니다. V2Fly 코어를 실행하거나 V2Ray Core의 설정 동작을 재현해야 한다면 v2flyNG를 선택하세요. 두 클라이언트를 동시에 VPN 모드로 실행하면 시스템 연결 진입점을 두고 충돌할 수 있으므로 피해야 합니다.
- 먼저 플랫폼으로 필터링: 데스크톱에서는 v2rayN을 사용하고, Android에서는 v2rayNG와 v2flyNG 중에서 선택하세요.
- 다음으로 코어 요구 사항으로 필터링: 구독 안내와 노드 매개변수를 읽고 특정 흐름 제어, 전송 방식 또는 버전 요구 사항이 있는지 확인하세요.
- 기본 로컬 포트 유지: 포트 충돌이 없다면 먼저 10808과 10809를 사용하세요. 일반적인 튜토리얼을 기준으로 문제를 찾기 쉽습니다.
- 실제 연결 확인: 지연 시간 측정 후에도 실제로 웹페이지를 열고 로그를 확인해야 합니다. 단순한 TCP 탐색만으로는 프로토콜 핸드셰이크 성공을 판단할 수 없습니다.
- 사용 가능한 조합 기록: 클라이언트 버전, 코어 계열, 구독 그룹과 사용 가능한 노드를 기록해 두면 업그레이드 후 빠르게 비교할 수 있습니다.
결론: 플랫폼, 프로토콜, 코어, 노드 순서로 선택하세요
먼저 기기에서 사용할 수 있는 클라이언트를 정한 다음 구독 프로토콜과 코어 지원 범위를 확인하고, 마지막으로 노드 지연 시간을 비교하세요. 이 순서를 따르면 코어 비호환을 회선 장애로 잘못 판단하는 일을 피할 수 있습니다.
Project V, V2Fly와 Xray의 관계는 이름을 외워서 이해할 필요가 없습니다. 누가 프로젝트를 유지 관리하는지, 무엇이 설정을 실행하는지, 어떤 프로토콜로 연결하는지, 사용자가 어떤 클라이언트를 조작하는지만 구분하면 새로운 버전이나 구독 형식을 만났을 때도 스스로 판단할 수 있습니다. 일반 사용자에게 가장 중요한 정보는 프로젝트 이름이 몇 번 등장하는지가 아니라, 현재 클라이언트가 실제로 어떤 코어를 시작했는지와 그 코어가 노드의 전체 매개변수 조합을 지원하는지입니다.