Shadowrocket에서 VMess와 VLESS는 Type만 바꿔 서로 전환할 수 없습니다. 서비스 제공업체에서 설정 정보나 구독을 받은 사용자를 위해 프로토콜 인증, 전송 방식, TLS를 구분하고 Add Server의 항목을 확인하는 방법을 설명합니다. 연결 오류와 규칙에 따른 트래픽 분기 문제를 구별하는 방법도 함께 살펴봅니다. 구독 링크는 이용 중인 서비스 제공업체에서 받으세요. 이 사이트는 노드, 구독 또는 서비스 제공업체를 제공·판매·추천하지 않습니다.
1. VMess와 VLESS의 핵심 차이
핵심은 이름만 보고 더 빠른 프로토콜을 고르는 것이 아니라 서비스 제공업체가 실제로 구성한 프로토콜을 선택하는 것입니다. VMess에는 자체 인증 및 데이터 암호화 방식이 있습니다. VLESS는 프로토콜 자체에서 데이터를 암호화하지 않으므로 실제 전송 방식과 보안 계층을 함께 확인해야 합니다. 두 프로토콜 모두 UUID를 사용하는 경우가 많지만, UUID가 같다고 해서 서버의 같은 포트에서 두 프로토콜을 모두 사용할 수 있는 것은 아닙니다.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 인증 정보 | UUID 등의 인증 정보를 사용하며 서버 설정과 일치해야 합니다. | UUID를 사용자 식별자로 사용하며 서버 설정과 일치해야 합니다. |
| 프로토콜 데이터 암호화 | 프로토콜 자체의 암호화 방식이 있습니다. 암호화 옵션은 서비스 제공업체에서 받은 설정에 맞추세요. | 프로토콜 자체는 데이터를 암호화하지 않습니다. 그렇다고 외부 TLS 계층이 없다고 단정할 수는 없습니다. |
| 전송 방식 | 다양한 전송 방식을 사용할 수 있으며 서버 설정과 일치해야 합니다. | 서버의 전송 방식과 관련 설정을 맞춰야 합니다. |
| TLS | 서버에서 TLS를 사용한다면 클라이언트도 해당 설정을 적용해야 합니다. | TLS 사용 여부와 관련 설정은 실제 서버 구성에 따라 달라집니다. |
| 서로 바꿔 사용하기 | Type만 바꿔서는 안 됩니다. 해당 프로토콜에 맞는 서버 설정 전체가 필요합니다. | |
VMess의 최신 인증 방식은 일반적으로 AEAD를 사용합니다. 이전 설정에 있는 AlterId를 임의로 추측해 입력하지 마세요. 기존 자료와 현재 가져온 설정이 다르면 서비스 제공업체에 현재 구성을 확인하세요. VLESS 설정의 encryption=none은 프로토콜 계층을 설명하는 값입니다. TLS를 끄라는 뜻이 아니며, 인증서 오류를 무시해도 된다는 뜻도 아닙니다.
“VLESS가 VMess보다 얼마나 빠른가요?”라는 질문에는 정해진 답이 없습니다. 서버 부하, 네트워크 왕복 시간, 패킷 손실, 전송 방식, 대상 사이트가 모두 결과에 영향을 줍니다. 이런 조건을 통제하지 않은 채 프로토콜 이름만 바꿔서는 일반화할 수 있는 속도 결론을 내릴 수 없습니다.
2. UUID, 전송 방식, TLS 설정 구분하기
추가하기 전에 설정 정보를 세 가지로 나눠 보세요. 연결할 곳, 인증 방법, 연결을 전달하는 방식입니다. Address와 Port는 연결 대상을 지정하고 UUID는 인증에 사용합니다. WebSocket 같은 전송 방식과 TLS는 연결이 설정되는 방식을 결정합니다. 이 항목들을 혼동하면 “설정을 모두 입력한 것 같은데 연결되지 않는” 문제가 발생하기 쉽습니다.
- UUID: 일반적인 문자열 형식은
8-4-4-4-12자리로 나뉜 16진수입니다. 예:123e4567-e89b-42d3-a456-426614174000. 형식 예시일 뿐 실제로 사용할 수 있는 인증 정보가 아닙니다. 입력할 때 공백, 따옴표, 줄바꿈을 포함하지 마세요. - Port: 서비스 제공업체에서 받은 숫자를 입력합니다. TLS를 사용한다고 해서 반드시
443포트를 사용하는 것은 아닙니다. 다른 포트를 임의로443으로 바꾸지 마세요. - WebSocket Path: 요청 경로이며 보통
/로 시작합니다. 대소문자, 경로 구성 요소, 쿼리 매개변수를 원래 값 그대로 입력하세요. 도메인만 남기면 안 됩니다. - Host: WebSocket 연결에서 HTTP 요청의 Host 정보로 사용됩니다. 연결 주소와 같을 수도 있고 다를 수도 있습니다.
- SNI: TLS 핸드셰이크에서 서버 이름을 전달하는 정보입니다. 인증서의 이름도 실제 설정과 일치해야 합니다. Host를 입력했더라도 서비스 제공업체가 TLS 서버 이름을 지정했다면 생략하지 마세요.
요약: 항목별로 확인하고 모든 필드에 같은 도메인을 쓰지 마세요
먼저 Address와 Port를 확인하고 UUID를 대조한 다음 전송 방식, Host, Path, TLS 서버 이름을 차례로 확인하세요. 서비스 제공업체가 각 항목에 같은 값을 명시한 경우에만 동일한 도메인을 여러 필드에 입력하세요.
3. Add Server에서 설정 정보 입력하기
아래는 Home에서 직접 추가하는 방법입니다. 플랫폼에 따라 버튼 위치가 다를 수 있으므로 현재 화면에 표시되는 항목을 기준으로 진행하세요. 구독을 이용 중이라면 필드 누락을 줄일 수 있도록 서비스 제공업체에서 제공한 전체 구독을 가져오는 방법을 우선 고려하세요. 구독 가져오기와 Add Server 직접 입력은 설정 정보를 가져오는 두 가지 방법이지, 서로 다른 프로토콜이 아닙니다.
- 원본 설정 정보를 보관합니다. 해당 정보가 VMess용인지 VLESS용인지 확인하고 Address, Port, UUID, 전송 방식, TLS 설정을 기록해 둡니다. 다른 항목의 Port나 Path를 가져와 새 설정에 섞지 마세요.
- Home → Add Server를 엽니다. 먼저 Type을 설정 정보에 표시된 VMess 또는 VLESS로 선택한 다음 Address와 Port를 입력합니다. Type을 잘못 선택하면 이후 표시되는 필드도 달라질 수 있습니다.
- UUID와 프로토콜 옵션을 입력합니다. VMess의 암호화 옵션은 제공된 설정에 맞추세요. VLESS에 Flow 등의 추가 옵션이 있다면 서버 설정과 일치하도록 모두 입력해야 합니다. 다른 설정에서 그대로 복사하지 마세요. 현재 화면에서 필수 설정을 입력할 수 없다면 해당 설정을 사용할 수 있는지 먼저 확인하세요.
- 전송 방식을 설정합니다. 서비스 제공업체에서 WebSocket을 지정한 경우에만 해당 Host와 Path를 입력하세요. WebSocket이 아니라면 안내를 그대로 따라 하기 위해 억지로 활성화하지 마세요. 가져온 설정의 전송 이름과 클라이언트 옵션이 일치하는지도 확인하세요.
- TLS를 설정합니다. 제공된 설정에 따라 TLS를 켜거나 끄고 서버 이름을 확인하세요. 정상적인 인증서 검증을 유지해야 합니다. 인증서 오류가 발생하면 검증을 건너뛰지 말고 도메인, 시스템 시간, 서버 설정부터 확인하세요.
- 저장한 뒤 항목을 선택합니다. Home으로 돌아가 방금 저장한 항목이 선택되어 있는지 확인한 다음 연결을 테스트하세요. 저장 성공은 설정이 기록되었다는 뜻일 뿐, 원격 서버에서 인증되었다는 의미는 아닙니다.
4. 구독을 가져온 뒤에도 설정을 확인해야 하는 이유
구독은 여러 설정을 전달하는 방법이고, 프로토콜은 각 항목의 연결 방식입니다. 하나의 구독에 서로 다른 프로토콜이 포함될 수 있습니다. 구독을 성공적으로 다운로드했다는 것은 설정 정보를 가져오고 해석했다는 뜻일 뿐, 각 항목이 현재 연결 가능하다는 뜻은 아닙니다.
- 출처와 유효 기간을 먼저 확인합니다. 구독 링크는 이용 중인 서비스 제공업체에서 받으세요. 링크의 token에는 접근 권한이 포함되는 경우가 많으므로 전체 주소를 공개된 스크린샷, 댓글, 로그에 올리지 마세요.
- 업데이트 후 선택 항목을 다시 확인합니다. 서비스 제공업체가 Address, Port 또는 전송 설정을 바꿀 수 있습니다. 업데이트가 끝나면 Home으로 돌아가 현재 항목을 확인하세요. 이전 이름만 보고 설정이 그대로라고 판단해서는 안 됩니다.
- 업데이트를 프로토콜 전환으로 여기지 마세요. 서비스 제공업체가 VLESS 설정을 제공하지 않았다면 VMess 구독을 반복해서 새로고침해도 사용할 수 있는 VLESS 항목이 자동으로 만들어지지 않습니다.
- 가져온 항목과 직접 만든 복사본을 구분합니다. 구독으로 관리되는 항목은 다음 업데이트 때 바뀔 수 있습니다. 필드를 시험해 봐야 한다면 원본을 보존하고, 임시 수정 사항을 서비스 제공업체의 최신 설정으로 착각하지 않도록 주의하세요.
서비스 제공업체에 문의할 때는 프로토콜 종류, 전송 방식, 오류가 발생한 단계, 확인한 항목을 전달하면 됩니다. UUID, 구독 token, 전체 공유 설정은 가려 주세요. 문제를 설명할 때 공개할 필요가 없는 정보입니다.
5. 연결 오류와 트래픽 분기 문제 구분하기
Home에서 연결이 켜져 있어도 특정 웹페이지가 선택한 항목을 통해 접속 중이라는 뜻은 아닙니다. Global Routing은 트래픽이 어떤 경로를 사용할지 결정합니다. 규칙에 프록시 경로가 지정되지 않으면 설정이 올바르더라도 대상 요청이 Direct로 전달될 수 있습니다. 먼저 현재 라우팅 상태를 확인한 뒤 VMess 또는 VLESS 설정 문제인지 판단하세요.
Global Routing → Config
권장현재 Config의 규칙과 정책에 따라 요청을 처리합니다. 규칙 순서와 최종적으로 적용된 정책을 확인해야 합니다. 모든 요청이 선택한 프록시를 통과하는 것은 아닙니다.
적합한 경우: 규칙을 확인한 뒤 일상적인 트래픽 분기에 사용
Global Routing → Proxy
프록시를 사용할 수 있는 트래픽을 현재 프록시 경로로 전달합니다. 규칙에 따른 트래픽 분기의 영향을 줄여 임시로 비교 테스트할 때 유용합니다. 그렇다고 모든 시스템 트래픽이 프록시를 통과한다고 보장되지는 않습니다.
적합한 경우: Config 규칙이 문제의 원인인지 잠시 확인할 때
Global Routing → Direct
직접 연결 경로를 사용합니다. 이 상태에서 웹페이지가 열려도 방금 입력한 VMess 또는 VLESS 설정이 유효하다는 증거는 아닙니다.
적합한 경우: 로컬 네트워크의 직접 연결 상태와 비교할 때
Scene을 사용 중이라면 해당 Scene에서 실제로 적용되는 정책도 확인하세요. 이름만 보고 연결 경로를 판단하면 안 됩니다. Config의 DOMAIN-SUFFIX, GEOIP, IP-CIDR, FINAL은 트래픽 분기 규칙 키워드이지 프로토콜 옵션이 아닙니다. 문제를 확인할 때는 먼저 트래픽이 프록시로 전달되는지 살펴본 다음 프록시 핸드셰이크가 성공하는지 확인하세요.
- 계속 시간 초과되는 경우: Address가 올바르게 확인되는지, Port가 설정 정보와 일치하는지, 현재 네트워크에서 서버에 연결할 수 있는지 먼저 확인하세요. 시간 초과만으로 UUID가 잘못됐다고 판단할 수는 없습니다.
- TLS 단계에서 오류가 발생하는 경우: 시스템 시간, SNI, 인증서 이름을 확인하세요. 서버가 해당 포트에서 올바른 TLS 서비스를 제공하는지도 확인해야 합니다.
- WebSocket 핸드셰이크에 문제가 있는 경우: Path, Host, 전송 유형을 확인하세요. HTTP 계층의 거부 응답과 UUID 인증 실패는 서로 다른 단계에서 발생합니다.
- 핸드셰이크 직후 연결이 끊기는 경우: Type, UUID, 프로토콜 추가 옵션을 다시 확인하세요. VMess는 인증에 시간이 관련되므로 기기 시간이 크게 어긋나 있지 않은지도 확인해야 합니다.
- 일부 웹사이트만 열리지 않는 경우: DNS, 적용된 규칙, 대상 사이트에 대한 연결 가능성을 확인하세요. 바로 전체 설정을 VMess에서 VLESS로 바꾸지 마세요.
6. 설정 전후 자주 묻는 질문
UUID가 같은데 VMess를 VLESS로 바꾸면 왜 연결되지 않나요?
UUID는 인증 정보의 일부일 뿐이며, 서버가 해당 프로토콜을 지원해야 합니다. Home에서 해당 항목의 편집 화면을 열고 Type을 원래대로 되돌리세요. VLESS를 사용하려면 기존 UUID만 재사용하지 말고 서비스 제공업체에서 VLESS 설정 전체를 받으세요.
VLESS에 none이라고 표시되어 있으면 TLS를 꺼야 하나요?
아닙니다. 먼저 none이 어떤 필드에 해당하는지 확인하세요. 프로토콜의 encryption과 외부 TLS는 서로 다른 설정입니다. 항목 편집 화면에서 원본 설정에 따라 TLS와 서버 이름을 확인하고, 한 필드의 값을 다른 스위치에 적용하지 마세요.
지연 테스트는 되는데 웹페이지가 열리지 않습니다. 먼저 프로토콜을 바꿔야 하나요?
아직 바꾸지 마세요. 지연 테스트 결과의 의미는 테스트 방식에 따라 다르며, 대상 웹페이지까지의 전체 연결이 정상이라는 뜻은 아닙니다. Home에서 선택한 항목을 확인한 뒤 Global Routing을 점검하세요. 필요하면 잠시 Proxy로 전환해 비교한 다음 원래 상태로 되돌리고 DNS와 대상 요청의 규칙 경로도 확인하세요.
연결을 직접 끈 뒤 자동으로 다시 연결됩니다. 설정을 잘못 입력한 건가요?
먼저 Settings → On Demand에서 자동 연결 조건이 활성화되어 있는지 확인하세요. On Demand는 연결이 시작되는 조건을 제어할 뿐 UUID, Host, Path를 수정하지 않습니다. 문제를 확인하는 동안 관련 조건을 잠시 끄고, 확인이 끝나면 사용 방식에 맞게 다시 설정하세요.
Shadowrocket 다운로드 및 설정 가져오기 안내
iPhone / iPad 버전은 App Store에서 $2.99에 한 번 구매하면 됩니다. Mac(Apple 실리콘 / Intel), Windows, Android, Linux 버전은 무료입니다. 이 사이트의 다운로드 페이지에서 플랫폼을 선택하세요. iPhone / iPad의 시스템 요구 사항은 App Store 페이지를 확인하세요. 제품 페이지의 개발자는 Shadow Launch Technology Limited이며 앱 ID는 932747118입니다.
앱을 한 번 구매하는 것과 연결 서비스 요금제는 별개입니다. 구독은 이용 중인 서비스 제공업체에서 받으세요. 설치 후 빠른 시작 안내에 따라 설정을 가져온 다음 이 글의 항목별 확인 방법을 참고하세요.