2026년 8월 6일 · 생태계·선택 · 약 9분

Project V 생태계 정리: V2Fly·Xray 코어와 v2rayN / v2rayNG / v2flyNG 클라이언트

Project V의 시작부터 V2Fly와 Xray 코어의 차이, v2rayN·v2rayNG·v2flyNG가 사용하는 코어와 설정 호환성, 클라이언트 선택 기준까지 정리합니다.

핵심 내용

Project V는 프로젝트 생태계이며, V2Fly와 Xray는 서로 다른 코어 개발·유지보수 계열입니다. v2rayN, v2rayNG, v2flyNG는 설정을 관리하고 코어를 실행하는 그래픽 클라이언트입니다. 기기 간 구독을 가져오거나 VLESS 및 REALITY 지원 여부를 확인하려는 사용자라면 이름의 계층부터 구분하고, 노드 매개변수와 코어 기능을 확인한 뒤 클라이언트를 선택하세요.

Project V, V2Ray와 두 코어 계열의 관계

Project V는 처음에 모듈형 네트워크 프록시 도구를 중심으로 시작했으며, V2Ray는 그중 가장 자주 언급되는 소프트웨어입니다. 초기 문서에서 ‘V2Ray’는 프로젝트 전체를 가리키기도 하고, 네트워크 연결을 처리하는 핵심 프로그램을 뜻하기도 했습니다. 현재 문제를 해결할 때는 이 이름을 구체적인 구현체와 버전으로 좁혀야 합니다. 그렇지 않으면 ‘V2Ray 지원’만으로 어떤 설정을 쓸 수 있는지 정확히 알기 어렵습니다.

V2Fly는 V2Ray를 계속 유지보수하는 커뮤니티 프로젝트이며, 흔히 말하는 ‘V2Ray 코어’나 ‘v2fly 코어’는 보통 이 계열을 가리킵니다. Xray-core는 V2Ray 코드를 기반으로 분기해 발전했으며, 이후 독자적인 기능과 릴리스 주기를 갖추게 됐습니다. 공통된 기반이 있다고 해서 새 기능, 설정 필드, 기본 동작까지 늘 동일한 것은 아닙니다.

따라서 ‘v2rayNG를 설치했다’와 ‘Xray 코어를 실행했다’는 말은 동시에 성립할 수 있습니다. 전자는 사용 중인 인터페이스를, 후자는 실제 연결을 처리하는 프로그램을 가리킵니다. 오류가 발생하면 클라이언트 버전과 코어 버전을 함께 기록하세요. 앱 이름만으로는 특정 필드의 지원 여부를 판단하기 어렵습니다.

클라이언트별 관리 코어

v2rayN은 데스크톱용이며, v2rayNG와 v2flyNG는 Android용입니다. 이름의 대소문자는 단순한 장식이 아닙니다. v2rayN과 v2rayNG는 같은 설치 패키지가 아니며, v2flyNG도 v2rayNG의 인터페이스만 바꾼 앱이 아닙니다. 먼저 기기에 맞는 클라이언트를 고른 다음 실제로 사용하는 코어를 확인하세요.

클라이언트 지원 플랫폼 코어 관계 선택 전 확인 사항
v2rayN Windows, macOS, Linux 데스크톱 데스크톱 설정 관리자이며 여러 코어를 지원합니다. 실제 사용 코어는 버전, 설정, 코어 지정에 따라 달라집니다. 현재 설정에서 호출하는 코어, 설치 패키지에 포함된 구성 요소, 시스템 프록시 또는 TUN 연결 방식
v2rayNG Android Xray 코어를 사용합니다. 노드에 필요한 Xray 기능, 앱에 포함된 코어 버전, VPN 권한
v2flyNG Android V2Fly가 유지보수하는 V2Ray 코어를 사용합니다. 노드 매개변수가 해당 코어 버전에서 지원되는지 확인하세요. 특히 다른 계열에서 추가된 확장 필드에 유의해야 합니다.

