2026-08-06 · 프로토콜 기초 · 약 8분

VMess와 VLESS 차이: v2rayNG 프로토콜 가이드

VMess와 VLESS의 암호화, 추가 ID, 전송 방식, REALITY 호환성을 비교하고 노드 가져오기 시 확인할 항목을 정리했습니다.

이 글의 핵심

v2rayNG에서 노드 편집 화면을 열고 프로토콜부터 전송 방식과 보안 설정까지 확인하세요. VMess는 자체 데이터 암호화 방식을 사용하며, 일반적인 VLESS 설정은 TLS나 REALITY로 연결을 보호합니다. 구독을 받은 뒤 설정 항목을 확인하려는 Android 사용자를 위해 추가 ID, SNI, 전송 경로, flow를 설명하고 가져오기 오류와 연결 문제를 구분하는 방법을 안내합니다.

노드 편집 화면에서 프로토콜, 전송 방식, 보안 계층 구분하기

v2rayNG 메인 화면에서 노드를 찾은 다음 해당 항목의 편집 아이콘을 눌러 상단의 프로토콜과 아래쪽 연결 매개변수를 확인하세요. 버전에 따라 항목 순서는 다를 수 있지만 서버 주소와 포트, 사용자 ID, 전송 방식, 전송 계층 보안 순으로 확인하면 됩니다. 확인 후 명확한 수정 근거가 없다면 입력값을 저장하지 말고 화면을 닫으세요.

VMess와 VLESS는 프록시 프로토콜이고 TCP, WebSocket, gRPC는 전송 방식이며 TLS와 REALITY는 연결 보안 관련 설정입니다. 서로 같은 계층에서 대체할 수 있는 항목이 아닙니다. 노드에 VLESS라고 표시되어 있어도 어떤 전송 방식을 사용하는지 알 수 없고, REALITY가 활성화되어 있다고 단정할 수도 없습니다.

확인 항목VMessVLESS
사용자 인증 정보일반적으로 UUID 사용일반적으로 UUID 사용
프로토콜 데이터 암호화자체 데이터 암호화 방식 지원일반적인 설정은 encryption이 none이며 외부 계층으로 보호
추가 ID최신 AEAD 설정에서는 0 사용해당 항목 없음
일반적인 연결 조합VMess + WebSocket + TLSVLESS + TCP + REALITY 또는 WebSocket + TLS
가져오기 시 확인할 항목추가 ID, 암호화 옵션, 전송 설정보안 계층, flow 및 관련 보안 매개변수

구독은 설정을 배포하는 수단이지 네 번째 프로토콜이 아닙니다. 하나의 구독에 두 종류의 노드가 모두 포함될 수 있습니다. 라우팅 규칙은 연결별로 사용할 출구를 정할 뿐 VMess를 VLESS로 자동 변환하지 않습니다. 앱별 프록시는 클라이언트로 들어오는 트래픽의 범위만 바꿉니다.

암호화 방식이 다르다고 해서 VLESS의 보안 설정을 생략해도 되는 것은 아닙니다

VMess 편집 화면에서 ‘암호화 방식’을 확인하면 보통 auto 등의 옵션이 표시됩니다. VMess 프로토콜 자체의 암호화와 외부 TLS는 별개입니다. 프로토콜이 자체 암호화를 제공하더라도 서버에서 WebSocket과 TLS를 함께 요구할 수 있습니다. TLS 설정을 삭제해도 연결이 더 직접적으로 바뀌는 것은 아닙니다. 오히려 서버가 요청을 받지 못할 수 있습니다.

일반적인 VLESS 설정에서 encryption=none은 프로토콜 자체에서 해당 계층의 데이터 암호화를 하지 않는다는 뜻이지, 연결 전체가 보호되지 않는다는 뜻은 아닙니다. ‘전송 계층 보안’에서 서버가 요구하는 TLS 또는 REALITY가 설정되어 있는지 확인하세요. none만 보고 ‘인증서 검증 건너뛰기’를 켜면 계층 문제는 해결되지 않고 TLS의 신원 확인만 약화됩니다.

서버에서 전체 매개변수를 제공한 VLESS 설정

권장

새 설정을 사용할 수 있고 매개변수가 모두 갖춰져 있다면 서버에서 제공한 TLS 또는 REALITY 조합을 그대로 가져오세요. 보안 계층, SNI, flow를 유지하고 주소와 UUID만 복사하지 마세요.

추천 상황: 새 연결을 만들고 현재 v2rayNG 코어가 해당 구독을 지원하는 경우

안정적으로 작동 중인 VMess AEAD

현재 프로토콜과 전송 설정을 유지하세요. 연결 문제가 없다면 이름만 최신으로 바꾸려고 VLESS로 수동 전환할 필요는 없습니다. 프로토콜을 바꾸려면 서버에서도 해당 설정을 지원해야 합니다.

