핵심 내용

안드로이드에서 v2rayNG와 v2flyNG 중 무엇을 쓸지는 먼저 노드에서 필요한 프로토콜과 전송 필드를 확인하고, 클라이언트가 해당 필드를 유지하는지 살펴보면 됩니다. 이 글에서는 클라이언트·코어·프로토콜을 구분해 REALITY, Vision, 일반 TLS의 차이를 설명하고, 구독 이전과 연결 실패 시 점검 순서를 안내합니다. 사용 중인 VMess 노드가 잘 작동한다면 클라이언트를 바꿔야 하는지도 판단할 수 있습니다.

1. Project V, V2Fly, Xray의 관계

Project V는 네트워크 프록시 도구를 중심으로 구성된 프로젝트 생태계이며, V2Ray는 그 핵심 소프트웨어입니다. V2Fly 커뮤니티는 V2Ray 개발과 유지보수를 이어가고 있습니다. 클라이언트에서 말하는 “V2Fly 코어”는 일반적으로 이 프로젝트가 관리하는 V2Ray 코어를 뜻합니다. Xray는 2020년 V2Ray 코드 기반에서 분기해 나온 뒤, 독자적인 기능과 설정 방향으로 발전했습니다.

코드의 출처가 같다고 해서 현재 설정까지 서로 호환되는 것은 아닙니다. 두 프로젝트 모두 인바운드, 아웃바운드, 라우팅 같은 기본 개념과 일부 공통 프로토콜을 유지하지만, 새로운 기능과 필드 이름, 설정 형식은 다를 수 있습니다. Xray에서 읽을 수 있는 설정이라고 해서 V2Fly에서도 그대로 사용할 수 있는 것은 아닙니다.

2. VMess·VLESS·REALITY·XTLS 지원 범위

노드 이름에 “V2Ray”가 들어 있는지만 보고 호환성을 판단해서는 안 됩니다. 노드에는 최소한 주소, 포트, 인증 방식, 전송 설정이 포함되며 TLS나 REALITY 매개변수가 추가될 수도 있습니다. 구독 그룹 이름은 단순한 라벨일 뿐, 프로토콜 지원 여부를 알려주지 않습니다.

항목 Xray 계열 V2Fly 계열 선택 시 확인 사항
VMess 지원 지원 전송 방식, TLS, 경로, 서버 설정도 확인해야 합니다. 프로토콜 이름만 맞추면 안 됩니다.
VLESS 지원하며 관련 확장 기능도 제공 VLESS 구현이 있지만, 구체적인 조합은 코어와 클라이언트 지원 여부를 확인해야 합니다. 일반 VLESS와 REALITY·Vision을 결합한 구성을 혼동하지 마세요.
REALITY 호환되는 버전에서 지원 Xray의 REALITY 설정은 지원하지 않음 노드에 REALITY가 필요하다면 이 글에서 비교하는 두 안드로이드 클라이언트 중 v2rayNG를 선택하세요.
XTLS Vision xtls-rprx-vision 흐름 제어 지원 이 Xray 흐름 제어는 지원하지 않음 서버에서 요구하는 flow를 그대로 유지해야 합니다. 필드를 삭제해 호환시키려 해서는 안 됩니다.
WebSocket + TLS 해당 설정 지원 해당 설정 지원 코어 이름만 보고 판단하지 말고 경로, Host, SNI, 인증서를 확인하세요.

VLESS 자체는 전송 암호화를 제공하지 않으므로 “VLESS를 사용한다”는 말이 곧 TLS를 적용했다는 뜻은 아닙니다. REALITY도 VMess나 VLESS와 나란히 놓이는 프록시 프로토콜이 아닙니다. Xray 설정에서 전송 보안 항목에 해당하며, VLESS 및 Vision과 함께 쓰이는 경우가 많지만 세 이름은 서로 다른 설정 계층을 가리킵니다.

XTLS는 기술 발전 과정에서 이어져 온 방식입니다. 오래된 자료의 XTLS 설정이 현재 노드에 그대로 적용된다고 볼 수는 없습니다. flow=xtls-rprx-vision을 사용한다면 서버가 제공한 전체 조합에 맞춰 설정하세요. 오래된 가이드를 따라 전송 보안 항목을 xtls로 바꾸지 마세요. 클라이언트에 노드가 표시된다고 해서 코어가 모든 매개변수를 받아들였다는 뜻은 아닙니다.

