Project V·V2Fly·Xray의 관계와 그래픽 클라이언트 3종 선택 가이드

프로젝트 생태계, 프록시 코어, 그래픽 클라이언트를 구분하고 v2rayN·v2rayNG·v2flyNG의 플랫폼별 특징과 선택 시 확인할 프로토콜·기능을 정리합니다.

이 글의 핵심

Project V는 V2Ray를 중심으로 형성된 프로젝트 이념과 기술 생태계를 가리키며, 바로 실행하는 Windows 소프트웨어 하나를 뜻하지는 않습니다. V2Fly 커뮤니티는 v2ray-core와 관련 문서를 계속 관리하고, Xray는 독립적으로 발전한 Xray-core를 구축했습니다. 두 프로젝트는 기술적 배경을 공유하지만 릴리스 주기, 설정 기능, 프로토콜 확장은 완전히 같지 않습니다. v2rayN·v2rayNG·v2flyNG는 설정 가져오기, 노드 전환, 프록시 적용 범위 관리 등을 담당하는 그래픽 클라이언트입니다. 선택할 때는 운영체제를 먼저 확인한 뒤 구독의 프로토콜, 전송 방식, 보안 계층과 클라이언트 기능을 점검해야 하며, 이름에 “V2Ray”가 들어가는지만으로 결정해서는 안 됩니다.

생태계·코어·그래픽 클라이언트부터 구분하기

Project V는 흔히 V2Ray를 중심으로 형성된 프로젝트 이념과 기술 생태계를 뜻하며, 직접 더블클릭해 실행하는 Windows 소프트웨어를 의미하지는 않습니다. 역사적으로 V2Fly 커뮤니티는 v2ray-core와 관련 문서를 계속 관리해 왔고, Xray는 독립적으로 발전한 Xray-core를 구축했습니다. 두 프로젝트는 기술적 배경을 공유하지만 릴리스 주기, 설정 기능, 프로토콜 확장은 완전히 일치하지 않습니다.

프록시 코어는 설정을 해석하고 아웃바운드 연결을 만들며 DNS와 라우팅 규칙을 실행하고, 로컬에 SOCKS·HTTP 또는 혼합 리스닝 포트를 엽니다. 그래픽 클라이언트는 코어 위에서 구독 관리, 노드 편집, 코어 실행, 시스템 프록시 전환, 로그 표시를 담당합니다. 클라이언트 화면에 “실행 중”이라고 표시되어도 로컬 프로세스가 실행 절차에 들어갔다는 뜻일 뿐, 모든 애플리케이션이 프록시에 연결되었다는 의미는 아닙니다.

프록시 설정은 세 번째 계층입니다. VMess, VLESS, 서버 이름, 전송 방식, TLS 매개변수와 라우팅 규칙은 모두 설정 내용에 해당합니다. 같은 클라이언트라도 서로 다른 설정을 가져오면 실제 사용 가능한 기능이 완전히 달라질 수 있고, 같은 구독도 다른 코어에 넣으면 필드 지원 여부에 따라 결과가 달라질 수 있습니다.

3개 계층
생태계·코어·클라이언트
4개 플랫폼
Windows、macOS、Android、Linux
10808
일반적인 SOCKS 예시 포트
10809
일반적인 HTTP 예시 포트
계층 일반적인 명칭 주요 역할 이것만으로 판단할 수 없는 사항
프로젝트 생태계 Project V、V2Fly、Xray 기술 방향, 코어 개발 및 규격 문서 관리 기기가 프록시에 연결되었는지는 직접 판단할 수 없음
프록시 코어 v2ray-core、Xray-core 프로토콜, 연결, DNS 및 라우팅 처리 구독 관리 화면과 동일하지 않음
그래픽 클라이언트 v2rayN、v2rayNG、v2flyNG 설정 관리, 코어 호출, 프록시 방식 전환 이름이 비슷해도 기능이 완전히 같지는 않음
프록시 설정 구독, 단일 노드, 라우팅 규칙 서버 매개변수와 트래픽 처리 방식 설명 클라이언트와 코어 실행을 대신할 수 없음

V2Fly와 Xray의 차이를 이해하는 방법

V2Fly와 Xray 모두 일반적인 프록시 설정을 처리할 수 있지만, 같은 코어의 다운로드 명칭만 다른 것으로 이해해서는 안 됩니다. 설정 형식은 상당 부분 비슷하지만, 구체적인 프로토콜 필드, 전송 옵션과 확장 기능은 현재 코어 문서 및 클라이언트 지원 여부를 기준으로 확인해야 합니다. 구독을 가져올 수 있다는 것은 클라이언트가 텍스트 구조를 인식했다는 뜻일 뿐, 코어가 반드시 연결을 수립할 수 있다는 의미는 아닙니다.

