· 코어 선택 · 약 9분

Xray 코어와 V2Fly 코어 차이: 분기 배경, 프로토콜 지원, 클라이언트 선택

Project V 이후 V2Fly와 Xray의 분기 과정을 살펴보고 VLESS, XTLS, REALITY 지원 차이와 v2rayNG·v2flyNG 선택 기준을 정리합니다.

이 글의 핵심

먼저 노드가 요구하는 코어를 확인하고, 그다음 클라이언트 사용성을 따져보세요. 노드에 REALITY나 xtls-rprx-vision이 포함되어 있다면 Xray 지원 여부부터 확인해야 합니다. VMess나 일반 TLS 설정만 사용한다면 이름만 보고 코어를 바꿀 필요는 없습니다. 데스크톱과 안드로이드 클라이언트를 비교하거나, 가져온 설정이 지원되지 않는다는 메시지가 뜨거나, 다른 코어로 옮기려는 사용자에게 유용한 내용입니다.

분기 배경: V2Fly와 Xray는 클라이언트의 서로 다른 스킨이 아닙니다

Project V는 관련 도구와 프로토콜이 발전해 온 프로젝트 배경이며, V2Ray는 그 안에서 널리 쓰이는 프록시 코어입니다. V2Fly 커뮤니티가 V2Ray 코어와 관련 프로젝트를 이어서 관리하면서 ‘V2Ray 코어’와 ‘V2Fly 코어’라는 표현을 모두 사용하게 됐습니다. 호환성을 구체적으로 논할 때는 프로젝트, 버전, 설정 형식을 명시하는 것이 좋습니다. 단순히 ‘V2Ray를 사용한다’고만 해서는 충분하지 않습니다.

Xray는 2020년 V2Ray 코드 기반에서 분기한 뒤 독자적인 방향으로 발전했습니다. 분기 배경에는 당시 XTLS 관련 기술과 프로젝트 유지 관리 방향을 둘러싼 이견이 있었습니다. 공통된 출발점 덕분에 일부 프로토콜과 라우팅 필드는 비슷하지만, 이후 기능과 설정 의미에는 차이가 생겼습니다. 한 프로젝트의 JSON 전체를 다른 프로젝트에서도 그대로 쓸 수 있는 범용 설정으로 간주해서는 안 됩니다.

따라서 ‘v2rayNG에서 가져올 수 있음’과 ‘V2Fly에서 실행 가능함’은 서로 다른 문제입니다. 클라이언트가 공유 링크를 인식하더라도 실행 설정 생성, 코어 구동, 원격 핸드셰이크 단계에서 오류가 날 수 있습니다.

프로토콜 비교: VLESS, XTLS Vision, REALITY의 역할

프로토콜 이름이 같아도 보안 계층, 전송 방식, 흐름 제어 매개변수까지 같은 것은 아닙니다.VLESS는 주로 프록시 프로토콜을 정의하며 자체적으로 트래픽을 암호화하지 않습니다. 일반적인 구성에서는 TLS나 REALITY 같은 방식이 추가로 필요합니다. XTLS Vision은 흐름 제어 방식이고 REALITY는 별도의 연결 보안 메커니즘입니다. 이 셋을 임의로 바꿔 끼울 수 있는 하나의 옵션처럼 취급해서는 안 됩니다.

설정 특징XrayV2Fly선택 기준
VMess지원지원전송 방식, TLS, 시간 설정을 추가로 확인해야 함
VLESS 기본 프로토콜지원기본 지원이후 확장 기능까지 호환된다고 단정할 수 없음
VLESS + TLS + WebSocket해당 조합 지원버전과 설정 형식 확인 필요경로, Host, 서버 요구사항을 일치시켜야 함
xtls-rprx-vision지원해당 Xray 흐름 제어 방식은 지원하지 않음flow 필드를 삭제해 억지로 호환시키지 마세요
REALITY지원해당 Xray 방식은 지원하지 않음해당 설정을 실행할 수 있는 Xray 클라이언트를 선택하세요

