VMess·VLESS·Trojan·Shadowsocks 비교: 사용 환경별 프록시 프로토콜 선택

VMess·VLESS·Trojan·Shadowsocks의 암호화와 연결 성능을 비교하고, 데스크톱·모바일·불안정한 네트워크에 맞는 프록시 프로토콜을 안내합니다.

핵심 내용

프로토콜 이름만으로 속도, 보안성, 배터리 소모를 판단할 수는 없습니다. 먼저 프로토콜·전송 방식·보안 계층을 구분한 뒤 네 가지 프로토콜의 설정 항목을 비교하고, 데스크톱 업무와 모바일 이동 중 사용, 불안정한 네트워크에 맞는 선택 방법을 살펴봅니다. 이미 구독 정보를 받아 주로 사용할 노드를 고르려는 사용자에게 적합한 안내입니다. 노드 이름만 보지 말고 서버 설정과 실제 연결 상태를 기준으로 선택하세요.

프로토콜·전송 방식·보안 계층: 연결 구성을 먼저 확인하세요

v2rayN은 프로토콜이 아니라 데스크톱 클라이언트입니다. 구독을 관리하고 설정을 생성한 뒤 코어를 실행해 연결을 처리합니다. 안드로이드용 v2rayNG는 Xray 코어를, v2flyNG는 v2fly 코어를 사용하므로 이름이 비슷하다고 해서 같은 설정을 모두 지원한다고 볼 수는 없습니다. 특히 VLESS의 특정 확장 기능과 REALITY는 클라이언트에 포함된 코어가 지원하는지 항목별로 확인해야 합니다.

일반적인 노드 설정은 세 계층으로 구성됩니다. 프록시 프로토콜은 사용자 인증과 데이터 구성 방식을, 전송 방식은 데이터 전달 방식을, 보안 계층은 연결의 암호화와 인증을 담당합니다. 예를 들어 ‘VLESS + TCP + REALITY’와 ‘VLESS + WebSocket + TLS’는 모두 VLESS를 사용하지만 핸드셰이크 과정, 서버 구축 방식, 장애 원인은 서로 다릅니다.

네 가지 프로토콜 비교: 배경, 암호화 방식, 설정 항목

Shadowsocks는 비교적 일찍 등장한 경량 암호화 프록시로, 이후 AEAD와 2022 계열 방식이 추가됐습니다. VMess는 V2Ray 프로젝트에서 개발됐으며 사용자 인증과 데이터 암호화를 통합합니다. VLESS는 더 간결한 구조를 채택해 연결 보호를 외부 보안 계층에 맡기는 경우가 많습니다. Trojan은 TLS 연결로 프록시 세션을 전달하며, 인증서 검증과 서버 설정이 올바르게 이뤄져야 합니다.

프로토콜 인증 및 암호화 핵심 가져온 뒤 확인할 항목 자주 하는 실수
VMess UUID로 사용자를 식별하며, 최신 설정은 AEAD 인증을 사용하고 적절한 데이터 암호화 방식을 선택할 수 있습니다. UUID, 암호화 옵션, alterId, 전송 유형, TLS 설정 이전 설정의 0이 아닌 alterId를 새 서버에 그대로 적용하는 것
VLESS UUID로 인증합니다. 일반적인 encryption=none 설정 자체에는 페이로드 암호화 기능이 없으므로 보통 TLS 또는 REALITY와 함께 사용합니다. UUID, flow, 보안 계층, REALITY에 필요한 공개 키와 shortId 등의 매개변수 none을 연결 전체가 반드시 평문이라는 뜻으로 이해하거나, 반대로 보안 계층을 확인하지 않는 것
Trojan 일반적으로 비밀번호로 인증하고 TLS로 연결을 보호합니다. 비밀번호, 서버 이름, 포트, 인증서 검증 설정 ‘안전하지 않은 연결 허용’으로 인증서 오류를 장기간 우회하는 것
Shadowsocks 암호화 방식에 따라 키와 데이터 보호 방법이 정해지며, 방식마다 요구하는 키 형식이 다릅니다. 암호화 방식, 비밀번호 또는 키, 포트, 추가 전송 플러그인 필요 여부 2022 방식의 키를 일반 텍스트 비밀번호처럼 입력하는 것

