Xray와 V2Fly 코어는 어떻게 다를까:버전 관계와 클라이언트 선택 가이드

Project V 생태계의 V2Fly와 Xray 코어가 발전해 온 과정, 프로토콜 지원 차이와 업데이트 주기를 살펴보고 v2rayNG와 v2flyNG에 탑재된 코어 및 적합한 사용 환경을 설명합니다.

이 글 한눈에 보기

이 글은 v2rayNG, v2flyNG 또는 v2rayN을 비교하는 사용자를 위한 내용입니다. 두 코어의 우열을 단순히 가리기보다 설정 형식, 프로토콜 기능, 클라이언트와 코어의 연결 관계 및 업그레이드 위험을 설명해 현재 노드 매개변수에 맞는 코어를 선택하고 반복 가능한 호환성 점검 절차를 세울 수 있도록 돕습니다.

Xray와 V2Fly의 버전 관계

V2Fly와 Xray는 모두 Project V 생태계의 프록시 설정 방식을 이어받았습니다. 두 코어 모두 인바운드, 아웃바운드, 라우팅, DNS와 전송 계층 설정을 처리하며 구조화된 설정으로 연결 매개변수를 정의합니다. 공통 용어가 많지만 현재는 각각 개발·배포되는 별개의 코어 브랜치이므로 버전 번호를 하나의 시간순으로 비교해서는 안 됩니다.

예를 들어 Xray 25.3.6과 V2Fly 5.28.0에서 숫자가 더 크다고 해서 후자가 반드시 최신인 것은 아니며, 지원 프로토콜이 더 많거나 성능이 더 높다고 판단할 수도 없습니다. Xray 버전은 날짜를 연상시키는 형식이 자주 사용되고, V2Fly는 오랫동안 시맨틱 버전 형식을 사용해 왔습니다. 버전을 비교할 때는 각 코어의 릴리스 순서, 클라이언트에 포함된 버전과 설정 변경 사항을 따로 확인해야 합니다.

2개
독립 배포 브랜치
25.3.6
Xray 버전 예시
5.28.0
V2Fly 버전 예시
10808
일반적인 로컬 SOCKS 포트

사용자 관점에서 클라이언트는 인터페이스, 구독 관리, 시스템 프록시와 설정 변환을 담당하고, 코어는 실제 연결 수립과 라우팅 실행을 담당합니다. v2rayNG에서 연결 버튼을 누르면 인터페이스가 현재 노드, DNS, 앱별 프록시와 라우팅 설정을 코어가 읽을 수 있는 실행 설정으로 정리한 뒤 로컬 프록시 서비스를 시작합니다. 따라서 같은 구독 노드를 여러 클라이언트에서 사용할 수 있는지는 클라이언트가 해당 코어에 필요한 필드를 올바르게 생성하는지에도 달려 있습니다.

  1. 먼저 클라이언트와 코어를 구분하세요: v2rayNG, v2flyNG, v2rayN은 사용자가 직접 조작하는 클라이언트이고, Xray와 V2Fly는 연결을 처리하는 핵심 프로그램입니다.
  2. 다음으로 버전 계열을 구분하세요: 버전 번호의 크기를 서로 비교하지 말고, 같은 코어의 릴리스 계열 안에서 최신 여부를 판단해야 합니다.
  3. 마지막으로 노드 기능을 확인하세요: 프로토콜 이름이 같아도 모든 확장 매개변수가 동일한 것은 아니므로 흐름 제어, 보안 계층과 전송 방식을 항목별로 대조해야 합니다.

프로토콜 지원과 설정 차이

VMess, VLESS, Shadowsocks, SOCKS, HTTP 같은 이름만 보면 양쪽이 완전히 같은 것처럼 보이기 쉽습니다. 하지만 기본 프로토콜은 첫 단계에 불과합니다. 연결이 성립하려면 TCP, WebSocket, gRPC 등의 전송 방식과 TLS, REALITY, 흐름 제어 및 서버가 요구하는 핸드셰이크 매개변수까지 확인해야 합니다. 핵심 필드가 하나라도 맞지 않으면 시간 초과, 핸드셰이크 실패 또는 연결 후 접속 불가로 나타날 수 있습니다.

