VMess와 VLESS는 프록시 프로토콜이지 클라이언트 이름이 아닙니다. VMess는 일반적으로 프로토콜 계층에서 데이터를 암호화합니다. 반면 흔히 사용하는 VLESS 설정은 encryption=none으로 두고 TLS 또는 REALITY가 연결을 보호하도록 구성합니다. 프로토콜을 고를 때는 먼저 서버가 어떤 방식을 제공하는지 확인한 다음 전송 방식, 인증 항목, 코어 지원 여부를 살펴보세요. 클라이언트에서 프로토콜 이름만 바꾸면 되는 것이 아닙니다. 구독을 가져오거나 노드를 직접 입력하는 사용자, VMess에서 VLESS로 바꿔야 할지 고민하는 사용자에게 도움이 되는 내용입니다.
1분 비교: 프로토콜·암호화·전송은 서로 다른 계층
노드 설정은 세 부분으로 나눠 보면 이해하기 쉽습니다. VMess 또는 VLESS는 프록시 요청과 사용자 인증을 담당하고, TCP나 WebSocket 같은 전송 방식은 데이터를 실어 나르며, TLS 또는 REALITY는 해당 연결의 보안을 담당합니다. 이들은 서로 배타적인 선택지가 아닙니다. 따라서 VMess + WebSocket + TLS 조합도, VLESS + TCP + REALITY 조합도 사용할 수 있습니다.
v2rayN은 데스크톱 클라이언트이고, v2rayNG는 Xray 코어를 사용하는 Android 클라이언트이며, v2flyNG는 v2fly 코어를 사용하는 Android 클라이언트입니다. 클라이언트에서 링크를 가져올 수 있다고 해서 현재 코어가 링크의 모든 조합을 지원하는 것은 아닙니다. 특히 REALITY나 flow 같은 옵션은 코어 구현과 버전을 확인해야 합니다.
| 비교 항목 | VMess | VLESS |
|---|---|---|
| 사용자 인증 정보 | 일반적으로 UUID 사용 | 일반적으로 UUID 사용 |
| 일반적인 데이터 암호화 | 프로토콜 계층에서 AES-GCM, ChaCha20-Poly1305 등을 사용할 수 있음 | 일반적인 설정은 none이며, 외부 보안 계층에 의존 |
| 시간 의존성 | 인증 과정에서 시간 검증을 수행하므로 시스템 시각이 정확해야 함 | 기본 인증은 VMess의 시간 윈도우 방식을 사용하지 않음 |
| 추가 설정 항목 | security, alterId 등. 최신 설정에서는 보통 alterId=0 | encryption, flow 및 TLS 또는 REALITY 관련 항목 |
| 전환 조건 | 서버에 해당 프로토콜의 접속 지점이 마련되어 있어야 함. 클라이언트 유형만 바꿔서는 안 됨 | |
암호화 차이: VLESS의 none이 연결 전체의 평문을 뜻하지는 않습니다
VMess의 프로토콜 계층 암호화와 외부 TLS는 서로 다른 기능입니다. 예를 들어 VMess + WebSocket + TLS 구성에서는 VMess가 프록시 데이터를 암호화하고, TLS는 클라이언트에서 TLS 종료 지점까지의 연결을 보호합니다. 보안 관련 옵션이 두 개 보이더라도 같은 설정을 중복 입력하는 것으로 이해하면 안 됩니다.
흔히 사용하는 VLESS 설정에서 encryption=none은 이 계층에서 별도의 데이터 암호화를 사용하지 않는다는 뜻이지 TLS를 끈다는 뜻은 아닙니다. VLESS + TLS를 사용할 때는 서버 주소, 포트, serverName을 정확히 입력해야 합니다. REALITY를 사용할 때는 서버에서 제공한 공개 키와 shortId 등의 값을 맞춰야 합니다. 최신 버전 구현에서는 암호화 기능이 추가될 수 있으므로, 실제 설정 항목은 구독 정보와 양쪽 코어의 문서를 확인하세요. 오래된 가이드 하나를 모든 버전에 적용되는 규칙으로 받아들이면 안 됩니다.
설정 확인: 프로토콜 항목과 보안 항목 구분하기
VMess + WebSocket + TLS
- 프로토콜 계층에서 UUID, security, alterId를 확인합니다.
- 전송 계층에서 WebSocket의 path와 Host를 확인합니다.
- TLS 계층에서 serverName과 인증서 유효성을 확인합니다.
VLESS + TCP + REALITY
- 프로토콜 계층에서 UUID, encryption, 서버가 요구하는 flow를 확인합니다.
- 보안 계층에서 serverName, 공개 키, shortId를 확인합니다.
- 양쪽 코어가 해당 조합을 지원하는지 확인하고, WebSocket 설정 항목을 임의로 적용하지 마세요.
구독 설정을 계층별로 확인하세요. 인증서 오류나 핸드셰이크 오류가 발생하면 먼저 보안 설정을 바로잡고, 인증서 검증을 건너뛰어 문제를 감추지 마세요.
성능 차이: 프로토콜 오버헤드보다 회선부터 비교하세요
VLESS는 기본 프로토콜 설계가 비교적 가볍고, 흔히 사용하는 설정에서는 VMess보다 일부 프로토콜 처리와 암호화 작업이 줄어듭니다. 하지만 실제 다운로드 속도는 서버 부하, 왕복 지연 시간, 패킷 손실, 대역폭 한도, 전송 조합, 기기의 암호화 연산 성능에 따라 달라집니다. 따라서 VLESS가 항상 일정 수준 더 빠르다고 단정할 수 없습니다. 서로 다른 지역의 서버 두 대를 비교한 뒤 차이를 전부 프로토콜 탓으로 돌려서도 안 됩니다.
검증된 설정 그대로 사용하기
권장현재 노드가 안정적이고 속도도 충분하다면 기존 설정을 유지하세요. 전환 여부는 서버 지원, 유지 관리 계획, 실제 비교 결과를 기준으로 판단하면 됩니다.
추천 대상: 사용 가능한 구독이 있고 일상적인 안정성이 가장 중요한 경우
VLESS 접속 지점 비교 테스트
서버에서 두 프로토콜을 모두 제공한다면 같은 기기와 네트워크를 사용해 비슷한 시간대에 비교하세요. 전송 방식과 보안 조합도 기록해 회선 차이를 프로토콜의 장점으로 오해하지 않도록 합니다.
추천 대상: 서버 관리 권한이 있거나 구독에서 비교 가능한 두 프로토콜 접속 지점을 제공하는 경우
- 같은 대상 파일로 테스트하고 연결 시간, 다운로드 속도 유지 상태, 연결 끊김 여부를 각각 기록하세요.
- 각 설정을 3회씩 번갈아 테스트하고, 테스트 중에는 다른 대용량 작업을 일시 중지하세요.
- 한쪽 설정에서만 서버, 전송 방식 또는 라우팅을 바꿨다면 결과를 ‘전체 설정 차이’로 기록하세요. ‘프로토콜 성능 차이’로 기록하면 안 됩니다.
결론: 안정적인 노드는 프로토콜 이름만 보고 바꿀 필요가 없습니다
비교 테스트에서 개선 효과가 반복해서 확인되고 새 설정의 보안 항목과 코어 호환성까지 검증된 경우에만 일상적으로 사용하는 접속 지점을 교체하세요. 문제가 생겼을 때 되돌릴 수 있도록 기존 설정은 남겨 두세요.
설정 항목: alterId, 포트, flow 입력 방법
신뢰할 수 있는 출처의 구독을 가져오는 편이 항목을 하나씩 직접 입력하는 것보다 실수할 가능성이 낮습니다. 직접 설정할 때는 먼저 VMess와 VLESS 중 어떤 프로토콜인지 확인한 뒤 해당 노드 편집 화면으로 이동하세요. 클라이언트 버전에 따라 한국어 메뉴 이름은 달라질 수 있지만 프로토콜, 주소, 포트, 사용자 ID, 전송, 보안 항목의 대응 관계는 같습니다.
위 숫자는 각각 용도가 다릅니다. alterId=0은 최신 VMess AEAD 설정과 관련된 값이지 포트가 아닙니다. 443은 흔히 쓰이는 원격 접속 포트지만 다른 값일 수도 있습니다. 127.0.0.1:10808은 로컬 앱이 프록시에 연결할 때 사용하는 주소 예시일 뿐이며, 실제 값은 클라이언트의 수신 설정을 확인해야 합니다. 로컬 포트를 원격 노드 설정에 입력하는 것은 ‘항목은 다 채운 것 같은데 연결되지 않는’ 흔한 원인입니다.
- VMess: UUID는 제공된 내용을 빠짐없이 복사하세요. security의
auto와 VLESS의none은 서로 다른 값입니다. 오래된 화면을 보고 alterId를 임의로 추가하지 마세요. - VLESS: 일반적인 설정의 encryption 값은
none입니다. flow는 서버에서 요구하는 경우에만 입력하세요. 예를 들어xtls-rprx-vision을 모든 VLESS 노드에 임의로 추가하면 안 됩니다. - WebSocket: Host는 HTTP 요청 헤더이고 path는 요청 경로입니다. TLS의 serverName과 용도가 다릅니다. 일부 설정에서 같은 도메인을 사용하더라도 각각 따로 확인하세요.
- REALITY: 공개 키, shortId, serverName, 클라이언트 핑거프린트 등은 서버 요구 사항에 맞춰 입력하세요. 일반 TLS 노드의 인증서 설정을 그대로 가져와서는 안 됩니다.
구독 주소, 전체 공유 링크, UUID는 민감 정보로 취급해야 합니다. 도움을 요청할 때는 프로토콜 유형, 전송 방식, 오류 키워드를 공유하고 전체 링크나 구독 QR 코드는 공개하지 마세요.
시간 검증: VMess 인증이 갑자기 실패하는 이유
VMess 인증 과정에서는 시간 관련 정보를 사용합니다. 클라이언트와 서버의 시각이 크게 다르면 UUID가 바뀌지 않았더라도 인증에 실패할 수 있습니다. 확인할 것은 시간대 표시가 아니라 시스템의 실제 시각입니다. 시간대 이름이 다르더라도 같은 시각을 나타내면 보통 문제가 되지 않지만, 시계를 몇 분 앞당기거나 늦추면 인증에 영향을 줄 수 있습니다.
VLESS의 기본 인증은 VMess의 시간 윈도우 방식에 의존하지 않습니다. 그렇다고 VLESS에서 시스템 시간을 무시해도 된다는 뜻은 아닙니다. TLS 인증서에는 유효 시작일과 만료일이 있고, 다른 핸드셰이크 방식에서도 시간 관련 정보가 사용될 수 있습니다. 기기의 시간을 정확하게 맞추는 것은 두 프로토콜 모두 기본적인 문제 해결 단계입니다.
- Windows: ‘설정’ → ‘시간 및 언어’ → ‘날짜 및 시간’에서 자동으로 시간 설정을 켜고 ‘지금 동기화’를 선택하세요.
- Android: 시스템 설정에서 ‘날짜 및 시간’을 검색하고 자동 시간 설정을 켜세요. 메뉴 위치는 기기마다 다를 수 있습니다.
- 서버: 관리 권한이 있다면 시간 동기화 서비스가 정상적으로 작동하는지 확인하세요. 권한이 없다면 인증 오류가 발생한 시각과 증상을 서비스 제공업체에 알려 주세요.
- 동기화 후 재테스트: 같은 노드에 다시 연결한 다음 클라이언트 로그를 확인하세요. 계속 실패한다면 UUID, 서버 포트, 전송 설정을 차례로 확인하고 암호화 옵션을 무작정 바꾸지 마세요.
자주 묻는 질문: 구독 전환과 연결 오류 해결
VMess 노드를 VLESS로 바꾸면 바로 사용할 수 있나요?
아니요. 서버에 VLESS 접속 지점이 설정되어 있고 해당 포트, 사용자 인증 정보, 전송 방식, 보안 설정이 제공되어야 합니다. 서비스 제공업체가 안내한 VLESS 공유 링크를 가져오거나 구독을 업데이트하세요. 기존 노드에서 프로토콜 드롭다운만 바꾸면 안 됩니다.
VLESS를 가져오는 데 성공했는데 왜 연결되지 않나요?
가져오기에 성공했다는 것은 클라이언트가 설정을 읽었다는 뜻일 뿐입니다. 먼저 로그에서 연결 시간 초과, 인증서 검증 실패, 인증 오류가 있는지 확인한 뒤 원격 주소와 포트, serverName과 보안 설정, UUID와 flow를 각각 살펴보세요. REALITY를 사용한다면 공개 키와 shortId, 현재 코어의 지원 여부도 확인해야 합니다.
v2rayNG에서 쓸 수 있는 구독이면 v2flyNG에서도 사용할 수 있나요?
꼭 그렇지는 않습니다. 두 클라이언트는 서로 다른 계열의 코어를 사용하므로, 둘 다 구독을 가져올 수 있다는 이유만으로 기능 지원이 같다고 볼 수 없습니다. 특히 Xray 전용 조합을 사용하는 경우에는 먼저 대상 코어의 지원 여부를 확인하세요. v2flyNG에서는 서비스 제공업체가 명시적으로 제공하고 코어가 지원하는 설정을 사용해야 하며, 중요한 항목을 삭제해 억지로 실행하려고 해서는 안 됩니다.
연결됨으로 표시되는데 브라우저에서 웹페이지가 열리지 않아요. 프로토콜을 잘못 선택한 건가요?
꼭 그렇지는 않습니다. 먼저 시스템 프록시 또는 TUN이 필요한 대로 활성화되어 있는지 확인하고, 브라우저가 프록시를 사용하는지, DNS가 정상인지, 라우팅이 대상 트래픽을 올바른 아웃바운드로 보내는지 살펴보세요. 로그에 로컬 수신 포트가 이미 사용 중이라고 표시되면 포트 충돌부터 해결해야 합니다. 트래픽이 클라이언트로 들어오는지 확인하기 전에 프로토콜부터 바꾸지 마세요.
일상적인 사용에서는 구독 출처의 신뢰성, 설정 항목의 완전성, 코어 호환성을 먼저 확인한 다음 오버헤드와 속도를 비교하세요. 프록시 모드와 라우팅 설정을 구분하는 방법은 클라이언트 사용 가이드에서 확인할 수 있습니다. 주소 해석 실패나 접속 이상이 발생하면 DNS 문제 해결 안내를 참고해 로컬 네트워크 문제를 VMess 또는 VLESS 자체의 문제로 오해하지 않도록 하세요.