결론: 먼저 security와 flow를 확인한 뒤 클라이언트를 비교하세요

구독 노드에 security=reality 또는 flow=xtls-rprx-vision이 포함되어 있다면 v2rayNG를 우선 사용하세요. VMess + WebSocket + TLS만 사용하는 경우에는 현재 잘 작동하는 클라이언트를 그대로 쓰면 됩니다. 코어 이름만 바꾸기 위해 옮길 필요는 없습니다.

3. 안드로이드에서 v2rayNG와 v2flyNG 선택하기

두 클라이언트는 용도가 겹치지만, “새 코어가 무조건 빠르다”거나 “오래된 프로토콜이 더 안정적이다”라는 식으로 선택할 수는 없습니다. 실제 성능은 서버 부하, 접속 네트워크, DNS, 라우팅, 전송 조합의 영향을 받습니다. 같은 네트워크와 서버 조건에서 비교 테스트를 하지 않았다면 속도 차이를 단정해서는 안 됩니다.

v2rayNG · Xray 코어

추천

새 안드로이드 기기에 설치하며 노드에 REALITY나 Vision이 필요한 경우 우선 선택하세요. 가져온 뒤 서버 편집 화면에서 전송 보안, 흐름 제어, 서버 이름, 공개키 관련 매개변수가 변환 과정에서 빠지지 않았는지 확인하세요.

적합한 경우: VLESS + REALITY, Vision, Xray가 필요한 노드

v2flyNG · V2Fly 코어

기존 설정을 V2Fly 계열로 관리 중이고 현재 노드 조합이 정상 작동한다면 계속 사용해도 됩니다. VMess 등 두 계열에서 공통으로 지원하는 프로토콜도 전송 매개변수를 확인해야 합니다. REALITY 링크를 가져오는 것만으로 해당 기능을 사용할 수는 없습니다.

적합한 경우: 기존 V2Fly 설정, 호환성이 확인된 VMess 노드, 설정 재현

위 추천은 프로토콜 요구 사항을 기준으로 한 것이며 모든 기기의 성능 순위가 아닙니다. 현재 v2flyNG가 정상적으로 시작되고 원하는 사이트에 접속할 수 있으며 라우팅도 예상대로 작동한다면, 구독에 Xray 전용 기능이 없는 한 기존 설정을 유지하는 편이 불필요한 이전보다 관리하기 쉽습니다. 반대로 서버에서 REALITY를 명시적으로 요구한다면 호환되는 클라이언트로 바꾸세요. 지원되지 않는 설정을 계속 수정하는 것은 해결책이 아닙니다.

4. 필드별 노드 점검: 원격 포트와 로컬 리스너 구분하기

가져온 뒤 첫 점검은 포트부터 시작할 수 있습니다. 원격 포트 443, 로컬 SOCKS 10808, 로컬 HTTP 10809를 예로 들어 각각의 역할을 설명합니다. 뒤의 두 포트는 설정 예시일 뿐, 모든 클라이언트와 버전에서 같은 포트를 사용하는 것은 아닙니다.

443
원격 서버 포트 예시
10808
로컬 SOCKS 리스너 예시
10809
로컬 HTTP 리스너 예시

원격 포트는 노드 제공자가 정하며 서버가 수신 대기 중인 포트와 일치해야 합니다. 로컬 포트는 기기에서 앱의 연결을 받는 용도이므로 원격 포트와 같을 필요는 없습니다. 안드로이드 VPN 모드는 시스템 VPN 인터페이스를 통해 트래픽을 처리하므로 “모든 앱이 로컬 10808에 직접 연결한다”고 볼 수도 없습니다. 리스너 범위를 변경하면 다른 기기에서 해당 포트에 접근할 수 있는지도 달라집니다. 문제를 진단한다는 이유로 LAN 리스너를 함부로 열지 마세요.

  1. 프로토콜과 인증: VMess인지 VLESS인지 확인하고 사용자 ID가 온전히 입력되었는지 살펴보세요. 두 프로토콜의 편집 화면을 서로 바꿔 쓸 수 있는 양식으로 취급하면 안 됩니다.
  2. 전송: TCP인지 WebSocket인지 확인하세요. WebSocket은 경로와 Host도 점검해야 합니다. 필드를 비워 두는 것이 맞는지는 서버 설정을 기준으로 판단하세요.
  3. 일반 TLS: SNI와 서버 인증서 요구 사항을 확인하세요. 인증서 검증을 끄는 방법을 장기적인 해결책으로 삼지 마세요.
  4. REALITY: 서버 이름, 서버에서 제공한 공개키, Short ID, 지문 설정을 확인하세요. 링크의 pbk, sid, sni는 공유 링크 매개변수이며 코어 JSON 필드와 이름이 다를 수 있습니다.
  5. Vision: flow가 서버 설정과 일치하는지 확인하고, 현재 코어가 해당 전송 조합을 지원하는지도 살펴보세요. 오류를 없애려고 흐름 제어 설정을 삭제하면 안 됩니다.