추천 상황: 기존 구독이 주로 VMess를 사용하고 일상적인 연결이 안정적인 경우

판단 기준: 프로토콜 이름만 고르지 말고 설정 전체를 가져올 수 있는 조합을 선택하세요

VLESS 노드에 REALITY 공개 키 등 필수 정보가 빠져 있다면 먼저 구독을 갱신하거나 제공 업체에 전체 설정을 요청하세요. 다른 노드의 매개변수를 가져와 채우지 마세요. 이미 작동하는 VMess는 비교용 연결로 계속 사용할 수 있습니다.

추가 ID 입력 방법: 최신 VMess에서는 보통 0

VMess 노드 편집 화면을 열고 ‘추가 ID’ 또는 alterId 항목을 찾으세요. 최신 VMess AEAD 설정에서는 0을 사용합니다. 예전 안내에서 자주 보이는 64는 과거 설정에 해당하며, 호환성이나 속도를 높이는 보편적인 값이 아닙니다. 이전 인증 방식 지원 여부는 현재 코어 버전에 따라 달라질 수 있습니다.

0
최신 VMess AEAD의 추가 ID
36
하이픈을 포함한 표준 UUID의 문자 수
443
일반적인 TLS 서버 포트이며 고정값은 아님

이 세 숫자는 각각 인증 방식, 식별자 형식, 네트워크 진입점을 뜻하며 서로 유추할 수 없습니다. UUID 길이가 맞아도 계정이 유효하다는 보장은 없고, 포트가 443이라고 해서 서버에서 TLS를 사용한다고 단정할 수 없습니다. 포트는 구독에 지정된 값을 따르세요. TLS라는 이유만으로 다른 포트를 443으로 바꾸지 마세요.

WebSocket, TLS, REALITY: 서버 설정 조합에 맞춰 항목별로 확인하기

노드 편집 화면에서 ‘전송 방식’과 ‘전송 계층 보안’을 펼쳐 확인하세요. WebSocket 노드는 경로와 Host를, TLS 노드는 서버 이름인 SNI를 확인해야 합니다. 서버 주소는 연결 지점을 찾는 데 쓰이고, SNI는 핸드셰이크에서 대상 서버 이름을 알리며, WebSocket Host는 HTTP 요청에 포함됩니다. 세 항목은 같을 수도 있고 서버 구성에 따라 다를 수도 있습니다.

자주 사용하는 두 가지 설정 조합 확인 방법

VMess + WebSocket + TLS
  • 프로토콜이 VMess인지 확인하고 추가 ID가 서버 설정과 일치하는지 확인하세요.
  • 전송 방식은 WebSocket으로 설정하고 경로 맨 앞의 슬래시를 유지하세요.
  • Host와 SNI는 각각 제공된 값으로 입력하세요. 이름이 비슷하다는 이유로 서로 바꾸면 안 됩니다.
  • TLS 인증서 검증은 켜 둔 상태로 유지하고 도메인이 인증서 조건에 맞는지 확인하세요.
VLESS + TCP + REALITY
  • 보안 계층이 일반 TLS가 아니라 REALITY로 설정되어 있는지 확인하세요.
  • 서버 이름, 공개 키, shortId, 지문 요구사항을 각각 확인하세요.
  • 서버에서 Vision을 요구하면 flow에 x­tls-rprx-vision의 올바른 설정값을 사용하세요.
  • 다른 WebSocket 노드의 경로나 Host를 추가하지 마세요.

위 항목은 자주 사용하는 두 가지 조합의 예시이며, 가능한 조합을 모두 나열한 것은 아닙니다. 실제 매개변수는 서버 설정과 코어 지원 여부를 따르세요.

REALITY는 일반 TLS 설정에서 스위치 하나만 바꾸면 사용할 수 있는 기능이 아닙니다. 클라이언트의 공개 키는 서버의 개인 키와 짝이 맞아야 하고, shortId는 서버가 허용한 값이어야 하며, 서버 이름도 서버 요구사항에 맞아야 합니다. 서버 구성에 따라 shortId를 비워 둘 수 있으므로 빈 값만으로 설정 오류라고 판단할 수는 없습니다.

Vision을 사용하는 VLESS 노드에서 흔히 쓰는 flow 값은 xtls-rprx-vision입니다. 이는 암호화 알고리즘 이름이 아니며 임의의 WebSocket 설정에 복사해 넣어도 되는 값이 아닙니다. VMess에 이 flow를 입력해도 VLESS + REALITY로 바뀌지 않습니다. 인식되지 않는 항목이 있으면 먼저 클라이언트와 코어의 지원 여부를 확인한 뒤 구독이 해당 클라이언트용으로 생성되었는지 확인하세요.

