Xray 코어와 V2Fly 코어 차이 비교: XTLS, REALITY 및 프로토콜 호환성

Xray와 V2Fly 두 코어 브랜치의 계보를 정리하고 XTLS·REALITY 등의 기능 지원과 설정 호환성을 비교해 v2rayN·v2rayNG·v2flyNG에 각각 어떤 코어가 탑재되는지 설명합니다.

이 글 한눈에 보기

클라이언트 선택, 구독 호환성 확인 또는 서버 설정 마이그레이션이 필요한 사용자를 위한 안내입니다. 일반적인 VMess, VLESS, WebSocket, TLS 설정은 두 코어에서 상당 부분 호환되지만 XTLS Vision, REALITY 및 일부 확장 필드는 Xray 계열에 해당합니다. 노드 프로토콜, 클라이언트 유형과 로그를 기준으로 사용할 코어를 판단할 수 있습니다.

두 코어 브랜치의 관계와 역할

V2Fly 코어는 일반적으로 v2ray-core의 커뮤니티 계승 버전을 가리키며 인바운드, 아웃바운드, 라우팅, DNS, 전송 계층과 정책 설정을 처리합니다. Xray-core는 초기 v2ray-core 코드를 기반으로 발전한 독립 브랜치로, 유사한 설정 구조를 많이 유지하면서 VLESS, XTLS, REALITY 등의 기능을 계속 확장했습니다. 두 코어는 같은 프로그램의 테마만 다른 형태가 아니며 클라이언트 이름만 바꿔서 전환할 수도 없습니다.

데스크톱 및 Android 클라이언트는 주로 구독 관리, 노드 편집, 시스템 프록시 제어와 로그 표시를 담당하고, 실제 연결과 라우팅을 수행하는 것은 코어입니다. 같은 서버 주소, 포트와 사용자 식별자를 사용하더라도 코어에 따라 연결 가능 여부가 달라지며, 프로토콜 필드, 전송 방식, 보안 계층과 코어 버전의 일치 여부도 영향을 줍니다.

25.3.6
이 글의 Xray 설정 기준
5.28.0
이 글의 V2Fly 설정 기준
10808
일반적인 로컬 SOCKS 포트
10809
일반적인 로컬 HTTP 포트

위 버전 번호는 이 글에서 설정을 확인할 때 사용한 세대를 나타내며 다운로드 센터에 표시되는 최신 버전과는 다를 수 있습니다. 코어 업데이트로 필드가 추가되거나 이전 별칭이 폐기되고 검증 규칙이 바뀔 수 있으므로 설정을 마이그레이션하기 전에 실제 실행 버전을 확인하고 로그의 첫 번째 버전 줄을 점검해야 합니다.

Xray 코어

권장

일반적인 VMess, VLESS, Trojan, SOCKS 및 HTTP 아웃바운드를 지원하며 XTLS Vision, REALITY 등 Xray 계열 기능을 제공합니다.

적합한 용도: VLESS Vision, REALITY 노드 및 주력 일상 설정

V2Fly 코어

v2ray-core 설정 체계를 이어받아 일반적인 VMess, VLESS, WebSocket, gRPC, TLS 및 기존 라우팅 설정에 적합합니다.

적합한 용도: 표준 프로토콜 노드, 기존 V2Fly 서버 및 설정 유지 관리

결론: 먼저 보안 계층을 확인한 뒤 코어를 선택하세요

공유 링크나 구독에 security=reality 또는 flow=xtls-rprx-vision이 있으면 Xray 코어를 사용해야 합니다. VMess 또는 TLS·WebSocket·gRPC를 조합한 표준 VLESS인 경우에만 두 코어 모두 호환될 가능성이 있습니다.

XTLS Vision과 REALITY가 핵심 차이를 만드는 이유

XTLS는 Xray 계열의 전송 최적화 체계이며, 현재 노드 설정에서는 VLESS와 xtls-rprx-vision 플로우 제어를 조합하는 방식이 일반적입니다. 클라이언트와 서버가 해당 flow 값을 모두 이해해야 합니다. 서버가 Vision을 요구하는데 클라이언트 코어가 해당 필드를 무시하거나 인식하지 못하면 일반 TLS로 자동 전환되지 않고 대개 핸드셰이크 단계에서 연결이 실패합니다.

