이미 서비스 제공자와 연결 설정값을 보유하고 있으며 Shadowrocket에서 VMess 또는 VLESS 설정을 확인하려는 사용자를 위한 글입니다. 프로토콜, 인증 정보, 전송 계층을 먼저 구분한 뒤 UUID, alterId, flow, TLS를 점검하세요. 연결에 실패하면 주소와 포트, 인증, 전송 방식, 라우팅 순으로 확인하고, 프로토콜 이름만으로 속도나 안정성을 판단하지 마세요.
VMess와 VLESS: 프로토콜 계층과 전송 계층 구분하기
VMess와 VLESS는 클라이언트와 서버가 서로 일치하는 프로토콜을 사용해야 합니다. 둘 다 UUID를 사용자 인증 정보로 사용하는 경우가 많지만, 메시지 구조와 인증 방식은 다릅니다. Add Server에서 유형을 VMess에서 VLESS로 바꾸는 것만으로 전환이 완료되는 것은 아닙니다. 서버에도 해당 프로토콜에 맞는 설정이 있어야 합니다.
VMess는 프로토콜 계층에서 데이터를 암호화하며, 구체적인 방식은 양쪽 설정에 따라 달라집니다. VLESS 자체는 페이로드를 암호화하지 않으므로 TLS 같은 외부 보호 계층까지 함께 살펴봐야 합니다. 따라서 VLESS의 encryption이 none으로 표시되어도 연결 전체가 평문이라고 단정할 수 없습니다. 마찬가지로 VMess를 사용하더라도 서버 인증을 확인해야 합니다.
| 확인 항목 | VMess | VLESS |
|---|---|---|
| 인증 정보 | 일반적으로 UUID를 사용하며 서버의 사용자 설정과 일치해야 합니다. | 일반적으로 UUID를 사용하지만 VMess와 UUID가 같다는 이유만으로 서로 바꿔 쓸 수 있는 것은 아닙니다. |
| 프로토콜 계층 암호화 | 설정 가능한 데이터 암호화 기능이 있으며 외부 TLS와 혼동하면 안 됩니다. | 페이로드를 암호화하지 않으며 일반적인 설정에서 encryption은 none입니다. |
alterId | 과거 호환성을 위한 필드입니다. 최신 VMess AEAD 설정에서는 보통 0을 사용합니다. | 이 필드는 사용하지 않습니다. |
flow | VLESS에서는 이와 같은 flow 매개변수를 사용하지 않습니다. | 일부 조합에서 사용합니다. 예를 들어 xtls-rprx-vision은 서버 설정과 일치해야 합니다. |
| 외부 설정 | TCP, WebSocket, TLS 등 실제 매개변수도 확인해야 합니다. | 전송 방식과 외부 보안 설정도 함께 확인해야 합니다. |
프로토콜 이름은 연결 스택의 한 계층만 나타냅니다. 전체 연결에는 서버 주소, 수신 포트, 전송 방식, 보안 계층도 포함됩니다. 두 설정 모두 VLESS로 표시되어 있어도 전송 방식이나 서버 이름이 다르면 필드를 서로 가져다 쓸 수 없습니다.
UUID와 alterId: 인증 정보는 임의로 입력해 확인할 수 없습니다
UUID는 서버에서 권한을 부여한 사용자를 식별하는 값이지, 서버 주소나 구독 주소의 액세스 토큰이 아닙니다. 복사할 때 공백, 줄바꿈, 따옴표가 추가되지 않았는지 확인하세요. UUID 형식이 올바르더라도 서버에 해당 사용자가 등록되어 있지 않으면 인증에 실패합니다.
alterId는 VMess의 과거 설정 개념으로, ‘예비 회선 수’를 뜻하지 않으며 값이 클수록 더 안전한 것도 아닙니다. 최신 VMess AEAD 설정에서는 보통 0을 사용합니다. 예전 자료의 0이 아닌 값을 현재 서버에 그대로 적용하면 안 됩니다. 기존 설정에 0이 아닌 값이 있다면 여러 숫자를 바꿔 입력해 보기보다 원래 설정 제공자에게 호환 조건을 확인하세요.
VMess 인증은 시간에도 영향을 받습니다. 최근 인증에 갑자기 실패하기 시작했다면 iPhone 또는 iPad의 설정 → 일반 → 날짜 및 시간에서 날짜와 시간대가 올바른지 확인하세요. 시간을 맞추는 것은 문제 해결 과정의 한 단계일 뿐, UUID와 서버 상태, 프로토콜 유형을 확인하는 일을 대신하지 않습니다.
결론: 인증 정보의 출처를 확인한 다음 필드 형식을 점검하세요
유효한 설정 하나를 기준으로 삼으세요. UUID나 alterId가 일치하지 않으면 먼저 설정을 다시 가져오거나 원래 매개변수를 확인하세요. 형식이 올바르다고 인증까지 유효한 것은 아닙니다.
flow와 TLS: flow 설정과 서버 인증을 따로 확인하기
flow는 일부 VLESS 조합에서 사용하는 흐름 매개변수이지 속도 단계가 아닙니다. 흔히 쓰이는 xtls-rprx-vision 값은 클라이언트가 지원해야 하며 서버의 전송 및 보안 설정과 함께 맞춰야 합니다. 서버에서 요구하지 않는다면 화면에 옵션이 있다는 이유만으로 입력하지 마세요.
TLS는 외부 연결을 암호화하고 서버 신원을 확인합니다. 연결 주소는 도메인일 수도, IP 주소일 수도 있습니다. TLS에서 사용하는 서버 이름은 보통 SNI와 인증서 검증에 사용됩니다. 연결 주소, TLS 서버 이름, WebSocket Host는 같을 수도 있고 서버 구성에 따라 다를 수도 있으므로 각각 확인해야 합니다.
- 먼저 TLS 사용 여부를 확인하세요: 서버에서 TLS를 요구한다면 클라이언트도 일반 평문 연결로 처리하면 안 됩니다. 반대로 TLS가 설정되지 않은 포트에 임의로 TLS를 활성화해서도 안 됩니다.
- 다음으로 서버 이름을 확인하세요: 인증서는 설정에서 요구하는 이름을 포함해야 합니다. IP 주소로 연결한다고 해서 서버 이름도 해당 IP로 바꿔야 하는 것은 아닙니다.
- 전송 매개변수를 확인하세요: WebSocket을 사용한다면 Host와 path가 일치해야 합니다. 예시 경로
/example-ws는 필드의 역할을 설명하기 위한 것으로 실제 연결에 그대로 사용할 수 없습니다. - 마지막으로 flow를 확인하세요: 서버가 명시한 값만 사용하고, 다른 VLESS 설정의 flow를 복사하지 마세요.
Add Server 확인 순서: 한 번에 한 가지 매개변수 묶음만 검증하기
Shadowrocket의 Home 화면에서 Add Server로 이동한 다음, 기존 설정과 일치하는 프로토콜 유형을 선택하고 필드를 입력하세요. 프로토콜과 선택한 전송 방식에 따라 표시되는 옵션이 달라집니다. 아래 순서는 확인 절차를 위한 것이며 모든 필드가 한 화면에 표시되는 것은 아닙니다.
- 주소와 포트: 원래 서버 주소와 수신 포트를 입력하세요.
example.com:443은 예시용 값일 뿐입니다. TLS를 사용한다는 이유만으로 기존 포트를443으로 자동 변경하면 안 됩니다. - 프로토콜과 인증 정보: VMess와 VLESS 중 무엇을 사용하는지 확인하고 UUID를 붙여 넣으세요. VMess는 암호화 옵션과 alterId도 확인합니다. VLESS에는 VMess의 alterId를 가져다 쓸 필요가 없습니다.
- 전송 방식: 기존 설정에 따라 TCP, WebSocket 등 실제 전송 방식을 선택하세요. Host나 path 같은 추가 매개변수가 있다면 하나씩 대조하고, 경로 앞의 슬래시를 유지하세요.
- 보안 설정: TLS, 서버 이름, 인증서 검증을 확인하세요. VLESS에 flow가 지정되어 있다면 값과 관련 조건도 점검하세요.
- 저장 및 테스트: Home으로 돌아가 해당 설정을 선택하고 VPN 설정 권한이 완료되었는지 확인한 뒤 연결하여 실제 대상에 접속해 보세요. 여러 필드를 동시에 바꾸지 말고 실패한 단계를 기록하세요.
이미 보유한 구독을 사용하는 경우 가져온 원래 필드를 우선 유지하세요. 구독을 업데이트하면 항목이 다시 생성되어 수동 변경 사항이 덮어써질 수 있습니다. 비교하며 문제를 확인하려면 먼저 차이를 기록하세요. 구독 주소는 설정 묶음을 가져오는 주소이지 Add Server의 서버 주소가 아니므로 구독 URL 전체를 서버 주소 입력란에 붙여 넣으면 안 됩니다.
Home에서는 주로 연결을 선택하고 상태를 확인하며, Config에서는 구성 파일을 관리하고, Settings에서는 앱을 설정합니다. 구독 항목 업데이트와 Config의 규칙 파일 업데이트는 서로 다른 작업입니다. 전자는 서버 매개변수를 바꿀 수 있고 후자는 트래픽 매칭과 정책을 변경하므로 서로 대신할 수 없습니다.
연결 테스트와 라우팅 모드: 규칙 문제를 프로토콜 문제로 오인하지 않기
Home → Connectivity Test에서 연결 상태를 확인할 단서를 얻을 수 있지만, 지연 시간 결과 한 번으로 서비스가 정상 작동한다고 볼 수 없으며 VMess와 VLESS의 처리량을 직접 비교할 수도 없습니다. 테스트 방식이 연결의 일부만 확인할 수 있으므로 실제 웹페이지나 대상 서비스에 접속해 함께 검증하세요.
Config: 현재 규칙으로 확인하기
권장Home → Global Routing에서 Config를 선택하면 트래픽이 현재 구성 규칙에 따라 처리됩니다. 대상 트래픽에 프록시 정책이 실제로 적용되는지 확인한 다음 연결 상태를 판단하세요.
적합한 경우: 올바른 규칙을 이미 사용하는 일상적인 연결과 문제 해결 후 재확인.
Proxy: 일반 규칙의 영향을 분리하기
일시적으로 Proxy로 전환하면 일반적인 분할 라우팅 규칙이 테스트에 미치는 영향을 줄일 수 있습니다. 그래도 현재 선택된 서버를 확인하고 연결 스위치만 보지 말고 실제 접속으로 검증해야 합니다.
적합한 경우: 짧은 테스트로 서버 매개변수 문제와 규칙 선택 문제를 구분할 때.
Direct: 기본 네트워크 확인하기
Direct는 직접 연결을 사용하므로 VMess나 VLESS가 작동하는지 판단하는 데 적합하지 않습니다. 현재 네트워크의 기본 연결 상태를 확인하는 데 활용할 수 있습니다.
적합한 경우: 기본 네트워크 상태를 비교할 때. 프록시 프로토콜 인증 확인에는 사용하지 않습니다.
Global Routing의 Scene은 설정된 시나리오에 따라 라우팅 동작을 결정하며, 세 번째 프록시 프로토콜이 아닙니다. 테스트 조건을 일정하게 유지하려면 현재 라우팅 모드를 먼저 확인하세요. 연결을 끊은 뒤 다시 자동으로 연결된다면 Settings → On Demand도 확인하세요. 자동 연결 동작은 UUID, alterId, flow와 관계가 없습니다.
결론: 라우팅 모드만 바꾸고 서버 필드는 동시에 수정하지 마세요
같은 설정이 Proxy에서는 접속되고 Config에서는 실패한다면 규칙 매칭과 정책 대상을 먼저 확인하세요. 두 모드 모두 실패한다면 주소, TLS, 인증, 전송 매개변수 순으로 확인하세요.
자주 묻는 질문: 실패 증상에 따라 필드 확인하기
UUID가 같은데 VMess를 VLESS로 바꾸면 왜 연결되지 않나요?
UUID는 인증 정보의 일부일 뿐 서버가 어떤 프로토콜을 허용하는지는 결정하지 않습니다. 원래 유형으로 되돌린 다음 원래 설정 제공자에게 별도의 VLESS 연결 지점이 있는지 확인하고 해당 포트, TLS, flow를 점검하세요. 유형만 바꿔 프로토콜을 전환할 수는 없습니다.
VLESS에 none이라고 표시됩니다. 암호화 방식을 다른 값으로 바꿔야 하나요?
먼저 none이 표시된 필드를 확인하세요. VLESS 프로토콜 계층의 encryption을 뜻한다면 일반적인 설정입니다. TLS 같은 외부 보호 계층을 계속 확인하되 VMess의 암호화 값을 VLESS에 옮기지 마세요. 원래 설정에 다른 보안 방식이 사용된다면 관련 매개변수도 모두 그대로 유지해야 합니다.
지연 시간은 표시되는데 웹페이지가 열리지 않아요. 무엇부터 확인해야 하나요?
먼저 현재 서버와 Global Routing 설정을 확인한 다음 실제 대상에 접속해 보세요. TLS 오류가 발생하면 서버 이름, 기기 시간, 인증서를 확인하세요. 특정 사이트만 실패한다면 규칙과 DNS를 확인하세요. 지연 시간 결과만으로 UUID나 flow를 점검 대상에서 제외하지 마세요.
구독을 업데이트한 뒤 직접 입력한 flow 값이 바뀌었어요. 어떻게 해야 하나요?
업데이트 전후의 필드와 항목 이름을 기록하고 수정한 항목이 같은 설정인지 확인하세요. 구독의 최신 내용과 원래 설정 제공자의 안내를 기준으로 삼으세요. 별도로 테스트해야 한다면 독립된 사본을 만들어 다음 업데이트 때 테스트 매개변수가 다시 덮어써지지 않도록 하세요.
VMess와 VLESS의 실제 성능은 네트워크 경로, 서버 부하, 외부 전송 방식, 대상 서비스에도 영향을 받습니다. 같은 조건에서 측정하지 않았다면 특정 프로토콜이 항상 더 빠르다고 단정할 수 없습니다. 문제를 확인할 때는 오류 메시지와 필드 차이만 기록하고 UUID 전체, 구독 토큰, 기타 액세스 인증 정보는 공개하지 마세요.