VMess와 TCP 또는 WebSocket을 조합하는 방식은 두 코어 브랜치에서 비교적 흔한 호환 구성입니다. 이러한 노드를 이전할 때는 서버 주소, 포트, 사용자 ID, alterId, 전송 방식, Host와 경로를 중점적으로 확인하세요. 새 설정에서 alterId는 일반적으로 0입니다. 구독에 이전 매개변수가 여전히 포함되어 있다면 클라이언트가 가져오기에 성공하더라도 실제 연결은 서버 설정을 기준으로 확인해야 합니다.

Xray 코어

권장

VLESS, XTLS 흐름 제어 또는 REALITY 매개변수가 포함된 노드에 적합하며, v2rayNG에서 구독 파싱과 라우팅 설정을 직접 처리하려는 일상적인 사용 환경에도 알맞습니다.

적합한 경우: 최신 프로토콜 노드, v2rayNG 중심 사용

V2Fly 코어

VMess, 표준 VLESS, TCP, WebSocket, TLS와 일반적인 라우팅을 중심으로 구성된 기존 설정에 적합하며, v2flyNG를 통해 코어 환경을 명확히 분리할 수 있습니다.

적합한 경우: 안정화된 설정, V2Fly 환경 호환성 검증

REALITY는 특히 주의해서 확인해야 하는 차이점입니다. 구독에 publicKey, shortId, serverName, fingerprint 또는 spiderX 같은 필드가 있다면 “VLESS”라는 세 글자만 봐서는 안 됩니다. 클라이언트는 이 매개변수를 빠짐없이 유지해야 하며, 사용하는 코어도 해당 기능을 구현해야 합니다. shortId가 빠지거나 serverName을 잘못 입력하거나, 서버가 요구하는 flow 값을 비워 두면 연결에 실패할 수 있습니다.

라우팅 문법도 버전에 따라 발전해 왔습니다. 일반적인 규칙은 domain, ip, port, network 또는 inboundTag를 기준으로 매칭한 뒤 트래픽을 지정된 outboundTag로 보냅니다. 기본 구조가 비슷하다고 해서 오래된 설정을 언제까지나 그대로 재사용할 수 있는 것은 아닙니다. 버전 차이가 큰 업그레이드에서는 설정 파일이 파싱되는지만 확인하지 말고 폐기된 필드, DNS 조회 정책과 규칙 매칭 동작을 살펴야 합니다.

결론: 확장 필드를 먼저 확인하고 코어 이름은 나중에 비교하세요

VMess, VLESS 같은 프로토콜 태그만으로는 코어를 선택할 수 없습니다. 구독에 REALITY, XTLS 흐름 제어 또는 특정 fingerprint 매개변수가 포함되어 있다면 Xray를 우선 사용하세요. VMess, WebSocket, TLS 중심의 기존 설정이라면 먼저 기존 환경에서 다시 테스트하는 편이 적합합니다.

v2rayNG, v2flyNG와 v2rayN은 어떻게 대응할까

v2rayNG는 Android 클라이언트이며 기본적으로 Xray 코어를 중심으로 실행됩니다. 최신 Xray 매개변수가 포함된 공유 링크나 구독을 가져오기에 적합하고, 라우팅 설정, 앱별 프록시, 로컬 네트워크 우회와 로컬 DNS 같은 모바일 기능을 제공합니다. VLESS와 REALITY가 결합된 노드를 사용할 때는 먼저 v2rayNG 버전과 내장 Xray 버전을 확인한 다음 노드 필드가 완전한지 점검하는 것이 좋습니다.