REALITY는 Xray의 보안 및 핸드셰이크 방식입니다. 사용 가능한 클라이언트 설정에는 일반적으로 서버 주소, 포트, 사용자 식별자, serverName, 공개 키, shortId, fingerprint 등의 정보가 필요합니다. 구독에 공개 키가 없거나 shortId가 일치하지 않으면 주소와 포트로 TCP 연결을 수립하더라도 코어가 이후 핸드셰이크를 거부합니다.

기능 또는 설정 Xray-core V2Fly 코어 마이그레이션 판단
VMess + WebSocket + TLS 지원 지원 경로, Host 및 TLS 이름을 중점적으로 확인
표준 VLESS + TLS 지원 지원 전송 계층 필드와 서버 버전도 확인 필요
VLESS + XTLS Vision 지원 Xray Vision 설정으로 처리하지 않음 Xray 코어 유지
VLESS + REALITY 지원 해당 Xray 필드와 호환되지 않음 이름만 바꿔 직접 변환할 수 없음
도메인 및 IP 라우팅 규칙 지원 지원 규칙 리소스와 필드 이름 확인

일반적인 Xray REALITY 아웃바운드 예시

{
  "protocol": "vless",
  "settings": {
    "vnext": [
      {
        "address": "198.51.100.20",
        "port": 443,
        "users": [
          {
            "id": "11111111-2222-3333-4444-555555555555",
            "encryption": "none",
            "flow": "xtls-rprx-vision"
          }
        ]
      }
    ]
  },
  "streamSettings": {
    "network": "tcp",
    "security": "reality",
    "realitySettings": {
      "serverName": "www.example.com",
      "fingerprint": "chrome",
      "publicKey": "예시 공개 키는 필드 위치만 설명",
      "shortId": "6ba85179e30d4fc2"
    }
  }
}

이 코드는 필드 계층을 확인하기 위한 예시일 뿐이며 주소, 사용자 식별자와 공개 키는 연결 가능한 노드 정보가 아닙니다. REALITY를 지원하지 않는 코어에 전달하면 설정 파싱 오류, 알 수 없는 보안 유형 또는 시작 실패가 발생할 수 있습니다. 올바른 방법은 호환되는 Xray 코어로 되돌리는 것이며, 오류 필드를 삭제한 뒤 계속 연결하는 것이 아닙니다.

프로토콜이 같아도 설정을 그대로 교환할 수 있는 것은 아닙니다

Xray와 V2Fly는 inbounds, outbounds, routing, dns, policy 같은 많은 설정 개념을 공유합니다. 기본 VMess 아웃바운드는 대체로 쉽게 이전할 수 있지만, 전체 설정에는 브랜치 고유 필드, 규칙 리소스, 전송 매개변수 또는 실험 기능이 포함될 수 있습니다. 코어가 JSON을 읽었다는 것은 문법과 필드 검증을 통과했다는 뜻일 뿐, 트래픽이 예상대로 분기된다는 의미는 아닙니다.

구독 환경에서는 클라이언트 변환 단계가 하나 더 있습니다. 구독 내용은 공유 링크 목록일 수도 있고 서버가 생성한 구조화 데이터일 수도 있습니다. v2rayN, v2rayNG, v2flyNG는 먼저 구독을 파싱한 뒤 코어가 필요한 실행 설정을 생성합니다. 따라서 두 클라이언트에서 같은 구독의 노드 이름이 같아도 최종 생성되는 JSON은 다를 수 있습니다.

두 유형의 노드별 코어 구성

Xray 전용 필드 포함
  • 데스크톱에서는 v2rayN의 Xray 코어 사용
  • Android에서는 Xray 코어가 탑재된 v2rayNG 사용
  • flow, publicKey, shortId 및 fingerprint 유지
  • 서버와 클라이언트를 모두 업그레이드한 뒤 새 필드 활성화