표의 ‘지원’은 모든 과거 버전에서 작동한다는 보장이 아닙니다. 오래된 코어나 클라이언트의 공유 링크 파서는 나중에 추가된 매개변수를 인식하지 못할 수 있습니다. 문제를 해결할 때는 클라이언트 버전과 실제 실행 중인 코어 버전을 함께 기록하세요. 화면 프로그램만 업데이트해도 사용 중인 코어 파일이 바뀌지 않을 수 있습니다.

결론: 먼저 노드의 security와 flow를 확인하세요

security=reality 또는 flow=xtls-rprx-vision이 보이면 Xray와 클라이언트의 지원 여부부터 확인하세요. 해당 기능을 지원하지 않는다면 호환되는 클라이언트를 사용하거나 서비스 제공자가 제공하는 다른 노드 설정을 이용해야 합니다. 실행될 때까지 매개변수를 삭제하는 방식은 피하세요.

클라이언트 선택: v2rayNG와 v2flyNG 중 무엇을 쓸까?

안드로이드용 v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용합니다. 앱 아이콘이나 익숙한 이름이 아니라 노드 구성에 따라 선택해야 합니다. 아래 추천은 구독에 REALITY나 Vision이 포함될 수 있다는 전제에 따른 것이며, 특정 코어가 모든 네트워크에서 더 빠르다는 뜻은 아닙니다.

v2rayNG: Xray 기반

추천

구독에 VLESS + REALITY 또는 Vision이 포함되어 있다면 우선 선택하세요. 설치된 버전이 매개변수 전체를 읽을 수 있는지도 확인해야 합니다. 기존 VMess 노드도 실제 설정에 따라 테스트할 수 있으며, 코어 이름만 바꾸려고 노드를 새로 구매할 필요는 없습니다.

적합한 사용자: 안드로이드에서 주로 연결하거나 구독에서 Xray 기능을 명시적으로 요구하는 사용자.

v2flyNG: V2Fly 기반

기존 노드가 V2Fly 설정을 기반으로 하고 자주 쓰는 프로토콜이 정상 작동하는 것으로 확인됐다면 계속 사용해도 됩니다. 옮기기 전에 프로토콜, 전송 방식, 보안 계층을 확인하세요. 모든 Xray 설정을 대신하는 범용 클라이언트는 아닙니다.

적합한 사용자: 이미 V2Fly를 사용 중이거나 기존 설정을 그대로 유지해야 하는 사용자.

v2rayN: 데스크톱 설정 관리

데스크톱에서는 현재 배포 패키지에 어떤 코어가 포함되어 있는지 확인한 뒤, 선택한 노드가 실제로 어떤 코어를 사용하는지 살펴보세요. 코어 선택 메뉴와 선택 가능한 항목은 배포 패키지와 버전에 따라 달라질 수 있으므로 클라이언트 이름만으로 판단할 수 없습니다.

적합한 사용자: 데스크톱 시스템 프록시를 사용하거나 실행 로그와 코어 정보를 확인해야 하는 사용자.

비교를 위해 안드로이드 클라이언트 두 개를 설치하더라도 VPN 연결을 동시에 켜지 마세요. 일반적으로 같은 사용자 환경에서는 앱 하나만 VPN 채널을 사용할 수 있습니다. 나중에 시작한 연결이 앞선 연결을 대체해 ‘코어를 바꾼 뒤 갑자기 끊겼다’고 오해할 수 있습니다.

여러 기기에서 사용하기: 구독은 공유해도 실행 설정은 각각 확인

서비스 제공자가 사용 기기 수를 허용하고 구독 출력 형식을 양쪽에서 인식할 수 있다면 데스크톱과 안드로이드에서 같은 구독을 가져올 수 있습니다. 노드 목록이 같더라도 라우팅 그룹, 앱별 프록시, 로컬 수신 포트, DNS 동작까지 구독을 따라 자동으로 옮겨지는 것은 아닙니다.

권장 방법: 기기별로 같은 노드의 전체 매개변수를 확인하세요

데스크톱: v2rayN
  • 목록에 표시된 이름만 보지 말고 현재 노드와 실제 실행 중인 코어를 확인하세요.
  • 시스템 프록시 상태를 확인하고 브라우저 프록시와 앱 자체 연결을 구분하세요.
  • 실행 로그에 코어 시작 결과와 연결 오류를 기록하세요.