기존 구독이 주로 VMess·WebSocket·TLS 같은 일반적인 조합으로 구성되어 있다면 v2ray-core와 Xray-core 모두 요구 사항을 충족할 수 있습니다. 실제 선택은 서버 매개변수에 따라 달라집니다. 설정에 VLESS, Reality 또는 Xray 전용 필드가 명시되어 있다면 클라이언트가 Xray-core를 호출하는지 먼저 확인하고, 코어 로그에 알 수 없는 필드나 지원되지 않는 프로토콜 안내가 있는지 살펴보세요.

Xray-core

추천

VLESS·Reality 등 Xray 기능을 확인해야 하는 설정에 적합하며, 일반적인 VMess 설정도 처리할 수 있습니다. 가져온 뒤에는 전송 방식, 서버 이름과 보안 매개변수를 다시 확인해야 합니다.

적합한 경우: 구독에서 Xray를 명시적으로 요구하거나 최신 프로토콜을 폭넓게 지원해야 할 때

v2ray-core

V2Fly 커뮤니티가 관리하며, 해당 설정 규격에 맞는 VMess 등의 구성을 지원합니다. 선택하기 전에 구독 필드가 현재 코어 버전과 호환되는지 확인해야 합니다.

적합한 경우: 서버에서 V2Fly 설정을 명시적으로 요구하거나 기존 설정의 호환성이 검증되었을 때

이름만 보고 판단하기

클라이언트 이름에 v2ray가 들어간다고 해서 특정 코어 하나만 호출하는 것은 아닙니다. 마찬가지로 구독 이름만으로 실제 프로토콜 유형을 알 수 없습니다.

적합한 방법 아님: 노드 필드와 코어 로그를 확인해야 함

결론: 설정 요구 사항을 먼저 확인한 뒤 코어를 선택하기

구독의 프로토콜, 보안 계층과 전송 필드를 목록으로 정리하는 편이 프로젝트 이름만 보고 선택하는 것보다 정확합니다. “가져오기는 성공했지만 연결되지 않는” 경우에는 구독을 반복해서 삭제하고 다시 가져오기보다 코어가 해당 필드를 지원하는지 먼저 확인해야 합니다.

v2rayN·v2rayNG·v2flyNG는 각각 어떤 기기에 적합한가

v2rayN은 데스크톱 그래픽 클라이언트로, 주로 Windows에서 사용되며 macOS와 Linux용 데스크톱 빌드도 제공합니다. 구독, 서버 목록, 라우팅 규칙, 시스템 프록시와 TUN 등의 기능을 데스크톱 화면에 모아 제공합니다. Windows 사용자는 보통 v2rayN을 선택한 뒤 시스템 아키텍처와 인터페이스 유형에 맞는 설치 패키지를 고릅니다.

v2rayNG와 v2flyNG는 모두 Android용이지만 기본적인 기술 방향은 다릅니다. v2rayNG는 Xray 코어 기능을 중심으로 하며, 구독에 VLESS가 포함되어 있거나 Xray가 명시된 경우에 적합합니다. v2flyNG는 v2fly 코어 설정을 대상으로 하며, 서버에서 V2Fly 호환성을 명확히 요구하는 경우에 사용할 수 있습니다. 두 클라이언트 모두 시스템 VPN 서비스 권한이 필요합니다. 이 권한은 기기 내 트래픽을 가로채는 통로를 만들 뿐 서버 설정 자체를 바꾸지는 않습니다.

데스크톱과 Android에서 같은 구독을 사용할 수 있어도 로컬 프록시 방식은 다릅니다. v2rayN은 시스템 프록시, 애플리케이션 수동 프록시 또는 TUN을 통해 트래픽을 코어로 보낼 수 있습니다. Android 클라이언트는 보통 시스템 VPN 서비스를 통해 트래픽을 처리하며 애플리케이션별 프록시를 설정할 수 있습니다. 따라서 “같은 노드가 휴대전화에서는 되지만 컴퓨터에서는 안 된다”는 사실만으로 노드 매개변수가 잘못되었다고 단정할 수 없습니다.

클라이언트 플랫폼 용도 코어 방향 우선 확인할 항목
v2rayN Windows·macOS·Linux 데스크톱 클라이언트 버전과 설정에 따라 사용 가능한 코어 선택 시스템 아키텍처, 코어 유형, 시스템 프록시, TUN
v2rayNG Android Xray-core VPN 권한, 애플리케이션별 프록시, 배터리 정책
v2flyNG Android v2ray-core 노드 필드, 코어 호환성, VPN 권한