v2flyNG 역시 Android용이지만 V2Fly 코어를 사용합니다. v2rayNG의 외형을 대신하는 것이 목적이 아니라 명확한 V2Fly 실행 환경을 제공하는 데 의미가 있습니다. 운영 담당자가 V2Fly 서버 설정을 재현하거나 VMess 또는 표준 VLESS 호환성을 확인해야 할 때 v2flyNG를 사용하면 “클라이언트 인터페이스는 같지만 하위 구현은 다르다”는 차이에서 생기는 판단 오류를 줄일 수 있습니다.

권장 구성: 노드 기능에 맞춰 데스크톱과 Android 클라이언트 통일

데스크톱(v2rayN)
  • 먼저 「설정」→「매개변수 설정」에서 Core 유형과 로컬 포트를 확인하세요
  • 구독을 업데이트한 뒤 주로 사용하는 노드에서 실제 연결 테스트를 한 번 실행하세요
  • 업그레이드 회귀 테스트의 기준으로 검증이 완료된 설정을 하나 보관하세요
Android(v2rayNG)
  • 동일한 유효 구독을 사용해 매개변수를 수동으로 다시 입력하지 않도록 하세요
  • 「왼쪽 상단 메뉴」→「설정」에서 라우팅과 DNS를 확인하세요
  • 앱별로 트래픽을 제어해야 할 때만 앱별 프록시를 활성화하세요

두 클라이언트의 코어 버전 번호가 완전히 같을 필요는 없지만, 프로토콜, 보안 계층, 전송 매개변수와 서버 요구 사항은 일치해야 합니다.

v2rayN은 Windows 데스크톱 클라이언트입니다. 버전에 따라 설정 항목이 조금씩 달라질 수 있지만, 일반적으로 「설정」→「매개변수 설정」에서 로컬 리스닝, 시스템 프록시와 Core 관련 옵션을 확인할 수 있습니다. 일반적인 로컬 SOCKS 포트는 10808이며 HTTP 포트는 클라이언트 설정에 따라 생성될 수 있습니다. 포트가 다른 프로그램에서 사용 중이면 코어가 시작되지 않을 수 있으므로, 사용되지 않는 포트로 변경한 뒤 다시 연결해야 합니다.

macOS와 Linux에서 설정 파일로 해당 코어를 실행하는 경우에도 원칙은 같습니다. 먼저 서버가 요구하는 기능 조합을 확인한 다음 설정을 올바르게 해석할 수 있는 코어를 선택하세요. 장치 간 통일을 위해 REALITY 설정을 일반 TLS로 억지로 낮추거나, 특정 클라이언트에서 노드를 가져올 수 있다는 이유만으로 구독의 모든 매개변수를 완전히 지원한다고 판단해서는 안 됩니다.

설정을 이전할 수 있는지 확인하는 방법

호환성 검증은 정해진 순서로 진행해야 합니다. 먼저 기존에 정상 작동하던 클라이언트와 노드를 보존한 뒤 대상 클라이언트에서 같은 구독을 가져오세요. 프로토콜, 포트, DNS와 라우팅을 동시에 변경하면 실패 원인을 파악하기 어렵습니다. 한 번에 변수 하나만 바꾸는 것이 노드를 계속 바꿔 보는 것보다 대개 문제를 빠르게 찾는 방법입니다.