v2rayN이라는 이름만 보고 V2Fly 코어만 쓸 수 있다고 생각하면 안 됩니다. 반대로 데스크톱 앱에서 코어를 선택할 수 있다고 해서 Android 클라이언트도 파일 가져오기만으로 내장 코어를 바꿀 수 있는 것은 아닙니다. 설치 패키지, 그래픽 인터페이스, 코어 프로그램은 각각 버전 제약이 있습니다.

v2rayNG: Android용 Xray 계열

권장

노드에서 Xray의 VLESS, REALITY 또는 Vision 관련 기능을 명시적으로 요구한다면 이 조합부터 확인하세요. 이는 해당 노드 요구사항에 맞춘 권장 사항이며, 모든 네트워크 환경에서 더 빠르다는 뜻은 아닙니다.

추천 대상: Android 사용자, 서버 문서에서 Xray 매개변수를 기준으로 안내하는 경우

v2flyNG: Android용 V2Fly 계열

V2Fly 문서에 따라 설정을 관리하는 환경에 적합합니다. VMess, WebSocket, TLS 등의 일반적인 조합도 구체적인 버전과 매개변수를 확인해야 합니다. 프로토콜 이름만으로 호환 여부를 판단할 수 없습니다.

추천 대상: 기존 V2Fly 설정을 사용하며 Xray 전용 확장 기능에 의존하지 않는 경우

v2rayN: 데스크톱 설정 및 코어 관리

데스크톱에서 구독과 라우팅을 통합 관리할 수 있습니다. 노드를 옮길 때는 목록에 표시되는지만 보지 말고 현재 설정이 어떤 코어를 호출하는지 확인하세요.

추천 대상: 시스템 프록시와 로컬 리스너를 관리해야 하는 Windows, macOS, Linux 데스크톱 사용자

VMess, VLESS, WebSocket, REALITY는 서로 다른 계층입니다

하나의 노드 설정에 여러 이름이 함께 표시되는 경우가 많습니다. 예를 들어 ‘VLESS + WebSocket + TLS’는 셋 중 하나를 고르는 프로토콜 버튼이 아니라 인증 및 프록시 프로토콜, 전송 방식, 보안 계층의 조합입니다. 어느 한 계층이라도 가져오는 과정에서 빠지면 목록에는 정상적으로 표시되더라도 핸드셰이크에 실패할 수 있습니다.

계층 주요 이름 또는 필드 확인 사항
프록시 프로토콜 및 인증 정보 VMess、VLESS、UUID 서버와 프로토콜이 일치해야 합니다. VLESS 자체는 페이로드를 암호화하지 않으므로 보안은 함께 사용하는 보안 계층을 기준으로 판단해야 합니다.
전송 방식 TCP、WebSocket、gRPC 전송 유형과 이에 따른 WebSocket path, Host, gRPC serviceName 등의 매개변수
연결 보안 TLS、REALITY、serverName 서버에서 요구하는 이름과 보안 매개변수를 확인하세요. REALITY는 범용 전송 유형이 아닙니다.
흐름 제어 및 확장 기능 flow、xtls-rprx-vision 코어가 지정된 값을 지원하는지, 해당 값이 현재 전송 조합에 맞는지 확인하세요.

VLESS라는 이름만으로 설정이 Xray 전용이라고 단정할 수는 없습니다. 어떤 확장 기능과 함께 쓰는지가 핵심입니다. VLESS + REALITY와 일반 VLESS 설정은 요구사항이 다르므로 v2flyNG에서 보안 방식을 TLS로 바꾸는 것만으로 호환되는 설정이 되지 않습니다. 서버에 해당 TLS 연결 지점이 없다면 클라이언트 설정을 바꿔도 호환성이 생기지 않습니다.

결론: 전체 매개변수 조합에 맞춰 코어를 선택하세요

먼저 노드 편집 화면에서 프로토콜, 전송 방식, 보안 방식, flow를 기록하세요. REALITY 또는 xtls-rprx-vision이 포함되어 있다면 해당 Xray 버전의 요구사항을 확인하고, ‘VLESS’라는 이름 하나만 보고 클라이언트를 고르지 마세요.

공유 링크, 구독, 전체 설정 간 호환성

