이미 이용 중인 서비스와 구독 정보가 있고 VMess 또는 VLESS 매개변수를 확인하려는 사용자를 위한 글입니다. 먼저 프로토콜 인증, 프로토콜 암호화, TLS, 전송 방식을 구분한 다음 주소, 포트, UUID, 서버 이름, 전송 매개변수를 하나씩 확인합니다. 프로토콜 이름만 바꿔 기존 설정을 다른 프로토콜로 사용할 수는 없습니다.
1. VMess와 VLESS: 프로토콜 계층과 전송 계층 구분하기
Shadowrocket의 VMess와 VLESS는 서로 다른 프록시 프로토콜입니다. 두 프로토콜 모두 UUID를 사용자 식별자로 사용할 수 있지만 요청 형식과 인증 처리는 서로 다릅니다. 서버에서 어떤 프로토콜을 제공하는지에 맞춰 클라이언트에서도 해당 유형을 선택해야 합니다. 주소, 포트, UUID가 같아도 서버가 두 프로토콜을 모두 지원한다는 뜻은 아닙니다.
VMess에는 프로토콜 자체의 인증 및 데이터 암호화 방식이 있으며, 실제 암호화 옵션은 서버와 클라이언트의 지원 사항에 맞춰야 합니다. VLESS 기본 프로토콜은 페이로드를 암호화하지 않으며, 일반적으로 TLS 등의 보안 계층과 함께 구성합니다. VLESS 설정의 encryption=none은 프로토콜 계층을 설명하는 값으로, 연결 전체가 반드시 평문으로 전송된다는 뜻은 아닙니다.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 사용자 식별자 | UUID를 사용하며 서버의 사용자 정보와 일치해야 합니다. | UUID를 사용하며 서버의 사용자 정보와 일치해야 합니다. |
| 프로토콜 페이로드 암호화 | 프로토콜 암호화 방식이 있습니다. 다른 연결 항목의 암호화 옵션을 그대로 적용하면 안 됩니다. | 기본 프로토콜은 페이로드를 암호화하지 않으므로 보안 계층을 별도로 확인해야 합니다. |
| TLS | TLS와 함께 사용할 수 있습니다. 프로토콜 암호화가 있어도 인증서 검증을 무시해서는 안 됩니다. | 일반적으로 TLS와 함께 사용합니다. 프로토콜 이름만으로 TLS가 활성화됐는지 알 수 없습니다. |
| 일반적인 전송 방식 | TCP, WebSocket 등의 조합을 사용할 수 있으며 서버 설정과 일치해야 합니다. | TCP, WebSocket, gRPC 등의 조합을 사용할 수 있으며 서버 설정과 일치해야 합니다. |
| 서로 바꿔 사용할 조건 | 해당 프로토콜의 서버 진입점과 전체 매개변수가 필요합니다. 클라이언트의 Type만 변경해서는 안 됩니다. | |
프로토콜 이름은 연결의 일부만 나타냅니다. 전체 설정에는 전송 방식과 보안 계층도 포함됩니다. 예를 들어 “VLESS + WebSocket + TLS”는 프로토콜, 전송 방식, 보안 계층의 세 가지 항목을 지정합니다. 연결에 실패하면 모든 문제를 UUID 탓으로 돌리지 말고 각 계층을 확인해야 합니다.
2. UUID 확인 방법: 형식이 맞아도 인증에 성공하는 것은 아닙니다
일반적인 UUID 텍스트는 16진수 문자와 하이픈으로 구성된 36자이며, 8-4-4-4-12의 다섯 그룹으로 나뉩니다. UUID는 사용자 인증 매개변수이지 서버 주소나 임의로 바꿀 수 있는 메모가 아닙니다. 형식에 맞는 UUID를 새로 만들어도 서버에 등록되지 않았다면 인증을 통과할 수 없습니다.
- 사용 중인 구독 정보나 원래 매개변수 기록에서 UUID를 확인합니다. 메모, 도메인, 주문 번호로 추측하지 마세요.
- 복사한 내용에 앞뒤 공백, 줄바꿈, 한글 문장부호가 섞이지 않았는지 확인합니다. 설명 전체를 사용자 식별자 필드에 붙여 넣지 않도록 주의하세요.
- 구독 업데이트 후 UUID가 변경됐다면 같은 이름의 이전 항목이 아니라 업데이트된 항목을 편집하는지 확인합니다.
- 도움을 요청할 때는 UUID 전체와 구독 토큰을 가립니다. UUID는 일반적인 비밀번호는 아니지만 연결 자격 증명에 해당합니다.
확인 방법: 형식을 본 다음 출처를 확인하세요
UUID의 길이와 그룹 구성이 맞으면 문자를 무작위로 바꾸지 마세요. 같은 원본 기록을 확인하고 프로토콜 유형, 주소, 포트, 사용자 식별자를 함께 대조해 서로 다른 설정의 매개변수를 섞지 않도록 합니다.
VMess 인증은 시간 조건에도 영향을 받습니다. 기기 시간이 크게 어긋나면 UUID가 맞아도 연결에 실패할 수 있습니다. 먼저 iPhone 또는 iPad의 시스템 날짜와 시간이 정확한지 확인한 다음 다시 연결해 보세요. 기기 시간 오류를 암호화 방식 변경으로 해결하려고 해서는 안 됩니다.
3. TLS, SNI, Host, Path 각각 확인하기
TLS는 연결의 보안 계층을 담당하고, SNI는 TLS 핸드셰이크에서 서버 이름을 전달합니다. WebSocket의 Host와 Path는 그 이후의 HTTP 요청에 속합니다. 이 값들은 같은 도메인을 쓸 수도 있고 서버 설계에 따라 서로 다를 수도 있으므로, 도메인처럼 보인다는 이유만으로 서로 바꿔 입력해서는 안 됩니다.
- Address와 Port: 연결 대상의 주소와 포트를 지정합니다. TLS를 사용해도 반드시
443포트를 쓰는 것은 아닙니다. 원본 기록에8443이 있다면 해당 값을 유지해야 합니다. - TLS와 서버 이름: TLS가 활성화됐는지, 이름 확인 및 SNI에 사용하는 매개변수가 원본 기록과 일치하는지 확인합니다. 주소가 IP라고 해서 서버 이름에도 같은 IP를 입력해야 한다고 단정하지 마세요.
- WebSocket Host: HTTP 계층의 호스트 정보로, 리버스 프록시 라우팅에 사용될 수 있습니다. 값이 누락되거나 잘못되면 요청이 서버에 도달해도 대상 서비스로 연결되지 않을 수 있습니다.
- WebSocket Path: 일반적으로
/로 시작하며 서버의 경로와 정확히 일치해야 합니다. 대소문자, 끝의 슬래시, 쿼리 부분도 라우팅에 영향을 줄 수 있습니다. - gRPC serviceName: gRPC의 서비스 식별자입니다. WebSocket Path를 그대로 입력했다고 해서 같은 설정이 되는 것은 아닙니다.
예를 들어 기존 기록에 주소 edge.example.com, 포트 443, TLS 서버 이름 tls.example.com, WebSocket Host ws.example.com, Path /gateway가 명시되어 있다면 이 다섯 항목을 각각 확인해야 합니다. 여기의 도메인과 경로는 필드 간 관계를 설명하기 위한 예시이며, 실제 연결에 사용할 수 있는 설정이 아닙니다.
4. Shadowrocket에서 매개변수 가져오기 및 확인하기
구독을 사용 중이라면 우선 구독에 포함된 전체 조합을 유지하고 개별 항목의 값을 확인하세요. 직접 입력은 원본 매개변수가 모두 있는 경우에만 적합합니다. Shadowrocket의 Home에서는 연결 항목을 확인하고 선택할 수 있으며, Config에서는 구성 파일과 규칙을, Settings에서는 앱 설정을 다룹니다. 프로토콜 인증 필드를 Config의 규칙 행에 입력해서는 안 됩니다.
구독에서 가져온 매개변수 유지하기
권장사용 가능한 구독이 있다면 가져온 후 프로토콜, 포트, TLS, 전송 매개변수를 확인하고 UUID나 Type을 임의로 바꾸지 마세요. 먼저 원본 항목이 작동하는지 확인한 뒤 한 번에 한 항목씩 조정합니다.
적합한 경우: 구독을 사용 중이며 수동 입력 오류를 줄이려는 경우
전체 기록을 기준으로 직접 입력하기
서버에서 제공한 매개변수를 하나씩 입력합니다. 누락된 항목이 있으면 먼저 확인하고 기본값을 정답으로 간주하지 마세요. 저장한 뒤 변경 항목을 기록하면 원래 설정으로 되돌리기 쉽습니다.
적합한 경우: 개별 항목의 전체 매개변수가 있고 특정 필드 문제를 찾으려는 경우
- Home에서 오른쪽 위의 추가 버튼을 누르고 Type에서 해당 유형을 선택합니다. 기존 구독을 가져오려면 Subscribe를 선택하고 URL에 본인의 구독 주소를 입력합니다.
- 저장한 뒤 Home으로 돌아가 구독 그룹을 펼치고 대상 항목의 편집 화면으로 이동합니다. 먼저 Type이 VMess인지 VLESS인지 확인합니다.
- 주소, 포트, UUID를 차례로 확인한 다음 TLS, 서버 이름, 전송 매개변수를 살펴봅니다. 유형에 따라 표시되는 필드가 다르므로 현재 화면에 표시된 항목을 기준으로 확인합니다.
- 저장한 뒤 Home으로 돌아와 확인한 항목을 선택합니다. Global Routing의 현재 상태를 확인한 뒤 연결을 켜고 새로운 네트워크 요청을 보냅니다.
- 구독을 업데이트한 뒤 관련 항목을 다시 확인합니다. 업데이트로 인해 수동 변경 사항이 덮어써질 수 있으므로 구독 원본 항목과 임시 테스트 설정을 혼동하지 마세요.
구독 URL에는 토큰이 포함되는 경우가 많으므로 스크린샷이나 로그를 공유하기 전에 전체 링크를 가려야 합니다. 이 글은 이미 본인의 구독을 보유한 사용자를 전제로 하며, 이 사이트는 연결 항목이나 구독을 제공·판매·추천하지 않습니다.
5. 연결 실패는 계층별로 확인하고 프로토콜 이름으로 속도를 추측하지 마세요
“포트에 연결할 수 있음”, “지연 시간 값이 표시됨”, “대상 웹페이지에 정상적으로 접속할 수 있음”은 서로 다른 확인 항목입니다. 포트에 도달할 수 있다는 사실만으로 UUID 인증, TLS 검증, WebSocket 라우팅이 모두 성공했다고 볼 수는 없습니다. 아래에서는 관찰되는 현상에 따라 확인 방향을 나눕니다. 어떤 현상도 단일 원인이라고 단정하지 않습니다.
| 관찰되는 현상 | 먼저 확인할 항목 | 다음 단계 |
|---|---|---|
| 연결 시간 초과 | 주소, 포트, 현재 네트워크에서의 접근성 | 포트가 원본 값과 일치하는지 확인하고 본인이 이용하는 다른 네트워크에서 같은 요청을 다시 시도합니다. |
| 인증서 또는 이름 확인 오류 | 기기 시간, TLS 서버 이름, 인증서 | 원본 기록과 대조하고 검증 건너뛰기를 기본 해결 방법으로 사용하지 않습니다. |
| 연결 직후 끊김 | Type, UUID, VMess 암호화 옵션 및 시간 | 원본 매개변수를 복원한 다음 서버 진입점이 해당 설정과 일치하는지 확인합니다. |
| WebSocket에서 404 또는 400 발생 | Host, Path, 리버스 프록시 설정 | 경로의 대소문자와 전송 유형을 확인합니다. 상태 코드만으로 UUID 오류라고 판단할 수 없습니다. |
| 일부 도메인에서만 접속 문제 발생 | DNS 및 규칙 매칭 결과 | 해당 요청이 현재 선택한 항목을 실제로 거치는지 확인합니다. |
Home → Global Routing에서 Proxy를 선택하면 규칙의 영향을 임시로 분리해 볼 수 있습니다. Direct는 프록시 항목이 작동하는지 확인하는 용도가 아니며, Config는 구성 규칙에 따라 트래픽을 처리합니다. Scene을 사용 중이라면 해당 장면에 실제로 적용된 설정도 확인해야 합니다. 규칙의 DOMAIN-SUFFIX, IP-CIDR, GEOIP, FINAL 매칭 결과에 따라 요청별로 다른 정책이 적용될 수 있습니다. 테스트를 마친 뒤에는 임시 설정을 장기간 유지하지 않도록 원래 상태로 되돌리세요.
확인 방법: 요청 경로를 확인한 뒤 연결 상태를 비교하세요
이미 보유한 두 설정을 비교하려면 기기, 네트워크, 대상 주소, 테스트 방법을 동일하게 유지하고 각 요청이 해당 항목을 실제로 통과하는지 확인하세요. 서버 위치, 혼잡도, 전송 조합이 다르다면 결과 차이를 VMess와 VLESS 자체의 속도 차이로 단정할 수 없습니다.
6. UUID, 암호화, 구독 업데이트 관련 자주 묻는 질문
VMess의 Type을 VLESS로 바꾸면 계속 사용할 수 있나요?
Type만 바꿔서는 사용할 수 없습니다. 먼저 기존 서버의 VLESS 진입점에 해당하는 매개변수를 확인한 다음 새 항목을 만들고 주소, 포트, UUID, 보안 계층, 전송 방식을 확인하세요. 서버가 같은 UUID를 재사용하더라도 두 진입점의 다른 매개변수까지 같다는 뜻은 아닙니다.
VLESS에서 none이 보이면 모든 내용이 암호화되지 않나요?
먼저 이 값이 어떤 필드를 설명하는지 확인하세요. 프로토콜 계층의 encryption=none은 TLS 상태를 나타내지 않습니다. 해당 항목의 편집 화면에서 TLS가 켜져 있는지, 서버 이름이 올바른지 확인하고 인증서 검증을 유지하세요. 웹사이트의 HTTPS도 별도의 계층이므로 프록시 보안 계층 확인을 대신할 수 없습니다.
구독 업데이트 후 이름이 같은 항목이 갑자기 연결되지 않으면 UUID부터 바꿔야 하나요?
먼저 Home으로 돌아가 실제로 선택한 항목이 업데이트된 그룹에 속하는지 확인하고 Type, 주소, 포트, 전송 매개변수를 대조하세요. 이전 항목을 잘못 선택하지 않았는지 확인한 다음 본인의 원본 구독 기록과 UUID를 대조합니다. 임의의 값을 새로 만들지 마세요.
한 설정은 작동하고 다른 설정은 작동하지 않으면 VLESS가 항상 더 빠른가요?
한 번의 성공이나 실패만으로 프로토콜 속도를 판단할 수 없습니다. 같은 대상을 반복해서 요청하고 주소, 포트, TLS, 전송 방식의 차이를 먼저 확인한 다음 지연 시간, 연결 끊김 현상, 발생 조건을 기록하세요. 변수를 통제하지 않은 결과는 해당 연결에만 해당하며 프로토콜 순위로 일반화할 수 없습니다.
7. 설정을 저장하기 전 최종 확인
프로토콜은 특정 이름을 선호해서가 아니라 기존 서버의 실제 설정에 맞춰 선택해야 합니다. VMess와 VLESS 모두 진입점 접근성, 인증 정보, 보안 계층, 전송 매개변수를 확인한 다음 규칙과 대상 요청을 살펴보면 됩니다. 한 번에 한 항목만 변경하고 원본 기록을 보관해야 어떤 변경이 결과에 영향을 줬는지 구분할 수 있습니다.
- Type이 서버 프로토콜과 일치하며 Address, Port, UUID가 같은 원본 기록에서 가져온 값인지 확인합니다.
- VMess 암호화 매개변수는 원본 기록을 따릅니다. VLESS에 VMess 암호화 필드의 의미를 그대로 적용하지 않습니다.
- TLS, 서버 이름, WebSocket Host와 Path 또는 gRPC serviceName을 각각 확인합니다.
- Home에서 대상 항목을 선택하고 Global Routing 상태가 현재 테스트 목적에 맞는지 확인합니다.
- 설정을 내보내거나 문제 해결 정보를 공유하기 전에 UUID, 구독 URL 및 기타 자격 증명을 가립니다.