VMess, VLESS, Trojan, Shadowsocks 중에서 선택해야 하는 v2rayN, v2rayNG, v2flyNG 사용자를 위한 글입니다. 암호화 역할, 전송 조합, 핸드셰이크 비용, 시간 동기화, 기기 부하와 마이그레이션 난이도를 비교하고 모바일 네트워크·가정용 인터넷·구형 기기별 설정 순서를 안내합니다.
먼저 비교 기준 통일하기: 프로토콜은 완성된 연결 구성과 다릅니다
VMess, VLESS, Trojan, Shadowsocks는 우선 프록시 프로토콜을 설명하는 용어입니다. 실제 연결에는 전송 계층, 암호화 계층, 도메인 조회, 라우팅 규칙과 클라이언트 코어가 함께 포함됩니다. 노드 이름에 “VLESS”가 적혀 있다고 성능을 바로 판단할 수는 없으며, TCP, WebSocket, gRPC, TLS, Reality 등의 매개변수가 서로 맞는지도 확인해야 합니다.
같은 프로토콜이라도 전송 조합에 따라 연결 특성과 오버헤드가 크게 달라질 수 있습니다. 예를 들어 VLESS over TCP with Reality와 VLESS over WebSocket with TLS는 서로 다른 구성입니다. VMess over TCP와 VMess over WebSocket도 “둘 다 VMess”라는 이유만으로 동일하게 취급할 수 없습니다. 선택하기 전에 서버가 어떤 조합을 제공하는지 확인하고 클라이언트가 이를 완전히 지원하는지 판단해야 합니다.
| 비교 항목 | VMess | VLESS | Trojan | Shadowsocks |
|---|---|---|---|---|
| 프로토콜 자체 암호화 | 인증 및 암호화 기능 포함 | 콘텐츠 암호화는 담당하지 않음 | 표준 TLS에 의존 | AEAD 암호화 사용 |
| 일반적인 인증 정보 | UUID | UUID | 비밀번호 | 비밀번호 및 암호화 방식 |
| 시간 민감도 | 높음, 자동 시간 동기화 권장 | 대체로 낮음 | TLS 및 인증서 상태에 따라 결정 | 대체로 낮음 |
| 주요 장점 | 기존 구독과의 호환 범위가 넓음 | 매개변수가 간결해 최신 전송 방식에 적합 | TLS 배포 구조가 명확함 | 구현이 성숙해 기기 부담이 적음 |
4가지 프로토콜의 핵심 차이와 적합한 범위
VMess는 V2Ray 생태계에서 일찍 널리 사용된 프로토콜로, 일반적으로 UUID 인증을 사용합니다. 시스템 시간에 민감해 기기의 시간 오차가 크면 인증에 실패할 수 있습니다. 현재 구독에도 VMess 노드가 많이 남아 있으므로, 이름만 보고 기본 선택으로 판단하기보다는 기존 서버와 구형 설정을 호환하기 위한 선택지로 보는 편이 적절합니다.
VLESS는 콘텐츠 암호화 역할을 TLS, Reality 같은 외부 보안 계층에 맡기고 프로토콜 필드를 간결하게 구성합니다. Xray 코어를 사용할 때 VLESS는 TCP, gRPC, WebSocket, TLS 또는 Reality와 함께 구성되는 경우가 많습니다. 장점은 완성된 조합에서 나오며, 단순히 “암호화를 없앴다”는 의미가 아닙니다. 신뢰할 수 없는 네트워크에서 적절한 외부 보호 없이 전송하면 완전한 보안 구성이 될 수 없습니다.
Trojan은 일반적으로 TLS 위에서 동작하며 비밀번호로 인증합니다. 설정할 때 서버 주소, 포트, 비밀번호, SNI 또는 서버 이름을 정확히 입력하고 인증서 검증도 올바르게 처리해야 합니다. 구독에서 도메인 입력을 요구하는데 서버 IP로 임의 변경하면 TLS 이름 일치에 실패할 수 있습니다. 인증서 오류가 발생하면 먼저 시스템 시간, 도메인과 SNI를 확인하고, 검증 건너뛰기를 장기 설정으로 사용하지 마세요.
Shadowsocks는 사전 공유 비밀번호와 AEAD 암호화 방식을 사용하며 설정 필드가 적어 성능이 제한적인 기기나 단순한 서버 구성에 적합합니다. 복잡한 위장 기능을 자동으로 제공하지 않으므로 실제 네트워크 성능은 서버 구현, 선택한 암호화 방식과 전송 방식에 따라 달라집니다. 기존 노드를 가져올 때는 클라이언트 코어가 해당 암호화 방식을 지원하는지도 확인해야 합니다.
VLESS
권장TLS, Reality 같은 최신 연결 방식과 조합하기 좋고 필드가 명확해 Xray 코어 클라이언트에서 통합 관리하기 쉽습니다.
적합: 신규 구축, 모바일 주력, 장기 유지 관리
VMess
기존 구독과 서버 지원 범위가 넓지만 기기 시간, 전송 매개변수와 보안 필드에 주의해야 합니다.
적합: 기존 노드 호환, 기존 설정 마이그레이션
Trojan
TLS를 기반으로 하며 배포 구조가 직관적이지만 도메인, 인증서와 서버 이름을 정확히 입력해야 합니다.
적합: 고정 도메인, 표준 TLS 배포
Shadowsocks
필드가 적고 구현이 성숙해 구형 하드웨어와 단순 포워딩 환경에서 설정 부담이 낮습니다.
적합: 저부하 기기, 경량 호환 구성
프로토콜 선택 전 확인할 3가지 조건
- 서버 지원이 우선입니다: 클라이언트에서 VMess 노드를 VLESS로 임의 변경할 수 없습니다. 프로토콜, 포트와 전송 매개변수는 서버에서 함께 제공해야 합니다.
- 코어 지원이 우선입니다: v2rayNG에서 Xray 코어를 사용하면 일반적인 VLESS, VMess, Trojan, Shadowsocks 구성을 처리할 수 있습니다. v2flyNG에서 v2fly 코어를 사용하는 경우에는 최신 확장 매개변수를 실제 코어의 지원 범위에 맞춰 확인해야 합니다.
- 안정성이 우선입니다: 같은 회선이라면 단 한 번의 최고 속도보다 연속 연결 성공률, 첫 바이트 지연 시간과 네트워크 전환 후 복구 속도가 더 유용한 기준입니다.
모바일 네트워크·가정용 인터넷·구형 기기별 선택법
모바일 네트워크에서는 기지국 전환, 네트워크 주소 변경, 순간적인 패킷 손실과 백그라운드 제한이 주요 변수입니다. 프로토콜 이름만으로 이런 문제가 해결되지는 않습니다. 서버가 명확히 제공하고 클라이언트 코어가 완전히 지원하는 VLESS 구성을 먼저 테스트한 뒤, 무선 네트워크에서 모바일 데이터로 전환했을 때 복구 시간을 확인하세요. 전환 후 오랫동안 트래픽이 없으면 v2rayNG에서 연결을 중지한 뒤 다시 시작하고, 제조사의 배터리 정책이 백그라운드 네트워크를 제한하는지도 점검해야 합니다.
가정용 인터넷은 안정성을 비교하기에 적합합니다. 테스트할 때 같은 기기, 같은 접속 방식과 같은 대상 사이트를 사용하고, 저녁 피크 시간대의 연결 소요 시간, 지속 다운로드와 동영상 탐색 성능을 각각 기록하세요. VLESS와 Trojan이 서로 다른 서버에 있다면 결과는 주로 회선 차이를 반영할 수 있으므로 프로토콜 차이로 단정할 수 없습니다.
구형 기기에서는 불필요한 동시 연결, 복잡한 라우팅과 잦은 속도 측정을 줄여야 합니다. Shadowsocks는 설정 필드가 비교적 간결해 서버에서 제공하는 경우 가벼운 선택지가 될 수 있습니다. 이미 안정적인 VMess 노드가 있다면 이름을 바꾸기 위해 마이그레이션할 필요는 없습니다. 성능은 CPU 사용률, 발열, 재연결 횟수와 실제 처리량으로 판단해야 합니다.
권장 구성: 데스크톱과 Android에서 같은 구독 확인
데스크톱(v2rayN)
- 「구독 그룹」→「구독 그룹 설정」에서 구독 추가
- 서버가 권장하는 Xray 코어 조합을 우선 사용
- 「설정」→「매개변수 설정」에서 로컬 포트 확인
- 코어 로그로 핸드셰이크 및 연결 오류 기록
Android(v2rayNG)
- 같은 구독을 업데이트한 뒤 동일한 이름의 노드 선택
- 「설정」→「라우팅 설정」에서 분할 라우팅 모드 확인
- 모바일 데이터와 무선 네트워크에서 각각 3회 테스트
- 필요할 때 앱별 프록시를 켜 백그라운드 트래픽 줄이기
양쪽에서 같은 노드의 매개변수가 일치하면 프로토콜 설정, 기기 네트워크와 클라이언트 설정 중 어떤 문제인지 더 쉽게 구분할 수 있습니다.
상황별 결론
- 모바일 네트워크 주력: 서버가 VLESS와 호환되는 보안 전송을 제공한다면 VLESS를 먼저 테스트하고, 네트워크 전환 후 복구와 백그라운드 연결 유지를 중점적으로 확인하세요.
- 가정용 인터넷 상시 사용: VLESS와 Trojan 모두 안정적인 선택지가 될 수 있으므로 같은 회선과 같은 시간대에 최소 3회 비교하세요.
- 구형 Android 기기: 이미 안정성이 확인된 Shadowsocks 또는 VMess를 우선 유지하고, 실제 필요가 없는 동시 연결과 복잡한 규칙은 사용하지 마세요.
- 기존 구독 마이그레이션: 먼저 전체를 가져오고 프로토콜 필드를 일괄 수정하지 마세요. 기존 노드와 새 노드가 모두 연결되는지 확인한 다음 작동하지 않는 설정을 하나씩 정리하세요.
v2rayN, v2rayNG, v2flyNG에서 매개변수 확인
구독을 가져온 뒤에는 노드를 바로 수정하지 마세요. 구독에는 프로토콜, 주소, 포트, 사용자 ID, 비밀번호, 전송 방식, 경로, Host, SNI, 핑거프린트와 흐름 제어 등의 매개변수가 포함될 수 있습니다. 노드 이름에 표시된 필드를 실제 설정으로 간주해 수동 입력하면 “겉보기에는 같지만 실제로는 연결되지 않는” 문제가 발생하기 쉽습니다.
v2rayN 데스크톱에서는 먼저 「구독 그룹」→「모든 구독 업데이트」를 실행한 다음 노드를 선택해 설정 세부 정보를 확인할 수 있습니다. 이어서 「설정」→「매개변수 설정」으로 이동해 로컬 SOCKS 및 HTTP 수신 포트가 다른 프로그램에서 사용 중인지 확인하세요. 예시 포트 10808과 10809를 사용하는 경우 시스템의 다른 프록시 도구가 같은 주소와 포트를 동시에 수신해서는 안 됩니다.
v2rayNG에서는 오른쪽 상단의 추가 메뉴를 통해 클립보드에서 링크 하나를 가져오거나 구독 그룹에 구독 주소를 추가할 수 있습니다. 연결 전에 현재 활성 설정을 확인하고, 연결 후 실시간 로그를 열어 보세요. v2flyNG는 v2fly 코어를 사용하므로 최신 VLESS 확장 설정을 가져올 때는 먼저 구독 제공자가 표시한 코어 요구 사항을 확인해야 합니다. 코어가 다르면 모든 확장 필드를 완전히 동일하게 지원한다고 가정해서는 안 됩니다.
확인 순서
1. protocol:vmess / vless / trojan / shadowsocks
2. address: 서버 도메인 또는 주소
3. port: 서버 수신 포트(예: 443)
4. credential: UUID, 비밀번호 또는 Shadowsocks 키
5. transport:tcp / ws / grpc
6. security: tls / reality / 서버 지정 값
7. serverName: TLS 또는 Reality에서 사용하는 서버 이름
8. path 또는 serviceName: 해당 전송에서 필요할 때만 입력
연결 오류 발생 시 로그 유형별 확인
- 연결 시간 초과: 먼저 주소, 포트, 현재 네트워크와 서버 상태를 확인하세요. 시간 초과는 대개 프로토콜 세션을 수립하기 전에 발생합니다.
- 인증 실패: UUID, 비밀번호, 암호화 방식과 기기 시간을 확인하세요. VMess 설정에서는 특히 시스템 자동 시간 동기화를 먼저 켜야 합니다.
- TLS 핸드셰이크 실패: 도메인, SNI, 시스템 시간과 인증서 체인을 확인하세요. Trojan과 TLS를 사용하는 VLESS, VMess에서도 이런 오류가 발생할 수 있습니다.
- 연결은 성공했지만 트래픽이 없음: 시스템 프록시, VPN 권한, DNS, 라우팅 규칙과 앱별 프록시 범위를 확인하고 바로 프로토콜을 바꾸지는 마세요.
- 구독 업데이트 후 노드가 사라짐: 먼저 현재 구독 그룹과 필터 조건을 확인한 다음 구독 소스가 새 노드 목록을 반환했는지 점검하세요.
한 번의 최고 속도보다 반복 가능한 테스트를 사용하세요
프로토콜 테스트에서는 회선과 서버 부하 차이를 최대한 배제해야 합니다. 가장 신뢰할 수 있는 방법은 같은 서버, 같은 출구 대역폭과 비슷한 설정으로 비교하는 것입니다. 조건이 되지 않는다면 결론을 “이 몇 개 노드의 성능”으로 한정하고 프로토콜 전체의 일반적인 특성으로 확대하지 마세요.
첫 바이트 지연 시간은 단순한 네트워크 왕복 시간보다 실제 웹 탐색 경험에 가깝습니다. 캐시되지 않은 페이지 3개를 연속으로 열고 요청 시작부터 본문이 나타날 때까지의 시간을 기록할 수 있습니다. 동영상과 대용량 파일은 지속 처리량과 1분 동안의 속도 변동을 확인하세요. 모바일 네트워크에서는 무선 네트워크와 모바일 데이터 간 전환 테스트도 한 번 추가해야 합니다.
테스트할 때 다른 다운로드 작업을 종료하고 DNS와 라우팅 모드를 고정한 뒤, 각 라운드 시작 전에 활성 노드를 확인하세요. 최소 3라운드 실행하고 최고값이 아닌 중앙값을 사용합니다. 3회 결과의 차이가 30%를 넘으면 프로토콜보다 회선 혼잡, 신호 변동 또는 서버 부하를 먼저 의심하세요.
- 구독을 업데이트하고 노드의 프로토콜, 주소, 포트, 전송 방식과 보안 계층을 기록합니다.
- 클라이언트, 네트워크와 라우팅 모드를 고정하고 3회 연속 연결해 성공 횟수를 기록합니다.
- DNS 조회, 첫 바이트, 지속 다운로드와 네트워크 전환 후 복구 상태를 각각 기록합니다.
- 로그에서 재시도, 핸드셰이크 실패, 연결 재설정 또는 DNS 시간 초과가 발생했는지 확인합니다.
- 안정적인 노드 2개를 남겨 하나는 주 연결로, 다른 하나는 장애 전환용으로 사용합니다.
| 지표 | 테스트 방법 | 중점 판단 |
|---|---|---|
| 연결 성공률 | 각 노드에 5회 연속 연결 | 시간 초과 또는 핸드셰이크 실패 발생 여부 |
| 첫 바이트 시간 | 캐시되지 않은 페이지 3개를 열고 중앙값 계산 | 일상적인 웹 탐색 대기 시간이 안정적인지 |
| 지속 처리량 | 고정된 대상을 60초 동안 연속 전송 | 속도가 자주 0이 되거나 크게 변동하는지 |
| 네트워크 전환 후 복구 | 무선 네트워크와 모바일 데이터 간 3회 전환 | 연결을 수동으로 다시 시작해야 하는지 |
| 기기 부하 | 15분간 계속 실행한 뒤 관찰 | 발열, 배터리 소모와 백그라운드 유지 상태 |
프로토콜 선택 관련 자주 묻는 질문
대부분의 프로토콜 문제는 결국 매개변수 불일치, 코어 기능 불일치, 시간 오류, TLS 이름 오류 또는 로컬 라우팅 이상으로 분류할 수 있습니다. 먼저 오류 유형에 따라 원인을 좁힌 뒤 프로토콜 전환 여부를 결정하는 편이 무작정 노드를 바꾸는 것보다 효과적입니다.
VLESS가 VMess보다 항상 빠른가요?
그렇지는 않습니다. 먼저 두 노드가 같은 서버와 같은 회선에 있는지 확인한 뒤 전송 방식, 라우팅과 테스트 시간을 고정하세요. 3~5회 연속 테스트하고 중앙값을 비교해야 합니다. 서버가 다르면 결과만으로 프로토콜 자체가 더 빠르다고 증명할 수 없습니다.
VMess 노드가 갑자기 모두 인증에 실패하면 어떻게 해야 하나요?
먼저 시스템 날짜 및 시간 설정에서 자동 시간 동기화를 켜고 오차를 30초 이내로 줄이세요. 그다음 구독을 업데이트하고 코어를 다시 시작합니다. 그래도 실패하면 UUID, 포트와 서버 설정이 변경되었는지 확인하세요.
Trojan에서 인증서 또는 TLS 핸드셰이크 오류가 표시되면 어떻게 확인하나요?
시스템 시간, 서버 도메인, 포트와 SNI를 순서대로 확인하세요. 구독에서 도메인 사용을 요구한다면 IP로 바꾸지 마세요. 같은 네트워크의 여러 클라이언트에서 동시에 실패한다면 서버 인증서 상태와 도메인 조회 결과를 확인해야 합니다.
Shadowsocks를 가져온 뒤 암호화 방식을 지원하지 않는다고 표시되면 어떻게 해야 하나요?
노드에 표시된 암호화 방식 이름을 확인하고 현재 클라이언트 코어가 해당 방식을 지원하는지 점검하세요. 서버와 클라이언트의 설정은 완전히 일치해야 하므로 다른 방식으로 임의 변경하면 안 됩니다. 올바른 방법은 코어를 업데이트하거나 서버에서 호환 설정을 제공받는 것입니다.
같은 구독이 v2rayN에서는 작동하지만 v2rayNG에서는 작동하지 않을 때 어떻게 원인을 찾나요?
먼저 양쪽 노드 세부 정보의 프로토콜, 포트, 전송 방식, SNI, 경로와 흐름 제어 필드를 비교한 뒤 Android 쪽 VPN 권한, 비공개 DNS, 앱별 프록시와 배터리 제한을 확인하세요. 매개변수가 같다면 양쪽에서 같은 시각에 기록한 코어 오류 유형을 내보내 계속 비교합니다.