가져온 뒤 연결되지 않을 때: 실패 단계부터 확인하고 프로토콜을 살펴보세요

v2rayNG에서 오른쪽 위 ‘+’ → ‘클립보드에서 가져오기’를 눌러 공유 링크를 가져올 수 있습니다. 구독은 사이드 메뉴에서 ‘구독 그룹 설정’으로 이동해 그룹을 추가하고 주소를 저장한 다음, 메인 화면 메뉴에서 구독을 업데이트하세요. 버전에 따라 ‘구독 업데이트’ 또는 업데이트 방식이 포함된 메뉴로 표시될 수 있습니다. 링크를 붙여넣는 데 성공했다는 것은 클라이언트가 내용을 해석했다는 뜻일 뿐, 계정과 서버, 네트워크가 모두 정상이라는 의미는 아닙니다.

  1. 가져온 설정 확인: 새 항목의 편집 화면을 열고 프로토콜, 포트, UUID, 전송 방식, 보안 계층을 대조하세요. 노드 이름만 보지 마세요. 이름에 ‘VLESS’라고 적혀 있어도 실제 프로토콜 설정을 대신할 수는 없습니다.
  2. 연결을 시작한 뒤 로그 확인: 사이드 메뉴에서 ‘로그’를 여세요. 코어가 시작되기 전에 설정 항목이나 구성 오류가 표시되면 먼저 호환성 문제를 해결하세요. 이 단계에서는 지연 시간을 반복 측정해도 큰 의미가 없습니다.
  3. 연결 오류와 핸드셰이크 오류 구분: 연결 시간 초과가 발생하면 서버 접근성과 포트를 확인하세요. 인증서나 핸드셰이크 오류가 나면 기기 시간, SNI, 인증서, 보안 계층 설정을 확인하세요. 오류 문구는 단서일 뿐이므로 전체 상황과 함께 판단해야 합니다.
  4. 마지막으로 트래픽 전달 범위 확인: 노드는 연결되지만 특정 앱이 작동하지 않는다면 VPN 권한, 앱별 프록시, 라우팅 규칙을 확인하세요. 앱이 제외되어 있다면 VMess나 VLESS로 바꿔도 자동으로 프록시를 사용하지 않습니다.

VMess 노드를 VLESS로 바로 바꿀 수 있나요?

클라이언트의 프로토콜만 바꿔서는 안 됩니다. 먼저 서버에서 VLESS 연결 지점과 전체 매개변수를 제공받은 다음 새 항목으로 가져오세요. 되돌리거나 비교할 수 있도록 기존 노드는 유지하세요.

VLESS에 none이라고 표시되는데 암호화 설정이 빠진 건가요?

먼저 none이 어느 항목에 표시되는지 확인하세요. 프로토콜의 encryption 항목이라면 TLS나 REALITY 설정도 살펴보세요. 전송 계층 보안도 비어 있다면 임의로 추측하지 말고 제공 업체에 구성 방식을 문의하세요.

REALITY를 가져온 뒤 계속 핸드셰이크에 실패하면 인증서 검증을 꺼야 하나요?

인증서 검증을 건너뛰는 방법으로 문제를 해결하려 하지 마세요. 구독에 나온 서버 이름, 공개 키, shortId, 지문, flow를 확인한 뒤 코어 지원 여부와 서버 상태를 점검하세요.

같은 구독이 데스크톱에서는 되는데 Android에서는 왜 안 되나요?

먼저 v2rayN과 v2rayNG에서 이름이 같은 노드의 실제 설정과 업데이트 시간을 비교한 다음 Android의 VPN 권한과 앱별 규칙을 확인하세요. 이름이 같더라도 같은 시점에 구독을 업데이트한 항목이라고 단정할 수 없습니다.

프로토콜 선택 기준: 안정적인 노드는 유지하고 동일한 조건에서 테스트하세요

‘가볍다’는 이유만으로 VLESS가 반드시 더 빠르다고 단정할 수는 없습니다. 실제 성능은 회선 혼잡도, 서버 부하, 전송 방식, 대상 사이트에도 영향을 받습니다. 지역과 연결 지점이 다른 노드 두 개를 한 번 측정한 결과만으로 프로토콜 성능을 비교할 수 없습니다.

실제로 설정을 관리할 때는 ‘프로토콜, 전송 방식, 보안 계층’을 하나의 구성으로 다루세요. 먼저 구독을 업데이트하고 항목을 확인한 다음 라우팅과 앱별 프록시를 조정하면 됩니다. 이렇게 하면 작동하는 연결을 유지하면서 서버 설정 문제를 특정 프로토콜의 불안정성으로 오해하는 일을 줄일 수 있습니다.

클라이언트 다운로드v2rayNG / v2rayN