VMess와 VLESS는 서로 바꿔 쓸 수 있는 이름이 아닙니다. 두 프로토콜 모두 사용자를 식별할 때 UUID를 흔히 사용하지만, VMess는 프로토콜 계층에서 데이터를 암호화할 수 있고 VLESS 자체에는 데이터 암호화 기능이 없어 TLS 같은 별도의 보안 계층을 확인해야 합니다. 이미 서비스 제공업체와 구독을 이용 중인 사용자를 위해 프로토콜, 전송 방식, 보안 계층 순서로 차이를 설명한 뒤 Shadowrocket에서 확인할 항목과 문제 해결 순서를 안내합니다.
1. 프로토콜, 전송 방식, TLS를 구분하세요
Shadowrocket에서 VMess 또는 VLESS를 선택하면 연결에 사용할 프록시 프로토콜이 정해질 뿐, 전송 방식이나 보안 설정까지 정해지는 것은 아닙니다. 이름에 VLESS가 있다고 해서 WebSocket을 사용한다고 단정할 수 없고, VMess라고 해서 TLS가 활성화된 것도 아닙니다.
연결을 세 가지 항목으로 나눠 살펴보세요. 양쪽이 사용자를 어떤 프로토콜로 식별하는지, 프록시 데이터가 어떻게 캡슐화되어 전송되는지, 클라이언트와 서버 사이의 연결이 TLS로 보호되는지 확인해야 합니다. 서버 설정과 각 항목을 맞춰야 하며 주소, 포트, UUID만 입력하고 나머지를 빠뜨리면 안 됩니다.
| 계층 | 예시 | 확인할 내용 |
|---|---|---|
| 프록시 프로토콜 | VMess / VLESS | Type은 서버 유형과 일치해야 하며 UUID도 같은 계정에 해당해야 합니다. |
| 전송 방식 | TCP / WebSocket | 서버에서 지정한 방식을 선택하세요. WebSocket을 사용한다면 Host와 Path도 확인해야 합니다. |
| 보안 계층 | TLS | 활성화 여부를 확인하고 핸드셰이크 및 인증서 검증에 사용할 서버 이름을 확인하세요. |
TCP와 WebSocket은 설명을 위한 일반적인 설정 예시이며 전체 지원 목록을 뜻하지 않습니다. 선택 가능한 항목은 앱에 현재 표시되는 내용을 기준으로 확인하세요. 기존 구독에 구체적인 전송 매개변수가 있다면 해당 설정을 따르고, 프로토콜 이름만 보고 값을 추가하지 마세요.
2. VMess와 VLESS의 암호화 및 UUID 비교
VMess는 프로토콜 설계에 인증 및 데이터 암호화 기능을 포함하며, 일반적인 설정에서는 AEAD 방식을 사용합니다. VLESS는 프로토콜 설계가 더 간결하고 자체적으로 프록시 데이터를 암호화하지 않습니다. 따라서 VLESS 설정에 encryption=none이 표시되어도 연결 전체가 암호화되지 않았다는 뜻은 아닙니다. 바깥 계층에서 TLS를 사용하는지 확인해야 합니다.
| 항목 | VMess | VLESS |
|---|---|---|
| 사용자 식별자 | 일반적으로 UUID를 사용합니다. | 일반적으로 UUID를 사용합니다. |
| 프로토콜 계층 암호화 | 데이터 암호화 기능이 있습니다. 구체적인 옵션은 서버 설정에 맞춰 유지해야 합니다. | 자체적으로 데이터를 암호화하지 않으므로 VMess의 암호화 알고리즘 설정을 그대로 적용하면 안 됩니다. |
| TLS의 역할 | 추가적인 외부 보호 계층으로 사용할 수 있으며, VMess라는 이름만으로 사용 여부가 정해지지는 않습니다. | 클라이언트와 서버 간 연결을 보호하는 데 흔히 사용됩니다. 실제 보안 설정을 확인해야 합니다. |
| 이전 필드 | 이전 설정에는 AlterId가 있을 수 있습니다. 최신 AEAD 설정에서는 보통 0입니다. | VMess의 AlterId 인증 방식은 사용하지 않습니다. |
| 유형 이름을 바꿔 변환할 수 있나요? | 불가능합니다. Type을 바꿔도 서버의 수신 설정이나 계정 설정까지 함께 바뀌지는 않습니다. | |
UUID는 사용자 식별 정보이지 서버 주소나 TLS 인증서가 아닙니다. 두 설정에 같은 UUID가 표시되더라도 프로토콜, 포트 또는 전송 방식이 다르면 서로 다른 연결 설정입니다. UUID를 공개 스크린샷, 진단 게시물 또는 공유 문구에 포함하지 마세요.
판단 순서: TLS를 먼저 확인한 뒤 none을 해석하세요
VLESS에서 encryption=none을 보면 먼저 해당 설정을 열어 TLS와 서버 이름을 확인하세요. none이라는 문구를 없애려고 VMess로 바꾸지 말고, 포트가 443이라는 이유만으로 TLS가 활성화되었다고 가정하지 마세요.
3. Home → Add Server에서 항목별로 입력하기
직접 추가하려면 Home에서 Add Server로 이동하세요. Type과 전송 옵션에 따라 뒤이어 표시되는 항목이 달라지고 앱 업데이트에 따라 화면도 바뀔 수 있습니다. 아래 표는 각 필드에서 확인할 내용을 설명하며, 모든 연결에 동일한 입력 양식이 표시된다는 뜻은 아닙니다.
- 먼저 Type을 선택합니다. 서비스 제공업체가 안내한 VMess 또는 VLESS를 선택한 다음 다른 항목을 입력하세요. 유형을 바꾼 뒤 초기화된 옵션을 놓치지 않도록 주의해야 합니다.
- Address와 Port를 입력합니다. Address에는 지정된 호스트 이름이나 IP만 입력하고 Port에는 지정된 숫자를 입력하세요. 전체 공유 링크를 주소 입력란에 붙여 넣지 마세요.
- UUID를 입력합니다. 사용자 식별자를 빠짐없이 복사하고 앞뒤 공백, 누락된 문자, 잘못 복사된 줄바꿈이 없는지 확인하세요. 임의로 대체 값을 만들지 마세요.
- 전송 매개변수를 확인합니다. WebSocket을 사용한다면 Host와 Path도 확인하세요. 경로 앞의 슬래시와 대소문자를 그대로 유지해야 합니다.
- 보안 매개변수를 확인합니다. 원래 설정에 따라 TLS와 서버 이름을 지정하세요. 추가 항목은 서비스 제공업체가 해당 매개변수를 명시했고 앱에 관련 옵션이 표시되는 경우에만 입력하세요.
- 저장한 뒤 Home으로 돌아갑니다. 방금 저장한 항목을 선택한 다음 연결 테스트를 진행하세요. 저장에 성공했다는 것은 입력 내용이 기록되었다는 뜻일 뿐, 서버가 연결을 수락했다는 뜻은 아닙니다.
| 항목 또는 개념 | 입력 기준 | 흔히 하는 실수 |
|---|---|---|
| Address / Port | 기존 서비스 제공업체가 안내한 접속 주소와 포트입니다. | 443을 고정값으로 생각해 기존 설정의 다른 포트를 덮어씁니다. |
| UUID | 현재 서버 계정에 해당하는 전체 사용자 식별자입니다. | 다른 설정의 UUID를 섞어 쓰거나 복사할 때 공백을 포함합니다. |
| VMess 암호화 옵션 | 가져온 설정이나 서비스 제공업체의 요구 사항을 따릅니다. | 다른 프로토콜의 비밀번호나 알고리즘을 그대로 적용합니다. |
| Host / Path | WebSocket 등 해당 전송 방식에 대한 서버 설정입니다. | Path의 /를 빠뜨리거나 Host가 반드시 Address와 같아야 한다고 생각합니다. |
| TLS / SNI | 보안 계층 설정 및 서버 이름 요구 사항입니다. | IP로 연결하면서 IP를 인증서에 대응하는 도메인으로 잘못 취급합니다. |
Address, WebSocket Host, TLS SNI는 같을 수도 있고 서버 배포 방식에 따라 다를 수도 있습니다. Address는 연결 대상을 지정하고, Host는 해당 애플리케이션 계층 요청 정보에 속하며, SNI는 TLS 핸드셰이크에서 서버 이름을 전달합니다. 세 값을 통일한다는 이유로 모두 같은 도메인으로 바꾸지 마세요.
4. 구독에서 VMess와 VLESS 구별하기
구독은 설정을 배포하는 방식이지 세 번째 프록시 프로토콜이 아닙니다. 기존 구독 하나에 여러 유형이 포함될 수 있습니다. 이름에 표시된 “VMess” 또는 “VLESS”가 단순한 메모라면 최종 판단 기준으로 삼을 수 없습니다. Home에서 해당 항목의 편집 화면을 열어 Type과 관련 매개변수를 확인하세요.
- 실제 유형을 확인합니다. 공유 링크의
vmess://및vless://접두어로 대략 구별할 수 있지만, 가져온 뒤에는 앱에 표시된 Type을 기준으로 판단하세요. - 매개변수가 표시되는 위치를 확인합니다. VMess 공유 정보는 설정을 인코딩해 링크 본문에 넣는 경우가 많습니다. VLESS 공유 링크는 UUID를 주소 앞에 두고 쿼리 매개변수로 전송 방식과 보안 설정을 나타내는 경우가 많습니다. 읽을 수 있는 메모 이름만 확인해서는 안 됩니다.
- 구독 주소와 개별 링크를 구분합니다. 구독 주소는 여러 설정을 가져오는 데 사용하고, 개별 공유 링크는 하나의 연결을 나타냅니다. 각각에 맞는 가져오기 기능을 사용하세요.
- 업데이트한 뒤 다시 확인합니다. Home에서 해당 구독을 업데이트한 뒤 대상 항목이 그대로 있는지, Type·주소·전송 방식이 바뀌었는지 확인하고 현재 선택된 항목도 다시 확인하세요.
예를 들어 https://example.com/sub?token=xxxx는 구독 주소 형식을 보여 주는 예시일 뿐 실제로 사용할 수 있는 서비스가 아닙니다. 실제 구독의 token과 UUID는 민감 정보로 취급해 보관하세요. 문제를 설명해야 한다면 Type, 전송 방식, 포트, 인증 정보가 포함되지 않은 오류 현상만 기록할 수 있습니다.
5. 연결 문제 해결: 설정을 고정한 뒤 라우팅 모드를 확인하세요
VMess와 VLESS 모두 주소, 인증, 전송 방식 또는 TLS 매개변수가 일치하지 않으면 연결에 실패할 수 있습니다. 문제를 해결할 때는 한 번에 변수 하나만 바꾸세요. 먼저 선택한 서버를 확인하고, 다음으로 프로토콜과 필드를 확인한 뒤 트래픽이 실제로 해당 연결을 통과하는지 살펴보세요. Type, 포트, TLS, Global Routing을 한꺼번에 바꾸면 어떤 항목이 결과에 영향을 줬는지 알 수 없습니다.
기존 프로토콜과 매개변수 유지
권장기존 구독 또는 서비스 제공업체가 제공한 매개변수를 하나씩 대조한 뒤 별도로 테스트하세요. TLS 사용이 명시된 설정은 인증서 검증을 유지하고, 문제 원인을 찾는 대신 검증을 끄지 마세요.
적합한 경우: 처음 가져올 때, 직접 입력할 때, 프로토콜 유형이 불확실할 때
Global Routing → Proxy
규칙의 영향을 분리해야 한다면 웹 요청 테스트에 Proxy를 임시로 사용할 수 있습니다. 그렇다고 시스템의 모든 트래픽이 반드시 이 연결을 통과하는 것은 아니며 서버 매개변수 오류를 해결해 주지도 않습니다.
적합한 경우: 서버 테스트에는 응답이 있지만 웹 요청이 다른 정책으로 라우팅되는지 의심될 때
Global Routing → Config
현재 Config의 규칙에 따라 트래픽을 처리합니다. 테스트가 끝나면 원래 모드로 되돌리고 대상 요청에 적용된 규칙과 정책을 확인하세요. 규칙 적용 결과를 프로토콜 성능으로 오해하지 마세요.
적합한 경우: 연결이 작동하는지 확인한 뒤 일상적인 규칙 분기와 적용 규칙을 점검할 때
- Home에서 대상 항목을 선택하고 메모와 실제 Type이 일치하는지 확인해 다른 서버를 테스트하지 않도록 하세요.
- Connectivity Test를 실행하고 해당 항목에 응답 또는 실패 중 무엇이 표시되는지 기록하세요. 테스트 결과는 해당 검사 과정만 반영하며 모든 웹사이트와 앱에 접속할 수 있음을 보장하지 않습니다.
- 시스템 안내에 따라 VPN 설정을 승인하고 연결 스위치를 켠 뒤 실제 웹페이지를 테스트하세요. Global Routing이 Direct라면 웹페이지에 직접 연결된 결과만으로 프록시 프로토콜이 작동한다고 판단할 수 없습니다.
- 인증서 관련 오류가 발생하면 시스템 시간, TLS 서버 이름, 인증서에 대응하는 도메인을 먼저 확인하세요. 시간 초과가 발생하면 주소, 포트, 네트워크 연결 가능성을 추가로 확인하세요. 오류 현상은 단서일 뿐 확정적인 진단은 아닙니다.
- Config를 사용한다면 규칙 순서와
DOMAIN-SUFFIX,IP-CIDR,GEOIP,FINAL의 대상 정책을 확인하세요. 이러한 설정은 요청을 분기하는 방식을 결정할 뿐 VMess를 VLESS로 자동 변환하지 않습니다.
확인 순서: 연결 가능 여부, 인증, 전송 방식, 보안 계층, 라우팅
원래 설정을 저장하고 실패 현상을 한 번 기록한 뒤 계층별로 확인하세요. 한 항목을 변경해도 현상이 나아지지 않으면 해당 항목을 원래대로 돌린 다음 다음 항목을 확인하세요. 확인되지 않은 변경 사항을 연달아 적용하지 마세요.
6. VMess와 VLESS 자주 묻는 질문
UUID가 같으면 VMess를 VLESS로 바로 바꿀 수 있나요?
UUID가 같다는 이유만으로 변환할 수는 없습니다. Home에서 해당 항목을 열어 Type을 확인하고, 기존 서비스 제공업체에 해당 포트에서 실제로 어떤 프로토콜을 받는지 문의하세요. 사용자 식별자가 같아도 서버의 프로토콜, 전송 방식, 보안 설정이 일치해야 합니다. 다른 프로토콜이 필요하다면 서비스 제공업체가 이미 제공한 해당 유형의 항목을 사용하세요.
VLESS에 none이 표시되면 암호화 알고리즘을 직접 선택해야 하나요?
VMess 알고리즘을 적용하지 마세요. VLESS는 프로토콜 계층에서 데이터를 암호화하지 않으므로 TLS 같은 보안 계층 설정을 추가로 확인해야 합니다. 원래 설정에 TLS가 명시되어 있다면 항목 편집 화면에서 TLS와 서버 이름을 확인하세요. 보안 매개변수가 확실하지 않다면 연결하기 전에 기존 서비스 제공업체에 문의하세요.
포트에 443을 입력했는데도 TLS 오류가 표시되는 이유는 무엇인가요?
443은 포트 번호일 뿐입니다. TLS가 요구 사항에 맞게 활성화되었는지, SNI가 인증서와 일치하는지, 기기의 날짜와 시간이 올바른지 확인하고 Address가 올바른 서버에 연결되는지도 확인하세요. 이름 불일치를 감추기 위해 인증서 검증을 끄지 마세요.
어느 프로토콜이 더 빠르고 지연 시간이 더 짧나요?
프로토콜 이름만으로는 판단할 수 없습니다. 비교할 때는 접속 네트워크, 서버 위치, 전송 방식, TLS, 테스트 대상을 가능한 한 동일하게 유지하고 Home에서 Connectivity Test를 여러 번 실행한 뒤 실제 요청도 확인하세요. 서로 다른 서버에서 한 번씩 받은 응답만으로 VMess나 VLESS의 성능 차이를 단정할 수 없습니다.
구독을 업데이트한 뒤 직접 수정한 필드가 다시 바뀌면 어떻게 해야 하나요?
먼저 바뀐 항목이 구독에서 관리하는 원래 항목인지 별도로 저장한 테스트 항목인지 확인한 다음 업데이트 후 Type, 주소, 보안 매개변수를 확인하세요. 인증 정보가 포함되지 않은 변경 전후 차이를 기존 서비스 제공업체에 전달하세요. UUID를 반복해서 덮어쓰거나 전체 구독 주소를 공개하지 마세요.