Xray와 V2Fly 코어 차이: 포크 배경, 기능 비교와 클라이언트 선택

Xray가 V2Fly에서 포크된 배경부터 VLESS 흐름 제어, REALITY, 설정 호환성까지 비교하고 v2rayNG와 v2flyNG의 선택 기준을 안내합니다.

이 글 빠르게 보기

노드에서 요구하는 프로토콜, 전송 방식, 보안 설정을 먼저 확인한 뒤 해당 항목을 처리할 수 있는 코어를 선택하세요. 일반 VMess 노드는 이름만 보고 우열을 판단할 필요가 없습니다. 노드에 REALITY나 특정 VLESS 흐름 제어가 명시되어 있다면 Xray 지원 여부를 우선 확인해야 합니다. v2rayN, v2rayNG, v2flyNG를 비교 중이거나 ‘가져오기는 됐는데 연결되지 않는’ 문제를 겪는 분을 위한 글입니다.

포크의 시작: 프로젝트 계보와 클라이언트 이름은 별개

Project V의 V2Ray 프로젝트는 이후 V2Fly 커뮤니티가 이어받아 관리했습니다. 흔히 V2Fly 코어라고 부르는 것은 이 계열의 v2ray-core를 뜻합니다. Xray는 2020년 관련 코드 기반에서 독립적으로 발전하기 시작해 별도의 코어로 개발되고 있습니다. 두 코어는 같은 뿌리를 공유하지만, 이후 추가된 전송·보안 기능과 설정 항목이 서로 호환된다고 보장할 수는 없습니다. 호환성은 노드 링크에 ‘V2Ray’라고 적혀 있는지만 볼 것이 아니라 현재 실행 중인 코어를 기준으로 판단해야 합니다.

그래픽 클라이언트는 구독을 가져오고 서버 목록을 표시하며 시스템 프록시를 전환하는 역할을 합니다. 코어는 설정에 따라 연결을 만들고 트래픽을 처리합니다. 데스크톱용 v2rayN의 실제 기능은 현재 사용하는 코어와 버전에 따라서도 달라집니다. Android에서는 v2rayNG가 Xray 코어를, v2flyNG가 V2Fly 코어를 사용합니다. 클라이언트를 바꾸면 코어도 달라질 수 있으므로 같은 링크라도 두 클라이언트에서 결과가 다를 수 있습니다.

2020
Xray가 독립적으로 발전하기 시작한 해
2개
각각 확인해야 하는 코어 계열
3단계
프로토콜·전송 방식·보안 설정을 단계별로 확인

이 세 단계는 버전 순위를 뜻하지 않습니다. VLESS 노드를 예로 들면 VLESS는 프록시 프로토콜, TCP는 전송 방식이며 TLS나 REALITY는 연결에 사용하는 보안 설정입니다. ‘VLESS 지원’만 확인해서는 클라이언트가 노드에 지정된 흐름 제어와 보안 매개변수까지 처리할 수 있는지 알 수 없습니다.

기능 차이: 서버 설정부터 확인한 뒤 호환성 판단

VMess와 WebSocket, TLS 조합은 두 코어 계열에서 오랫동안 사용되어 온 일반적인 구성입니다. 그래도 연결 가능 여부는 서버 설정, 클라이언트 코어 버전, 각 항목의 입력값이 일치하는지에 달려 있습니다. VLESS도 모두 같은 방식으로 볼 수는 없습니다. 일반 VLESS 구성과 Xray 전용 흐름 제어가 적용된 구성은 필요한 기능이 다릅니다. 특히 링크나 구독에 xtls-rprx-vision, reality 같은 항목이 있다면 임의로 지워도 되는 메모처럼 취급하지 마세요.

노드 구성선택 기준가져온 뒤 확인할 항목
VMess + WebSocket + TLS두 코어 모두 후보가 될 수 있습니다. 실제 버전과 서버 설정을 기준으로 판단하세요.주소, 포트, 경로, Host, TLS 도메인
일반 VLESS + TCP + TLS‘VLESS’라는 이름만으로 결론 내리지 말고 전체 설정을 지원하는 버전인지 먼저 확인하세요.사용자 ID, 전송 방식, TLS 도메인, 인증서 관련 설정
VLESS + Vision 흐름 제어해당 흐름 제어를 지원하는 Xray 코어를 우선 사용하세요.flow 값이 서버에서 요구하는 값인지 확인하세요.
VLESS + REALITYREALITY를 지원하는 Xray 코어를 우선 사용하세요. 일반 TLS 설정으로 대체할 수 없습니다.공개 키, 짧은 ID, 대상 도메인, 지문 등의 항목