5. 데스크톱과 안드로이드에서 구독을 함께 쓰는 두 가지 방법

데스크톱에서 v2rayN을, 휴대폰에서 안드로이드 클라이언트를 사용한다면 같은 노드 소스를 공유할 수 있지만 두 기기의 실행 설정까지 완전히 같다고 가정해서는 안 됩니다. 구독은 보통 서버 항목을 업데이트합니다. 시스템 프록시, VPN 연결, 앱별 설정, DNS, 로컬 라우팅 규칙은 기기마다 별도로 관리해야 합니다.

노드 기능에 맞춰 데스크톱과 안드로이드 클라이언트 구성하기

방법 A: 노드에 REALITY 또는 Vision이 포함된 경우
  • 데스크톱에서는 v2rayN을 사용하고, 호환되는 Xray 코어가 해당 설정을 실행하는지 확인하세요.
  • 안드로이드에서는 v2rayNG를 사용하고, 같은 소스의 호환되는 구독을 가져오세요.
  • 각 기기에서 보안 매개변수와 활성 서버를 확인한 다음 실제 접속 테스트를 진행하세요.
방법 B: 정상 작동하는 V2Fly 설정 유지하기
  • 데스크톱에서는 현재 v2rayN 버전에서 제공하는 코어 옵션을 확인하세요.
  • 안드로이드에서는 v2flyNG를 계속 사용하고, 노드 조합이 두 기기 모두에서 지원되는지 확인하세요.
  • 양쪽 기기의 라우팅과 DNS 설정을 따로 기록해 규칙 차이를 코어 차이로 오해하지 않도록 하세요.

같은 구독은 노드 소스만 공유합니다. 업데이트 주기, 활성 서버, 기기별 규칙은 따로 확인해야 합니다.

실제로 이전할 때는 새 클라이언트에 구독을 추가해 업데이트한 다음, 대상 노드 하나를 편집해 필드를 확인하세요. 기존 클라이언트 설정도 기록해 두되 테스트 중에는 프록시 연결을 하나만 활성화하세요. 일반적으로 안드로이드의 한 사용자 환경에서는 활성 VPN 서비스를 하나만 유지할 수 있습니다. 두 클라이언트가 VPN 인터페이스를 번갈아 점유하면 연결 결과를 제대로 비교하기 어렵습니다.

6. 가져오기는 성공했지만 연결되지 않을 때: 네 단계로 점검하기

“서버 목록에 노드가 보인다”는 것은 클라이언트가 노드를 해석하거나 저장했다는 의미일 뿐, 연결이 성립했다는 뜻은 아닙니다. 먼저 설정이 시작되는지 확인한 다음 원격 연결, 핸드셰이크, 트래픽 라우팅을 차례로 점검하세요. 한 번에 한 종류의 설정만 바꿔야 어떤 변경이 효과가 있었는지 알 수 있습니다.

  1. 코어가 시작되는지 확인하세요. 클라이언트 로그를 열고 설정을 해석하거나 시작하는 과정에서 오류가 있었는지 먼저 살펴보세요. 알 수 없는 필드나 흐름 제어 관련 오류가 나타나면 DNS를 바꾸기보다 코어 지원 범위와 버전을 확인하세요.
  2. 원격 서버에 연결할 수 있는지 확인하세요. 서버 주소와 포트를 잘못 입력하지 않았는지 확인하고, 연결 시간 초과·연결 거부·도메인 이름 확인 실패를 구분하세요. 각각 다른 계층의 문제이므로 모두 “프로토콜 문제”로 뭉뚱그릴 수 없습니다.
  3. 핸드셰이크 매개변수를 확인하세요. TLS 오류가 발생하면 기기 시간, SNI, 인증서를 먼저 점검하세요. REALITY 연결은 서버 이름, 공개키, Short ID를 확인해야 합니다. 서버 매개변수가 없다면 노드 제공자에게 문의하고, 값을 무작위로 조합해 시도하지 마세요.
  4. 트래픽 처리와 분기를 확인하세요. 코어는 시작됐지만 앱이 직접 연결된다면 VPN 권한, 앱별 목록, 우회 규칙, DNS를 확인하세요. 데스크톱에서는 v2rayN의 시스템 프록시 상태와 대상 앱이 시스템 프록시를 사용하는지 살펴보세요.