표준 VMess 또는 VLESS
  • 서버에서 실제 사용하는 코어에 맞춰 클라이언트 선택
  • WebSocket 경로, Host 및 포트 확인
  • TLS의 serverName과 시스템 시간 확인
  • 마이그레이션 후 DNS와 라우팅 분기 재테스트

프로토콜 이름은 첫 번째 조건일 뿐입니다. 보안 계층, 전송 계층과 플로우 제어 필드가 모두 일치해야 설정을 마이그레이션할 수 있습니다.

설정 마이그레이션 확인 순서

  1. 노드 프로토콜이 VMess, VLESS 또는 다른 유형인지 확인하고 노드 메모만으로 판단하지 마세요.
  2. security, flow, network, serverName, Host, path 등 핵심 필드를 확인하세요.
  3. 대상 클라이언트가 실제로 호출하는 코어와 버전을 확인하고 시작 로그의 첫 줄을 기록하세요.
  4. 먼저 단일 노드 연결을 수립한 다음 도메인 해석, 직접 연결 규칙과 프록시 규칙을 테스트하세요.
  5. 마지막으로 전체 구독을 가져와 여러 노드가 개별 설정 오류를 가리지 않도록 하세요.

결론: 마이그레이션 테스트에서는 연결과 라우팅을 함께 확인하세요

브라우저에서 웹페이지 하나가 열린다고 마이그레이션이 완료된 것은 아닙니다. 최소한 프록시 도메인 하나, 직접 연결 도메인 하나와 DNS 조회 한 번을 테스트하고 로그의 아웃바운드 태그가 예상한 규칙과 일치하는지 확인해야 합니다.

v2rayN, v2rayNG, v2flyNG는 각각 어떤 코어를 사용할까요?

v2rayN은 데스크톱 클라이언트로, 현재는 일반적으로 Xray 코어를 사용해 VLESS, Vision 및 REALITY 노드를 처리합니다. 클라이언트는 노드 목록, 구독 업데이트, 시스템 프록시와 라우팅 설정을 담당하고 코어 프로세스가 실제 연결을 처리합니다. 문제를 확인할 때는 ‘클라이언트 UI 버전’과 ‘코어 버전’을 구분해야 하며, 두 버전 번호는 서로 다릅니다.

v2rayNG는 Android 클라이언트이며 Xray 코어가 탑재되어 데스크톱과 REALITY 또는 Vision 노드가 포함된 구독을 공유하기에 적합합니다. v2flyNG는 V2Fly 코어 설정을 대상으로 하므로 V2Fly 서버, 표준 VMess/VLESS와 기존 v2ray-core 설정 체계를 명확히 사용하는 환경에 더 적합합니다.

구독에 일반 노드와 REALITY 노드가 함께 있으면 어떤 코어를 선택해야 하나요?

Xray 코어를 우선 사용하세요. 일반 VMess, 표준 VLESS와 Xray 전용 노드를 모두 처리할 수 있어 V2Fly로 전환한 뒤 REALITY와 Vision 설정이 손실되는 문제를 피할 수 있습니다.

같은 VMess 노드가 두 코어에서 모두 연결되면 속도가 항상 다른가요?

아닙니다. 속도는 서버 부하, 회선 패킷 손실, 혼잡 제어, TLS, 전송 계층과 로컬 네트워크의 영향도 받습니다. 같은 시간대, 같은 노드와 동일한 라우팅 규칙으로 최소 세 번 반복 테스트해야 합니다.

v2flyNG에서 REALITY가 포함된 구독을 바로 가져올 수 있나요?

구독 파서는 노드를 표시할 수 있지만 V2Fly 코어가 이를 바탕으로 Xray REALITY 설정을 실행할 수 있는 것은 아닙니다. v2rayNG를 사용하고 원본 구독을 다시 가져와 전체 필드를 유지해야 합니다.

코어를 바꾼 뒤 웹페이지가 열리지 않으면 먼저 어디를 확인해야 하나요?