가져온 뒤에는 먼저 노드 상세 정보를 열고, 지연 시간 숫자만으로 실제 연결을 판단하지 마세요. 지연 시간 테스트는 TCP 연결만 확인할 수도 있고 코어 핸드셰이크까지 포함할 수도 있어 클라이언트마다 구현이 완전히 같지 않습니다. 결과를 비교할 때는 같은 네트워크, 같은 시간대, 같은 서버 노드에서 진행하고 최소 3회 연속 테스트해야 합니다.

  1. 기본 필드 확인: 서버 주소, 포트, 사용자 ID, 암호화 방식과 프로토콜 유형이 잘리지 않았는지 확인하세요.
  2. 전송 필드 확인: TCP, WebSocket 또는 gRPC를 대조하고 Host, path, serviceName 등의 필드가 올바른 위치에 있는지 확인하세요.
  3. 보안 필드 확인: TLS 또는 REALITY, serverName, fingerprint, publicKey, shortId와 flow를 대조하세요.
  4. 로컬 리스닝 확인: 10808 등의 로컬 포트가 사용 중이지 않은지 확인하고 시스템 프록시가 현재 클라이언트의 실제 리스닝 포트를 가리키도록 하세요.
  5. 로그 순서 확인: 먼저 설정 파싱을 확인한 다음 DNS, 연결, TLS 핸드셰이크와 라우팅 매칭을 차례로 살펴보세요. 마지막 오류 한 줄만 잘라 보는 것은 피해야 합니다.
{
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    }
  ]
}

이 최소 구조는 로컬 SOCKS 인바운드, 포트와 아웃바운드 태그의 관계를 설명하기 위한 것일 뿐 원격 노드 설정이 아닙니다. 실제 프록시 아웃바운드에는 해당 프로토콜의 서버, 사용자와 전송 매개변수가 추가로 필요합니다. 검증할 때는 먼저 코어가 127.0.0.1:10808에서 리스닝할 수 있는지 확인한 뒤 원격 아웃바운드를 추가하면 “로컬 포트 시작 실패”와 “원격 핸드셰이크 실패”를 두 문제로 나누어 확인할 수 있습니다.

업데이트 주기와 업그레이드 위험

Xray와 V2Fly는 각각 자체적인 릴리스 주기를 유지합니다. 어떤 업데이트는 프로토콜 매개변수를 추가하고, DNS·라우팅·전송 또는 설정 검증 방식을 조정할 수도 있습니다. 클라이언트가 새 코어를 통합하는 데도 시간이 걸리므로 “코어가 릴리스됨”과 “클라이언트에서 사용 가능함”은 서로 다른 시점입니다. 실제 사용에서는 클라이언트에 내장된 버전과 설정 생성 기능을 기준으로 판단해야 합니다.

업데이트를 자주 한다고 연결이 반드시 안정되는 것은 아닙니다. 운영 환경이나 장기간 실행되는 장치는 회귀 테스트 절차를 마련하는 편이 좋습니다. 현재 클라이언트 버전, 코어 버전, 주 사용 노드의 프로토콜, 로컬 포트와 라우팅 모드를 기록하고, 업그레이드 후 구독 업데이트, TCP 접속, UDP 요구 사항, DNS 조회와 분류 규칙 매칭을 차례로 테스트하세요. 어느 한 항목에서 이상이 발생하면 노드를 동시에 바꾸기보다 먼저 기존 설정을 복원해 확인해야 합니다.

결론: 클라이언트 버전과 코어 버전을 함께 기록하세요

업그레이드 문제를 조사할 때는 최소한 클라이언트 버전, 코어 버전, 노드 프로토콜과 실패 시각을 기록해야 합니다. “업그레이드 후 작동하지 않음”만으로는 설정 변환, 코어 동작, 구독 변경 또는 로컬 네트워크 중 무엇이 원인인지 판단할 수 없습니다.

업데이트 목적이 특정 문제의 해결이라면 먼저 변경 사항이 해당 문제와 관련 있는지 확인해야 합니다. 예를 들어 서버가 REALITY의 새 필드를 요구한다면 Xray와 v2rayNG를 업데이트할 분명한 이유가 있습니다. 반면 기존 VMess, WebSocket, TLS 노드가 장기간 안정적으로 작동한다면 단지 더 큰 버전 번호를 보고 모든 장치를 즉시 이전하는 것은 기대 효과를 평가하기 어렵습니다.

사용 환경에 맞는 코어와 클라이언트 선택