두 코어를 비교하려면 최소한 같은 기기, 같은 접속 네트워크, 같은 서버, 같은 프로토콜과 전송 조합을 사용하고 연결 결과를 기록해야 합니다. 네트워크 변경, 서로 다른 출구, 다른 라우팅 규칙은 추가 변수가 됩니다. 연결 테스트의 한 번의 지연 시간으로 다운로드 처리량을 판단할 수 없으며, 모든 환경에서 특정 코어가 더 빠르다는 근거로 삼을 수도 없습니다.

결론: 오류 상황을 기록한 뒤 코어 변경 여부를 결정하세요

클라이언트 버전, 코어 버전, 프로토콜, 전송 방식, 개인정보를 제거한 첫 번째 관련 오류를 기록하세요. REALITY나 Vision을 지원하지 않는 문제라면 v2rayNG를 사용하세요. 인증서, 주소, 라우팅 문제라면 해당 설정부터 바로잡아야 합니다. 클라이언트를 바꾼다고 저절로 해결되지는 않습니다.

7. 클라이언트 선택 관련 자주 묻는 질문

이미 VMess 노드가 있는데 모두 VLESS로 바꿔야 하나요?

프로토콜 이름만 바꾸기 위해 전환할 필요는 없습니다. 먼저 현재 노드가 연결과 유지 관리 요구 사항을 충족하는지 확인하세요. VLESS로 바꾸려면 서버에서도 해당 연결 지점과 인증 정보를 제공해야 합니다. 클라이언트의 프로토콜 선택 메뉴만 VLESS로 바꾼다고 되는 것이 아닙니다. 전송, 보안 계층, 라우팅 설정도 함께 점검해야 합니다.

v2flyNG에서 VLESS 링크를 가져올 수 있으면 REALITY에도 연결할 수 있나요?

그렇게 단정할 수 없습니다. 공유 링크를 해석할 수 있는 것과 코어가 해당 기능을 구현한 것은 별개의 문제입니다. 기본 VLESS 지원이 REALITY나 Vision 지원을 의미하지는 않습니다. 이런 기능이 필요하다면 호환되는 Xray 계열을 선택하고 가져온 필드를 확인하세요.

v2flyNG에서 v2rayNG로 바꾸면 라우팅 규칙도 함께 옮겨지나요?

일반 노드 공유 링크와 구독에는 기기의 모든 라우팅, DNS, 앱별 설정, VPN 옵션이 포함되지 않는 경우가 많습니다. 이전하기 전에 설정을 각각 기록하고, 이전 후 항목별로 복원하세요. 서버 목록이 같아도 트래픽 분기 결과는 달라질 수 있습니다. 전체 설정을 가져올 때는 설정 형식과 코어 호환성도 확인해야 합니다.

데스크톱에서는 연결되는데 안드로이드에서는 안 된다면 안드로이드 코어가 오래된 건가요?

먼저 양쪽 코어 버전과 노드 필드를 비교한 뒤 네트워크 환경을 확인하세요. 데스크톱과 휴대폰은 유선 네트워크와 모바일 데이터를 각각 사용할 수 있으며, DNS, IPv6 경로, VPN 앱별 규칙도 다를 수 있습니다. 이런 차이를 제외한 뒤에야 문제를 특정 코어 기능으로 좁힐 수 있습니다.