먼저 코어 프로세스가 시작되었는지 확인한 다음 로컬 SOCKS 또는 HTTP 포트가 여전히 10808, 10809인지 확인하세요. 이어서 시스템 프록시 포트와 로그의 설정 파싱, DNS 및 핸드셰이크 오류를 점검합니다.

서버 주소와 사용자 식별자만 복사하면 VLESS를 마이그레이션할 수 있나요?

충분하지 않습니다. 포트, 전송 방식, 보안 계층, serverName, flow, 경로, Host와 REALITY 환경의 공개 키, shortId, fingerprint도 복사해야 합니다.

노드 유형별 코어 선택과 연결 문제 해결

구독에 VLESS, REALITY, Vision이 명시되어 있다면 데스크톱에서는 v2rayN, Android에서는 v2rayNG를 선택하는 것이 일반적으로 가장 간단합니다. 서버가 V2Fly를 사용하고 노드가 표준 VMess 또는 VLESS이며 검증된 기존 라우팅 설정이 있다면 v2flyNG로 같은 코어 체계를 유지할 수 있습니다.

‘노드 시간 초과’만으로 프로토콜 비호환을 판단하지 마세요. 주소에 연결할 수 없거나 포트가 차단되었거나 시스템 시간이 잘못되었거나 DNS 응답이 비정상적이거나 서버가 실행되지 않은 경우에도 시간 초과가 발생할 수 있습니다. 코어 비호환에서 더 흔한 신호는 unknown field, unsupported security, failed to parse config, invalid flow 같은 설정 또는 핸드셰이크 오류입니다.

로그 현상 우선 확인할 항목 처리 방법
unknown field 또는 unsupported security 코어 브랜치와 설정 필드 REALITY 설정을 V2Fly에 전달했는지 확인
invalid flow flow 값과 프로토콜 조합 VLESS와 xtls-rprx-vision인지 확인
connection refused 서버 포트와 프로세스 주소, 포트 및 서버 리스닝 상태 확인
context deadline exceeded 회선, DNS 및 핸드셰이크 매개변수 주소 연결 가능 여부와 serverName을 각각 테스트
로컬 포트 사용 여부 10808, 10809 등 리스닝 포트 중복 코어 프로세스를 종료하거나 클라이언트 포트 변경

클라이언트 측 점검 5단계

  1. 현재 연결을 완전히 중지하고 기존 코어 프로세스가 종료되었는지 확인하세요.
  2. 클라이언트 설정을 열어 코어 이름, 코어 버전, 로컬 SOCKS 포트와 HTTP 포트를 기록하세요.
  3. 노드 하나만 선택해 시작하고 로그에서 설정 로드와 로컬 리스닝이 완료되었는지 확인하세요.
  4. 시스템 프록시를 켠 뒤 대상 도메인에 접속하고 로그에서 적용된 라우팅 규칙과 아웃바운드 태그를 확인하세요.
  5. 단일 노드 검증을 통과한 후 구독 자동 업데이트와 전체 라우팅 규칙을 복원하세요.

코어 선택의 최종 판단 기준

Xray와 V2Fly가 공유하는 부분만으로도 많은 기본 프록시 설정을 처리할 수 있지만, 두 코어는 이미 독립적으로 발전한 별개의 코어입니다. Xray의 주요 식별점은 VLESS, XTLS Vision과 REALITY의 조합이며, V2Fly의 가치는 자체 설정 체계와 서버 배포 경로를 이어가는 데 있습니다. 모든 노드를 특정 JSON 형식으로 일괄 변환하면 반드시 호환된다는 규칙은 없습니다.

일반 사용자에게 가장 신뢰할 수 있는 판단 순서는 노드 필드, 클라이언트 코어, 서버 구현, 실행 로그입니다. 데스크톱에서는 v2rayN, Android에서는 v2rayNG를 사용하면 Xray 전용 노드를 처리할 수 있습니다. V2Fly 환경을 명확히 유지하는 경우에는 v2flyNG를 사용하세요. 코어를 바꾼 뒤에는 구독, DNS, 라우팅과 로컬 프록시 포트를 반드시 다시 확인해야 합니다.

v2rayN 다운로드 4개 플랫폼 설치 패키지 보기