Shadowrocket VMess와 VLESS의 차이: 서버 추가 전 확인할 항목

Shadowrocket에서 VMess와 VLESS를 설정할 때 Add Server의 UUID, alterId, 암호화 및 전송 계층 항목을 비교하고, 인증·암호화 차이와 잘못 입력했을 때 연결이 실패하는 대표적인 원인을 알아봅니다.

핵심 내용

VMess와 VLESS는 서로 바꿔 쓸 수 있는 Type이 아닙니다. 둘 다 사용자 식별에 UUID를 사용하지만 인증 방식과 프로토콜 자체의 암호화 방식은 다릅니다. TLS, 전송 방식, Host, Path도 서버 설정에 맞춰 각각 지정해야 합니다. 이 글은 보유한 서비스 설정 또는 구독 정보를 Shadowrocket에 가져오거나 직접 입력하려는 사용자를 위해 Type 선택 → 인증 확인 → 전송 설정 확인 → 단계별 문제 해결 순서로 설명합니다.

먼저 확인할 점: Type은 서버 설정과 일치해야 합니다

VMess는 인증과 선택적 페이로드 암호화를 제공하는 프록시 프로토콜입니다. VLESS는 구조가 더 간결하며 프로토콜 자체에서는 페이로드를 암호화하지 않으므로, 일반적으로 외부 보안 계층으로 전송을 보호합니다. 두 프로토콜이 같은 형식의 UUID를 사용한다고 해서 하나의 서버가 두 프로토콜을 모두 지원하는 것은 아닙니다. 기존 VMess 항목에서 Type만 VLESS로 바꾸고 나머지 값을 그대로 두어도 프로토콜이 변환되지는 않습니다.

추가하기 전에 필요한 정보가 모두 있는지 확인하세요. Address, Port, UUID뿐 아니라 전송 방식과 보안 설정도 확인해야 합니다. 443은 포트 번호일 뿐입니다. 이 값만으로 TLS 사용 여부나 VMess·VLESS 중 어떤 프로토콜인지 판단할 수 없습니다.

확인 항목VMessVLESS
사용자 식별UUID를 사용하며 VMess 인증 절차에 포함됩니다UUID를 사용하며 VLESS 인증 구조를 따릅니다
alterId구형 인증 방식과 관련된 항목이며, 최신 AEAD 설정에서는 보통 0입니다대응하는 alterId 항목이 없습니다
프로토콜 자체의 암호화Security 관련 옵션이 있으며 서버 설정에 맞춰야 합니다프로토콜 자체에서는 페이로드를 암호화하지 않습니다. 링크의 encryption 값은 보통 none입니다
외부 보안 계층TLS 등 관련 설정을 별도로 확인합니다TLS 등 관련 설정을 별도로 확인해야 합니다. none을 보안 계층 설정으로 간주해서는 안 됩니다
전송 방식TCP, WebSocket 등을 서버 설정과 일치시켜야 합니다TCP, WebSocket 등을 서버 설정과 일치시켜야 합니다

정리: 전체 설정을 먼저 확인한 뒤 Type을 선택하세요

주소, 포트, UUID만 있다면 전송 방식과 보안 설정을 서비스 제공자에게 먼저 확인하세요. Type을 바꾸거나 암호화 옵션을 하나씩 시험해 빠진 정보를 추측하지 마세요.

추가 단계: 기존 설정의 전체 항목을 우선 유지하세요

Home에서 추가 메뉴를 열어 Add Server로 이동한 다음, 제공된 정보에 맞는 Type을 선택하고 각 항목을 입력합니다. 모든 설정을 알고 있으며 항목별로 확인해야 할 때는 직접 추가하는 방법이 적합합니다. 완전한 공유 링크나 구독이 있다면 가져오기를 이용해 Host, Path 등의 누락을 줄일 수 있습니다. 가져온 뒤에는 표시 이름만 보지 말고 항목을 열어 설정을 확인하세요.

기존의 전체 설정 가져오기

권장

