VMess와 VLESS는 Type만 바꿔 서로 전환할 수 없습니다. 이 글에서는 이미 서비스 제공업체와 적법하게 사용할 수 있는 설정을 보유한 사용자를 대상으로 각 프로토콜, UUID, Transport, TLS의 역할과 Shadowrocket의 Add Server에서 항목별로 확인할 내용을 설명합니다. 기존 설정에 맞춰 값을 입력한 뒤 연결 기록으로 확인하세요. 프로토콜 이름만으로 속도나 보안성을 판단해서는 안 됩니다.
VMess와 VLESS의 핵심 차이
Shadowrocket은 다양한 프로토콜의 연결 설정을 지원합니다. VMess와 VLESS 모두 사용자 식별에 UUID를 사용할 수 있지만 인증 방식, 데이터 처리 방식, 함께 사용할 수 있는 설정은 서로 다릅니다. 서버가 VMess로 설정되어 있으면 클라이언트에서도 VMess를 선택해야 하며, 서버가 VLESS라면 해당 유형을 선택해야 합니다. 주소, 포트, UUID가 같더라도 두 프로토콜을 서로 바꿔 사용할 수 있는 것은 아닙니다.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 사용자 인증 정보 | UUID 등의 인증 정보를 사용하며 인증 시 시간 유효성도 확인 | UUID로 사용자를 식별하고 인증하며 VMess 인증 방식은 사용하지 않음 |
| 프로토콜 내부 데이터 암호화 | 프로토콜 내부 데이터 암호화를 지원하며, 구체적인 방식은 선택한 암호화 설정에 따라 다름 | 일반적인 설정에서는 encryption이 none이며, 자체적으로 같은 방식의 페이로드 암호화를 제공하지 않음 |
| 외부 보안 계층 | TLS를 함께 사용할 수 있음. 프로토콜 내부 암호화와 TLS는 별개 | 일반적으로 TLS 또는 설정에 지정된 다른 보안 계층으로 전송을 보호 |
| 전송 방식 | TCP나 WebSocket 등 서버 설정에 맞는 Transport를 선택해야 함 | 마찬가지로 Transport를 서버 설정에 맞춰야 하며 프로토콜 이름만으로 판단할 수 없음 |
| 전환 방법 | 서버에서 제공한 VMess 전체 설정을 사용 | 서버에서 제공한 VLESS 전체 설정을 사용하고 기존 항목을 그대로 수정하지 않음 |
여기서 “VLESS는 같은 방식의 페이로드 암호화를 제공하지 않는다”는 말이 연결 전체가 반드시 평문이라는 뜻은 아닙니다. VLESS를 TLS 위에서 올바르게 사용하면 외부 TLS 계층이 클라이언트와 해당 TLS 종단점 사이의 데이터를 보호합니다. 반대로 설정에 TLS가 표시되어 있어도 인증서 검증, 이름 일치 여부, 실제 연결 결과를 확인해야 합니다.
프로토콜, Transport, TLS 설정을 구분하세요
한 연결에서 VLESS, WebSocket, TLS를 함께 사용할 수 있습니다. VLESS는 프로토콜 처리를 담당하고 WebSocket은 전송을 감싸며 TLS는 외부 암호화와 인증서 검증을 담당합니다. 이 항목들은 서로 배타적인 선택지가 아닙니다. VMess도 WebSocket 및 TLS와 함께 사용할 수 있으므로 WebSocket이 VLESS만의 기능이라고 볼 수 없습니다.
요약: 프로토콜 이름으로 기본값을 추측하지 말고 전체 설정 조합을 입력하세요
기존 설정에 Transport, TLS 또는 포트가 명시되어 있지 않으면 먼저 원래 설정을 확인하세요. WebSocket을 임의로 추가하거나 TLS를 켜고 443으로 바꾸지 마세요. 한 번에 확인된 오류 항목 하나만 수정해야 변경 효과를 판단하기 쉽습니다.
UUID는 주소도 구독 링크도 아닙니다. 일반적인 형식은 16진수 문자 다섯 묶음으로 구성되며 길이는 8-4-4-4-12입니다. 복사할 때 앞뒤 공백, 줄바꿈, 전각 문자가 들어가지 않도록 주의하세요. 형식이 올바르더라도 서버에서 해당 UUID 사용을 허용하지 않으면 인증에 실패할 수 있으므로 형식 확인은 첫 단계일 뿐입니다.
- Address: 처음 연결할 호스트를 지정합니다. IP 주소를 입력했다고 해서 SNI에도 같은 IP를 넣어야 하는 것은 아닙니다.
- Port: 연결할 수신 포트를 지정합니다.
443과8443은 가능한 설정값의 예일 뿐이며, 보유한 설정을 기준으로 입력하세요. - Transport: 프로토콜 데이터를 전송하는 방식을 지정합니다. WebSocket을 선택했다면 Host와 Path도 확인하세요.
- TLS: 보안 핸드셰이크, 서버 이름, 인증서 검증과 관련된 설정입니다. UUID를 바꿔도 인증서 이름 오류는 해결되지 않습니다.
Add Server에서 자주 틀리는 설정 항목
Home에서 추가 버튼을 눌러 Add Server로 이동한 다음 Type을 선택하고 해당 항목을 입력하세요. 이후 표시되는 옵션은 Type, Transport, 앱 내 설정에 따라 달라질 수 있습니다. 아래 표를 참고해 각 값의 의미를 확인하세요. 프로토콜마다 편집 화면이 똑같을 필요는 없습니다. 기존 구독이 올바르게 가져와졌다면 먼저 가져온 설정을 유지하고 기억에 의존해 다시 만들지 마세요.
| 항목 또는 설정값 | 확인할 내용 | 자주 하는 실수 |
|---|---|---|
| Type | 서버 프로토콜과 일치하는지 확인하고 VMess와 VLESS를 구분 | Type만 바꾸고 다른 프로토콜의 설정값은 그대로 둠 |
| Address / Port | 주소와 숫자 포트를 각각 입력 | 경로가 포함된 전체 URL을 주소 입력란에 붙여넣음 |
| UUID | 설명 문구를 덧붙이지 말고 사용자 식별자를 그대로 복사 | 표시 이름을 복사하거나 문자 묶음 하나를 빠뜨림 |
| VMess 암호화 설정 | 기존 설정과 서버에서 지원하는 범위를 따름 | VLESS의 none을 VMess에 그대로 적용 |
| Transport | 서버의 TCP, WebSocket 등 설정과 일치 | 443을 보고 WebSocket을 사용한다고 단정 |
| WebSocket Host / Path | 지정된 호스트 이름을 Host에 입력하고 Path의 앞 슬래시와 필요한 쿼리 매개변수를 유지 | SNI를 Path로 입력하거나 경로 앞의 슬래시를 빠뜨림 |
| TLS / SNI | TLS 사용 여부와 전송해야 하는 서버 이름을 확인 | 연결 IP를 인증서에 지정된 도메인으로 간주 |
| Allow Insecure | 인증서 검증을 유지하고 인증서, 이름 또는 기기 시간 문제를 먼저 수정 | 검증 건너뛰기를 장기적인 해결책으로 사용 |
예를 들어 기존 설정에서 특정 IP에 연결하되 SNI와 WebSocket Host에는 모두 edge.example.com을, Path에는 /tunnel을 지정할 수 있습니다. 이 예시의 세 설정은 서로 연관되어 있지만 역할은 다릅니다. Address는 연결 대상을 찾고, SNI는 TLS 핸드셰이크에서 서버 이름을 지정하며, Host는 WebSocket의 HTTP 핸드셰이크에 사용됩니다. 예시의 도메인과 경로는 항목 간 관계를 설명하기 위한 것이며 실제로 사용할 수 있는 연결 설정이 아닙니다.
가져오기부터 확인까지: 기존 설정을 유지하고 라우팅 상태를 확인하세요
프로토콜 설정이 올바르더라도 요청이 해당 연결을 통과한다는 뜻은 아닙니다. Home에서 선택한 항목, Global Routing의 모드, Config의 규칙이 실제 트래픽 경로를 함께 결정합니다. 문제를 확인할 때는 연결 자체의 사용 가능 여부와 요청이 예상한 규칙에 매칭되는지를 따로 살펴보세요.
- 사용 권한이 있는 기존 설정이나 구독을 가져온 뒤 Home에서 항목 수와 Type을 확인하세요. 직접 입력한다면 앞 절의 항목을 먼저 확인하세요.
- 확인할 항목을 선택해 연결을 켜세요. 처음 사용할 때는 시스템 안내에 따라 VPN 구성을 추가하도록 허용하세요.
- 현재 Global Routing 모드를 확인하세요. Direct 상태에서 웹사이트 접속 결과만 보고 프로토콜 연결 여부를 판단하지 않도록 주의하세요.
- 접근 권한이 있고 반복해서 확인할 수 있는 대상에 요청을 보내세요. 앱 내 연결 기록에서 대상, 정책, 오류 정보를 함께 살펴보세요.
- 기존 구독을 업데이트해야 한다면 업데이트 후 현재 선택한 항목을 다시 확인하세요. 구독 내용이 바뀌면 수동으로 수정한 값이 덮어써질 수 있으므로 중요한 변경 사항은 먼저 안전하게 백업하세요.
Config
권장현재 적용 중인 설정 규칙에 따라 트래픽이 라우팅됩니다. 프로토콜 확인을 마친 뒤 확인된 Config를 복원하고 요청에 실제로 적용된 정책을 확인하세요. 규칙이 현재 프록시를 가리키는 경우에만 해당 요청을 연결 확인에 사용할 수 있습니다.
적합한 경우: 기존 규칙 설정을 사용하고 복원 여부를 확인할 때
Proxy
Shadowrocket이 처리하는 요청을 프록시 모드로 보낼 수 있어 규칙 분기의 영향을 잠시 줄이는 데 유용합니다. 프로토콜을 수정하는 기능은 아니며 UUID, Port, TLS 설정 오류도 해결하지 못합니다.
적합한 경우: 연결 설정 문제와 규칙 매칭 문제를 잠시 구분할 때
Direct
직접 연결 모드이므로 선택한 VMess 또는 VLESS 연결이 정상적으로 트래픽을 전달하는지 확인하는 방법으로 적합하지 않습니다. 직접 연결로 페이지가 열렸다는 사실은 현재 직접 연결 환경에서 해당 대상에 접근할 수 있다는 뜻일 뿐입니다.
적합한 경우: 직접 연결 네트워크와 대상의 접근 가능 여부를 비교할 때
Global Routing에는 Scene도 포함됩니다. 이름만 보고 트래픽 경로를 판단하지 말고 현재 장면에 실제로 적용된 설정을 확인하세요. Settings → On Demand는 조건에 따라 연결을 시작하는 기능이며 VMess 또는 VLESS의 인증 설정을 바꾸지 않습니다. 자동으로 연결되는 문제가 있다면 이를 확인하고, 인증 실패가 발생했다면 해당 항목의 설정을 다시 살펴보세요.
시간 초과, 인증 실패, 인증서 오류 확인 방법
오류 메시지는 원인을 좁히는 데 도움을 줄 뿐 특정 항목의 오류를 단독으로 입증하지는 않습니다. 기존 값을 기록한 다음 “주소 접근성 → 보안 핸드셰이크 → 프로토콜 인증 → 요청 라우팅” 순서로 확인하면 여러 항목을 한 번에 바꿔 원인을 놓치는 일을 줄일 수 있습니다. 아래 문답은 점검 방향을 설명하며 모든 오류 문구에 똑같이 적용되는 해석은 아닙니다.
UUID를 정확히 복사했는데도 연결 시간이 초과되는 이유는 무엇인가요?
먼저 Home에서 해당 항목의 편집 화면을 열어 Address와 Port를 확인하고 현재 네트워크에서 대상에 연결할 수 있는지 살펴보세요. 인증 전에 시간 초과가 발생할 수도 있고 이후 핸드셰이크가 완료되지 않아 발생할 수도 있습니다. 이때 UUID를 반복해서 새로 만들거나 교체하지 마세요. 이전에는 정상 작동했다면 기존 서비스 상태와 구독 업데이트 결과를 확인하세요.
인증서 이름이 일치하지 않는다는 메시지가 뜹니다. Allow Insecure를 켜야 하나요?
먼저 TLS 서버 이름과 SNI를 확인하고 기기의 날짜와 시간이 정확한지, 서버 인증서가 유효한지 살펴보세요. Address가 IP인데 인증서는 도메인 이름으로 발급되었다면 기존 설정에 따라 올바른 이름을 입력해야 합니다. 인증서 검증을 건너뛰어 이름이나 인증서 문제를 대신 해결하려 하지 마세요.
VMess 설정을 바꾸지 않았는데 갑자기 인증 오류가 발생하면 어떻게 해야 하나요?
먼저 기기의 날짜와 시간이 정확한지 확인한 뒤 UUID의 사용 권한이 여전히 유효한지, 서버 설정이 변경되었는지 살펴보세요. VMess 인증에는 시간 유효성이 관련되므로 시간 차이가 크면 연결에 실패할 수 있습니다. 기존 설정의 AlterId를 임의의 숫자로 바꿔 가며 시도하지 말고 현재 유효한 설정을 기준으로 확인하세요.
VLESS가 연결되었는데 웹페이지가 열리지 않으면 어떻게 확인해야 하나요?
먼저 앱 내 연결 기록에서 해당 웹페이지 요청에 예상한 정책이 적용되었는지 확인하세요. 대상 연결까지 도달했다면 Transport, WebSocket Host와 Path, TLS 및 설정에 필요한 추가 항목을 점검하세요. 시스템에 VPN 연결됨으로 표시되더라도 원격 인증, DNS 조회, 각 대상 요청까지 모두 성공했다는 뜻은 아닙니다.
지연 시간 테스트에서 값이 나와도 모든 웹페이지에 접속할 수 있는 것은 아닙니다. 테스트 방식에 따라 확인하는 단계가 다를 수 있으므로 실제 요청도 확인해야 합니다. 점검 기록을 공유하기 전에 UUID, 구독 토큰, 비밀번호 및 기타 접속 자격 증명을 삭제하세요. Type, Transport, 오류 유형과 민감 정보를 가린 항목 간 관계를 남기면 문제를 찾는 데 도움이 됩니다.
선택과 전환: 기존 설정과 확인 결과를 기준으로 판단하세요
현재 VMess 설정이 정상적으로 작동한다면 VLESS라는 이름이 다르다는 이유만으로 전환할 필요는 없습니다. VLESS가 같은 방식의 페이로드 암호화를 제공하지 않는다고 해서 반드시 더 빠르다고 단정할 수도 없습니다. 외부 보안 프로토콜, 전송 방식, 네트워크 품질, 서버 부하, 대상 사이트가 모두 결과에 영향을 줍니다. 비교할 때는 같은 테스트 대상과 비슷한 네트워크 조건을 유지하고 연결 여부, 실패 단계, 반복 테스트 결과를 각각 기록하세요. 한 번의 지연 시간만으로 판단하지 마세요.
- 사용 가능한 설정이 하나뿐인 경우: 해당 설정에 맞춰 입력하고 VMess를 임의로 VLESS로 바꾸지 마세요.
- 사용 권한이 있는 설정이 두 가지인 경우: 항목을 각각 만들고 하나씩 확인하세요. 유일하게 사용 가능한 항목을 덮어쓰지 마세요.
- 다른 프로토콜로 전환하는 경우: 전체 설정을 새로 받아 UUID, 포트, Transport, TLS 및 추가 옵션을 확인하세요. 기존 항목을 그대로 사용할 수 있다고 가정하지 마세요.
- 장기간 보관해야 하는 경우: 유효한 설정과 필요한 설명을 안전하게 백업하고 자격 증명이 포함된 스크린샷이나 파일을 공개적으로 공유하지 마세요.
Shadowrocket은 Apple 플랫폼용 클로즈드 소스 상용 앱으로, 주로 iPhone과 iPad에서 사용하며 App Store에서만 제공됩니다. 앱은 일회성 구매 방식이며 앱 구매와 연결 서비스는 별개입니다. 이 글은 사용자가 이미 본인의 서비스 제공업체와 구독을 보유한 경우를 전제로 하며 연결 서비스를 제공, 판매 또는 추천하지 않습니다. 시스템 요구 사항과 구매 가능 지역은 App Store 페이지를 확인하세요.