VMess와 VLESS는 Type만 바꿔 서로 전환할 수 없습니다. 기존에 이용 중인 서비스의 연결 정보를 보유한 Shadowrocket 사용자를 위해 프로토콜, 인증 정보, 전송 방식, TLS 설정을 나누어 Add Server 항목을 살펴봅니다. UUID, Server, Host, SNI의 역할을 구분하고, 문제가 발생한 단계에 맞춰 설정을 확인하는 방법을 알아봅니다.
1. VMess와 VLESS, 어떤 차이를 먼저 확인해야 할까요?
먼저 서비스 측에서 실제로 제공하는 프로토콜을 선택하세요. 이름만으로 속도를 판단하면 안 됩니다. VMess는 프로토콜 수준의 인증 및 암호화 방식을 제공하고, VLESS 자체에는 트래픽 암호화 기능이 없으므로 서비스에서 지정한 보안 계층과 함께 사용해야 합니다. VLESS의 프로토콜 암호화 항목인 none은 연결 전체가 평문이라는 뜻도, TLS를 꺼야 한다는 뜻도 아닙니다.
수동으로 설정할 때는 ‘사용자 식별에 어떤 프로토콜을 쓸지’, ‘데이터를 어떤 방식으로 전송할지’, ‘연결을 어떻게 보호할지’를 나누어 살펴보세요. WebSocket은 전송 방식이고 TLS는 보안 계층이므로, 둘 다 VMess나 VLESS와 같은 뜻이 아닙니다. 하나의 프로토콜에도 여러 조합이 가능하지만 클라이언트 설정은 서비스 설정과 항목별로 일치해야 합니다.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 프로토콜 식별 | UUID로 사용자를 식별하며 인증과 시간 검증에 사용 | UUID로 사용자를 식별하지만 VMess와 호환된다고 볼 수 없음 |
| 프로토콜 암호화 | 서비스에서 제공한 값에 맞춰 암호화 설정을 선택하고 임의로 추측하지 않음 | 프로토콜 암호화는 none이며 연결 보호는 별도로 확인 |
| 전송 방식 | TCP, WebSocket 등 구체적인 요구 사항 확인 | 실제 전송 방식과 추가 항목도 동일하게 확인 |
| 보안 계층 | TLS를 별도로 사용할 수 있으며 제공된 설정을 기준으로 확인 | TLS 또는 명시된 다른 보안 설정 중 현재 앱에서 지원하는 항목 확인 |
따라서 ‘VMess의 UUID를 복사한 뒤 Type을 VLESS로 바꾸면 업그레이드가 끝난다’는 식의 공통 절차는 없습니다. 두 설정에서 우연히 같은 UUID를 사용하더라도 서비스 측에 해당 프로토콜의 연결 지점, 포트, 전송 설정이 실제로 있는지 확인해야 합니다.
2. Add Server를 열기 전에 전체 연결 정보 준비하기
Home에서 오른쪽 위의 추가 버튼을 눌러 Add Server로 이동한 다음 Type을 선택하고 해당 유형에 표시되는 항목을 입력합니다. Type이나 전송 옵션에 따라 입력 항목이 달라집니다. 이 문서에서는 UUID, SNI 등 프로토콜 용어로 항목 간 관계를 설명하며, 실제 입력 항목의 표기와 위치는 현재 앱 화면을 기준으로 확인하세요.
- 모든 값이 같은 연결 설정에 속하는지 확인하세요. 프로토콜, Server, Port, UUID, 전송 방식, 보안 계층을 한 묶음으로 정리하고, 이전 안내의 포트와 새 설정의 도메인을 섞어 쓰지 마세요.
- 개별 설정과 Subscribe 주소를 구분하세요. 구독 주소는 여러 설정을 가져오는 데 사용하며 Server나 UUID가 아닙니다. Subscribe로 가져온 항목이 있다면 먼저 해당 항목의 현재 상세 정보를 확인하고, 추가 항목이 빠진 복제본을 새로 만들지 마세요.
- 기존 설정을 보존하세요. 직접 확인하기 전에 원래 값을 기록하고, 필요하면 테스트 항목을 새로 만들어 한 번에 하나씩만 변경하세요. 구독이 갱신되면 서비스가 관리하는 항목이 다시 적용될 수 있으므로 임시 변경을 영구적인 해결책으로 여기지 마세요.
- 추가 항목도 준비하세요. WebSocket을 사용한다면 Host와 Path를, TLS를 사용한다면 서버 이름과 인증서 요구 사항을 함께 확인하세요. VLESS에 Flow가 명시되어 있다면 해당 값도 확인하고 임의로 입력하지 마세요.
3. Server, Port, UUID 입력 방법
Server에는 연결할 서버 주소를 입력합니다. 일반적으로 도메인이나 IP 주소이며 https://, 웹 경로, 쿼리 매개변수는 포함하지 않습니다. Port에는 서비스가 실제로 연결을 받는 포트를 입력합니다. 포트에 443을 입력해도 TLS가 자동으로 켜지지 않으며, 도메인을 입력해도 올바른 SNI가 자동으로 설정되지 않습니다.
UUID는 프로토콜 인증 정보이지 메모용 이름이나 Apple 계정이 아닙니다. 복사할 때 하이픈은 유지하고 앞뒤 공백과 잘못 들어간 줄바꿈은 제거하세요. 설정 문자열의 id=... 부분을 키 이름까지 포함해 통째로 입력하지 마세요. 형식이 올바르더라도 서비스가 해당 인증 정보를 여전히 허용한다는 뜻은 아닙니다.
- 주소 오류: 도메인을 확인하지 못하거나 다른 서버에 연결될 수 있습니다. UUID를 바꾸기 전에 철자부터 확인하세요.
- 포트 오류: 연결 거부 또는 시간 초과가 발생할 수 있습니다. 443이 보인다는 이유만으로 다른 항목의 TLS 설정을 그대로 적용하지 마세요.
- 인증 정보 오류: 기본 연결은 성립해도 프로토콜 인증에 실패할 수 있습니다. 지연 시간만 보지 말고 UUID, Type, 계정 상태를 확인하세요.
- VMess 시간 문제: 인증은 시간과 관련이 있습니다. 다른 항목이 모두 맞는데도 인증에 실패한다면 기기의 ‘설정 → 일반 → 날짜 및 시간’에서 자동 설정과 현재 시간이 올바른지 확인하세요.
4. WebSocket의 Host·Path와 TLS의 SNI를 혼동하지 않기
이 항목들은 도메인이나 짧은 문자열인 경우가 많지만 서로 다른 단계에서 사용됩니다. Server는 연결할 대상을 지정하고, SNI는 TLS 핸드셰이크에서 서버 이름을 전달합니다. WebSocket의 Host와 Path는 HTTP 업그레이드 요청과 서버 라우팅에 사용됩니다. 값이 서로 같을 수도, 다를 수도 있으며 Server만으로 나머지 값을 모두 결정할 수 없습니다.
두 영역을 나누어 확인: 전송 방식과 보안 계층
WebSocket 전송 항목
- 설정에 WebSocket이 명시되어 있는지 먼저 확인하세요. 매개변수에 도메인이 있다는 이유만으로 WebSocket을 선택하면 안 됩니다.
- Host는 제공된 값 그대로 입력하고 프로토콜 접두사는 붙이지 마세요. 포트가 명시되어 있다면 임의로 제거하지 마세요.
- Path는 앞의
/, 대소문자, 쿼리 매개변수를 그대로 유지하세요. 전체 웹 주소를 입력하지 마세요. - 예를 들어
/ws와/WS는 서로 다른 경로에 연결될 수 있으므로 같은 값으로 취급하면 안 됩니다.
TLS 보안 항목
- Port만 보고 판단하지 말고 제공된 설정을 기준으로 TLS 사용 여부를 확인하세요.
- SNI에는 일반적으로 서버 이름을 입력하며
https://나 경로는 포함하지 않습니다. - 인증서에 포함된 이름, 유효 기간, 기기 시간이 맞는지 확인하세요. 인증서 오류를 무시하는 방식으로 문제를 해결하지 마세요.
- ALPN 등의 추가 항목이 제공되었다면 해당 값과 대조하세요. 값이 제공되지 않았다면 다른 설정의 값을 그대로 가져오지 마세요.
연결 주소, TLS 서버 이름, WebSocket Host는 서로 다른 역할입니다. 원래 설정에서 같은 값으로 지정된 경우에만 동일하게 입력하세요.
아래는 항목 간 관계를 설명하기 위한 예시이며 연결 가능한 설정이 아니고, 실제 서버가 해당 값을 지원한다는 뜻도 아닙니다. 입력할 때는 현재 이용 중인 연결 지점의 전체 설정을 사용하세요. 제공되지 않은 항목은 이 예시에서 가져와 채우지 마세요.
Type: VLESS
Server: edge.example.com
Port: 443
UUID: 기존 연결 설정에 제공된 전체 UUID 사용
Transport: WebSocket
Host: web.example.com
Path: /ws
TLS: enabled
SNI: web.example.com
5. TLS를 켜야 할까? 프로토콜 이름이 아닌 연결 설정 확인하기
VMess도 TLS와 함께 사용할 수 있고 VLESS도 프로토콜 이름만으로 TLS 설정을 결정할 수 없습니다. 여기서는 한 앱에서 보안 계층을 설정하는 방식을 비교하며 두 프로토콜의 우선순위를 정하는 것이 아닙니다. 아래 권장 설정은 기존 연결 정보에 TLS 사용이 명시된 경우를 대상으로 합니다. 서비스에서 다른 보안 방식을 명시했다면 필요한 항목과 현재 앱의 지원 여부를 확인하세요.
기존 설정에서 TLS를 요구하는 경우: TLS와 서버 이름 검증 유지
권장해당 TLS 설정을 켜고 SNI, 인증서, 추가 항목을 하나씩 확인하세요. 이름이 일치하지 않으면 먼저 설정값을 확인하고, 검증을 꺼서 문제를 우회하지 마세요.
적합한 경우: 기존 연결 설정에 TLS와 서버 이름이 명시되어 있는 구성
기존 설정에서 TLS를 사용하지 않는 경우: 실제 보안 방식 확인
TLS를 강제로 켜지 말고, ‘TLS를 사용하지 않음’이 모든 보호 기능을 생략해도 된다는 뜻이라고 생각하지 마세요. 특히 VLESS에서는 연결 전체가 어떤 방식으로 암호화되는지와 관련 항목이 빠짐없이 설정되었는지 확인해야 합니다.
적합한 경우: 기존 연결 설정에 보안 계층 조합이 명시되어 있고 필요한 항목이 모두 제공된 구성
확인 순서: 기존 설정에서 보안 계층을 확인한 다음 암호화 항목 점검하기
VLESS에서 none이 보여도 TLS를 끄지 마세요. 먼저 이 값이 프로토콜 암호화를 가리키는지, 연결 보안 계층을 가리키는지 확인한 후 해당 설정을 변경하세요.
6. 저장 후 연결 확인하기: 라우팅 문제를 프로토콜 문제와 구분
항목을 저장한 뒤 Home으로 돌아가 확인한 설정을 선택하고 연결을 테스트하세요. 지연 시간이 표시된다는 것은 해당 테스트에서 응답을 받았다는 뜻일 뿐, UUID, WebSocket 라우팅, TLS, 대상 웹사이트 접속이 모두 정상이라는 의미는 아닙니다. 아래 증상은 문제를 분류하기 위한 참고이며, 특정 오류 문구의 유일한 원인을 뜻하지 않습니다.
- 먼저 해당 항목을 사용 중인지 확인하세요. Home에서 현재 선택된 설정을 확인하세요. 새 항목을 편집했지만 연결할 때는 이전 항목을 사용하고 있을 수 있습니다.
- 그다음 Global Routing을 확인하세요.
Direct로는 프록시 연결 지점을 검증할 수 없습니다.Config에서는 대상 트래픽이 규칙에 따라 직접 연결될 수 있습니다. 규칙 선택의 영향을 확인하려면 잠시Proxy를 사용한 다음 테스트 후 원래 설정으로 되돌리세요. - 실패한 단계를 기록하세요. 연결 시간 초과라면 Server, Port, 네트워크 연결 가능성을 먼저 확인하세요. TLS 실패라면 보안 계층, SNI, 인증서, 시간을 확인하세요. 연결은 성립했지만 계속 실패한다면 UUID, 전송 항목, 서비스 상태를 살펴보세요.
- 마지막으로 규칙과 DNS를 확인하세요. Proxy에서는 접속되지만 Config에서는 접속되지 않는다면 현재 Config에서 일치한 규칙과 정책을 확인하세요. 프로토콜 인증 정보를 계속 변경하지 마세요.
규칙의 DOMAIN-SUFFIX,example.com,DIRECT는 일치하는 도메인을 DIRECT로 전달합니다. FINAL은 앞선 규칙에 일치하지 않을 때 적용되는 최종 정책입니다. 이 경우 접속 결과는 규칙 경로에 따른 것일 수 있으며 방금 추가한 VMess 또는 VLESS 항목과는 무관할 수 있습니다. 테스트를 위한 임시 글로벌 선택을 장기적인 라우팅 설정으로 사용하지 마세요.
7. VMess와 VLESS 수동 추가 시 자주 묻는 질문
UUID와 도메인만 있으면 바로 추가할 수 있나요?
그 정보만으로는 설정을 완성할 수 없습니다. 최소한 Type, Port, 전송 방식, 보안 계층을 확인해야 하며, WebSocket을 사용한다면 Host와 Path도 필요할 수 있습니다. 누락된 항목은 현재 이용 중인 서비스에 문의해 확인하세요. 흔히 쓰는 포트나 기본 경로를 실제 값 대신 입력하지 마세요.
VMess를 VLESS로 바꾼 뒤 바로 연결되지 않는 이유는 무엇인가요?
두 프로토콜은 처리 방식이 다르고 서비스 측에도 해당 프로토콜의 연결 지점이 있어야 합니다. Home으로 돌아가 항목을 편집하고 기존 Type과 설정을 복원하세요. VLESS를 사용하려면 UUID만 재사용하지 말고 해당 연결 지점의 전체 설정을 받아야 합니다.
VLESS에 none이 표시되면 설정이 잘못된 건가요?
VLESS 프로토콜 암호화를 뜻하는 값이라면 none은 해당 프로토콜의 설계에 맞습니다. TLS 또는 다른 지정 보안 계층을 계속 확인하세요. 이 값만으로 연결 전체가 암호화되지 않았다고 판단하거나 TLS를 끄라는 뜻으로 해석하면 안 됩니다.
구독으로 가져온 항목은 되는데 수동 추가한 항목은 안 됩니다. 무엇을 먼저 확인해야 하나요?
Home에서 두 항목의 상세 정보를 각각 열고 Type, Server, Port, UUID, 전송 방식, 보안 계층, 추가 항목을 차례로 비교하세요. 수동 입력 중 빠뜨리기 쉬운 Path, SNI, Flow를 중점적으로 확인하세요. Settings를 먼저 초기화하거나 공개 게시판에 전체 인증 정보를 올릴 필요는 없습니다.
포트가 443이어도 TLS를 확인해야 하나요?
네. 443은 포트 번호일 뿐 클라이언트의 프로토콜 설정을 대신하지 않습니다. 항목 편집 화면으로 돌아가 기존 설정에 따라 TLS 사용 여부와 서버 이름을 확인하세요. 인증서 오류가 표시되면 SNI와 기기 시간을 먼저 확인하고, 검증을 끄는 방식으로 해결하려 하지 마세요.
한 번 확인한 뒤에는 ‘원래 값, 변경 항목, 결과’를 기록해 두세요. 실패가 주소 연결, TLS 핸드셰이크, 프로토콜 인증, 규칙 선택 중 어느 단계에서 발생했는지 확인하면 프로토콜, 포트, 전송 방식을 동시에 바꾸지 않고 해당 부분만 점검할 수 있습니다.