여기서 설명하는 VLESS는 일반적인 encryption=none 배포 구성을 기준으로 합니다. 모든 코어 버전과 이후 확장이 이 방식만 사용하는 것은 아닙니다. Shadowsocks의 AEAD와 2022 계열 방식도 이름만 바꾼다고 서로 호환되지 않습니다. 클라이언트 코어, 서버 구현, 키 형식이 모두 일치해야 합니다.

443
TLS 서비스에서 자주 사용하는 포트일 뿐, 프로토콜이 반드시 사용해야 하는 포트는 아닙니다.
8388
Shadowsocks 설정 예시에서 자주 쓰는 포트이며 서버에서 변경할 수 있습니다.
0
최신 VMess AEAD 설정에서 사용하는 alterId 값

포트 번호는 설정을 식별하는 용도일 뿐, 어떤 프로토콜로 연결되는지 또는 보안이 적용됐는지를 증명하지 않습니다. 443 포트에서도 TLS가 아닌 서비스를 실행할 수 있고, TLS를 올바르게 설정한 서비스가 다른 포트를 사용할 수도 있습니다. 구독에 포함된 전체 매개변수를 기준으로 확인하세요.

핸드셰이크 비용과 속도: 네 가지 프로토콜을 일률적으로 순위 매길 수 없는 이유

웹페이지를 처음 열 때는 DNS 조회, 서버 연결, 보안 핸드셰이크, 프록시 요청, 대상 웹사이트의 응답이 모두 대기 시간에 영향을 줄 수 있습니다. WebSocket은 보통 업그레이드 요청도 거치며, 중간 프록시를 경유하면 연결 경로도 달라집니다. 따라서 ‘프로토콜 헤더가 짧다’고 해서 ‘첫 화면이 반드시 빨리 뜬다’고 할 수는 없습니다.

대용량 파일을 계속 내려받는 상황은 또 다른 문제입니다. 연결이 수립된 뒤에는 회선 대역폭, 네트워크 혼잡, 패킷 손실, 서버 부하, 기기의 암호화 처리 능력이 더 큰 영향을 주는 경우가 많습니다. VMess에 TLS를 추가하면 처리 비용이 발생할 수 있지만, 그렇다고 실제 처리량이 항상 VLESS보다 낮다고 단정할 수는 없습니다. 지역과 서비스 제공업체가 다른 노드는 한 번의 속도 측정만으로 프로토콜을 평가할 수 없습니다.

  1. 테스트 조건을 통일하세요: 가능하면 같은 데이터센터와 비슷한 출구, 동일한 전송 방식과 보안 계층을 사용하는 후보를 고르세요. 조건을 맞추기 어렵다면 결과를 ‘프로토콜 비교’가 아닌 ‘노드 비교’로 표시하세요.
  2. 두 종류의 지표를 따로 기록하세요: 짧은 연결은 첫 사용 가능 시점과 실패 횟수를, 장시간 연결은 다운로드 중단 여부와 처리량의 안정성을 기록합니다.
  3. 후보별로 3회 반복하세요: 같은 대상과 시간대에 번갈아 테스트해 특정 순간의 혼잡을 프로토콜 차이로 오해하지 않도록 합니다.
  4. 마지막에는 실제 사용 환경을 확인하세요: 업무용이라면 웹 로그인과 회의 재연결을, 이동 중이라면 네트워크 전환 후 복구 상태를 살펴보세요. 한 번 기록한 최고 속도만으로 판단하지 마세요.

결론: 회선 차이를 먼저 걸러낸 뒤 프로토콜 비용을 비교하세요

같은 서버에서 비교할 수 있는 설정을 구할 수 없다면 노드별 연결 성공률과 실제 작업 성능을 기준으로 주 사용 노드를 고르세요. 출구가 다른 두 노드의 속도 측정 결과를 VMess 또는 VLESS의 특성으로 돌리지 마세요.

데스크톱 업무용 프로토콜 선택: 검증된 구성을 우선 유지하세요

업무 환경에서는 안정적으로 연결할 수 있고 장애 원인을 찾기 쉬운지가 가장 중요합니다. 이미 안정적인 구독을 사용하고 있다면 프로토콜 이름을 바꾸려고 새로 구축할 필요는 없습니다. 새로 구축하고 양쪽에서 모두 지원한다면 올바르게 설정한 보안 계층과 VLESS 조합을 우선 검토할 수 있습니다. 기존 서비스가 VMess, Trojan 또는 Shadowsocks에 의존한다면 호환성과 유지 관리 여건도 함께 고려해야 합니다.

VLESS + TLS 또는 REALITY

우선 검토

