프로토콜과 전송
프로토콜은 프록시 요청을 주고받는 방식을 정하고, 전송 설정은 데이터를 전달하는 방식을 정합니다. 연결 문제를 해결할 때는 노드 이름만 볼 것이 아니라 두 설정을 따로 확인해야 합니다.
- VMess
- VMess는 Project V 생태계의 프록시 프로토콜로, 사용자 식별자 등의 매개변수로 인증합니다. 연결을 가져온 뒤에는 주소, 포트, 사용자 식별자, 전송 설정이 서버와 일치하는지 확인하세요. 시스템 시간이 맞지 않아도 인증에 실패할 수 있으므로, 인증 오류가 나면 관련 없는 라우팅 규칙을 바꾸기보다 먼저 시간을 동기화해야 합니다.
- VLESS
- VLESS는 자체적으로 데이터를 암호화하지 않는 경량 프록시 프로토콜로, TLS나 REALITY 같은 보안 계층과 함께 사용하는 경우가 많습니다. 설정의 사용자 식별자, 흐름 제어, 전송 옵션은 각각 역할이 다르므로 VLESS라는 이유만으로 노드 간에 바꿔 쓸 수 없습니다. 연결을 가져온 뒤에는 서버에서 제공한 매개변수를 유지하고, 특히 흐름 제어 값을 임의로 추가하거나 삭제하지 마세요.
- Trojan
- Trojan은 보통 TLS 연결 위에서 작동하는 프록시 프로토콜이며 비밀번호로 인증합니다. 비밀번호가 맞더라도 인증 매개변수만 일치할 뿐, 인증서와 서비스 이름, 전송 계층까지 올바르다는 뜻은 아닙니다. 핸드셰이크에 실패하면 TLS 문제와 비밀번호 인증 문제를 구분하고, 클라이언트 로그에 표시된 구체적인 단계를 기준으로 확인하세요.
- 전송 계층 설정
- 전송 계층 설정은 프록시 데이터를 전달하는 방식을 정합니다. TCP, WebSocket, gRPC 등이 있으며 VMess나 VLESS 같은 프록시 프로토콜과는 다른 개념입니다. WebSocket 경로와 요청 헤더, gRPC 서비스 이름은 서버 매칭에 영향을 줄 수 있습니다. 프로토콜 이름만 바꿔서는 전송 매개변수 불일치를 해결할 수 없으며, 사용할 수 있는 조합은 코어 버전에 따라 달라집니다.
코어와 클라이언트
클라이언트는 설정 화면을 제공하고 코어는 실제 네트워크 처리를 담당합니다. 특정 옵션을 사용할 수 있는지 확인하려면 클라이언트 화면뿐 아니라 선택한 코어와 버전의 지원 여부도 살펴봐야 합니다.
- Project V
- Project V는 V2Ray를 중심으로 발전한 네트워크 도구 프로젝트이자 기술 생태계이며, 외형이 정해진 하나의 데스크톱 앱을 뜻하지 않습니다. 문서를 읽을 때는 프로젝트의 배경, 실제로 실행되는 코어, 연결을 관리하는 그래픽 클라이언트를 구분하세요. 프로젝트 간에 일부 개념과 설정 구조가 같더라도 모든 기능과 필드, 기본 동작까지 동일한 것은 아닙니다.
- V2Fly
- V2Fly는 V2Ray 개발을 이어가는 커뮤니티 프로젝트로, v2fly 코어가 연결, 라우팅, DNS 등의 네트워크 처리를 담당합니다. Android에서는 이 코어 계열을 사용하는 v2flyNG를 선택할 수 있습니다. 설정 자료를 참고할 때는 대상 코어를 확인하고 다른 포크에서만 지원하는 새 필드를 그대로 적용하지 마세요.
- Xray
- Xray는 V2Ray 기술을 바탕으로 발전한 코어 포크로, 자체 프로토콜 구현과 설정 변경 흐름을 갖고 있습니다. v2rayNG는 Xray 코어를 사용하며 데스크톱 클라이언트에서도 해당 코어를 선택할 수 있는 경우가 있습니다. 특정 프로토콜 조합을 사용할 수 있는지는 클라이언트 이름만으로 판단하지 말고 현재 코어 버전과 클라이언트 지원 여부를 확인해야 합니다.
- 그래픽 클라이언트
- 그래픽 클라이언트는 구독, 노드, 라우팅, 프록시 스위치를 조작하기 쉬운 화면으로 제공하고 코어 설정을 생성하거나 전달합니다. v2rayN은 Windows, macOS, Linux 데스크톱용이고 v2rayNG와 v2flyNG는 Android용입니다. 화면에 '시작됨'이라고 표시되어도 관련 프로세스가 실행 중이라는 뜻일 뿐, 실제 요청이 성공했는지는 별도로 확인해야 합니다.
플랫폼별 앱을 고를 때는 클라이언트 3종 비교를 확인하고, 설치 파일은 클라이언트 다운로드 페이지에서 찾을 수 있습니다.
구독과 노드
구독은 설정을 배포하고 노드는 연결 매개변수의 묶음을 나타냅니다. 지연 시간 테스트는 참고 자료일 뿐, 실제 서비스 접속이나 장기적인 안정성을 판단하는 기준을 대신할 수 없습니다.
- 구독
- 구독은 하나의 주소에서 연결 설정을 일괄로 가져오는 방식이며, 업데이트하면 해당 주소에 데이터를 다시 요청합니다. 주소에는 보통 비공개 접근 식별자가 포함되므로 스크린샷, 채팅 기록, 공개 로그에 노출하지 마세요. 구독 업데이트에 성공해도 설정을 받아왔다는 뜻일 뿐 모든 노드가 작동한다는 보장은 없습니다. 사용 방법은 구독 가져오기 가이드를 참고하세요.
- 노드
- 노드는 주소, 포트, 프로토콜, 인증 정보, 전송 설정 등이 포함된 원격 연결 매개변수의 묶음이며 단순한 서버 이름이 아닙니다. 노드 별칭은 제공자가 임의로 정할 수 있으므로 이름만 보고 실제 위치, 대역폭, 사용 가능 여부를 판단할 수 없습니다. 노드 링크를 공유하면 인증 정보까지 노출될 수 있으니 오류를 제보하기 전에 민감한 부분을 가리세요.
- 지연 시간
- 지연 시간은 탐색이나 요청이 완료될 때까지 걸리는 시간입니다. 측정 방식, 대상 위치, 당시 네트워크 상태에 따라 값이 달라집니다. TCP 포트 연결 테스트와 프록시를 통한 웹페이지 접속 테스트는 같은 측정이 아니므로 결과를 직접 비교하면 안 됩니다. 지연 시간이 짧다고 다운로드 속도가 빠른 것도 아닙니다. 지속적인 데이터 전송에는 혼잡, 패킷 손실, 서버 부하, 대역폭 제한도 영향을 줍니다.
- 실제 연결 지연 시간
- 실제 연결 지연 시간은 보통 클라이언트가 프록시를 통해 테스트 대상에 접속할 때 측정되는 시간을 뜻합니다. 구체적인 측정 범위는 구현 방식에 따라 다릅니다. 원격 포트만 확인하는 것보다 실제 사용 경로에 가깝지만 특정 대상을 한 번 테스트한 결과일 뿐입니다. 테스트는 성공했는데 특정 웹사이트가 열리지 않는다면 해당 사이트의 DNS, 라우팅 규칙 매칭, 앱의 프록시 사용 여부도 확인해야 합니다.
라우팅과 트래픽 분할
먼저 요청이 코어로 들어가는지 확인한 다음, 어떤 아웃바운드 규칙에 매칭되는지 살펴보세요. 도메인 규칙, IP 규칙, DNS 동작은 함께 이해해야 합니다.
- 라우팅 규칙
- 라우팅 규칙은 도메인, IP, 포트 등의 조건에 따라 요청이 사용할 아웃바운드를 선택합니다. 규칙 순서에 따라 최종 매칭 결과가 달라집니다. 관련 코어에서
domainStrategy: "IPIfNonMatch"는 도메인이 매칭되지 않을 때 IP를 조회해 다시 매칭한다는 뜻입니다. 이 옵션을 켜도 모든 트래픽이 프록시로 전달되는 것은 아니며, 실제 경로는 규칙과 기본 아웃바운드에 따라 정해집니다.
- GeoIP
- GeoIP는 IP 주소를 지역이나 용도별로 분류한 데이터 모음이며, 라우팅 규칙에서 IP를 매칭하는 데 사용됩니다. 데이터베이스의 분류 결과일 뿐 방문자나 서버의 정확한 위치를 증명하지는 않습니다. 클라우드 서비스 주소, IP 할당 정보 변경, 데이터 업데이트 주기에 따라 결과가 달라질 수 있습니다. 트래픽이 잘못 분할되면 실제로 조회된 IP와 사용 중인 데이터 파일을 함께 확인하세요.
- GeoSite
- GeoSite는 서비스, 분류, 지역별로 정리한 도메인 모음으로, 여러 웹사이트에 같은 라우팅 규칙을 적용할 때 자주 사용합니다. IP 주소를 매칭하는 GeoIP와 달리 도메인을 기준으로 매칭합니다. 규칙에서 참조하는 분류가 현재 데이터 파일에 있어야 하며, 요청에 매칭할 도메인 정보가 남아 있어야 합니다. 분류 이름이 맞더라도 모든 요청이 매칭되는 것은 아닙니다.
- 트래픽 분할
- 트래픽 분할은 규칙에 따라 요청별로 직접 연결, 프록시, 차단 등의 아웃바운드를 지정하는 방식이지 별도의 프록시 프로토콜이 아닙니다. 클라이언트의 '중국 본토 우회' 같은 모드는 보통 미리 설정된 규칙 모음에 해당하며, 세부 내용은 구현과 데이터 파일에 따라 다릅니다. 규칙을 바꾼 뒤에는 직접 연결할 대상과 프록시를 사용할 대상을 각각 확인하고, 모드 이름만 보지 말고 로그에서 실제 아웃바운드를 확인하세요.
암호화와 보안
연결 주소, 서비스 이름, 사용자 인증, 보안 계층은 각각 역할이 다릅니다. 핸드셰이크 오류가 발생하면 해당 매개변수를 확인하고, 검증을 건너뛰는 방식으로 해결하는 것은 피하세요.
- REALITY
- REALITY는 Xray 생태계의 보안 전송 방식으로, VLESS 연결 설정에서 자주 사용되지만 VLESS의 다른 이름은 아닙니다. 클라이언트에는 서버 설정에 맞는 공개 키와
serverName,shortId등의 매개변수를 입력해야 하며, 일부 필드는 비워 둘 수 있습니다. 설정은 가능한 한 그대로 가져오고 임의의 도메인이나 다른 노드의 공개 키로 바꾸지 마세요.
- TLS
- TLS는 네트워크 연결을 암호화하고 상대의 신원을 확인하며, HTTPS도 같은 종류의 보안 프로토콜을 사용합니다. 클라이언트는 보통 인증서 체인, 대상 호스트 이름, 유효기간을 검증하므로 시스템 시간이 잘못되어도 연결에 실패할 수 있습니다. 인증서 오류가 발생하면 먼저 시간과 서버 설정을 확인하세요. 인증서 검증을 건너뛰면 신원 확인이 약해지므로 문제를 찾는 방법으로 사용해서는 안 됩니다.
- SNI
- SNI는 TLS 핸드셰이크에서 대상 서비스 이름을 지정하는 확장 기능이며, 클라이언트 화면에서는 보통
serverName필드로 표시됩니다. 네트워크 연결 주소와 핸드셰이크에 사용하는 서비스 이름은 다를 수 있지만, 이 조합은 서버 설정에 맞아야 합니다. WebSocket의 Host, SNI, 인증서에 표시된 이름은 서로 같은 필드가 아닙니다. 문제를 확인할 때 항목별로 대조하세요.
- UUID
- UUID는 범용 고유 식별자로, VMess와 VLESS 등의 연결 설정에서 사용자 식별자로 자주 사용됩니다. UUID 문자열 형식은 표시 이름과 다르므로 직접 입력할 때 문자가 빠지거나 공백이 섞이면 인증에 실패할 수 있습니다. 연결 인증에 사용하는 UUID는 인증 정보로 안전하게 보관하세요. 주소와 포트가 그대로여도 새로 만든 UUID로 서버에 설정된 식별자를 대체할 수는 없습니다.
시스템과 네트워크
시스템 프록시와 TUN은 트래픽을 처리하는 범위가 다르며 DNS 쿼리도 별도의 경로를 사용할 수 있습니다. 설정이 예상대로 작동하는지 보려면 앱, 시스템, 코어를 함께 살펴봐야 합니다.
- TUN 모드
- TUN은 가상 네트워크 인터페이스를 통해 IP 트래픽을 네트워크 처리 프로그램으로 전달하므로 시스템 프록시를 따르지 않는 일부 앱의 트래픽도 처리할 수 있습니다. 실제 처리 범위는 시스템 라우팅, 제외 설정, 권한, 구현 방식에 따라 달라지며 스위치를 켠다고 모든 트래픽이 반드시 처리되는 것은 아닙니다. 사용하기 전에 권한과 다른 가상 네트워크 도구와의 충돌을 확인하세요. 자세한 설정은 TUN 모드 가이드를 참고하세요.
- 시스템 프록시
- 시스템 프록시는 운영체제가 앱에 제공하는 프록시 설정이며, 보통 클라이언트가 수신 대기하는 로컬 주소와 포트를 지정합니다. 이 설정을 따르는 앱만 프록시를 사용합니다. 일부 게임, 명령줄 프로그램, 자체 네트워크 설정을 사용하는 소프트웨어는 예외일 수 있습니다. 클라이언트를 종료한 뒤에도 시스템에 작동하지 않는 프록시 설정이 남으면 웹페이지가 열리지 않을 수 있으므로 시스템 프록시 상태와 로컬 수신 대기 여부를 확인하세요.
- FakeDNS
- FakeDNS는 내부 식별에 사용할 가상 주소를 반환하고, 해당 주소와 원래 도메인의 매핑을 저장합니다. 이후 트래픽이 같은 처리 경로로 들어오면 코어가 매핑을 이용해 도메인을 복원하고 라우팅 판단에 활용할 수 있습니다. 일반 공용 DNS를 그대로 대체하는 기능은 아닙니다. 트래픽 가로채기, 가상 주소 대역 라우팅, 매핑 유지 기간을 함께 설정하지 않으면 주소 조회는 성공해도 연결되지 않을 수 있습니다.
- DNS 누수
- DNS 누수는 도메인 조회가 예상한 해석 경로를 따르지 않는 현상입니다. 예를 들어 지정한 DNS 서버에 요청해야 하지만 시스템이나 앱이 별도로 조회할 수 있습니다. 브라우저의 보안 DNS, 시스템 DNS 설정, 클라이언트 DNS, 트래픽 분할 규칙이 모두 요청 경로를 바꿀 수 있습니다. 검사 결과는 의도한 정책을 기준으로 해석해야 합니다. 로컬 DNS 서버가 표시된다고 반드시 문제가 있는 것은 아니므로, 먼저 어떤 요청을 직접 연결하도록 설정했는지 확인하세요.