표의 ‘우선’은 설정 불일치 가능성을 낮추기 위한 기준이지, 속도를 보장한다는 뜻은 아닙니다. 예를 들어 서버가 443 포트에서 수신한다는 사실은 클라이언트에도 같은 포트를 입력해야 한다는 뜻일 뿐입니다. 노드가 TLS를 사용한다거나 REALITY 매개변수가 올바르다는 근거는 아닙니다. 구독 항목에서 중요한 값이 빠지면 가져온 뒤 서버로 표시되더라도 연결되지 않을 수 있습니다.

결론: 노드 설정에 맞춰 코어 선택

구독에 REALITY 또는 xtls-rprx-vision이 명시되어 있다면 네트워크를 점검하기 전에 Xray 코어를 사용할 수 있는지부터 확인하세요. 일반 VMess 노드는 문제 해결을 위해 코어를 바로 바꾸기보다 설정값과 라우팅을 먼저 점검하는 편이 좋습니다.

클라이언트 선택: 데스크톱과 Android를 나눠서 확인

데스크톱에서 v2rayN을 사용한다면 현재 실행 중인 코어를 확인한 뒤 노드 설정을 처리할 수 있는지 판단하세요. ‘v2rayN에서 링크를 가져올 수 있다’는 것이 ‘현재 코어가 링크의 모든 설정을 지원한다’는 뜻은 아닙니다. Android에서는 필요한 기능에 따라 선택 범위를 좁힐 수 있습니다. v2rayNG는 Xray, v2flyNG는 V2Fly 코어를 사용합니다. 어느 쪽을 선택하든 앱 버전, 구독 내용, 서버 요구 사항을 확인해야 합니다.

Xray 코어: v2rayN 또는 v2rayNG

추천

노드에서 REALITY, Vision 등 Xray 전용 기능을 사용한다면 이 코어를 기준으로 설정을 먼저 확인하세요. 일반 VMess 노드에도 사용할 수 있지만, 연결 결과는 실제 설정값에 따라 달라집니다.

추천 대상: 구독에 Xray 전용 설정이 있거나 데스크톱과 Android 설정을 함께 점검해야 하는 경우

V2Fly 코어: v2flyNG

V2Fly 코어에 맞춰 관리되는 노드에 적합합니다. 기존 VMess 설정 등을 계속 사용할 때는 현재 코어가 인식하지 못하는 항목이 구독에 포함되지 않았는지 확인하세요.

추천 대상: 서버 설정이 V2Fly용으로 명확하게 구성되어 있고 기존 노드가 안정적으로 연결되는 경우

같은 구독에 일반 노드와 REALITY 노드가 함께 있다면 일반 노드 하나가 연결된다는 이유만으로 전체 구독이 호환된다고 판단하지 마세요. 서버 세부 정보를 열어 프로토콜, 전송 방식, 보안 설정, 흐름 제어를 노드별로 기록한 다음 모든 항목이 갖춰진 노드 하나로 테스트하세요. 이렇게 비교하면 구독 전체를 반복해서 전환하는 것보다 문제를 쉽게 찾을 수 있습니다.

여러 기기에서 하나의 구독 사용: 설정 항목을 빠짐없이 확인

구독 링크는 서버 목록을 제공할 뿐, 코어마다 모든 설정을 자동으로 바꿔 주지는 않습니다. 데스크톱과 Android에서 같은 구독을 사용한다면 양쪽에서 테스트할 노드 하나를 먼저 정하고 가져온 뒤의 설정을 각각 확인하세요. 공급자가 노드 포트, 전송 경로, 보안 설정을 변경했다면 두 클라이언트 모두 구독을 업데이트해야 합니다. 한쪽에서 수동으로 수정해도 다른 쪽에는 반영되지 않습니다.

구성 방법: 노드 기능에 맞춰 양쪽 기기 설정

데스크톱: v2rayN
  • 현재 사용하는 코어가 노드 요구 사항에 맞는지 확인하세요.
  • 구독을 업데이트한 뒤 노드 이름만 보지 말고 서버 세부 정보를 확인하세요.
  • 노드 하나로 먼저 테스트한 다음 시스템 프록시와 라우팅 설정을 확인하세요.
Android: v2rayNG 또는 v2flyNG
  • REALITY나 Vision이 필요하다면 v2rayNG 설정부터 확인하세요.
  • v2flyNG를 사용할 때는 코어 기능에 맞는 노드를 선택하세요.
  • 같은 구독을 업데이트한 뒤 프로토콜, 포트, 보안 설정을 비교하세요.