새로 구축할 때 우선 검토할 수 있습니다. 단, 클라이언트와 서버가 동일한 매개변수를 지원해야 합니다. TLS는 인증서를 올바르게 검증해야 하며, REALITY는 공개 키, 서버 이름, shortId, 적용 가능한 flow를 확인해야 합니다. 다른 노드의 값을 섞어 입력하지 마세요.

적합한 환경: 서버 매개변수를 확인할 수 있고 호환 코어를 사용하는 데스크톱 업무 환경

Trojan + TLS

기존 도메인과 인증서 관리 절차가 있다면 유지 관리에 적용하기 쉽습니다. 설정은 보통 비밀번호와 TLS 매개변수를 중심으로 구성되지만, 비밀번호가 간단하다고 인증서 검증을 생략해도 되는 것은 아닙니다.

적합한 환경: 신뢰할 수 있는 TLS 서비스와 인증서 관리 절차가 이미 있는 환경

VMess

기존 구독 설정이 올바르고 클라이언트에서 안정적으로 사용할 수 있다면 그대로 유지해도 됩니다. 연결에 실패하면 바로 프로토콜을 바꾸기보다 시스템 시간, UUID, 전송 매개변수를 먼저 확인하세요.

적합한 환경: 기존 VMess 구독을 유지하고 현재 배포 환경과의 호환성이 필요한 경우

Shadowsocks AEAD 또는 2022 계열

직접 구축할 때 설정 항목이 비교적 간단합니다. 양쪽에서 같은 암호화 방식을 지원하는지 확인한 다음 키를 점검하세요. 서버에 별도의 플러그인이 필요하다면 클라이언트의 지원 여부도 확인해야 합니다.

적합한 환경: 설정 구성이 명확하고 추가 전송 계층을 줄이고 싶은 경우

v2rayN에서 「설정」→「매개변수 설정」으로 이동해 로컬 수신 포트를 확인하고, 메인 화면에서 시스템 프록시 상태를 점검하세요. 버전에 따라 항목의 위치나 분류가 달라질 수 있으니 실제 화면을 기준으로 확인해야 합니다. 시스템 프록시는 해당 설정을 따르는 앱에만 영향을 줍니다. 특정 프로그램이 계속 직접 연결된다고 해서 프로토콜이 작동하지 않는다고 단정할 수는 없습니다.

이동 중인 모바일과 불안정한 네트워크: 재연결·UDP·배터리 기록을 확인하세요

모바일 배터리 소모를 프로토콜별로 단순 비교할 수는 없습니다. 화면 밝기, 모바일 신호 세기, 백그라운드 앱, 라우팅 범위, 연결 유지 기능이 모두 결과에 영향을 줍니다. 신호가 약한 환경에서는 반복적인 재연결이 프로토콜 암호화보다 더 많은 전력을 소모할 수 있습니다. 따라서 테스트 조건이 없는 ‘VLESS는 배터리를 몇 퍼센트 절약한다’와 같은 수치를 제시해서는 안 됩니다.

네트워크가 불안정하다고 특정 프로토콜로 바꾸면 패킷 손실이 사라지는 것은 아닙니다. 여기서 다루는 네 가지 프로토콜은 서로 다른 혼잡 제어 알고리즘을 뜻하지 않습니다. 외부 전송 계층에서 TCP 등 어떤 전송 수단을 사용하는지, 서버가 UDP 전달을 지원하는지, 앱이 어떤 전송 방식을 사용하는지 구분해야 합니다. 웹페이지가 열린다고 해서 음성 통화에 필요한 UDP 경로까지 작동한다고 볼 수는 없습니다.

비교 방법: 유선·고정 네트워크와 모바일 네트워크에서 각각 확인

데스크톱: v2rayN
  • 후보 노드를 하나 선택해 로그인, 파일 업로드, 회의 연결을 먼저 확인하세요.
  • 라우팅 규칙을 동일하게 유지해 직접 연결과 프록시 연결을 한 번의 테스트로 섞지 마세요.
  • 각 테스트마다 실패 횟수를 기록하고 검증된 예비 노드를 하나 남겨두세요.
안드로이드: v2rayNG
  • Wi-Fi와 모바일 네트워크에서 각각 테스트한 뒤 네트워크를 전환해 재연결되는지 확인하세요.
  • 필요에 따라 앱별 프록시를 설정해 불필요한 백그라운드 프록시 연결을 줄이세요.
  • 시스템 배터리 사용량을 기준으로 사용 시간이 같은 조건을 비교하고, 화면 밝기와 작업도 비슷하게 유지하세요.

