이 글은 이용 중인 서비스와 설정이 있고, Shadowrocket에서 VMess 또는 VLESS를 추가하려는 사용자를 위한 안내입니다. 프로토콜, 전송 방식, TLS의 차이를 먼저 구분한 다음 Address, Port, UUID, Host, Path 순서로 확인하세요. 어떤 항목을 그대로 복사해야 하는지, 프로토콜 이름만 보고 추측하면 안 되는 설정은 무엇인지 알아볼 수 있습니다. 연결 정보나 구독은 제공하지 않습니다.
VMess와 VLESS: 인증 방식은 비슷하지만 암호화 역할은 다릅니다
VMess와 VLESS는 클라이언트와 서버 사이에서 사용하는 프록시 프로토콜이며, 서버 주소나 전송 방식이 아닙니다. 두 프로토콜 모두 일반적으로 UUID로 사용자를 식별하지만 핸드셰이크 방식은 서로 다릅니다. 기존 VMess 설정에서 Type만 VLESS로 바꿔 사용할 수는 없습니다. 서버에 해당 프로토콜의 연결 지점이 별도로 마련되어 있어야 합니다.
VMess는 프로토콜 계층에서 데이터를 암호화할 수 있으며, 구체적인 방식은 설정에 따라 다릅니다. VLESS 자체에는 이 계층의 데이터 암호화 기능이 없어 보통 TLS와 같은 보안 계층을 함께 사용합니다. 따라서 “VLESS에는 프로토콜 계층 암호화가 없다”는 말이 “VLESS 연결은 반드시 평문이다”라는 뜻은 아닙니다. 이 이유만으로 클라이언트에서 TLS를 끄지 마세요.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 사용자 인증 | 일반적으로 UUID를 사용하며 서버에 등록된 값과 일치해야 합니다 | 일반적으로 UUID를 사용하며 서버에 등록된 값과 일치해야 합니다 |
| 프로토콜 계층 암호화 | 지원하며 설정으로 지정합니다 | 이 계층의 데이터 암호화를 제공하지 않습니다 |
| TLS | 사용 여부는 서버 연결 설정에 따라 다릅니다 | 일반적으로 보안 계층과 함께 사용하며 설정을 기준으로 확인해야 합니다 |
| 전송 방식 | TCP 또는 WebSocket 등 서버 설정과 일치해야 합니다 | 마찬가지로 서버 설정과 일치해야 하며 프로토콜 이름만으로는 알 수 없습니다 |
| 추가 매개변수 | 설정에 AlterId가 있다면 해당 값을 그대로 확인합니다 | 설정에 Flow가 있다면 지원 조건을 확인합니다 |
판단 기준: 서버 연결 설정을 확인한 뒤 Type을 선택하세요
기존 설정 안내를 열어 VMess와 VLESS 중 어떤 프로토콜인지 명시되어 있는지 확인하세요. 서버에서 다른 프로토콜 연결 설정도 별도로 제공하는 경우에만 새 항목을 추가하세요. Type을 바꿔 프로토콜을 “업그레이드”하려고 하지 마세요.
프로토콜 이름만으로 연결 속도를 판단할 수는 없습니다. 네트워크 경로, 서버 부하, 전송 설정, 인증서 상태가 모두 연결에 영향을 줍니다. 문제를 해결할 때는 기존 항목을 유지하고 별도의 테스트 항목을 추가하세요. 한 항목에서 여러 설정을 동시에 바꾸는 것보다 원인을 찾기 쉽습니다.
Add Server: Address, Port, UUID부터 입력하기
Home에서 오른쪽 위의 추가 버튼을 눌러 Add Server로 이동한 뒤 Type을 선택하고 해당 프로토콜에 표시되는 항목을 입력하세요. Type에 따라 표시되는 선택 항목이 다를 수 있습니다. 여기서 UUID는 서비스 제공자가 발급한 사용자 식별자를 뜻하며, 입력란에는 User ID와 같은 이름으로 표시될 수도 있습니다. 메모나 구독 액세스 토큰과 혼동하지 마세요.
- Address를 확인합니다.서버의 도메인 이름이나 IP 주소를 입력하세요. 안내에 주소와 포트가 따로 표시되어 있다면 각 입력란에 나누어 입력합니다. 주소 앞에 웹 프로토콜 접두사를 붙이거나 WebSocket의 Path를 주소 뒤에 덧붙이지 마세요.
- Port를 확인합니다.서비스 제공자가 지정한 정수형 포트 번호를 입력하세요. 예를 들어 설정에
443이라고 적혀 있다면443을 입력합니다. 이 숫자는 TLS 서비스에 자주 사용되지만, 포트 번호만으로 해당 연결에 TLS가 설정되어 있는지 알 수는 없습니다. - UUID를 확인합니다.전체 문자열을 복사하고 앞뒤 공백, 누락된 문자, 줄바꿈이 없는지 확인하세요. 일반적인 UUID는 하이픈으로 구분된 32개의 16진수로 이루어집니다. 서버에서 발급한 값을 임의로 만든 UUID로 바꾸지 마세요.
- 프로토콜별 추가 설정을 확인합니다.VMess의 암호화 관련 옵션과 AlterId, VLESS 설정의 Flow 등은 기존 설정을 기준으로 입력하세요. 안내에 없는 항목을 다른 설정에서 임의로 복사하지 마세요.
- 저장한 뒤 Home으로 돌아갑니다.SERVER 목록에 새 항목이 표시되고 해당 항목이 선택되어 있는지 확인하세요. 목록에 표시되는 것은 저장이 완료되었다는 뜻일 뿐, 연결이 성공했다는 의미는 아닙니다.
직접 사용하는 구독에서 항목을 가져왔다면 다시 수동으로 입력하기 전에 가져온 설정을 먼저 확인하세요. 구독에는 전송 및 보안 매개변수가 함께 포함될 수 있습니다. Address, Port, UUID만 복사하면 연결에 필요한 다른 항목을 놓칠 수 있습니다. 구독으로 생성된 항목을 직접 수정하기 전에는 별도의 복사본을 보관하세요. 업데이트 후 수정 사항이 덮어써지는 일을 방지할 수 있습니다.
전송 방식: TCP, WebSocket, Host, Path의 관계
전송 방식은 프록시 데이터를 전달하는 방법이며 UUID 인증을 대신하지 않습니다. VMess와 VLESS 모두 다양한 전송 방식을 사용할 수 있으며, 실제 설정은 서버 구성과 현재 클라이언트의 지원 범위를 기준으로 해야 합니다. WebSocket을 선택하면 Host와 Path가 요청에 사용됩니다. 모든 연결에 공통으로 필요한 항목은 아닙니다.
| 항목 | 역할 | 자주 하는 입력 오류 |
|---|---|---|
| Transport | 서버 설정과 일치하는 전송 방식을 선택합니다 | 서버는 WebSocket을 요구하지만 클라이언트는 TCP로 설정한 경우 |
| Host | WebSocket 핸드셰이크의 HTTP Host이며 서버 요청 라우팅에 사용될 수 있습니다 | 서버 IP를 Host로 간주해 기존 도메인을 덮어쓴 경우 |
| Path | WebSocket 요청 경로. 예: /ws | 맨 앞의 슬래시를 빼거나 대소문자를 임의로 바꾼 경우 |
| SNI | TLS 핸드셰이크에 사용할 서버 이름 | Host를 입력하면 SNI도 자동으로 설정된다고 생각한 경우 |
예를 들어 설정 안내에 Address는 edge.example.com, Port는 443, Transport는 WebSocket, Host는 gateway.example.com, Path는 /ws로 적혀 있다고 가정해 보겠습니다. 이는 설정 항목 간의 관계를 보여 주는 예시이며 실제로 사용할 수 있는 서버 정보가 아닙니다. Address와 Host가 서로 달라도 반드시 오류인 것은 아닙니다. 두 항목을 보기 좋게 맞추려고 값을 바꾸지 마세요.
- 대소문자, 끝의 슬래시, 설정에 명시된 쿼리 문자열까지 Path를 원래 값 그대로 복사하세요.
- Host에는 전체 웹 주소를 입력하지 마세요. 입력란에서 Host와 Path가 분리되어 있다면 각각 따로 입력합니다.
- 서비스 제공자가 다른 전송 방식을 안내했다면 해당 방식의 전용 항목을 확인하세요. WebSocket의 Host와 Path를 억지로 적용하지 마세요.
TLS: 연결 설정에 따라 사용하고 포트 번호만으로 판단하지 않기
TLS는 연결에 보안 계층을 제공합니다. TLS를 사용한다면 서버 이름과 인증서 검증을 확인해야 합니다. 스위치가 켜져 있는지만 확인해서는 충분하지 않습니다. Address는 연결할 서버의 IP 또는 도메인 이름일 수 있고, SNI는 TLS 핸드셰이크에서 사용하는 이름입니다. 도메인 확인이 필요한 설정이라면 안내에 지정된 도메인을 입력하세요.
아래 내용은 동일한 클라이언트에서 보안 설정을 적용하는 방법을 비교한 것이며, VMess와 VLESS의 우열을 평가하는 내용이 아닙니다. 권장 설정은 서버가 TLS 연결을 명시적으로 제공하는 경우에만 해당합니다. 다른 보안 방식이 설정되어 있다면 해당 방식의 매개변수를 따로 확인하세요.
TLS 연결: 검증을 활성화하고 SNI 확인하기
권장서버에서 TLS를 요구한다면 TLS를 활성화하고 설정에 따라 SNI를 입력한 뒤 인증서 검증을 유지하세요. 인증서 오류가 발생하면 도메인 이름, 시스템 시간, 서버 인증서를 먼저 확인하세요. 검증을 건너뛰는 방식은 일반적인 해결책으로 사용하지 마세요.
해당 조건: 서비스 제공자가 TLS 연결을 명시적으로 제공하고 인증서가 지정된 이름과 일치하는 경우
비 TLS 연결: 설정에 명시된 경우에만 적용
안내에 TLS를 사용하지 않는다고 명시된 경우에만 해당 연결 설정에 따라 TLS를 끄세요. VMess의 프로토콜 계층 암호화와 TLS는 서로 다른 계층입니다. VLESS도 프로토콜 이름만으로 전체 연결의 보안성을 판단할 수 없습니다.
해당 조건: 기존 설정에 비 TLS 연결이 명시되어 있고 보안 계층 구성도 안내된 경우
판단 기준: 인증서 오류가 나면 검증을 완화하기 전에 이름부터 확인하세요
설정에 적힌 SNI와 입력한 값을 한 글자씩 대조한 다음 시스템 설정에서 날짜와 시간을 확인하세요. 이름과 시간이 올바른데도 문제가 계속되면 서비스 제공자에게 서버 인증서 상태를 문의하세요.
Host와 SNI에 같은 도메인 이름을 입력하는 경우가 많더라도 두 항목이 같은 것은 아닙니다. Host는 HTTP 요청에 사용되고 SNI는 TLS 핸드셰이크에 사용됩니다. 오류가 발생하는 단계도 다를 수 있습니다. TLS가 완료되지 않으면 그 뒤의 WebSocket 요청은 시작되지 않습니다.
저장 후 연결되지 않을 때: 연결 단계별 확인 방법
Home의 스위치가 켜져 있으면 기기의 로컬 VPN 설정이 작동하기 시작한 것입니다. 원격 서버 인증까지 완료되었다는 뜻은 아닙니다. Connectivity Test에 지연 시간이 표시되더라도 해당 테스트에서 결과를 받았다는 의미일 뿐, UUID, WebSocket 핸드셰이크, 모든 웹 요청이 정상이라는 증거는 아닙니다. 아래 순서에 따라 한 번에 한 종류의 설정만 변경하세요.
- 선택한 항목을 확인합니다.Home으로 돌아가 SERVER에서 현재 선택된 항목을 확인하세요. 새 항목을 수정했지만 실제로는 이전 항목에 연결하고 있는 상황을 방지할 수 있습니다.
- 기본 연결을 확인합니다.Connectivity Test를 실행하세요. 시간 초과가 발생하면 Address, Port, 현재 네트워크를 먼저 확인하세요. 시간 초과만으로 UUID 오류라고 단정할 수는 없습니다.
- 인증과 전송 설정을 확인합니다.Type, UUID, VMess의 추가 설정 또는 VLESS의 Flow를 다시 확인한 다음 Transport, Host, Path를 살펴보세요. 프로토콜과 전송 방식을 동시에 바꾸지 마세요.
- TLS를 확인합니다.TLS 스위치, SNI, 인증서 관련 오류를 확인하세요. 기기 시간이 올바르지 않으면 인증과 검증에 문제가 생길 수 있으므로 먼저 시간을 바로잡으세요.
- 규칙의 영향을 분리합니다.Home → Global Routing에서 Proxy를 임시로 선택하고 현재 항목으로 같은 대상을 테스트하세요. Proxy는 이 테스트의 트래픽을 가능한 한 프록시 경로로 보내는 설정입니다. 테스트가 끝나면 원래 모드로 되돌리세요. 이 설정으로 서버 항목의 오류를 해결할 수는 없습니다.
- 평소 설정으로 되돌립니다.Proxy에서는 연결되지만 Config에서는 실패한다면 Config로 이동해 현재 설정과 규칙의 처리 경로를 확인하고 Direct 또는 REJECT에 해당하는지 살펴보세요. 도메인으로 접속할 때만 실패한다면 UUID를 계속 바꾸기보다 DNS를 확인하세요.
Global Routing의 Direct는 원격 프록시가 작동하는지 확인하는 용도가 아닙니다. Config는 선택한 설정에 따라 연결을 처리합니다. Scene을 사용하는 경우 현재 Scene에 적용된 정책도 확인하세요. 연결이 자동으로 다시 시작된다면 Settings → On Demand에서 자동 연결 조건을 확인할 수 있습니다. On Demand는 연결을 시작하는 조건을 제어할 뿐 VMess나 VLESS의 설정 오류를 수정하지 않습니다.
자주 묻는 질문: 프로토콜 변경, 포트, 구독 업데이트
같은 UUID로 VMess는 연결되는데 VLESS로 바꾸면 연결되지 않는 이유는 무엇인가요?
UUID는 인증 정보의 일부일 뿐이며 두 프로토콜의 핸드셰이크 방식은 서로 다릅니다. Add Server로 돌아가 Type을 기존 설정에 지정된 값으로 되돌리세요. VLESS를 사용하려면 서비스 제공자에게 VLESS 연결 설정이 별도로 있는지, 해당 Port와 전송 및 보안 매개변수는 무엇인지 확인하세요.
Port에 443을 입력하면 TLS를 반드시 켜야 하나요?
포트 번호는 보안 설정을 의미하지 않습니다. 현재 항목을 열어 기존 설정에 따라 Port와 TLS를 각각 확인하세요. 안내에 TLS가 명시된 경우에만 활성화합니다. 다른 항목의 포트와 TLS 스위치 설정을 조합해 새 설정을 만들지 마세요.
UUID가 같은 것처럼 보이는데 인증에 실패하면 무엇부터 확인해야 하나요?
전체 UUID를 다시 복사하고 앞뒤 공백을 삭제한 뒤 Type과 프로토콜별 추가 설정을 확인하세요. 다음으로 기기 시간과 계정 상태를 살펴보세요. 이용 기간이 만료되었는지 또는 계정이 비활성화되었는지는 서비스 제공자에게 확인해야 합니다. 로컬 입력 화면만으로는 알 수 없습니다.
수동으로 수정했는데 구독을 업데이트한 뒤 원래대로 돌아가는 이유는 무엇인가요?
구독을 업데이트하면 원격 설정을 기준으로 항목이 다시 생성되거나 기존 내용이 덮어써질 수 있습니다. 먼저 비교용 수동 항목을 별도로 보관한 뒤 구독을 업데이트하고 각 설정의 차이를 확인하세요. 원격 설정 항목에 문제가 계속된다면 민감한 정보를 가린 차이 내용을 서비스 제공자에게 전달하세요. 설정 전체를 반복해서 덮어쓰지 마세요.
마지막으로 예상한 항목이 선택되어 있는지, 프로토콜이 서버 설정과 일치하는지, 전송 및 TLS 항목이 맞는지 확인하세요. 명확한 Global Routing 모드에서 실제 대상에 접속할 수 있어야 합니다. 저장 성공, 스위치 활성화, 테스트 지연 시간 표시는 각각 서로 다른 단계의 결과이므로 서로 대신할 수 없습니다. 기본 사용법은 사용 설명을 확인하세요. DNS와 규칙 처리 경로에 관한 내용은 문제 해결에서 이어서 확인할 수 있습니다.