프로토콜·전송·기능 요구 사항에 따라 선택하기

클라이언트를 선택하기 전에 실제 노드 하나를 열어 프로토콜, 주소, 포트, 전송 방식, 보안 계층, 서버 이름과 사용자 식별자를 기록하세요. VMess와 VLESS는 프로토콜 계층의 필드이고, TCP·WebSocket·gRPC는 전송 방식에 해당합니다. TLS와 Reality는 보안 계층 및 핸드셰이크 매개변수와 관련됩니다. 서로 다른 계층의 항목이므로 “TLS 노드”라고만 적어서는 판단을 끝낼 수 없습니다.

두 번째로 필요한 트래픽 연결 방식을 클라이언트가 제공하는지 확인합니다. 브라우저가 시스템 프록시를 읽는다면 Windows에서 시스템 프록시를 켜는 것만으로 충분한 경우가 많습니다. 터미널, 게임 또는 시스템 프록시를 읽지 않는 프로그램은 별도로 프록시 주소를 입력하거나, 라우팅 규칙을 확인한 뒤 TUN을 사용해야 할 수 있습니다. Android에서 일부 애플리케이션만 연결하려면 서버 프로토콜을 바꾸지 말고 애플리케이션별 프록시 목록을 확인하세요.

  1. 플랫폼부터 결정: 데스크톱 기기는 v2rayN을 선택하고, Android는 v2rayNG와 v2flyNG 중 코어 요구 사항을 확인합니다.
  2. 그다음 프로토콜 확인: VMess·VLESS 등 실제 프로토콜을 기록하고 구독 그룹 이름으로 노드 필드를 대신하지 않습니다.
  3. 전송 방식 점검: TCP·WebSocket·gRPC와 경로, 서비스 이름, 서버 이름을 항목별로 확인합니다.
  4. 연결 범위 확정: 시스템 프록시, 애플리케이션 수동 프록시, TUN 또는 Android 애플리케이션별 프록시 중 사용할 방식을 정합니다.
  5. 진단 가능한 테스트 유지: 노드 1개와 애플리케이션 1개를 먼저 테스트한 뒤 전체 구독과 다른 프로그램으로 확대합니다.
선택 점검 기록
플랫폼: Windows / macOS / Android / Linux
클라이언트: v2rayN / v2rayNG / v2flyNG
프로토콜: VMess / VLESS
전송: TCP / WebSocket / gRPC
보안 계층: TLS / Reality / 설정 요구 사항에 따름
로컬 연결: 시스템 프록시 / 수동 프록시 / TUN / 애플리케이션별 프록시
테스트 범위: 노드 1개 + 브라우저 1개 + 터미널 프로그램 1개

일반적인 v2rayN 7.x 화면에서는 「설정」→「매개변수 설정」에서 코어, 인바운드 포트와 기타 실행 옵션을 확인할 수 있습니다. 빌드에 따라 메뉴 이름이 조금 다를 수 있으므로 현재 화면을 기준으로 확인하세요. SOCKS 포트가 10808, HTTP 포트가 10809로 설정되어 있다면 브라우저 확장 프로그램, 터미널 환경 또는 다른 수동 프록시 애플리케이션에도 해당 포트를 입력해야 합니다. 클라이언트의 리스닝 포트를 바꿔도 외부 애플리케이션의 기존 포트는 자동으로 동기화되지 않습니다.

결론: 최소 테스트 조합으로 문제를 더 빠르게 찾기

노드 1개, 연결 방식 1개, 애플리케이션 1개를 고정하고 먼저 테스트하세요. 코어가 실행되고 로컬 포트가 리스닝 중이며 대상 애플리케이션이 실제로 해당 포트를 사용하는지 확인한 뒤 라우팅 분할, TUN 또는 더 많은 구독을 추가하면 여러 변수가 동시에 바뀌는 일을 피할 수 있습니다.

구독을 가져온 뒤에도 확인해야 하는 설정

구독은 설정을 배포하는 방식이지 연결 성공을 보장하는 증명이 아닙니다. 클라이언트가 구독 업데이트를 완료하면 보통 서버 목록이 생성됩니다. 사용자는 여전히 활성 노드를 선택하고 코어를 시작한 뒤 시스템 프록시 또는 VPN 연결 범위를 정해야 합니다. 구독 주소가 열리는데 목록이 비어 있다면 클라이언트가 파싱 실패, 빈 콘텐츠, 지원되지 않는 형식 중 무엇을 표시하는지 확인하세요. 세 문제는 해결 방향이 서로 다릅니다.

