이 글은 자체 서비스 제공업체의 설정 정보나 구독을 보유하고 있으며 Shadowrocket에서 VMess와 VLESS를 확인하려는 사용자를 위한 안내입니다. 먼저 프로토콜 암호화와 TLS의 차이를 살펴보고 주소, 포트, UUID, 전송 매개변수를 차례로 확인합니다. 설정을 그대로 입력해야 하는 항목과 가져오기는 성공했지만 접속되지 않을 때 점검을 시작할 계층을 알아봅니다.
VMess와 VLESS: 속도 등급이 아닌 프로토콜 계층의 차이
VMess와 VLESS는 연결 설정의 프로토콜 유형이며 Global Routing 모드나 요금제가 아닙니다. 서버에서 사용하는 프로토콜에 맞춰 Shadowrocket에서도 해당 Type을 선택해야 합니다. 기존 VMess 항목의 Type만 VLESS로 바꾸고 주소와 UUID를 그대로 둔다고 프로토콜이 변환되지는 않습니다. 서버의 인바운드 프로토콜과 관련 매개변수도 일치해야 합니다.
VMess에는 프로토콜 계층의 인증 및 데이터 보호 기능이 포함되어 있으며, 일반적인 설정에서는 AEAD 인증을 사용합니다. 페이로드 암호화 방식은 기존 설정을 기준으로 확인해야 합니다. VLESS는 더 간결한 프로토콜 구조를 사용하며 자체적으로 페이로드를 암호화하지 않으므로, 일반적으로 TLS 같은 외부 보안 계층으로 전송을 보호합니다. 따라서 “VLESS는 프로토콜 내부 암호화가 없다”는 말이 “TLS를 사용하는 VLESS 연결은 평문이다”라는 뜻은 아니며, TLS를 임의로 꺼도 된다는 의미도 아닙니다.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 사용자 식별자 | 일반적으로 UUID를 사용하며 서버 설정과 일치해야 합니다. | 일반적으로 UUID를 사용하며 서버 설정과 일치해야 합니다. |
| 프로토콜 계층 암호화 | 관련 보호 기능과 암호화 옵션이 있으며 설정에 맞춰 선택합니다. | 페이로드를 암호화하지 않으므로 VMess 암호화 옵션을 적용할 수 없습니다. |
| TLS | 외부 보안 계층으로 사용할 수 있으며, 활성화 여부는 서버 설정에 따릅니다. | 전송 보호에 자주 사용되며 매개변수는 서버 설정과 일치해야 합니다. |
| 전송 방식 | TCP, WebSocket 등 실제 설정을 확인해야 합니다. | 전송 방식도 확인해야 합니다. 프로토콜 이름이 이 매개변수를 대신하지 않습니다. |
| 서로 바꿔 쓸 수 있는지 | 클라이언트의 Type만 바꿔서는 안 됩니다. 서버에서 사용하는 프로토콜에 맞는 전체 설정을 받아야 합니다. | |
실제 속도는 회선 혼잡, 지연 시간, 패킷 손실, 서버 부하, 외부 전송 방식에도 영향을 받습니다. 주소가 다른 두 연결이 각각 VMess와 VLESS로 표시되어 있더라도 한 번의 속도 측정만으로 특정 프로토콜이 항상 더 빠르다고 단정할 수 없습니다. 설정을 빠짐없이 입력하고 연결을 안정적으로 유지하는 것이 우선이며, 조건이 비슷할 때 실제 접속 성능을 비교하세요.
UUID, 포트, TLS: 각 항목의 역할부터 확인하기
UUID는 사용자 식별자이며 서버 주소나 TLS 인증서의 도메인이 아닙니다. 일반적인 UUID 문자열은 16진수 32자와 하이픈 4개로 이루어지며, 8-4-4-4-12 형식의 다섯 부분으로 나뉩니다. 형식이 올바르다는 것은 문자열 구조가 맞다는 뜻일 뿐, 서버가 해당 사용자를 인증한다는 보장은 아닙니다. 복사할 때 공백이 들어가거나 일부가 누락되거나 만료된 UUID를 사용하면 인증에 실패할 수 있습니다.
Address는 연결할 대상을, Port는 해당 주소의 연결 지점을 지정합니다. TLS에서 443을 자주 사용하더라도 기존 설정의 다른 포트를 임의로 443으로 바꾸면 안 됩니다. TLS의 Server Name(SNI)은 핸드셰이크에서 대상 이름을 지정하고 관련 인증서를 확인하는 데 사용됩니다. 연결 주소와 다를 수 있으므로 보유한 설정을 기준으로 입력하세요.
계층별 확인: 연결 지점과 외부 전송
연결 지점 및 인증
- Type: VMess 또는 VLESS인지 확인하고 이름만으로 추측하지 마세요.
- Address, Port: 서버에서 실제로 대기 중인 연결 지점을 입력합니다.
- UUID: 전체를 복사한 뒤 기존 설정과 한 글자씩 대조합니다.
- VMess 암호화 매개변수: 기존 설정을 따르며 VLESS에는 적용하지 않습니다.
전송 및 보안 설정
- TLS: 활성화 상태를 서버 설정과 일치시킵니다.
- Server Name(SNI): 기존 설정에 따라 입력합니다.
- WebSocket: Path와 Host를 확인합니다.
- Flow, ALPN 등 추가 항목: 기존 설정에서 요구하고 현재 클라이언트가 지원하는 경우에만 입력합니다.
요약: 연결 지점과 전송 설정이 모두 일치해야 합니다. UUID가 올바르더라도 Path, SNI 또는 포트가 잘못되면 해결되지 않습니다.
WebSocket의 Host와 TLS의 SNI는 서로 다른 계층에 속합니다. Host는 HTTP 핸드셰이크에 사용되고 SNI는 TLS 핸드셰이크에 사용됩니다. 서버는 두 값이 같도록 요구할 수도, 서로 다른 값을 사용할 수도 있습니다. Path는 보통 /example-path처럼 슬래시로 시작합니다. 대소문자, 쿼리 매개변수, 마지막 슬래시까지 기존 설정 그대로 유지하세요. 도메인이나 URL처럼 보인다고 해서 서로 바꿔 입력하면 안 됩니다.
Add Server에서 설정하기: 기존 매개변수를 유지하며 계층별로 저장
Shadowrocket의 Home에서는 연결 항목과 연결 상태를 관리하고, Config에서는 규칙 설정을 관리하며, Settings에서는 앱 설정을 관리합니다. VMess 또는 VLESS를 직접 추가하려면 Home의 추가 메뉴에서 Add Server로 이동하세요. UUID를 Config의 규칙에 입력하는 것이 아닙니다. 프로토콜에 따라 표시되는 옵션이 다르므로 구체적인 항목은 현재 화면과 서버 설정을 기준으로 확인하세요.
- Type을 선택합니다. Home → 추가 메뉴 → Add Server에서 VMess 또는 VLESS를 선택합니다. 먼저 유형을 정한 다음 나머지 매개변수를 입력하면 유형을 바꾸면서 전용 항목을 놓치는 일을 줄일 수 있습니다.
- 연결 정보와 식별자를 입력합니다. Address, Port, UUID를 복사합니다. Address에
https://나 WebSocket Path를 추가하지 말고 포트는 별도 항목에 입력하세요. - 프로토콜별 항목을 확인합니다. VMess의 암호화 방식과 기존 설정의 AlterId는 원래 설정과 일치해야 합니다. 구형 매개변수를 AEAD 설정에 임의로 옮기지 마세요. VLESS 설정에 Flow 등이 포함되어 있다면 현재 화면에서 해당 값을 지원하는지 먼저 확인하고 추측해서 입력하지 마세요.
- 전송 계층을 설정합니다. 기존 설정에서 WebSocket을 사용하는 경우 해당 Host와 Path를 입력합니다. TCP 설정이라면 특정 안내를 봤다는 이유만으로 WebSocket으로 바꾸면 안 됩니다.
- TLS를 설정합니다. 기존 설정에 따라 TLS를 활성화하고 Server Name(SNI) 및 명시된 추가 매개변수를 확인합니다. 인증서 확인을 꺼서 이름 불일치 문제를 숨기지 마세요.
- 저장한 뒤 확인합니다. Home으로 돌아가 새 항목을 선택하고 첫 연결에 필요한 시스템 권한을 허용한 다음, 정상 작동을 확인한 HTTPS 페이지에 접속합니다. 저장에 성공했다는 것은 항목이 기록되었다는 뜻일 뿐 인증과 전송이 성공했다는 의미는 아닙니다.
기존 설정에 클라이언트 화면에 표시되지 않는 필수 매개변수가 있다면 “비워 둬도 될 것”이라고 추측하지 마세요. 먼저 해당 설정이 현재 Shadowrocket과 호환되는지 확인한 다음 App Store에서 사용할 수 있는 앱 업데이트와 서버가 제공한 항목 설명을 살펴보세요. 한 번에 변수 하나만 바꾸고 변경 전후 결과를 기록해야 입력 문제와 연결 환경 변화를 구분할 수 있습니다.
기존 구독 및 공유 링크: 가져오기 방법 선택하기
이미 구독을 보유하고 있다면 모든 매개변수를 그대로 유지하는 방법을 우선하세요. 구독 URL은 여러 연결 정보를 가져오는 주소이고, vmess:// 또는 vless://로 시작하는 공유 링크는 일반적으로 단일 항목을 설명합니다. 두 입력 방식은 서로 다릅니다. 구독 URL을 서버 Address로 입력하거나 단일 공유 링크를 장기간 갱신되는 구독 주소로 사용할 수는 없습니다.
기존 전체 설정 가져오기
권장기존 구독이나 전체 공유 링크를 가져오면 UUID, TLS, Host, Path를 옮기는 과정에서 생기는 누락을 줄일 수 있습니다. 가져온 뒤에도 프로토콜 유형과 주요 항목을 확인하세요. 항목 이름만으로 판단하면 안 됩니다.
적합한 경우: Shadowrocket에서 사용할 수 있는 전체 구독 또는 공유 링크를 보유한 경우
Add Server에서 직접 입력
확인된 매개변수를 하나씩 입력하면 각 항목을 이해하고 변수를 하나씩 바꿔 점검하기 쉽습니다. 모든 항목을 확인할 수 없다면 흔한 기본값으로 채우지 말고 기존 설정부터 확인하세요.
적합한 경우: 명확한 매개변수 목록이 있고 항목 하나를 추가하거나 입력 오류를 확인하려는 경우
가져온 항목 편집
변경이 필요하다고 확인된 항목만 수정하고 기존 값은 기록해 두세요. 구독을 업데이트하면 항목이 새로 생성되거나 로컬 변경 사항이 덮어써질 수 있으므로 임시 테스트와 장기 설정을 구분해야 합니다.
적합한 경우: 알려진 특정 항목을 점검하되 서버 프로토콜과 인증 정보는 바꾸지 않으려는 경우
요약: 정보가 완전한지 확인한 다음 프로토콜을 선택하세요
두 설정 중 하나만 가져오기와 연결에 성공한다면 VMess나 VLESS의 성능 탓으로 바로 돌리지 말고 누락된 항목과 서버 요구 사항을 먼저 비교하세요. 현재 서버 설정과 모든 항목이 일치하는 연결을 우선 사용하세요.
구독을 추가하려면 Home의 추가 메뉴에서 Subscribe를 선택하고 보유한 구독 URL을 입력한 뒤 저장합니다. 형식을 보여 주기 위한 예시 주소는 https://example.com/sub?token=xxxx이며, 실제로 사용할 수 있는 서비스는 제공하지 않습니다. 구독의 token과 개별 설정의 UUID는 모두 접근 권한과 관련될 수 있습니다. 문제를 확인하기 위해 캡처한 화면에서는 해당 값을 가리고 전체 링크를 공개된 곳에 올리지 마세요.
- 구독을 가져오지 못함: URL이 완전한지, token이 유효한지, 현재 네트워크에서 구독 주소에 접속할 수 있는지 확인하세요.
- 구독 업데이트 후 연결되지 않음: 항목을 다시 열어 프로토콜, 포트, UUID, 전송 매개변수가 바뀌었는지 확인하고 이전 스크린샷의 값을 계속 사용하지 마세요.
- 중복으로 가져온 뒤 이름이 같은 항목이 생김: 출처와 실제 설정을 확인하세요. 이름이 같아도 주소와 인증 정보까지 같다는 뜻은 아닙니다.
- 수동 테스트 설정을 장기간 보관하려면 별도 항목으로 저장하고 용도를 적어 두세요. 구독 자동 업데이트를 로컬 변경 사항의 백업으로 간주하지 마세요.
연결 실패 원인 찾기: 연결 지점부터 규칙까지 범위 좁히기
문제를 점검할 때는 “앱의 연결 스위치가 켜짐”, “서버 포트에 도달 가능함”, “대상 웹페이지에 접속할 수 있음”을 서로 구분해야 합니다. 시스템에 VPN 상태가 표시되어도 원격 인증 성공을 의미하지는 않습니다. 지연 시간 수치만으로 TLS, WebSocket, 대상 사이트 접속까지 모두 확인할 수도 없습니다. 아래 증상은 원인을 좁히는 단서이지 특정 오류의 유일한 증거는 아닙니다.
UUID가 맞아 보이는데도 연결되지 않는 이유는 무엇인가요?
먼저 Home에서 항목을 열고 Type, UUID, Port가 같은 설정에서 가져온 값인지 확인합니다. 이어서 시스템 시간과 인증 정보의 유효성을 확인하세요. UUID만 복사하고 다른 항목의 전송 설정을 그대로 사용해도 연결에 실패할 수 있습니다.
지연 시간은 표시되는데 웹페이지가 열리지 않나요?
먼저 테스트할 항목을 선택하고 Global Routing을 일시적으로 Proxy로 설정한 뒤, 정상 작동이 확인된 동일한 HTTPS 페이지에 접속합니다. 그래도 실패하면 TLS와 전송 설정을 계속 확인하세요. Proxy에서는 접속되지만 Config에서는 되지 않는다면 규칙과 규칙이 참조하는 정책을 확인합니다. 테스트가 끝나면 원래 모드로 되돌리세요.
로그에 TLS 핸드셰이크 또는 인증서 오류가 표시되면 어디를 수정해야 하나요?
항목 편집 화면으로 돌아가 TLS, Server Name(SNI), Address를 확인하고 시스템 날짜도 점검하세요. 이름 불일치, 인증서 유효 기간, 서버 설정 등 여러 원인이 오류를 일으킬 수 있습니다. 인증서 확인을 바로 끄지 말고 서버 요구 사항부터 확인하세요.
WebSocket에서 HTTP 오류가 발생하면 UUID 문제인가요?
HTTP 오류는 프로토콜 인증이 시작되기 전에 발생할 수 있습니다. 전송 방식, Host, Path, TLS를 먼저 확인해 요청이 올바른 연결 지점에 도달하는지 살펴보세요. 404는 경로나 연결 지점이 일치하지 않을 때 흔히 나타나지만, 로그와 서버 설정을 함께 확인해야 합니다. 상태 코드만으로 결론을 내리지 마세요.
구독 업데이트 후 수동으로 수정했던 매개변수가 다시 바뀌었나요?
업데이트된 항목과 기존 구독 내용을 다시 비교해 로컬 변경 사항이 덮어써졌는지 확인하세요. 임시 테스트는 별도 항목으로 저장하고 구체적인 차이를 기록합니다. 장기적으로는 완전하고 유효한 원래 설정을 기준으로 사용하세요.
Global Routing의 Config는 현재 설정된 규칙에 따라 연결을 처리합니다. Proxy는 해당 모드에서 처리되는 연결을 프록시로 보내고, Direct는 직접 연결합니다. Scene은 상황별 선택과 관련된 기능이며 네 번째 프로토콜이 아닙니다. Config에서만 접속 문제가 발생한다면 UUID를 바꾸기보다 Config의 DOMAIN-SUFFIX, GEOIP, IP-CIDR, FINAL의 순서와 정책 대상을 확인하세요.
연결이 자동으로 켜지거나 다시 연결되는 문제를 점검할 때는 Settings → On Demand의 실행 조건도 확인하세요. On Demand는 조건에 따라 언제 연결을 시작할지 결정할 뿐 VMess 또는 VLESS의 인증 항목을 수정하지 않습니다. 테스트 조건을 일관되게 유지하려면 현재 설정을 먼저 기록하고 이번 테스트가 수동 연결 확인인지 자동 실행 확인인지 구분하세요. 두 문제를 혼동하지 않는 것이 중요합니다.
설정 저장 전 최종 확인
특정 항목의 사용 가능 여부는 클라이언트와 서버의 프로토콜, 인증, 전송, 보안 매개변수가 일치하는지에 따라 달라집니다. VMess와 VLESS 중 무엇을 사용할지는 우선 기존 서버 설정에 따릅니다. 서버에서 두 프로토콜의 전체 설정을 모두 제공하는 경우에만 같은 네트워크와 대상, 비슷한 시간대를 기준으로 실제 사용 경험을 비교할 수 있습니다. 한 번의 지연 시간 측정이나 항목 이름만으로 차이를 판단할 수 없습니다.
- Type이 기존 설정과 일치합니다. 이름이나 Type을 바꾸는 것만으로 VMess와 VLESS가 서로 변환되지는 않습니다.
- Address, Port, UUID가 완전하며 익숙하다는 이유만으로 포트를 443으로 바꾸지 않았습니다.
- TLS, SNI, WebSocket Host, Path를 각각 기존 설정에 따라 입력했습니다.
- 가져온 뒤 테스트 페이지에 실제로 접속했으며 프로토콜 문제와 Config 규칙 문제를 구분했습니다.
- 테스트 과정에서 전체 구독 URL, token, UUID를 노출하지 않았으며 임시 변경 사항을 기록했습니다.
Shadowrocket은 클로즈드 소스 상용 앱으로, 주로 iPhone과 iPad에서 사용하며 App Store에서만 받을 수 있습니다. 개발자 이름은 Shadow Launch Technology Limited이고 앱 ID는 932747118입니다. 앱을 한 번 구매하는 것과 사용자가 보유한 회선 서비스는 별개입니다. 시스템 요구 사항과 일반적인 구매 가능 여부는 App Store 페이지에 표시된 내용을 기준으로 확인하세요. 앱을 구매해도 사용할 수 있는 VMess 또는 VLESS 설정이 자동으로 생성되지는 않습니다.