안드로이드: v2rayNG 또는 v2flyNG
  • 노드에 REALITY나 Vision이 필요한지 확인해 클라이언트를 선택하세요.
  • 연결 전에 VPN 권한을 확인하고 테스트 중에는 클라이언트 하나만 실행하세요.
  • 앱별 프록시 설정을 확인하고 테스트할 브라우저가 제외되지 않았는지 살펴보세요.

구독 업데이트는 서비스 제공자가 게시한 내용을 다시 가져오는 기능입니다. 각 기기의 로컬 실행 정책은 따로 확인해야 합니다.

데스크톱에서는 연결되지만 안드로이드에서는 연결되지 않는다면 먼저 같은 노드의 주소, 포트, 전송 방식, 보안 계층, 흐름 제어 매개변수를 비교하세요. 모든 차이를 코어 탓으로 돌리지 마세요. 두 기기에서 이름만 같은 서로 다른 매개변수의 노드를 선택했거나 한쪽에서만 구독을 업데이트했을 수도 있습니다.

포트와 필드: ‘연결 안 됨’을 확인 가능한 설정으로 나누기

아래 두 포트는 문제 해결을 위한 예시일 뿐, 모든 클라이언트의 고정 기본값이 아닙니다. 원격 포트는 서비스 제공자가 지정하고 로컬 수신 포트는 클라이언트 설정에서 정합니다. 두 포트의 용도는 다르므로 로컬 SOCKS 포트를 원격 노드 포트란에 입력하면 안 됩니다.

443
원격 TLS / REALITY 포트 예시. 실제 값은 노드 매개변수를 따르세요
10808
로컬 SOCKS 수신 포트 예시. 실제 값은 클라이언트 설정을 따르세요

예를 들어 브라우저나 테스트 도구에서 로컬 프록시에 연결할 때는 사용 설정이 확인된 127.0.0.1:10808을 사용할 수 있습니다. 이후 코어가 노드의 원격 포트에 연결합니다. 이 과정은 ‘앱에서 로컬 진입점까지’와 ‘코어에서 원격 서버까지’ 두 구간으로 나뉩니다. 로컬 연결에 성공했다고 원격 핸드셰이크까지 완료된 것은 아닙니다.

  1. 기본 연결: 원격 주소, 포트, 사용자 ID, 시스템 시간을 확인하세요. VMess는 시간 차이에 민감하며 TLS 인증서 유효기간 확인에도 정확한 시간이 필요합니다.
  2. 전송 계층: WebSocket 노드는 경로와 Host를 확인하세요. WebSocket 설정을 일반 TCP 설정과 혼용하지 마세요.
  3. 보안 계층: 일반 TLS는 서버 이름과 인증서 검증을 확인하세요. REALITY는 서비스 제공자가 지정한 서버 이름, 공개 키 관련 매개변수, shortId를 확인해야 합니다.
  4. 흐름 제어: 서비스 제공자가 xtls-rprx-vision을 지정했다면 값을 일치시키세요. flow를 바꾼다고 서버 프로토콜이 자동으로 전환되지는 않습니다.
  5. 실행 결과: ‘알 수 없는 필드’, ‘핸드셰이크 실패’, ‘연결 시간 초과’를 구분해 각각 호환성, 인증 매개변수, 네트워크 연결 가능성을 다시 확인하세요.

코어 전환 전후: 한 번에 변수 하나만 변경하세요