데스크톱에서 문제를 확인할 때는 먼저 로컬 리스닝 상태를 점검할 수 있습니다. 127.0.0.1:10808을 예로 들면 127.0.0.1은 로컬 기기에서만 접근한다는 뜻이고 10808은 포트입니다. 두 값 모두 애플리케이션의 프록시 설정과 일치해야 합니다. 로그에 포트가 이미 사용 중이라고 표시되면 원격 노드를 바꾸기보다 클라이언트가 중복 실행되었는지 또는 다른 프로그램이 포트를 사용 중인지 확인하세요.

Android에서는 “클라이언트가 연결됨”과 “대상 애플리케이션이 프록시에 포함됨”도 구분해야 합니다. 애플리케이션별 프록시를 켜면 목록 모드가 선택한 애플리케이션만 프록시하는 방식일 수도 있고 선택한 애플리케이션을 제외하는 방식일 수도 있습니다. 모드를 전환한 뒤 대상 프로그램이 어느 범위에 속하는지 다시 확인하세요. 백그라운드에서 연결이 끊기면 시스템 VPN 권한, 다른 VPN과의 충돌 및 배터리 최적화 정책을 점검해야 합니다.

구독 가져오기는 성공했는데 왜 연결되지 않나요?

먼저 노드 하나를 선택하고 코어를 시작한 뒤 로그에 지원되지 않는 프로토콜 필드, 서버 이름 불일치 또는 연결 시간 초과가 나타나는지 확인하세요. 가져오기 성공은 클라이언트가 구독 내용을 읽었다는 뜻일 뿐입니다.

v2rayN에서는 Xray와 v2ray 코어 중 무엇을 선택해야 하나요?

노드 상세 정보에서 프로토콜과 보안 필드를 확인하세요. 설정에 VLESS·Reality가 포함되어 있거나 Xray 요구 사항이 명시되어 있으면 Xray를 선택하고, 서버에서 V2Fly 설정을 명확히 요구할 때는 안내에 따라 v2ray-core를 선택합니다.

브라우저는 되는데 터미널은 왜 연결되지 않나요?

터미널 프로그램이 시스템 프록시를 읽지 않을 수 있습니다. 클라이언트의 로컬 포트를 확인한 뒤 터미널 도구에서 HTTP 또는 SOCKS 프록시를 별도로 설정하거나 TUN이 필요한지 검토하세요.

v2rayNG와 v2flyNG를 동시에 실행할 수 있나요?

Android에서는 일반적으로 한 번에 하나의 애플리케이션만 시스템 VPN 통로를 사용할 수 있습니다. 테스트할 때는 현재 클라이언트를 먼저 중지한 다음 다른 클라이언트를 시작해 VPN 서비스 충돌을 노드 문제로 잘못 판단하지 않도록 하세요.

클라이언트를 바꾸면 구독을 다시 구매해야 하나요?

반드시 그렇지는 않습니다. 기존 구독을 대상 클라이언트가 읽을 수 있는지, 구독의 프로토콜과 전송 필드를 대상 코어가 지원하는지 먼저 확인하세요. 클라이언트 선택과 구독 서비스 자체는 별개의 문제입니다.

자주 하는 오해와 최종 선택 순서

첫 번째 오해는 “V2Ray”를 하나의 소프트웨어 이름으로 보는 것입니다. 실제 대화에서는 Project V 생태계, v2ray-core, 특정 설정 형식 또는 관련 클라이언트를 통칭할 수 있습니다. 튜토리얼에 “V2Ray 설정을 여세요”라고만 적혀 있다면 구체적인 클라이언트, 운영체제와 화면 버전을 추가로 확인해야 합니다. 그렇지 않으면 메뉴 경로가 쉽게 맞지 않습니다.

두 번째 오해는 클라이언트 화면만 비교하고 코어 기능은 확인하지 않는 것입니다. 화면은 사용자의 조작을 설정으로 변환할 뿐, 실제 프로토콜 처리는 코어가 담당합니다. 클라이언트가 노드 이름을 표시할 수 있어도 현재 코어가 노드의 모든 필드를 이해한다는 뜻은 아닙니다. 로그의 알 수 없는 설정 항목, 핸드셰이크 실패와 라우팅 오류가 화면의 노드 색상보다 진단에 더 중요합니다.

세 번째 오해는 시스템 프록시와 라우팅 분할을 같은 것으로 보는 것입니다. 시스템 프록시는 어떤 애플리케이션이 트래픽을 로컬 프록시로 보낼 수 있는지를 결정하고, 라우팅 규칙은 코어에 들어온 트래픽이 어느 출구로 나갈지를 결정합니다. 전자가 연결되지 않았다면 후자를 아무리 완전하게 작성해도 해당 애플리케이션에는 영향을 주지 않습니다.

클라이언트 다운로드