보유한 공유 링크나 구독을 가져온 뒤 Type, Address, Port, TLS, 전송 설정을 확인하세요. 가져오기를 권장하는 이유는 입력 오류를 줄일 수 있기 때문이지, 출처를 불문하고 설정을 신뢰해도 된다는 뜻은 아닙니다.

적합한 경우: 서비스 제공자가 전체 링크나 구독을 제공하고 설정 항목이 많은 경우

Add Server에서 직접 입력

설정표를 참고해 항목별로 입력하세요. 먼저 Type을 선택한 다음 프로토콜에 따라 표시되는 옵션을 확인합니다. 저장하기 전에 다른 프로토콜의 설정을 그대로 옮겨 적지 않았는지 살펴보세요.

적합한 경우: 전체 설정표가 있고 항목별 대조나 차이 확인이 필요한 경우

  1. Home에서 사용할 항목을 선택한 뒤 편집 화면으로 이동해 Type을 확인하세요. 이름에 ‘VMess’ 또는 ‘VLESS’가 들어 있다는 이유만으로 실제 프로토콜을 판단하지 마세요.
  2. Address와 Port는 각각 입력하세요. Address에는 보통 도메인이나 IP 주소를 입력합니다. 경로가 포함된 전체 공유 링크를 주소 항목에 붙여 넣지 마세요.
  3. UUID 전체를 복사한 뒤 앞뒤에 공백, 줄바꿈, 따옴표가 붙지 않았는지 확인하고 해당 프로토콜의 옵션에 입력하세요.
  4. TLS와 전송 설정을 확인하고 저장한 다음 항목을 다시 열어 빠진 값이 없는지 점검하세요.

공유 링크 하나는 연결 항목 하나를 나타내며, 구독 주소는 여러 항목을 가져오고 업데이트하는 데 사용됩니다. 예를 들어 https://example.com/sub?token=xxxx는 사용할 수 없는 구독 주소 형식의 예시일 뿐, Address 입력 예시가 아닙니다. 구독을 업데이트하면 항목이 다시 생성될 수 있습니다. 문제를 해결하기 전에 직접 수정한 위치를 기록해 두면 업데이트로 덮어쓴 상황을 설정이 저장되지 않은 문제로 오해하지 않을 수 있습니다.

인증 항목 확인: UUID와 alterId는 각각 점검하세요

UUID는 사용자 식별자이며 서버 도메인이나 구독 주소의 token이 아닙니다. 일반적인 텍스트 형식은 하이픈이 포함된 36자입니다. 예: 123e4567-e89b-42d3-a456-426614174000. 형식만 보여 주는 예시이며 실제로 사용할 수 있는 인증 정보가 아닙니다. 형식이 올바르게 보여도 서버에서 해당 UUID를 승인했다는 뜻은 아닙니다.

VMess의 alterId는 지연 시간이나 속도를 조절하는 항목이 아닙니다. 구형 VMess 인증 방식에서는 0이 아닌 alterId를 사용하기도 했지만, 최신 VMess AEAD 설정에서는 보통 0을 사용합니다. 오래된 자료에 다른 값이 적혀 있다면 수치를 임의로 높이지 말고 서버에서 현재 사용하는 인증 방식을 확인하세요. VLESS에는 대응하는 alterId가 없으므로 다른 항목에 옮겨 입력할 필요가 없습니다.

암호화와 전송: none은 TLS를 끈다는 뜻이 아닙니다

프로토콜 자체의 암호화와 외부 TLS는 서로 다른 계층입니다. VMess의 Security 옵션에는 auto, aes-128-gcm, chacha20-poly1305 등의 값이 사용될 수 있습니다. 서버에서 요구하는 설정과 앱에서 실제로 제공하는 옵션을 확인하세요. VMess 암호화 값을 VLESS의 해당 위치에 입력하지 말고, 속도를 높이겠다고 임의로 none을 선택하지도 마세요.

