Project V는 프로젝트 생태계이며, V2Fly와 Xray는 서로 다른 유지·개발 노선입니다. v2rayN, v2rayNG, v2flyNG는 설정을 관리하는 클라이언트입니다. 클라이언트를 고르거나 노드 요구 사항을 확인하고 코어를 바꾸려는 사용자를 위해 인터페이스, 코어, 프로토콜의 차이를 먼저 짚고 서버 설정을 기준으로 호환성을 확인합니다.
Project V, V2Fly, Xray: 프로젝트 계층부터 구분하기
먼저 알아둘 점은 이 이름들이 한 프로그램의 서로 다른 스킨이 아니라는 것입니다. Project V는 처음에 V2Ray를 중심으로 네트워크 프록시 도구 생태계를 구축했습니다. 일상적으로 말하는 ‘V2Ray’는 프로젝트 전체를 뜻하기도 하고, 연결을 처리하는 코어만 가리키기도 합니다. 설치하거나 문제를 해결할 때는 두 의미를 구분해야 합니다.
2020년 무렵 원 프로젝트의 커뮤니티 유지·관리는 점차 V2Fly가 이어받았습니다. V2Fly는 V2Ray 코어 개발을 계속했고, Xray는 2020년 V2Ray 코드에서 분기해 독자적인 방향으로 발전했습니다. 두 코어는 뿌리가 같지만 릴리스 주기와 기능, 설정 지원 범위가 완전히 같지는 않습니다. 한쪽의 문서를 다른 쪽의 최신 사양으로 간주해서는 안 됩니다.
Project V / V2Ray 프로젝트 생태계
└─ V2Ray 코드 기반
├─ V2Fly: V2Ray 코어 개발·유지 지속
└─ Xray: 2020년에 분기한 독립 코어
그래픽 클라이언트 계층
├─ v2rayN: 데스크톱 클라이언트, 버전과 노드 유형에 따라 지원 코어 사용
├─ v2rayNG: Android 클라이언트, 주로 Xray 코어 사용
└─ v2flyNG: Android 클라이언트, V2Fly의 V2Ray 코어 사용
위 그림은 코드의 계보와 각 구성 요소의 역할을 나타내며, 세 클라이언트가 하나의 프로젝트에서 함께 배포된다는 뜻은 아닙니다. 클라이언트 버전과 코어 버전의 번호 체계도 별개입니다. 인터페이스를 업데이트해도 실행 중인 코어까지 함께 업데이트된다고 볼 수 없습니다. 창 제목만 보지 말고 시작 로그에서 실제 버전을 확인하세요.
클라이언트와 코어: 인터페이스 설정이 네트워크 연결이 되는 과정
그래픽 클라이언트는 구독, 노드 목록, 설정 편집, 시스템 프록시, 프로세스 관리를 담당하고, 코어는 로컬 리슨, 프로토콜 핸드셰이크, DNS, 라우팅을 처리합니다. ‘연결’을 누르면 클라이언트가 실행 설정을 만든 뒤 코어를 시작하거나 호출하는 경우가 일반적입니다. Android에서는 시스템 VPN 서비스를 통해 기기 트래픽을 연결합니다. 이는 원격 노드가 어떤 프로토콜을 사용하는지와는 별개의 문제입니다.
| 이름 | 주요 역할 | 확인 위치 |
|---|---|---|
| v2rayN | 데스크톱 노드 관리, 구독, 시스템 프록시 및 코어 실행 관리. 지원 범위는 버전에 따라 달라짐 | 「설정」→「매개변수 설정」 및 시작 로그 |
| v2rayNG | Android 노드 관리. 주로 Xray를 호출하고 시스템 VPN 서비스로 트래픽 연결 | 사이드 메뉴의 「설정」 및 「로그」 |
| v2flyNG | Android 노드 관리. V2Fly 코어 호출 | 앱 설정 및 코어 시작 로그 |
| V2Fly / Xray | 설정 파싱, 연결 수립, DNS 및 라우팅 규칙 처리 | 실행 중인 설정 및 코어 로그 |
v2rayN은 여러 코어를 지원하는 클라이언트이며, 실제 선택지는 현재 배포판을 기준으로 확인해야 합니다. 코어를 바꾸려면 먼저 「설정」→「매개변수 설정」에서 Core 또는 코어 관련 항목을 확인하세요. 버전에 따라 하위 메뉴 이름은 다를 수 있습니다. 실행 파일 이름만 다른 코어의 파일명으로 바꿔도 설정 형식이 변환되거나 프로토콜 기능이 추가되지는 않습니다.
- 클라이언트가 열리지 않음: 실행 환경, 폴더 권한, 프로그램 로그부터 확인하세요. 아직 코어 단계까지 문제가 진행되지 않았을 수 있습니다.
- 코어가 시작된 뒤 종료됨: 설정 파싱 오류, 필드 지원 여부, 리슨 포트 충돌을 확인하세요.
- 코어는 실행되지만 노드 연결 시간이 초과됨: 원격 주소와 포트, 전송 방식, TLS 및 인증 설정을 확인하세요.
VMess·VLESS·REALITY: 프로토콜 지원이 모든 설정의 호환성을 뜻하지는 않습니다
VMess와 VLESS는 프록시 프로토콜이지 클라이언트 이름이 아닙니다. WebSocket과 gRPC는 전송 방식이고, TLS와 REALITY는 연결 보안 계층 설정에 해당합니다. 노드 사용 가능 여부는 프로토콜, 전송 방식, 보안 계층, 버전의 조합에 달려 있습니다. ‘VLESS가 목록에 있다’는 사실만으로는 충분하지 않습니다.
특히 VLESS와 REALITY는 구분해서 이해해야 합니다. VLESS 자체에는 암호화 기능이 없으므로 실제 배포에서는 적절한 보안 전송 방식과 함께 사용해야 합니다. VLESS + REALITY 노드를 받았다면 해당 조합을 명시적으로 지원하는 코어를 사용하고, serverName, publicKey, shortId, 서버에서 요구하는 flow 등의 설정을 빠짐없이 유지하세요. 일반 VLESS + TLS로 가져온 뒤 옵션 하나만 켜면 되는 방식이 아닙니다.
Xray 코어
권장서버가 VLESS + REALITY를 명시하거나 Xray 전용 기능을 요구한다면, 해당 버전과 호환되는 Xray를 우선 선택하세요. 이는 노드 설정 호환성을 기준으로 한 권장 사항이지 모든 네트워크 환경에서 속도를 보장한다는 뜻은 아닙니다.
적합한 경우: 서버에서 Xray를 명시적으로 요구하거나 REALITY 설정이 필요한 노드
V2Fly의 V2Ray 코어
V2Fly 문서에 따라 배포하고 검증한 설정에 적합합니다. VMess 등 기존 노드는 코어 이름이 다르다는 이유만으로 서버를 바꾸지 말고, 먼저 전송 방식과 버전 지원 여부를 확인하세요.
적합한 경우: V2Fly를 이미 배포했고 설정과 문서를 일치시켜야 하는 환경
결론: 전체 설정을 확인한 다음 코어를 선택하세요
서비스 제공자에게 프로토콜, 전송 방식, 보안 계층, 최소 코어 요구 버전을 확인하세요. 이 네 가지를 모두 파악한 뒤 클라이언트에 가져오면, 코어를 반복해서 바꾸며 빠진 설정을 추측하는 것보다 문제를 쉽게 찾을 수 있습니다.
구독, JSON, 라우팅: 옮길 수 있는 설정은 무엇인가요?
구독은 노드 정보를 일괄로 가져오는 수단이지 별도의 프록시 프로토콜이 아닙니다. 구독 내용은 공유 링크 모음일 수도 있고 완전한 설정 파일일 수도 있습니다. 클라이언트에서 인식할 수 있는지는 내용 형식과 파서에 달려 있습니다. Base64는 인코딩 방식일 뿐, 서로 다른 클라이언트의 설정을 자동으로 호환시켜 주지는 않습니다.
- v2rayN에서는 「구독 그룹」→「구독 그룹 설정」에서 구독 주소를 확인하세요. v2rayNG에서는 사이드 메뉴에서 「구독 그룹 설정」으로 이동합니다. 메뉴 문구는 버전에 따라 조금씩 다를 수 있습니다.
- 업데이트한 뒤 노드 편집 창을 열고 주소, 포트, 사용자 ID, 전송 유형, TLS 설정을 하나씩 확인하세요. 노드 이름이 표시되는지만 확인해서는 안 됩니다.
- ‘파싱할 수 없음’ 오류가 발생하면 먼저 응답 내용이 구독 데이터인지 확인하세요. 로그인 페이지, 만료 안내 또는 웹 오류 메시지가 반환된 것일 수 있습니다. 구독 링크에는 접근 자격 증명이 포함될 수 있으므로 포럼에 그대로 공개해서는 안 됩니다.
- 완전한 JSON 설정을 옮길 때는 먼저 대상 코어와 설정 형식을 확인하세요. 구독 파싱에 성공해도 사용자 지정 DNS, 라우팅, 로컬 인바운드 설정까지 함께 이전된다는 뜻은 아닙니다.
일반적인 V2Ray / Xray JSON 설정에서 inbounds는 로컬 인바운드를, outbounds는 연결 출구를 정의합니다. routing.rules는 트래픽이 규칙과 일치할 때 어떤 출구를 이용할지 정합니다. 아래는 라우팅 부분만 보여주는 예시입니다. local-socks에서 들어온 트래픽을 proxy 아웃바운드로 보내는 의미이며, 단독 실행 가능한 전체 설정은 아닙니다.
{
"routing": {
"rules": [
{
"type": "field",
"inboundTag": ["local-socks"],
"outboundTag": "proxy"
}
]
}
}
함께 사용하는 설정에는 tag가 local-socks인 인바운드와 tag가 proxy인 아웃바운드가 있어야 합니다. 태그 표기가 다르면 의도한 라우팅이 제대로 동작하지 않습니다. 전체 필드와 라우팅 규칙은 라우팅 분기 설정 레퍼런스를 참고하세요. 설정 체계가 다른 코어로 전환할 때는 이 JSON을 그대로 복사하지 마세요.
시스템 프록시, TUN, 포트: 연결 경로 확인하기
데스크톱의 시스템 프록시는 시스템 프록시 설정을 따르는 앱의 트래픽을 로컬 리슨 포트로 보내는 기능입니다. TUN은 가상 네트워크 인터페이스로 트래픽을 연결하며 클라이언트와 해당 코어가 모두 지원해야 합니다. 둘 다 VMess나 VLESS 같은 프로토콜이 아니며, 구독을 가져오면 자동으로 활성화되는 기능도 아닙니다.
아래 세 포트는 연결 경로를 설명하기 위한 예시이며 모든 버전의 기본값을 뜻하지 않습니다. 실제 설정에서 로컬 리슨 포트를 확인하고 앱의 프록시 설정 및 원격 노드 포트와 비교하세요. 원격 포트 443을 브라우저의 로컬 프록시 포트 칸에 입력하지 마세요.
- 로컬 경로: 앱 →
127.0.0.1:10808SOCKS 리슨 → 코어. 클라이언트가 혼합 인바운드를 사용하면 HTTP와 SOCKS가 같은 포트를 공유할 수 있으므로 현재 설정을 기준으로 확인하세요. - 원격 경로: 코어 → 노드 주소와 원격 포트 → 대상 웹사이트. 로컬 리슨 포트를 변경해도 서버의 리슨 포트는 바뀌지 않습니다.
- Android 경로: 앱 트래픽 → 시스템 VPN 서비스 → 클라이언트 코어. VPN 아이콘은 로컬 트래픽 연결이 설정되었다는 뜻일 뿐, 아이콘만으로 노드에 연결할 수 있는지 판단할 수는 없습니다.
- TUN 문제 해결: 노드 핸드셰이크를 확인하기 전에 가상 인터페이스, 권한, DNS, 라우팅 연결을 점검하세요. TUN 스위치가 모든 코어에서 통용되는 JSON 필드인 것처럼 설정을 임의로 작성하지 마세요.
클라이언트 선택 및 전환: 자주 묻는 질문
플랫폼, 노드 설정, 코어 지원 순으로 확인하고 인터페이스 선호도는 마지막에 고려하세요. 데스크톱에서는 현재 v2rayN 배포판의 코어 지원 여부를 확인하고, Android에서는 노드 요구 사항에 따라 v2rayNG 또는 v2flyNG를 선택하세요. 이전하기 전에 구독 그룹과 사용자 지정 규칙을 백업하고, 테스트할 때는 한 번에 한 항목만 변경하세요.
v2rayN을 설치했는데 V2Ray 인터페이스를 따로 설치해야 하나요?
대부분은 필요하지 않습니다. 설치된 v2rayN을 실행하고 노드를 선택한 다음 로그에서 실제로 시작된 코어 이름과 버전을 확인하세요. 코어 파일이 없다는 메시지가 나오면 현재 배포판의 안내에 따라 해당 구성 요소를 추가하세요. 파일 하나가 없다는 문제를 해결하려고 인터페이스를 여러 개 설치하지 마세요.
v2rayNG와 v2flyNG는 이름만 다른가요?
아닙니다. 두 앱은 각각 Xray와 V2Fly 코어를 중심으로 작동하며, 지원 기능은 버전에 따라 달라집니다. REALITY 노드를 받았다면 Xray 지원 여부부터 확인하세요. 기존 V2Fly 설정은 해당 코어에서 먼저 검증하고, 앱 아이콘이나 이름이 비슷하다는 이유만으로 선택하지 마세요.
같은 구독이 데스크톱에서는 작동하는데 Android에서는 왜 시간 초과가 발생하나요?
먼저 두 기기의 노드 편집 화면에서 전송 유형, 서버 이름, 보안 계층 설정을 비교하고 각 로그에 표시된 코어 버전을 확인하세요. 설정이 일치한다면 Android의 VPN 권한, 앱별 설정, 기기 시간, 현재 네트워크를 차례로 점검하세요. 곧바로 구독이 만료됐다고 단정하지 마세요.
코어를 바꾸면 모든 규칙을 다시 작성해야 하나요?
먼저 클라이언트가 관리하는 규칙과 직접 작성한 JSON을 구분하세요. 클라이언트 관리 규칙은 다시 생성될 수 있지만, 실제 실행 결과를 확인해야 합니다. 직접 작성한 설정은 대상 코어의 문서에 따라 항목별로 검증해야 합니다. 복잡한 분기 설정을 복원하기 전에 노드 하나와 명확한 라우팅 규칙 하나부터 시험하면 여러 오류가 동시에 생기는 일을 줄일 수 있습니다.
마지막으로 클라이언트 버전, 로그에 표시된 코어 버전, 민감 정보를 가린 노드 설정을 기록해 두세요. 문제를 제보할 때 이 세 가지와 관련 오류 로그를 함께 보내면 ‘V2Ray가 연결되지 않음’이라고만 적는 것보다 인터페이스, 설정, 프로토콜, 네트워크 중 어디에서 문제가 생겼는지 판단하기 쉽습니다.