같은 구독 주소를 사용하면 동일한 서버 목록을 받을 수 있지만, 실제 연결 가능 여부는 노드별 설정을 확인해야 합니다.

라우팅 분기는 별도의 설정 단계입니다. 클라이언트에서 서버 연결에 성공했더라도 특정 사이트가 규칙에 따라 직접 연결되도록 설정되어 있을 수 있습니다. v2rayN에서는 ‘설정’ → ‘매개변수 설정’에서 로컬 프록시 관련 항목을 확인한 다음 현재 시스템 프록시 모드와 라우팅 규칙을 점검하세요. 브라우저에서 로컬 SOCKS 프록시를 따로 지정했다면 클라이언트에 표시된 수신 포트와도 대조해야 합니다. 흔히 쓰이는 10808이 화면에 표시된 실제 값과 같다고 단정할 수는 없습니다.

코어를 바꾸거나 노드를 옮길 때는 다음 순서로 점검하세요

v2flyNG에서 v2rayNG로 옮기거나 v2rayN에서 코어를 변경할 때는 기존 구독 주소와 정상 작동이 확인된 노드 하나를 비교 기준으로 남겨 두세요. 구독, 라우팅, DNS, 로컬 프록시 포트를 한 번에 바꾸지 마세요. 연결이 복구되어도 어떤 변경이 원인이었는지 알기 어렵습니다. 항목을 하나씩 변경하고 테스트해야 설정 호환성 문제와 로컬 프록시 문제를 구분할 수 있습니다.

  1. 가져온 설정 확인: 노드 세부 정보를 열고 서버 주소, 포트, 사용자 ID, 전송 방식, 경로, 보안 설정을 항목별로 비교하세요. REALITY 노드는 공개 키, 짧은 ID, 도메인, 지문을 확인하고 Vision 노드는 흐름 제어 값을 확인하세요.
  2. 코어 기능 확인: 현재 실행 중인 코어가 노드 요구 사항에 맞는지 확인하고 클라이언트에서 지원하지 않는 설정 항목을 표시하는지 살펴보세요. 링크를 가져올 수 있다는 것은 일부 설정을 읽었다는 뜻일 뿐, 연결에 필요한 값이 모두 갖춰졌다는 뜻은 아닙니다.
  3. 로컬 프록시 확인: 먼저 클라이언트에서 연결을 테스트하세요. 클라이언트 연결은 정상인데 브라우저에서 접속되지 않는다면 시스템 프록시 스위치, 브라우저 프록시 설정, 로컬 SOCKS 포트가 화면에 표시된 값과 일치하는지 확인하세요.
  4. 마지막으로 라우팅 분기 확인: 일부 대상만 접속되지 않는다면 라우팅 규칙에서 해당 대상이 프록시 또는 직접 연결로 설정되어 있는지 살펴보고 DNS 설정도 확인하세요. 모든 라우팅 문제를 코어 차이 탓으로 돌리지 마세요.

로그를 보면 문제 범위를 좁히는 데 도움이 됩니다. ‘지원하지 않는 설정 항목’이 표시되면 코어와 버전을 먼저 확인하세요. 연결 시간 초과가 발생하면 주소, 포트, 현재 네트워크를 점검해야 합니다. 핸드셰이크가 실패한다면 서버에서 요구하는 보안 매개변수도 확인하세요. 같은 오류 메시지라도 원인은 다를 수 있으니 노드 세부 정보와 최근 변경 내역을 함께 살펴보는 것이 좋습니다.

결론: 한 번에 한 단계씩 변경

노드를 고정하고 코어를 확인한 다음 연결을 테스트하세요. 마지막으로 시스템 프록시, 라우팅, DNS를 점검하면 됩니다. 이렇게 하면 Xray와 V2Fly의 호환 범위를 판단하면서 로컬 라우팅 문제를 노드 장애로 잘못 진단하는 일도 줄일 수 있습니다.

코어 선택의 핵심은 어느 쪽 이름이 더 최신인지가 아니라 현재 노드에 어떤 설정 항목이 필요한지입니다. 기존 V2Fly 설정이 안정적으로 작동한다면 우선 그대로 사용하세요. REALITY나 특정 VLESS 흐름 제어를 사용할 계획이라면 해당 설정을 지원하는 Xray 코어를 선택하고 서버 정보를 항목별로 대조해야 합니다. 데스크톱에서는 v2rayN이 현재 사용하는 코어를 확인하고, Android에서는 v2rayNG와 v2flyNG의 코어 차이에 따라 선택하면 문제를 더 명확하게 파악할 수 있습니다.

클라이언트 다운로드 보기