생태계 개요: Project V와 V2Ray
Project V는 프록시 및 네트워크 도구를 중심으로 형성된 오픈 소스 프로젝트 생태계이며, V2Ray는 그 안에서 널리 사용되는 핵심 이름입니다. 특정 프로토콜 하나만을 뜻하는 것이 아니라 인바운드, 아웃바운드, 라우팅, 전송 설정을 하나의 구성 체계로 묶는 것이 특징입니다. 클라이언트 화면에 표시되는 ‘노드’는 대개 원격 아웃바운드 하나를 보여 주는 방식입니다. 시스템 프록시, 로컬 리스닝, DNS는 별도의 구성 요소이므로 노드 이름 하나만으로 전체 실행 환경을 설명할 수는 없습니다.
일상적인 대화에서는 V2Ray를 생태계 전체를 가리키는 말로 쓰기도 하므로, 다운로드할 때는 구체적인 앱 이름을 확인해야 합니다. v2rayN은 그래픽 클라이언트이며 V2Ray 코어 자체와는 다릅니다. v2rayNG와 v2flyNG는 안드로이드 기기용입니다. 이 관계를 이해하면 문서에서 ‘인터페이스에 기능이 추가된 것’과 ‘코어에 프로토콜 기능이 추가된 것’을 구분할 수 있습니다. 문제를 살펴볼 때 클라이언트 로그를 확인할지 프로토콜 매개변수를 확인할지도 판단하기 쉬워집니다.
코어 종류: V2Fly와 Xray
V2Fly는 V2Ray의 커뮤니티 개발을 이어 왔고, Xray는 관련 코드 기반에서 출발해 자체 기능을 발전시켜 왔습니다. 두 코어는 공통된 배경이 있지만 각각 별도로 유지·개발되므로 같은 프로그램의 테마만 다른 버전으로 보면 안 됩니다. 일부 설정 항목이 비슷해도 새로운 전송 방식, 보안 기능, 라우팅 옵션, 기본 동작에는 차이가 있을 수 있습니다. 이름이나 출시일만 비교하지 말고 현재 노드가 요구하는 기능과 실제 호환성을 기준으로 코어를 선택하세요.
VLESS, Vision, REALITY 조합을 사용할 때는 Xray의 지원 범위와 서버에서 제공한 flow, 서버 이름, 공개 키, shortId를 꼼꼼히 확인하세요. REALITY는 보안 전송 방식이며 VMess나 Trojan과 같은 계층의 독립 프록시 프로토콜로 볼 수 없습니다. 기존 V2Fly 설정을 다른 코어로 한꺼번에 옮기지 마세요. 먼저 노드 하나의 항목을 확인하고 라우팅과 DNS를 테스트한 뒤 전체 설정을 이전하세요.
세 가지 클라이언트: 오픈 소스 인터페이스와 플랫폼별 차이
v2rayN, v2rayNG, v2flyNG는 모두 오픈 소스 클라이언트로, 노드 편집, 구독 관리, 연결 제어 등의 그래픽 기능을 제공합니다. 오픈 소스라는 것은 소스 코드와 라이선스를 확인할 수 있다는 뜻이지, 실행 권한이나 설정 출처를 따로 검토하지 않아도 된다는 뜻은 아닙니다. 구독 제공자, 원격 서버, 클라이언트는 서로 다른 역할을 맡습니다. 클라이언트를 설치한다고 서버 계정이 자동으로 생기거나 가져온 노드가 모두 작동하는 것은 아닙니다.
v2rayN은 데스크톱용으로, 한 화면에서 구독과 라우팅을 관리하고 지원 범위에 맞는 코어를 선택할 수 있습니다. v2rayNG는 주로 Xray 코어를 기반으로 하며 안드로이드에서 관련 프로토콜 기능을 사용하기에 적합합니다. v2flyNG는 V2Fly 코어를 기반으로 하며 해당 설정과의 호환성이 필요한 경우에 유용합니다. 앱 사이에서 설정을 옮길 때는 화면에 표시된 메모만 복사하지 말고 전체 공유 링크나 구독을 다시 가져온 뒤 연결 모드를 확인하세요.
오픈 소스 라이선스: 배포와 사용 범위 확인
Project V 관련 프로젝트, 그래픽 클라이언트, 코어, 패키지 의존성에는 서로 다른 오픈 소스 라이선스가 적용될 수 있습니다. 생태계에 속한 한 프로젝트의 라이선스를 모든 구성 요소에 공통으로 적용하면 안 됩니다. 개인 사용, 재배포, 수정본 공개에는 각각 다른 조건이 적용될 수 있으므로 해당 프로젝트의 라이선스 파일과 안내를 따로 확인하세요. 페이지에서 말하는 ‘오픈 소스’는 개발 및 배포 특성을 나타낼 뿐 구독 내용이나 원격 서비스의 품질을 보장하지 않습니다.
일반 사용자는 앱 이름, 플랫폼 아키텍처, 사용 중인 코어를 기록하고 설정의 출처를 보관하며 클라이언트가 요청하는 권한을 확인하는 것이 좋습니다. 설정에 포함된 비밀번호, 사용자 식별자, 구독 주소는 주의해서 다루세요. 문제 해결을 위해 화면을 공유할 때는 이런 정보를 가려야 합니다. 노드 주소, SNI, 공개 키는 용도가 서로 다르지만 개인 설정 전체를 공개해서는 안 됩니다. 문제를 파악하는 데는 설정 항목이 서로 일치하는지만 설명해도 충분한 경우가 많습니다.
업데이트 관리: 클라이언트·코어·구독을 따로 관리
클라이언트 업데이트는 주로 인터페이스와 설정 관리에 영향을 주고, 코어 업데이트는 연결 구현에 영향을 줍니다. 구독 업데이트는 설정 제공자가 노드 목록을 변경하는 작업입니다. 업데이트의 출처와 결과는 각각 다릅니다. 구독을 새로 고친 뒤 노드 수나 매개변수가 바뀌었다고 해서 반드시 클라이언트 업데이트 때문인 것은 아닙니다. 클라이언트를 업데이트한 뒤 설정을 불러오지 못해도 구독 주소가 잘못된 것은 아닐 수 있습니다. 먼저 어떤 계층이 바뀌었는지 확인한 다음 되돌릴지, 다시 가져올지, 항목을 조정할지 결정하세요.
업데이트 전에 현재 설정을 보관하고 사용 중인 노드와 라우팅 모드를 기록하세요. 업데이트 후에는 자주 사용하는 노드 하나로 테스트한 뒤 로컬 네트워크 접속, 도메인 조회, 프록시가 필요한 앱을 확인하세요. 자동 업데이트 간격은 구독 제공자의 제한에 맞추면 되며 자주 새로 고칠 필요는 없습니다. 계속 실패한다면 요청을 반복하기보다 주소 유효성, 요청 경로, 시스템 시간, 오류 로그를 차례로 확인하세요. 여러 설정을 한꺼번에 바꾸면 처음 원인을 찾기 어려워질 수 있습니다.
연결 확인: 진입점부터 원격 서버까지 단계별 점검
가져오기는 성공했지만 접속되지 않으면 먼저 노드가 선택되어 있고 코어가 정상적으로 실행 중인지 확인하세요. 그런 다음 앱의 트래픽이 실제로 프록시를 통과하는지 점검합니다. 브라우저는 연결되지만 다른 프로그램은 연결되지 않는다면 트래픽 진입점을 확인하세요. 도메인으로만 접속할 수 없다면 DNS 경로부터 점검하고, 모든 앱에서 연결이 안 된다면 노드 매개변수와 원격 서버 접속 가능 여부를 확인하세요. 지연 시간 테스트는 특정 요청의 결과일 뿐 모든 프로토콜과 앱 트래픽이 정상이라는 증거는 아닙니다.
용어를 확인하려면 용어집에서 구독, 공유 링크, 인바운드, 아웃바운드의 차이를 살펴보세요. 증상별 해결 방법은 자주 묻는 질문을 참고하세요. 프로토콜을 무작정 바꾸기보다 오류가 발생한 시각, 최근 변경한 설정, 로그 유형을 정리하는 편이 효과적입니다. 코어 선택은 서버의 지원 기능과 앱의 요구 사항을 함께 고려해야 합니다. 특정 프로토콜 이름을 좇기보다 설정 항목을 일관되게 맞추는 것이 중요합니다.