한 번에 노드 또는 라우팅 항목 중 하나만 변경하세요. 두 기기에서 같은 구독을 사용할 수 있지만, 코어 호환성과 가져온 결과는 각각 확인해야 합니다.

v2flyNG를 선택한다면 포함된 v2fly 코어의 실제 기능을 기준으로 노드를 골라야 합니다. 특히 Xray의 특정 기능을 위해 생성된 설정을 범용 설정으로 간주하지 마세요. 모바일 환경에서는 연결이 안정적으로 복구되는지, 필요한 앱을 지원하는지, 같은 작업에서 배터리 소모가 감당 가능한지를 기준으로 선택하면 됩니다.

가져온 뒤 연결되지 않을 때: 오류가 발생한 계층별로 점검

문제를 해결할 때는 ‘서버 연결 실패’와 ‘로컬 앱이 프록시를 사용하지 않음’을 먼저 구분하세요. 노드 주소와 포트에 연결할 수 있는지 확인한 다음 인증, 전송 방식, 보안 계층을 점검하고 마지막으로 로컬 시스템 프록시, DNS, 분할 라우팅을 확인합니다. 로그의 연결 시간 초과, 인증 실패, 인증서 오류는 각각 다른 문제를 가리키므로 여러 설정을 한꺼번에 바꾸지 마세요.

VMess 설정을 가져왔지만 계속 연결에 실패하면 어떻게 하나요?

먼저 시스템 시간을 맞춘 다음 UUID, alterId, 서버 요구 사항을 확인하세요. 최신 AEAD 설정은 보통 alterId=0을 사용합니다. 이어서 WebSocket 경로, Host, TLS 상태를 점검하세요. 설정을 가져올 수 있다는 것은 구문 분석이 가능하다는 뜻일 뿐, 서버 매개변수와 일치한다는 의미는 아닙니다.

VLESS 노드에 UUID가 있는데도 인증에 실패하는 이유는 무엇인가요?

UUID만으로는 설정이 완성되지 않습니다. 보안 유형이 TLS인지 REALITY인지 확인하고 flow, 서버 이름, 공개 키, shortId를 각각 대조하세요. flow를 임의의 다른 값으로 바꾸지 말고 서버 설정과 일치하는 전체 구성을 다시 받아오세요.

Trojan에서 인증서 오류가 발생하면 검증을 건너뛰어도 되나요?

인증서 검증을 건너뛰는 방법을 장기적인 해결책으로 삼지 마세요. 먼저 기기 시간과 서버 이름을 확인한 다음 서버 관리자가 인증서 유효 기간, 인증서 체인, 도메인 일치 여부를 점검하도록 하세요. IP로 직접 연결하더라도 올바른 TLS 서버 이름과 검증 설정을 사용해야 합니다.

Shadowsocks 비밀번호가 맞는데도 연결되지 않는 이유는 무엇인가요?

암호화 방식과 포트도 함께 확인하세요. 2022 계열 방식은 지정된 길이와 형식의 키가 필요하며 일반 비밀번호로 임의 대체할 수 없습니다. 웹페이지는 열리는데 통화가 되지 않는다면 서버의 UDP 전달, 방화벽, 앱별 라우팅 규칙을 확인하세요.

속도 테스트에서는 연결 가능으로 나오는데 브라우저에서 페이지가 열리지 않는 이유는 무엇인가요?

v2rayN 메인 화면에서 시스템 프록시 상태를 확인하고 「설정」→「매개변수 설정」에서 로컬 포트를 점검하세요. 프록시를 수동으로 설정한 앱도 같은 포트를 사용해야 합니다. 이어서 DNS와 라우팅 규칙이 적용되는지 확인하고, 연결 가능한 노드의 프로토콜부터 바꾸지는 마세요.

최종 선택 체크리스트: 프로토콜 이름을 검증 가능한 조건으로 바꾸기

일반 사용자라면 클라이언트가 설정 전체를 지원하는지, 서버 설정이 명확한지, 실제 작업에서 연결이 계속 유지되는지 순서대로 확인한 뒤 작은 성능 차이를 비교하는 것이 실용적입니다. 프로토콜은 기능의 범위를 정하지만 실제 사용 경험에는 회선과 배포 방식도 큰 영향을 줍니다. 두 요소를 함께 판단해야 합니다.

v2rayN 다운로드