VLESS 공유 설정의 encryption=none은 VLESS 자체가 페이로드를 암호화하지 않는다는 뜻이지, 외부 연결을 보호할 필요가 없다는 뜻은 아닙니다. 기존 설정에서 TLS를 사용한다면 가져온 뒤에도 TLS를 유지하세요. 다른 보안 방식을 사용한다면 해당 방식의 전용 설정을 모두 일치시켜야 합니다. 일반 TLS를 켜는 것만으로 대체할 수 없습니다.

확인 방법: 보안 계층과 전송 계층을 나눠 기록하세요

TLS 보안 계층
  • 포트만 보고 추측하지 말고 서버에서 TLS를 요구하는지 확인하세요.
  • TLS 핸드셰이크에서 사용하는 서버 이름인 SNI를 확인하세요.
  • 인증서에 포함된 도메인과 SNI가 일치하는지 확인하세요.
  • 인증서 검증은 유지하고 오류가 발생하면 도메인이나 인증서를 바로잡으세요.
WebSocket 전송 계층
  • 일반 TCP가 아니라 전송 방식이 WebSocket인지 확인하세요.
  • Host를 확인하세요. Address와 같다고 단정할 수 없습니다.
  • Path를 문자 단위로 확인하고 맨 앞의 슬래시를 유지하세요.
  • 대소문자를 구분하고 제공된 설정에 필요한 경로 매개변수를 유지하세요.

Address, SNI, WebSocket Host는 같을 수도 다를 수도 있습니다. 값을 자동으로 바꾸지 말고 기존 설정에 적힌 값을 항목별로 사용하세요.

예를 들어 설정표에 Address가 edge.example.com, Port가 443, SNI가 tls.example.com, WebSocket Host가 web.example.com, Path가 /connect로 적혀 있다면 다섯 항목을 각각 확인해야 합니다. 모두 설명을 위한 가상 값으로, 항목 간 관계를 보여 주는 예시일 뿐 실제 연결에 사용할 수 있는 설정이 아닙니다.

연결 실패: 지연 시간만으로 결론 내리지 말고 단계별로 확인하세요

지연 시간 테스트에서 값이 나왔다는 사실만으로는 테스트에 포함된 단계에서 응답이 있었다고 볼 수 있을 뿐, UUID, TLS, 전송 설정이나 대상 웹사이트 접속이 모두 정상이라고 단정할 수 없습니다. 테스트 방법마다 확인하는 계층이 다르므로 문제를 해결할 때 테스트 방법, 오류 메시지, 오류가 발생한 단계를 기록하세요. 아래 표는 증상별 확인 방향을 정리한 것으로, 오류 메시지 하나만으로 원인을 확정하는 진단표가 아닙니다.

표시되는 증상먼저 확인할 항목다음 단계
서버 도메인을 확인할 수 없음Address의 철자와 현재 네트워크의 도메인 확인 상태원래 주소를 확인하고 프로토콜 접두어나 경로가 섞이지 않았는지 살펴보세요
연결 시간 초과 또는 거부Address, Port, 네트워크 연결 가능 여부포트가 서버에서 현재 연결을 기다리는 포트와 일치하는지 확인하세요
TLS 인증서 또는 핸드셰이크 오류TLS 설정, SNI, 시스템 시간, 인증서일치하지 않는 설정을 바로잡으세요. 인증서 검증을 끄는 방법은 일반적인 해결책으로 사용하지 마세요
WebSocket 핸드셰이크에서 400 또는 404 반환Host, Path, 전송 방식, 서버 라우팅경로를 문자 단위로 대조하세요. 상태 코드만으로 UUID 오류를 확정할 수 없습니다
핸드셰이크 후 요청이 종료됨Type, UUID, VMess 인증 설정원래 설정을 복원한 뒤 서버에서 해당 사용자를 승인하는지 확인하세요
테스트에는 응답이 있지만 웹페이지가 열리지 않음Global Routing, 선택한 항목, DNS요청이 실제로 해당 항목을 사용하는지 확인한 다음 규칙과 DNS를 각각 점검하세요
  1. 원래 설정을 기록해 두세요. UUID나 구독 token이 포함된 내용은 안전한 개인 공간에만 보관하고 공개하지 마세요.
  2. Home에서 테스트할 항목을 선택하고 Global Routing을 일시적으로 Proxy로 설정해 Config 규칙의 영향을 줄이세요. 앱 내부에서 유지되는 트래픽과 시스템 제한도 고려해야 합니다.
  3. 같은 웹페이지 요청을 보내 연결, TLS, 전송, 요청 중 어느 단계에서 오류가 발생하는지 확인하세요. 한 번에 하나의 항목만 수정합니다.
  4. 확인이 끝나면 Global Routing을 원래대로 복원하세요. Proxy에서는 작동하지만 Config에서는 실패한다면 Config에서 규칙 적용 결과와 정책을 점검하고 UUID를 반복해서 바꾸지 마세요.