‘코어를 바꾼 뒤 더 빨라졌다’고 비교하려면 같은 노드, 비슷한 시간대, 같은 테스트 대상이 필요합니다. TCPing은 주로 TCP 연결 가능성을 확인할 뿐 프록시 핸드셰이크 성공을 뜻하지 않습니다. 실제 연결 테스트는 프록시 요청에 더 가깝지만 지속적인 다운로드 속도나 모든 웹사이트의 사용 경험을 보장하지는 않습니다.

  1. 전환 전 백업: 구독 출처, 현재 노드 매개변수, 라우팅, DNS 설정을 보관하세요. 화면을 공유할 때는 사용자 ID와 구독 주소를 가리세요.
  2. 실행 여부 확인: 먼저 코어를 실행하고 로그에 설정 파싱 오류가 있는지 확인하세요. 시작에 실패했다고 설정 문제를 덮기 위해 노드를 계속 바꾸지 마세요.
  3. 프록시 요청 테스트: 같은 노드로 실제 연결 테스트를 실행한 뒤 같은 브라우저에서 같은 대상에 접속하세요. 시스템 프록시나 VPN 채널이 실제로 적용됐는지 확인해야 합니다.
  4. 라우팅 별도 확인: 연결에 성공한 뒤 직결 및 프록시 규칙을 살펴보세요. 특정 웹사이트가 직결로 라우팅됐다고 새 코어가 트래픽을 처리하지 않는다는 뜻은 아닙니다.
  5. 기록 후 되돌리기: 클라이언트와 코어 버전, 오류 유형, 변경 항목을 기록하세요. 결과가 나빠지면 기존 설정으로 되돌리고 DNS, 라우팅, 전송 매개변수를 한꺼번에 바꾸지 마세요.

결론: 호환성을 확인한 다음 사용 경험을 비교하세요

기존 설정이 안정적으로 작동한다면 분기 이름만 보고 옮길 필요는 없습니다. REALITY나 Vision이 필요할 때 해당 설정을 지원하는 Xray 기반 클라이언트를 선택한 뒤 같은 조건에서 연결을 확인하세요. 코어 선택만으로 노드 품질이나 네트워크 경로를 점검할 필요가 없어지는 것은 아닙니다.

자주 묻는 질문: 가져오기 성공, 구형 노드, 전환 실패

v2flyNG에서 VLESS 링크를 가져올 수 있는데도 왜 연결되지 않나요?

먼저 노드 세부 정보를 열어 REALITY나 Vision이 포함되어 있는지 확인하세요. VLESS 기본 필드를 인식한다고 해서 확장 기능까지 실행할 수 있는 것은 아닙니다. 노드 요구사항이 코어 지원 범위를 벗어난다면 호환되는 v2rayNG를 사용하거나 서비스 제공자에게 다른 프로토콜 조합의 노드 설정을 요청하세요.

구형 VMess 노드는 반드시 V2Fly에서 Xray로 바꿔야 하나요?

그럴 필요는 없습니다. 두 방식 모두 VMess를 지원하며 실제 결과는 전송 방식, TLS, 서버 설정, 버전 간 호환성에도 좌우됩니다. 기존 노드가 안정적으로 작동한다면 현재 설정을 유지하세요. 구체적인 오류가 발생하면 로그를 확인해야 합니다. 코어 전환이 모든 문제를 해결하는 것은 아닙니다.

Xray의 JSON 전체를 V2Fly에 그대로 전달해도 되나요?

그렇게 가정해서는 안 됩니다. 일부 구조는 비슷하지만 확장 필드, 전송 설정, 버전에 따른 설정 진입점이 다를 수 있습니다. 전환할 때는 대상 코어의 설정 형식에 맞게 다시 정리하세요. 먼저 최소 설정으로 연결을 확인한 뒤 라우팅, DNS, 기타 정책을 단계적으로 추가해야 합니다.

구독을 업데이트하면 클라이언트에 새 코어 기능이 자동으로 추가되나요?

아니요. 구독 업데이트는 노드 데이터를 새로 가져올 뿐, 지원하지 않던 코어가 기능을 지원하게 만들지는 않습니다. 새 노드에 새로운 기능이 필요하다면 클라이언트의 설정 파싱 기능과 코어의 구현 기능을 각각 확인하세요. 업데이트 후에는 현재 노드와 실제 실행 중인 버전도 다시 확인해야 합니다.

클라이언트와 플랫폼 선택

데스크톱에서는 v2rayN을 선택하고, 안드로이드에서는 노드 요구사항에 따라 v2rayNG 또는 v2flyNG를 선택하세요. 먼저 프로토콜과 보안 계층 지원 여부를 확인한 뒤 구독을 가져오고 연결을 테스트하면 됩니다.

v2rayN 다운로드