‘가져올 수 있다’는 것은 클라이언트가 입력 형식을 인식했다는 뜻일 뿐, 대상 코어가 모든 필드를 지원한다는 뜻은 아닙니다. 이전할 때는 단일 공유 링크, 구독 내용, 전체 JSON 설정을 구분하세요. 각 형식에 담기는 정보가 다릅니다.

  1. 단일 공유 링크: 보통 하나의 아웃바운드 연결을 설명합니다. VMess 공유 링크에는 Base64로 인코딩된 내용이 흔히 들어가며, VLESS 공유 링크는 URI 쿼리 매개변수로 전송 및 보안 설정을 담는 경우가 많습니다. 가져온 뒤 편집 화면을 다시 열어 주요 매개변수가 누락되지 않았는지 확인하세요.
  2. 구독 주소: 설정 모음을 가리킵니다. 서버는 여러 공유 링크를 Base64로 인코딩해 반환하거나 클라이언트에 따라 서로 다른 내용을 제공할 수 있습니다. 양쪽에서 같은 URL을 사용하더라도 최종 항목과 필드가 완전히 같다고 보장할 수는 없습니다.
  3. 전체 JSON: 인바운드, 아웃바운드, DNS, 라우팅, 로그, 참조 태그 등이 포함될 수 있습니다. 두 코어에 같은 이름의 최상위 필드가 있더라도 필드의 의미, 허용 값, 필요한 버전은 다를 수 있으므로 그대로 덮어써서 실행하면 안 됩니다.

예를 들어 Xray 전용 보안 필드가 포함된 전체 JSON을 V2Fly 환경에 넣으면 불러오는 단계에서 지원하지 않는 설정 오류가 발생할 수 있고, 연결할 때 문제가 드러날 수도 있습니다. 더 안전한 방법은 노드 하나부터 옮기고 대상 클라이언트의 인바운드 및 라우팅 설정은 유지하는 것입니다. 연결을 확인한 뒤 다른 기능을 하나씩 이전하세요.

데스크톱과 Android에서 구독을 함께 쓰는 설정 순서

여러 기기에서 사용하려면 먼저 동일한 노드 출처를 설정하고, 연결 방식은 각 기기에서 따로 구성하세요. v2rayN의 시스템 프록시는 주로 시스템 프록시 설정을 따르는 앱에 적용됩니다. v2rayNG와 v2flyNG는 Android VPN 서비스를 통해 트래픽을 연결하는 경우가 많습니다. 이는 시스템 인터페이스의 차이이지 코어 성능의 우열이 아닙니다.

설정 방식: 노드 출처는 공유하고 시스템 연결은 기기별로 설정

데스크톱: v2rayN
  • 「구독 그룹」→「구독 그룹 설정」에서 주소를 추가한 뒤 「구독 그룹」 메뉴에서 업데이트하세요. 메뉴 이름은 버전에 따라 다를 수 있습니다.
  • 노드를 선택하고 사용 중인 코어와 보안 매개변수를 확인한 뒤 연결을 시작하세요.
  • 브라우저에서 연결하려면 「시스템 프록시 설정」을 선택하세요. 터미널 앱은 프록시 환경 변수도 별도로 확인해야 합니다.
Android: v2rayNG 또는 v2flyNG
  • v2rayNG를 예로 들면, 사이드 메뉴의 「구독 그룹 설정」에서 주소를 추가한 뒤 메인 화면으로 돌아와 「구독 업데이트」를 실행하세요.
  • 가져온 항목의 전송 방식, 보안 방식, flow를 확인한 뒤 노드를 선택하고 연결 버튼을 누르세요.
  • 처음 연결할 때 시스템 VPN 권한을 허용하세요. 앱별 프록시가 필요하다면 기기의 앱 목록에서 별도로 설정하세요.

구독을 공유하면 노드를 일일이 입력하는 수고는 줄지만, 업데이트 시점, 라우팅, DNS, 앱 연결 방식은 각 기기에서 따로 확인해야 합니다.

로컬 연결을 확인할 때는 ‘서버 포트’와 ‘로컬 리스너 포트’를 구분해야 합니다. 전자는 원격 서버의 연결 지점이고, 후자는 브라우저나 터미널이 로컬 프록시에 접속하는 지점입니다. 아래는 연결 흐름을 이해하기 위한 예시 값이며 세 클라이언트의 공통 기본값이 아닙니다.