Config 모드에서는 설정 규칙에 따라 요청에 사용할 정책이 결정됩니다. 예를 들어 DOMAIN-SUFFIX,example.com,DIRECT는 해당 도메인에 직접 연결하므로 Home에서 선택한 항목이 작동하더라도 요청이 그 항목을 통과하지 않을 수 있습니다. 규칙의 영향을 제외하는 이유는 ‘프로토콜 설정 오류’와 ‘요청이 해당 항목을 사용하지 않음’을 구분하기 위해서입니다.

자주 묻는 질문: 프로토콜 변경, 구독 업데이트, 누락된 설정

VMess는 작동하는데 VLESS로 바꾸자마자 실패하는 이유는 무엇인가요?

먼저 원래 Type으로 되돌리세요. VLESS 항목을 새로 만들려면 서버에서 VLESS를 지원해야 하며, 해당 프로토콜에 맞는 포트, UUID, 전송 방식, 보안 설정이 제공되어야 합니다. 클라이언트에서 이름을 바꾸거나 Type을 전환해도 서버가 지원하는 프로토콜은 달라지지 않습니다.

VLESS에서 alterId를 찾을 수 없는데 항목을 빠뜨린 건가요?

아닙니다. alterId는 VMess 관련 설정입니다. Add Server로 돌아가 Type이 VLESS인지 확인한 다음 원래 자료에 따라 UUID, 전송 방식, 보안 설정을 입력하세요. 다른 항목을 alterId 대신 채울 필요는 없습니다.

UUID와 443 포트만 있는데 TLS를 바로 켜도 되나요?

그 정보만으로는 판단할 수 없습니다. Address, TLS 필요 여부, SNI, 전송 방식을 서비스 제공자에게 먼저 확인하세요. WebSocket을 사용한다면 Host와 Path도 필요합니다. 정보가 불완전하다면 계속 값을 바꿔 입력하기보다 잠시 멈추는 편이 문제 해결에 필요한 단서를 보존하는 데 도움이 됩니다.

구독을 업데이트한 뒤 방금 수정한 Path가 원래대로 돌아갔어요. 어떻게 해야 하나요?

Home에서 업데이트된 항목을 열고 원래 구독 설정과 직접 수정한 기록을 대조하세요. 구독 내용은 제공처에서 관리하므로 서비스 제공자에게 원본 설정을 수정해 달라고 요청하세요. 임시로 확인하려면 수동 항목을 별도로 만들어 구독이 이미 수정된 것으로 오해하지 않도록 하세요.

VMess와 VLESS 중 무엇을 사용할지는 먼저 기존 서버가 지원하는 프로토콜에 따라 결정하고, 그다음 구체적인 전송 및 보안 설정을 확인해야 합니다. 프로토콜 이름만으로 속도를 판단할 수는 없습니다. Shadowrocket은 사용자가 보유한 설정을 이용하는 앱이며, 앱 구매와 네트워크 서비스는 별도로 관리됩니다. 이 사이트는 노드나 구독을 제공·판매·추천하지 않습니다.

App Store 정품 확인