Project V는 V2Ray 기술 생태계를 이해하는 출발점입니다. 초기 V2Ray는 프로토콜 처리, 전송, 라우팅 등의 기능을 설정 가능한 네트워크 도구로 묶었습니다. 이후 커뮤니티는 서로 다른 개발 방향에 따라 여러 프로젝트를 만들었습니다. V2Fly는 V2Ray 커뮤니티 개발을 이어가고, Xray는 관련 기술을 바탕으로 자체 기능과 구현을 발전시켰습니다. 공통된 배경이 있지만 이름만 바꿔 부를 수 있는 같은 프로그램은 아니며, 모든 설정의 호환성이 보장되는 것도 아닙니다.
GUI 클라이언트는 코어 위에서 동작합니다. 사용자가 화면에서 구독을 저장하고 서버를 선택하며 규칙을 수정하면, 클라이언트가 실행 설정을 생성하거나 구성해 해당 코어에 전달합니다. 따라서 화면의 ‘구독 업데이트’가 코어 JSON의 같은 이름 필드로 저장되는 것은 아닙니다. ‘시스템 프록시 설정’도 원격 서버의 프로토콜 옵션이 아닙니다. 문서를 볼 때 현재 다루는 내용이 인터페이스 설정인지, 코어 필드인지, 서버 측 매개변수인지 먼저 확인하면 불필요한 시행착오를 줄일 수 있습니다.
클라이언트와 코어는 서로 다른 계층
v2rayN은 데스크톱 환경을 위한 클라이언트로 서버 정보, 구독 그룹, 시스템 프록시, 라우팅 설정을 한곳에서 관리하고 여러 코어 관련 기능을 제공합니다. v2rayNG는 Android 기기용으로 주로 Xray 코어를 사용하며, v2flyNG는 V2Fly 기반 Android 클라이언트입니다. 세 제품 모두 오픈 소스 클라이언트지만 이름이 비슷하다고 메뉴, 설정 저장 위치, 기능 범위까지 같은 것은 아닙니다.
클라이언트를 선택할 때는 먼저 기기 플랫폼을 확인하고 서버 요구 사항을 살펴보세요. Xray 전용 기능이 포함된 연결 정보는 클라이언트가 호출하는 코어에서 지원하는지 확인해야 합니다. V2Fly 설정을 사용 중이라면 이전하기 전에 필드 호환성을 점검하세요. 한 클라이언트의 설정 파일을 다른 클라이언트의 폴더에 복사하면 모든 설정이 자동 적용된다고 가정해서는 안 됩니다.
코어와 클라이언트의 관계 알아보기 →
프로토콜, 전송 방식, 보안 계층
VLESS, VMess, Trojan은 연결 프로토콜이고 WebSocket, gRPC 등은 전송 방식입니다. TLS와 REALITY는 연결의 보안 계층 설정과 관련됩니다. 서로 같은 목록에서 대체할 수 있는 옵션이 아닙니다. 연결 정보를 확인할 때 프로토콜, 서버 주소, 포트, 인증 매개변수, 전송 방식, 보안 계층을 각각 점검하세요. 하나라도 맞지 않으면 핸드셰이크에 실패할 수 있습니다.
VLESS는 자체적으로 데이터를 암호화하지 않으므로 실제 배포 시 적절한 보안 계층과 함께 사용해야 합니다. 가져온 링크가 일부 매개변수를 자동 입력하더라도 서버 이름, 전송 경로와 관련 옵션이 올바른지 확인하세요. 연결에 실패하면 서버 요구 사항과 하나씩 대조하세요. 여러 옵션을 동시에 바꾸면 어떤 변경이 결과에 영향을 줬는지 파악하기 어렵습니다.
프로토콜과 설정 경계 알아보기 →
오픈 소스 라이선스와 사용 범위
오픈 소스란 해당 프로젝트의 소스 코드가 관련 라이선스 조건에 따라 공개된다는 뜻입니다. 사용, 수정, 배포는 각 라이선스의 요구 사항을 따라야 합니다. 클라이언트, 코어, 의존성은 서로 다른 라이선스를 적용할 수 있으므로 생태계 전체를 하나의 라이선스로 간주해서는 안 됩니다. 일반 사용자는 프로젝트 문서를 통해 기능의 출처를 확인할 수 있습니다. 소프트웨어를 재패키징하거나 재배포할 때는 라이선스 전문과 저작권 고지를 유지해야 하는지도 확인하세요.
클라이언트와 원격 서비스도 구분해서 살펴봐야 합니다. 소프트웨어를 설치한다고 서버, 계정, 구독이 자동으로 제공되는 것은 아니며, 구독 내용은 해당 주소를 제공하는 서비스에 따라 달라집니다. 클라이언트의 오픈 소스 여부와 원격 서비스의 데이터 기록 방식은 별개의 문제입니다. 업무 자료를 다룰 때는 클라이언트 이름만으로 판단하지 말고 서버 출처, 접근 권한, 사용 환경을 함께 평가하세요.
이 사이트의 성격과 콘텐츠 범위 →
업데이트 방식과 설정 관리
클라이언트 업데이트, 코어 업데이트, 구독 업데이트, 규칙 데이터 업데이트는 각각 다른 문제를 해결합니다. 클라이언트 업데이트는 인터페이스와 설정 생성 로직에, 코어 업데이트는 프로토콜 구현에 영향을 줍니다. 구독 업데이트는 연결 정보를 동기화하고, 규칙 데이터 업데이트는 도메인이나 주소 분류를 바꿀 수 있습니다. 연결에 문제가 생기면 최근 변경된 계층부터 확인하세요. 네 가지 업데이트를 같은 작업으로 보고 반복 실행하면 안 됩니다.
설정을 관리할 때는 되돌릴 수 있도록 변경 기록을 남기세요. 변경 전에 사용자 지정 규칙과 필요한 매개변수를 백업하고, 변경 후에는 시작 로그, 로컬 수신 포트, 실제 앱 접속을 확인하세요. 자동 업데이트는 반복 작업을 줄여 주지만 결과 확인을 대신하지는 않습니다. 특히 오래 사용한 사용자 지정 JSON은 코어를 변경한 뒤에도 필드가 지원되는지 확인하고 더 이상 참조하지 않는 아웃바운드 태그를 정리하세요.
JSON 설정 안내 보기 →
가져오기 성공에서 실제 사용까지
처음 설정할 때는 다음 순서로 확인하세요. 먼저 구독을 가져와 서버 목록이 표시되는지 확인합니다. 서버 하나를 선택해 연결을 시작하고 오류 로그를 살펴보세요. 다음으로 앱에서 로컬 프록시를 사용해 실제 요청을 확인한 뒤 라우팅과 TUN을 추가합니다. 구독 가져오기에 성공했다는 것은 연결 정보를 해석할 수 있다는 뜻일 뿐, 서버에 실제로 연결할 수 있다는 뜻은 아닙니다. 코어가 시작돼도 브라우저가 프록시를 사용 중이라고 단정할 수 없습니다. 두 결과를 각각 확인해야 합니다.
로그에서 오류가 발생한 위치를 확인하세요. 주소 확인에 실패하면 DNS를, 연결 시간 초과가 발생하면 대상 주소와 포트를 먼저 점검합니다. 핸드셰이크에 실패하면 프로토콜과 보안 계층을 대조하고, 로컬 포트가 이미 사용 중이면 중복 실행된 프로세스를 확인하세요. 로그에는 주소나 인증 정보가 포함될 수 있으므로 공유 전에 민감한 정보를 가리세요. 서버를 계속 바꾸거나 클라이언트를 재설치하고 모든 설정을 수정하는 것보다 계층별로 원인을 찾는 편이 재현 가능한 결과를 얻기 쉽습니다.
자주 혼동하는 설정 개념
구독과 공유 링크: 구독 주소는 보통 여러 연결 정보를 가져오는 데 사용하고, 공유 링크는 일반적으로 단일 연결을 나타냅니다. 링크에 긴 문자열이 있는지만 보고 종류를 판단하지 말고 각각에 맞는 가져오기 메뉴를 사용하세요. 주소에 접근 자격 정보가 포함될 수 있으므로 계정 정보처럼 안전하게 보관해야 합니다. 자세한 내용은 구독 용어 설명을 참고하세요.
시스템 프록시와 라우팅: 시스템 프록시는 호환되는 앱의 트래픽을 어디로 보낼지 정하고, 라우팅 규칙은 코어가 받은 트래픽에 어떤 출구를 사용할지 정합니다. 직결 규칙을 선택해도 앱의 요청은 먼저 로컬 수신 포트로 전달될 수 있습니다. 시스템 프록시를 켜도 모든 앱이 이를 따르는 것은 아닙니다. 자세한 내용은 라우팅과 아웃바운드 태그를 참고하세요.
트래픽 스니핑과 DNS: 스니핑은 일부 연결에서 도메인 정보를 찾아 라우팅 규칙과 일치시키는 데 도움을 줍니다. 모든 연결에서 도메인을 알아낼 수 있는 것은 아니며, 완전한 DNS 설계를 대신하지도 않습니다. 도메인 규칙이 적용되지 않으면 스니핑 스위치만 반복해서 바꾸지 말고 인바운드 설정, 이름 확인 방식, 규칙 순서를 함께 살펴보세요. 관련 필드 위치는 인바운드 설정 안내를 참고하세요.
TUN과 연결 품질: TUN은 앱 트래픽이 클라이언트로 들어오는 방식을 바꾸지만 서버 시간 초과나 프로토콜 매개변수 오류를 자동으로 해결하지 않습니다. 일반 프록시 연결부터 정상화한 다음 가상 네트워크 인터페이스로 트래픽을 전달하세요. 복잡한 네트워크 환경에서는 다른 VPN 소프트웨어나 가상 네트워크 인터페이스가 라우팅에 미치는 영향도 확인해야 합니다. 자세한 내용은 TUN 모드 용어 설명을 참고하세요.