10808
로컬 SOCKS 리스너 포트 예시
10809
로컬 HTTP 리스너 포트 예시

HTTP 리스너를 실제로 127.0.0.1:10809로 설정했다면 터미널에서 다른 기기의 SOCKS 포트를 그대로 사용하면 안 됩니다. v2rayN에서는 「설정」→「매개변수 설정」에서 로컬 리스너 관련 항목을 확인할 수 있습니다. 일부 버전은 HTTP와 SOCKS가 하나의 포트를 함께 사용하는 혼합 리스너를 지원하므로 현재 화면과 실행 로그를 기준으로 확인하세요.

클라이언트 선택 및 이전 시 자주 묻는 질문

클라이언트, 코어, 노드 매개변수에는 각각 경계가 있습니다. 실제 사용 중 자주 나오는 질문을 중심으로 확인 지점을 안내합니다. 모든 연결 실패를 ‘코어 비호환’ 탓으로 돌리지 마세요.

v2rayN과 v2rayNG의 이름이 비슷한데 설정 폴더 전체를 그대로 복사해도 되나요?

설정 폴더는 플랫폼 간 이전 형식이 아니므로 그대로 복사할 수 없습니다. 원본 클라이언트에서 단일 공유 링크를 내보낸 뒤 대상 클라이언트에서 「클립보드에서 가져오기」와 같은 메뉴를 이용하세요. 구독 주소도 다시 추가할 수 있습니다. 로컬 포트, 시스템 프록시, 앱별 설정은 대상 기기에서 새로 구성해야 합니다.

같은 구독이 v2rayNG에서는 작동하는데 v2flyNG로 바꾸면 실패합니다. 먼저 무엇을 확인해야 하나요?

같은 노드의 편집 화면을 열고 프로토콜, 전송 방식, 보안 방식, flow를 비교하세요. REALITY 또는 xtls-rprx-vision이 포함되어 있다면 해당 필드를 지우고 억지로 저장하지 마세요. 해당 조합을 지원하는 Xray 환경을 사용하거나 서비스 제공자에게 V2Fly용 연결 매개변수를 별도로 요청하세요.

코어를 바꾼 뒤 지연 시간 테스트는 정상인데 브라우저가 열리지 않으면 어떻게 해야 하나요?

먼저 테스트 종류를 확인하세요. TCP 연결 테스트는 대상 포트에 도달할 수 있다는 뜻일 뿐, 프록시 요청이 정상 처리된다는 뜻은 아닙니다. 이어서 브라우저가 로컬 프록시에 연결되어 있는지, 현재 라우팅에서 올바른 아웃바운드를 선택했는지 확인하고 로그에서 핸드셰이크 및 DNS 오류를 살펴보세요. 구독 업데이트를 반복하는 것으로 단계별 점검을 대신하지 마세요.

클라이언트를 업데이트하면 서버의 새 기능도 반드시 지원되나요?

반드시 그런 것은 아닙니다. 「정보」 화면이나 시작 로그에서 클라이언트와 코어 버전을 기록한 뒤 편집 화면에서 새 필드를 저장할 수 있는지 확인하세요. 그래픽 인터페이스가 매개변수를 인식해야 하고 실행 코어도 해당 매개변수를 구현해야 합니다. 한쪽만 업데이트하면 필드가 사라지거나 설정을 불러오지 못할 수 있습니다.

최종 선택은 세 가지 질문으로 좁힐 수 있습니다. 기기의 운영체제는 무엇인지, 노드가 어떤 전체 매개변수 조합을 요구하는지, 현재 버전이 해당 매개변수를 설정하고 실행할 수 있는지 확인하세요. 연결이 안정적이라면 계열 이름만 보고 옮길 필요는 없습니다. 꼭 이전해야 한다면 기존 설정을 보존하고 노드 하나로 검증한 뒤 구독, DNS, 라우팅 규칙 순으로 범위를 넓히세요.

v2rayN / v2rayNG 다운로드