대부분의 Android 사용자는 구독 내용부터 확인하면 됩니다. 노드 상세 정보에 VLESS, REALITY, XTLS 흐름 제어, publicKey 또는 shortId가 나타난다면 v2rayNG와 Xray 조합이 더 직접적인 선택입니다. 구독이 주로 VMess, TCP, WebSocket과 TLS로 구성되고 V2Fly 환경을 재현해야 한다면 v2flyNG로 별도 검증을 진행할 수 있습니다.

v2rayN 사용자는 설정 화면에서 Core 유형을 반복해서 바꾸기보다 현재 노드가 어떤 기능에 의존하는지 확인하는 것이 중요합니다. 전환 후에는 반드시 설정을 다시 생성하고 실행 로그를 확인해야 합니다. 노드 이름, 지연 시간 표시와 구독 그룹이 그대로라고 해서 하위 필드까지 다른 코어가 동일하게 처리했다는 뜻은 아닙니다.

같은 구독을 v2rayNG와 v2flyNG에 동시에 가져올 수 있나요?

대체로 가져올 수 있지만 가져오기에 성공했다는 것은 구독 형식을 인식했다는 뜻일 뿐입니다. 노드 연결 가능 여부는 프로토콜 확장, 전송 방식과 보안 매개변수에 달려 있습니다. REALITY 또는 특정 XTLS 흐름 제어가 포함된 노드는 v2rayNG에서 우선 테스트하고, 일반적인 VMess, WebSocket, TLS 노드는 두 클라이언트의 호환성을 함께 검증하는 것이 좋습니다.

Xray가 V2Fly보다 항상 빠른가요?

코어 이름만으로 속도를 판단할 수는 없습니다. 실제 결과는 서버 부하, 왕복 지연 시간, 패킷 손실, 혼잡 제어, 전송 방식, TLS 설정과 장치 성능의 영향을 받습니다. 올바른 비교 방법은 같은 네트워크와 같은 노드에서 설정을 고정하고 최소 3회 연속 테스트하면서 연결 안정성도 함께 관찰하는 것입니다.

v2flyNG에서 v2rayNG로 바꾸려면 구독을 다시 구매해야 하나요?

대체로 그럴 필요가 없습니다. 먼저 v2rayNG에서 기존 구독을 가져온 다음 각 노드의 프로토콜과 확장 필드를 확인하세요. 특정 노드를 사용할 수 없다면 publicKey, shortId, flow 또는 serverName을 임의로 추측해 입력하지 말고 설정 제공자에게 서버 매개변수를 확인해야 합니다.

지연 시간 테스트는 정상인데 웹페이지가 열리지 않는 이유는 무엇인가요?

먼저 시스템 프록시가 올바른 로컬 포트를 가리키는지 확인한 뒤 DNS와 라우팅 규칙을 살펴보세요. 지연 시간 테스트가 정상이라는 것은 일부 경로에 연결할 수 있다는 뜻일 뿐, 도메인 조회, 원격 아웃바운드와 트래픽 분류가 모두 올바르다는 의미는 아닙니다. Windows에서는 10808 등의 리스닝 포트를 중점적으로 확인하고, Android에서는 라우팅 모드와 앱별 프록시 적용 범위를 점검하세요.

최종 선택은 한 문장으로 정리할 수 있습니다. 서버 설정 요구 사항을 기준으로 삼고 클라이언트에 실제 내장된 기능을 한계로 보세요. Xray 확장 기능이 필요하다면 v2rayNG를 사용하거나 v2rayN에서 해당 Core를 선택하고, V2Fly 실행 환경을 유지해야 한다면 v2flyNG를 사용하세요. 두 브랜치 모두 검증된 기본 프록시와 라우팅 작업을 수행할 수 있으며, 핵심은 매개변수의 완전성, 버전 호환성과 일관된 검증 방법입니다.

다운로드 센터로 이동 현재 플랫폼에 맞는 클라이언트 선택