데스크톱이나 Android 클라이언트를 고르는 중이거나 구독 설정의 프로토콜 필드를 이해하기 어렵고, Xray와 V2Fly 사이에서 설정을 이전하려는 사용자에게 적합한 글입니다. 두 코어의 관계를 파악하고 VLESS, VMess, REALITY와 전송 계층의 조합을 이해한 뒤 노드 기능에 맞춰 v2rayN, v2rayNG 또는 v2flyNG를 선택할 수 있습니다.
먼저 코어, 클라이언트, 구독을 구분하기
Xray와 V2Fly는 모두 네트워크 프록시 코어입니다. 코어는 설정을 해석하고 아웃바운드 연결을 만들며 인바운드 포트를 처리하고 DNS 및 라우팅 규칙을 실행합니다. v2rayN, v2rayNG, v2flyNG는 그래픽 인터페이스를 제공하는 클라이언트입니다. 클라이언트에서 구독을 가져온 뒤 실제 프로토콜 핸드셰이크와 트래픽 전달을 담당하는 것은 노드 목록 화면 자체가 아니라 코어입니다.
둘 다 Project V의 기술 계보와 관련이 있지만, 현재는 독립적으로 유지 관리되고 별도로 배포되는 프로젝트입니다. V2Fly는 V2Ray의 이름과 설정 방식, 호환성 방향을 이어가며 v5 설정 체계로 발전했습니다. Xray는 유사한 코드 기반에서 계속 발전해 VLESS, XTLS, REALITY 등의 조합에서 더욱 뚜렷한 기능 범위를 갖추었습니다. Xray를 단순히 “V2Ray의 최신 버전”으로 이해하는 것은 정확하지 않습니다. 두 프로젝트는 같은 릴리스 계열이 아니기 때문입니다.
- 코어 계층: JSON 설정을 읽고 VMess, VLESS, Trojan, Shadowsocks, SOCKS, HTTP 등의 프로토콜과 관련 전송 매개변수를 처리합니다.
- 클라이언트 계층: 구독 관리, 노드 필터링, 시스템 프록시, 로그 확인 및 코어 프로세스 시작과 중지를 담당합니다.
- 구독 계층: 노드 주소, 포트, 사용자 식별자, 전송 방식, 보안 계층, 서버 이름 등의 연결 정보를 저장합니다.
- 라우팅 계층: 도메인, IP, 포트 또는 애플리케이션 트래픽에 따라 직접 연결, 프록시 또는 차단을 결정하며 노드 프로토콜을 자동으로 변경하지 않습니다.
Xray와 V2Fly의 핵심 차이
일상적인 선택에서 중요한 것은 추상적인 “성능 우열”보다 대상 코어가 설정 필드를 빠짐없이 인식할 수 있는지 확인하는 일입니다. 일반적인 VMess, WebSocket, TLS, SOCKS, HTTP 환경은 대체로 폭넓게 호환됩니다. VLESS, XTLS Vision 또는 REALITY가 포함된 경우에는 Xray가 더 직접적인 선택인 경우가 많습니다. V2Fly의 강점은 기존 V2Ray 설정 체계, v5 설정의 발전 방향과 관련 배포 환경의 연속성에 있습니다.
Xray 코어
추천VLESS, XTLS Vision, REALITY 등 자주 사용되는 최신 설정 조합을 중점적으로 지원하며 VMess, Trojan, Shadowsocks 같은 일반적인 프로토콜도 처리합니다.
적합한 경우: 일상적인 주력 사용, VLESS 노드, REALITY 설정
V2Fly 코어
V2Ray 설정 모델을 이어가고 v5 설정 체계를 제공하므로, 이미 V2Fly를 기준으로 라우팅, DNS 및 인바운드 규칙을 작성한 환경에 적합합니다.
적합한 경우: 기존 VMess 배포, V2Fly v5 설정, 호환성 유지 관리
| 비교 항목 | Xray | V2Fly |
|---|---|---|
| 릴리스 관계 | 독립 유지 관리 및 배포 | 독립 유지 관리 및 배포 |
| 주요 프로토콜 | VLESS、VMess、Trojan、Shadowsocks | VMess、Trojan、Shadowsocks、SOCKS、HTTP |
| 주요 기능 | XTLS Vision, REALITY 조합 | V2Ray 설정 계승 및 v5 설정 체계 |
| Android 그래픽 클라이언트 | v2rayNG | v2flyNG |
| 이전 시 중점 확인 사항 | flow, security, realitySettings 확인 | 설정 버전, 프로토콜 필드 및 전송 필드 확인 |
결론: 먼저 설정 지원 범위를 맞추고 속도를 비교하기
구독에 VLESS, flow=xtls-rprx-vision 또는 security=reality가 포함되어 있다면 Xray를 우선 선택하세요. 이미 V2Fly v5 설정과 안정적인 VMess 노드를 사용 중인 환경이라면 바로 이전하기보다 V2Fly를 계속 사용하는 편이 대체로 수월합니다.
프로토콜 이름이 같아도 설정이 항상 호환되는 것은 아니다
두 노드에 모두 VMess라고 적혀 있다고 해서 설정을 그대로 바꿔 쓸 수 있는 것은 아닙니다. 하나의 연결에는 전송 방식, TLS 설정, 서버 이름, 경로, Host, 지문 매개변수, 다중화 정책도 포함됩니다. 클라이언트가 가져오는 과정에서 핵심 필드 하나라도 누락하면 “노드는 있지만 연결되지 않음”, “지연 시간 테스트 시간 초과” 또는 로그의 지속적인 재시도가 발생할 수 있습니다.
VLESS는 이 점을 더 잘 보여줍니다. VLESS는 프로토콜 계층의 이름이고 REALITY는 보안 및 핸드셰이크 관련 설정입니다. TCP, WebSocket, gRPC는 전송 계층의 선택입니다. 일반적인 설정은 VLESS + TCP + REALITY + Vision처럼 여러 계층을 조합합니다. 이전할 때는 serverName, publicKey, shortId, fingerprint, flow 등의 필드를 반드시 유지해야 하며 서버 주소, 포트, 사용자 식별자만 복사해서는 안 됩니다.
{
"address": "server.example",
"port": 443,
"protocol": "vless",
"security": "reality",
"flow": "xtls-rprx-vision",
"serverName": "www.example.com",
"fingerprint": "chrome"
}
- VMess: 사용자 식별자, alterId 호환 설정, 전송 방식, TLS 및 WebSocket 경로를 중점적으로 확인합니다.
- VLESS: 사용자 식별자 외에도 flow, 보안 계층 및 서버가 요구하는 전송 매개변수를 확인해야 합니다.
- REALITY: serverName, publicKey, shortId와 브라우저 지문 필드를 중점적으로 확인하세요. 핵심 항목 하나라도 빠지면 핸드셰이크가 실패할 수 있습니다.
- 라우팅 규칙: 코어가 연결에 성공했다고 해서 라우팅이 예상대로 동작한다는 뜻은 아닙니다. 도메인 규칙, IP 규칙 및 최종 아웃바운드 방향도 확인해야 합니다.
업데이트 주기가 다르다고 더 적합한 것은 아니다
Xray와 V2Fly는 각각의 버전 체계를 사용하므로 릴리스 빈도와 기능 반영 시점이 일치하지 않습니다. 클라이언트를 업그레이드해도 코어가 반드시 함께 업그레이드되는 것은 아닙니다. 그래픽 인터페이스, 코어 파일, 구독 형식이 각각 변경될 수 있기 때문입니다. 문제를 해결할 때는 클라이언트 버전 계열, 코어 유형, 노드 프로토콜을 따로 기록해야 하며 단순히 “최신 버전으로 업데이트했다”고만 말해서는 안 됩니다.
안정적으로 실행 중인 사용자는 작동하는 설정을 하나 보존한 뒤 클라이언트를 업그레이드하고 기존 노드를 테스트하는 것이 좋습니다. 로그에 unknown field, failed to parse config 또는 unsupported security가 나타난다면 대개 설정 필드와 코어 기능이 맞지 않는 경우입니다. 설정은 정상적으로 불러왔지만 연결 시간이 초과된다면 네트워크, 도메인 확인, 포트 및 서버 상태를 계속 점검해야 합니다.
포트 번호도 문제 해결 기록에 포함해야 합니다. 예를 들어 데스크톱 환경에서 로컬 SOCKS 입구를 10808, HTTP 입구를 10809로 설정했다면 브라우저나 다른 도구는 해당 유형에 맞는 포트로 연결해야 합니다. HTTP 클라이언트를 SOCKS 포트에 연결하면 코어가 시작되지 않았다고 잘못 판단하기 쉽습니다. 포트는 예시일 뿐이며 실제 값은 v2rayN의 「설정」→「매개변수 설정」 페이지를 기준으로 확인하세요.
결론: 업그레이드 전에 세 가지 정보 기록하기
클라이언트 버전 계열, 현재 코어 이름, 사용 가능한 노드 하나의 전체 프로토콜 조합을 저장하세요. 업그레이드 후 같은 노드를 먼저 3회 재측정한 다음 구독을 업데이트하면 버전 문제와 노드 변동을 구분할 수 있습니다.
v2rayN, v2rayNG, v2flyNG 선택 방법
Windows 데스크톱 환경에서는 v2rayN을 우선 고려하세요. 구독 그룹, 시스템 프록시, 라우팅 규칙, 지연 시간 테스트, 로그 확인 기능을 제공하며 Xray 사용 환경을 위한 그래픽 조작 기능도 잘 갖춰져 있습니다. 구독을 가져온 뒤 노드 상세 정보에서 프로토콜과 전송 필드를 확인하고, 「설정」→「매개변수 설정」에서 로컬 수신 포트, 로그 수준, 시스템 프록시 관련 옵션을 점검할 수 있습니다.
Android에서는 구독이 VLESS, REALITY 또는 Xray 관련 설정을 중심으로 구성되어 있다면 v2rayNG가 더 적합합니다. V2Fly 환경을 명확히 유지 관리하거나 V2Fly v5 설정을 사용하거나 기존 V2Fly 서버와 일치시켜야 한다면 v2flyNG를 선택할 수 있습니다. 두 클라이언트의 그래픽 인터페이스가 비슷해도 코어 기능이 같은 것은 아니며, 가져오기에 성공했다고 해서 모든 필드가 보존되는 것도 아닙니다.
추천 구성: 데스크톱과 Android를 같은 프로토콜 체계로 설정
데스크톱(v2rayN)
- VLESS 및 REALITY는 Xray 코어를 우선 사용
- 「설정」→「매개변수 설정」에서 로컬 포트 확인
- 구독 업데이트 후 고정 노드를 3회 재측정
Android(v2rayNG)
- 동일한 Xray 호환 구독 가져오기
- 첫 연결 시 VpnService 권한 승인 확인
- 필요한 경우 앱별 프록시를 활성화하고 라우팅 확인
같은 구독을 사용한다고 해서 반드시 같은 클라이언트를 써야 하는 것은 아닙니다. 다만 양쪽에서 동일한 프로토콜 기능을 사용하면 필드 누락과 이전 오류를 줄일 수 있습니다.
v2flyNG가 더 적합한 경우
- 서버와 설정 생성 과정이 명확히 V2Fly를 기준으로 하는 경우
- 기존 구독이 장기간 검증된 VMess 또는 기타 V2Fly 호환 노드 위주인 경우
- V2Fly v5 설정을 이미 작성했고 해당 구조와 필드에 의존하는 경우
- 팀에서 모바일 환경을 기존 V2Fly 테스트 환경과 동일하게 유지해야 하는 경우
특정 클라이언트의 인터페이스가 익숙하다는 이유만으로 다른 코어의 고유 설정을 억지로 가져오는 것은 권장하지 않습니다. 더 안정적인 순서는 프로토콜을 먼저 식별하고, 코어를 선택한 다음, 클라이언트 조작 방식을 비교하는 것입니다. 구독에 여러 유형의 노드가 함께 있다면 두 개의 구독 그룹을 만들고 이름에 “Xray”와 “V2Fly”를 표시해 업데이트 후 같은 목록에 섞이지 않도록 하세요.
한 코어에서 다른 코어로 이전하기
이전은 실행 파일 하나를 바꾸는 것만으로 끝나지 않습니다. 주소, 포트, 사용자 식별자는 대체로 보존하기 쉽지만 전송 계층, 보안 계층, DNS, 라우팅, 로컬 인바운드는 누락되기 쉽습니다. 수동으로 이전하기 전에 현재 설정을 내보내거나 구독 소스를 저장한 뒤, 구조가 간단한 노드 하나로 연결을 테스트하고 마지막에 복잡한 라우팅을 복원해야 합니다.
- 기존 환경 기록: 클라이언트 버전 계열, 코어 이름, 로컬 수신 포트, 시스템 프록시 모드, 현재 사용 가능한 노드를 적어 둡니다.
- 프로토콜 조합 확인: VMess, VLESS 또는 다른 프로토콜인지 확인하고 TCP, WebSocket, gRPC, TLS, REALITY 등의 관련 필드를 기록합니다.
- 대상 클라이언트로 가져오기: 구독 또는 전체 공유 정보를 우선 사용하고 주소와 포트만 복사하지 마세요.
- 복잡한 라우팅 먼저 끄기: 기본 프록시 경로로 첫 연결을 완료하고 로그에 설정 해석 오류가 없는지 확인합니다.
- DNS와 분할 라우팅 복원: 도메인, IP, 앱 규칙을 그룹별로 추가하고 변경할 때마다 다시 연결합니다.
- 교차 검증: 같은 노드의 지연 시간을 3회 테스트하고 직접 연결 대상과 프록시 대상에 접속해 최종 아웃바운드가 규칙에 맞는지 확인합니다.
| 현상 | 우선 확인할 항목 | 처리 방향 |
|---|---|---|
| 가져온 후 필드가 비어 있음 | 클라이언트가 구독 형식을 인식하는지 확인 | 전체 공유 정보를 사용하거나 호환되는 클라이언트로 전환 |
| 알 수 없는 필드 알림 | 해당 필드가 다른 코어에 속하는지 확인 | 호환되는 코어로 전환하고 보안 매개변수를 임의로 삭제하지 않기 |
| 지연 시간 테스트가 모두 시간 초과 | DNS, 포트, 시스템 시간, 서버 상태 | 로그에서 처음 실패한 지점 확인 |
| 브라우저는 작동하지만 다른 도구는 실패 | SOCKS와 HTTP 포트 유형 | 10808, 10809 등 실제 수신 설정 확인 |
| 일부 도메인이 프록시를 거치지 않음 | 라우팅 순서와 최종 규칙 | 정확한 규칙을 포괄적인 규칙보다 앞에 배치 |
자주 묻는 선택 질문
코어 선택에는 노드 설정과 무관한 하나의 정답이 없습니다. 프로토콜 기능, 서버 배포 환경, 클라이언트 플랫폼, 유지 관리 비용이 함께 결과를 결정합니다. 다음 질문으로 선택 범위를 빠르게 좁힐 수 있습니다.
VMess 노드는 반드시 V2Fly를 사용해야 하나요?
반드시 그렇지는 않습니다. Xray와 V2Fly 모두 일반적인 VMess 환경을 처리할 수 있지만 전송 방식, TLS, WebSocket 경로 및 기타 설정 필드는 확인해야 합니다. VMess라는 이름을 인식한다고 해서 모든 확장 매개변수가 완전히 동일한 것은 아닙니다.
VLESS 노드는 어떤 코어를 우선 선택해야 하나요?
노드에 XTLS Vision, REALITY, publicKey, shortId 등의 필드가 있다면 Xray를 우선 사용하세요. 설정 제공자가 호환 대상을 명확히 안내한 경우에만 다른 조합을 고려하는 것이 좋습니다.
코어를 바꾸면 지연 시간을 바로 줄일 수 있나요?
코어는 프로토콜 구현과 데이터 처리에 영향을 주지만 네트워크 거리, 회선 혼잡, 서버 부하, 패킷 손실이 대체로 더 직접적인 원인입니다. 같은 기기, 같은 노드, 같은 네트워크에서 3회 연속 테스트하고 로그 및 실제 접속 결과를 함께 판단해야 합니다.
v2rayNG에서는 구독이 작동하지만 v2flyNG에서는 작동하지 않으면 어떻게 하나요?
먼저 노드를 펼쳐 프로토콜과 보안 필드를 확인하세요. REALITY, Vision 또는 Xray 고유 설정이 포함되어 있다면 v2rayNG를 계속 사용해야 합니다. 일반적인 VMess 설정뿐이라면 구독 해석, 전송 경로, TLS 서버 이름, 로컬 네트워크 권한을 점검하세요.
같은 기기에 두 클라이언트를 함께 둘 수 있나요?
비교 테스트를 위해 함께 보관할 수는 있지만, 같은 시간에는 하나의 로컬 프록시 또는 VpnService 세션만 실행해야 합니다. 두 클라이언트가 동시에 10808과 같은 포트를 수신하면 나중에 시작한 쪽이 포트 점유로 실패할 수 있습니다.
선택은 다음 판단 순서로 정리할 수 있습니다. 먼저 노드 프로토콜과 보안 계층을 확인하고, 서버가 명확히 지원하는 코어를 살핀 다음, 클라이언트 플랫폼을 확인하고, 마지막으로 인터페이스와 사용 습관을 비교하세요. VLESS와 REALITY를 주로 사용하는 사용자는 대체로 Xray와 v2rayNG를 선택합니다. 이미 V2Fly v5 설정과 안정적인 VMess 환경을 갖춘 사용자는 V2Fly와 v2flyNG를 계속 사용하는 편이 더 적합합니다.