VMess와 VLESS는 모두 사용자 ID를 사용하지만 인증 방식과 암호화 역할은 다릅니다. UUID, alterId, security, flow를 살펴보며 노드 편집 화면의 항목 중 프로토콜에 속하는 것과 전송 계층에 속하는 것을 구분하고, v2rayN에서 확인할 순서도 안내합니다. 구독을 받은 뒤 노드 매개변수를 직접 점검하려는 사용자에게 적합합니다.
VMess와 VLESS 비교: 프로토콜, 전송, 보안 계층 구분하기
노드 이름에 표시된 “VMess + WebSocket + TLS”는 서로 같은 계층의 프로토콜 세 가지가 아닙니다. VMess는 프록시 프로토콜의 인증과 데이터 캡슐화를 담당하고, WebSocket은 전송 방식이며, TLS는 외부 연결을 보호합니다. VLESS도 이 세 계층을 나누어 이해해야 합니다. 편집 화면에서 프로토콜만 VMess에서 VLESS로 바꾸고 나머지는 그대로 두면 서버가 연결을 받아들일 거라고 기대할 수 없습니다.
아래 표는 일반적인 VMess AEAD와 기존 encryption: "none" VLESS 설정을 기준으로 합니다. 최신 코어에서는 항목이나 기능이 추가될 수 있으므로 실제 사용 시에는 서버에서 제공한 전체 매개변수와 양쪽 코어의 지원 여부를 확인하세요.
| 비교 항목 | VMess | VLESS |
|---|---|---|
| 사용자 식별 | 사용자 ID를 사용하며, 보통 UUID 형식입니다. | 대개 UUID를 사용하지만 실제 인증 절차는 다릅니다. |
| alterId | 과거 호환을 위한 매개변수이며, 최신 AEAD 설정에서는 보통 0입니다. | 해당 항목이 없으므로 VMess 설정에서 복사하면 안 됩니다. |
| 프로토콜 계층 암호화 | security에서 auto 등 데이터 암호화 방식을 선택할 수 있습니다. | 일반적으로 encryption: "none"으로 설정하고 외부 TLS 또는 REALITY로 연결을 보호합니다. |
| 시간 요건 | 인증에 시간 허용 범위가 적용되므로 클라이언트와 서버의 시계를 동기화해야 합니다. | 기본 인증에는 VMess와 같은 시간 허용 범위가 적용되지 않지만, 인증서와 사용하는 보안 계층은 정확한 시간에 의존할 수 있습니다. |
| 일반적인 조합 | TCP, WebSocket 등. TLS와 함께 사용할 수도 있습니다. | TCP + TLS, WebSocket + TLS, TCP + REALITY 등. 코어 지원 여부에 따라 달라집니다. |
| flow | VLESS Vision의 flow 설정을 사용하지 않는 경우 | 서버에서 요구하고 조합이 지원하는 경우에만 입력합니다. 예: xtls-rprx-vision |
결론: 프로토콜 이름을 보고 노드를 바꾸지 말고 서버가 제공한 조합을 그대로 설정하세요.
먼저 프로토콜, 전송 방식, 보안 계층을 확인한 다음 UUID와 선택 항목을 점검하세요. VLESS를 사용한다고 같은 회선이 자동으로 빨라지는 것은 아닙니다. 실제 사용 경험은 노드의 출구, 혼잡도, 서버 부하에 따라 달라집니다.
UUID와 alterId: 사용자 인증 정보와 암호화 강도는 다릅니다
UUID는 흔히 쓰이는 사용자 식별자 형식입니다. 예를 들면 9d34742b-7f0c-4ca6-9f51-bb35d8a6d127와 같습니다. 보통 16진수 문자와 하이픈으로 이루어지며, 표준 형식은 총 36자입니다. 서버는 설정에 등록된 사용자 정보로 연결을 식별하므로 클라이언트에는 일치하는 ID를 입력해야 합니다. UUID는 서버 주소나 TLS 인증서가 아닙니다.
alterId는 한국어 UI에서 보통 ‘추가 ID’라고 합니다. 초기 VMess 인증 설계에서 사용하던 항목으로, ‘계정을 몇 개 더 만든다’는 뜻도 아니고 값이 클수록 안전하다는 뜻도 아닙니다. 최신 VMess 배포에서는 보통 AEAD를 사용하고 0을 입력합니다. 최신 코어 중에는 구식 인증 방식을 더 이상 지원하지 않는 버전도 있습니다. 오래된 안내에서 64를 보더라도 범용 권장값으로 간주하지 말고 노드 제공업체에 서버의 인증 방식을 먼저 확인하세요.
- 새 VMess 노드를 받은 경우: 구독에 포함된 ID와 인증 매개변수를 유지하고, AEAD를 사용하는지 먼저 확인하세요.
- VLESS 노드를 받은 경우: 사용자 ID를 입력하고
alterId는 추가하지 마세요. TLS 또는 REALITY에 필요한 항목도 확인하세요. - UUID를 직접 생성하는 경우: 서버와 클라이언트의 값을 모두 변경해야 합니다. 클라이언트만 바꾸면 인증에 실패합니다.
- 다른 사람에게 도움을 요청하는 경우: 전체 ID와 구독 주소, 공유 링크를 가리세요. 이 정보만으로 노드를 사용할 수 있는 권한이 주어질 수 있습니다.
두 프로토콜 모두 UUID를 표시한다고 해서 같은 UUID를 프로토콜 간에 그대로 사용할 수 있는 것은 아닙니다. 서버에 동일한 문자열을 설정했더라도 VMess와 VLESS의 패킷 형식은 다르므로 해당 프로토콜에 맞는 인바운드 포트로 연결해야 합니다.
암호화 방식 선택: security, encryption, TLS는 서로 다른 계층입니다
“VLESS에서 암호화를 none으로 설정하면 평문인가요?” 전체 연결 구조를 확인해야 합니다. 기존 VLESS 설정의 encryption: "none"은 해당 프로토콜 계층에서 페이로드를 별도로 암호화하지 않는다는 뜻입니다. 외부에 올바르게 설정된 TLS나 REALITY가 적용되어 있다면 클라이언트와 해당 서버 사이의 연결은 여전히 암호화됩니다. 외부 보안 계층도 없다면 VLESS 자체를 기밀 통신 수단으로 간주할 수 없습니다.
VMess 사용자 설정에는 security: "auto", aes-128-gcm, chacha20-poly1305 등의 값이 올 수 있습니다. 여기서 security와 streamSettings.security는 서로 다른 항목입니다. 앞의 항목은 VMess 사용자 매개변수이고, 뒤의 항목은 전송 보안 계층을 나타냅니다. 아래 예시는 설정 위치만 보여 주며, 그대로 연결할 수 있는 완전한 설정은 아닙니다.
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "example.net",
"port": 443,
"users": [
{
"id": "9d34742b-7f0c-4ca6-9f51-bb35d8a6d127",
"alterId": 0,
"security": "auto"
}
]
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"serverName": "example.net"
},
"wsSettings": {
"path": "/proxy"
}
}
}
VLESS의 사용자 객체에는 보통 "encryption": "none"을 설정합니다. 서버에서 Vision을 명시적으로 사용하고 현재 전송 조합과 코어가 지원할 때만 "flow": "xtls-rprx-vision"을 추가하세요. 일반적인 VLESS + WebSocket + TLS 노드에는 이 flow를 설정하지 않습니다. 화면에 선택 항목이 있다는 이유만으로 선택해서는 안 됩니다.
- 노드에 표시된 외부 보안 유형부터 확인하세요: TLS, REALITY 또는 보안 계층 미사용.
- TLS에서는
serverName, 인증서 도메인, 검증 결과를 확인하세요. 인증서 검증을 건너뛰는 방식은 일반적인 해결책으로 사용하지 마세요. - REALITY에서는 서버가 요구하는 공개 키,
shortId,serverName,fingerprint를 확인하세요. 각 항목은 서로 대체할 수 없습니다. - 마지막으로 프로토콜 내부 항목을 확인하세요. VMess는 security, VLESS는 encryption과 선택 항목인 flow를 점검합니다.
클라이언트와 코어 선택: 이름이 아니라 노드 기능에 맞추세요
v2rayN은 데스크톱 클라이언트입니다. 그래픽 인터페이스에서 노드, 구독, 시스템 프록시를 관리하고 실제 프로토콜 연결은 선택한 코어가 처리합니다. Android용 v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용합니다. 이름이 비슷한 클라이언트라도 버전에 따라 지원하는 전송 방식이나 확장 기능이 다를 수 있습니다.
Xray 코어 구성
권장VLESS + REALITY 또는 XTLS Vision을 사용하려면 해당 기능을 지원하는 Xray 버전을 선택하고 클라이언트와 코어의 설정 기능이 서로 맞는지 확인하세요. 데스크톱에서는 v2rayN, Android에서는 v2rayNG를 사용할 수 있습니다.
적합한 경우: 서버에서 REALITY 또는 Vision 매개변수를 명확히 제공하는 노드
V2Fly 코어 구성
기존 VMess 노드를 사용 중이고 제공업체가 V2Fly 설정을 기준으로 관리한다면 호환되는 버전을 계속 사용할 수 있습니다. 데스크톱에서는 v2rayN의 코어 선택을 확인하고, Android에서는 v2flyNG를 사용할 수 있습니다. Xray 전용 확장 항목을 그대로 가져오지 마세요.
적합한 경우: 기존 VMess 설정 및 V2Fly 기준으로 검증된 배포
안정적으로 사용하는 VMess 구독이 있다면 프로토콜만 바꾸려고 환경을 다시 구성할 필요는 없습니다. 같은 제공업체가 VMess와 VLESS를 모두 제공한다면 서버 지역, 테스트 대상, 테스트 시간을 동일하게 맞춘 뒤 연결 성공률과 다운로드 성능을 비교하세요. 출구가 다른 노드 간 속도 차이만으로 프로토콜 자체의 성능을 판단할 수는 없습니다.
두 노드 유형의 매개변수 점검 방법
VMess + WebSocket + TLS
- ID와 최신 AEAD 설정을 확인합니다. alterId는 보통 0입니다.
- 서버 포트, WebSocket path, 필요한 Host를 확인합니다.
- TLS serverName과 인증서 검증 상태를 확인합니다.
- VLESS의 Vision flow를 추가하지 마세요.
VLESS + TCP + REALITY
- ID와 encryption 값을 확인합니다.
- 서버 설정에 맞춰 공개 키, shortId, serverName을 입력합니다.
- 호환되는 fingerprint 설정을 사용합니다.
- 서버에서 Vision을 요구하는 경우에만 flow를 맞춥니다.
두 조합을 각각 확인하세요. 프로토콜 드롭다운만 바꿔서는 서로 전환할 수 없습니다.
v2rayN 점검 순서: 노드 가져오기부터 프록시 요청 확인까지
화면을 보고 항목을 일일이 입력하기보다 제공업체의 전체 공유 링크나 구독을 가져오는 편이 좋습니다. 공유 링크의 vmess://와 vless://는 서로 다른 프로토콜을 나타냅니다. 접두사만 바꾼다고 내부 구조가 변환되지는 않습니다. 구독을 업데이트하면 수동 변경 사항이 덮어써질 수 있으므로 점검할 때는 먼저 노드를 복제해 테스트 설정과 원본을 구분하세요.
- 노드 가져오기: 전체 공유 링크를 복사한 뒤 v2rayN에서 「서버」→「클립보드에서 URL 일괄 가져오기」를 사용하세요. 메뉴 이름은 버전에 따라 달라질 수 있으므로 현재 화면에서 같은 기능을 하는 가져오기 메뉴를 선택하세요.
- 핵심 매개변수 확인: 가져온 노드를 더블클릭해 프로토콜, 주소, 포트, 사용자 ID를 확인한 다음 전송 방식과 TLS 또는 REALITY 설정을 점검하세요. VMess에서는 추가 ID를, VLESS에서는 flow를 확인합니다.
- 현재 노드 확인: 저장한 뒤 활성 서버로 지정하고 코어 로그를 확인해 미지원 항목, 포트 사용 중, 시작 실패 문제가 없는지 살펴보세요.
- 로컬 연결 지점 확인: 「설정」→「매개변수 설정」에서 실제 수신 포트를 확인하세요. 예를 들어 로컬 SOCKS 연결 지점은
127.0.0.1:10808일 수 있지만, 화면에 표시된 값을 기준으로 해야 하며 다른 기기의 포트를 그대로 사용하면 안 됩니다. - 새 요청 보내기: 현재 사용 방식에 따라 시스템 프록시를 활성화하거나 앱 프록시를 설정한 뒤 테스트 사이트를 여세요. 기존 연결은 노드 전환 직후 바뀌지 않을 수 있으므로 필요하면 앱을 종료했다가 다시 여세요.
TCPing 성공은 대상 포트의 TCP 연결 응답이 있다는 뜻일 뿐, UUID, TLS, flow 또는 프록시 출구가 모두 올바르다는 뜻은 아닙니다. ‘포트는 열리지만 실제 연결은 실패’한다면 먼저 인증과 핸드셰이크 로그를 확인하세요. 코어 연결은 정상이지만 일부 사이트만 실패하는 경우에는 DNS와 routing을 점검하고 UUID를 무작위로 바꾸지 마세요.
자주 묻는 질문: 매개변수를 바꾸기 전에 문제 계층부터 확인하세요
VMess의 alterId를 0으로 설정했는데도 연결되지 않는 이유는 무엇인가요?
0은 최신 AEAD 설정의 한 조건일 뿐입니다. 노드 편집 화면에서 ID, 포트, 전송 방식, 경로, TLS serverName을 이어서 확인하고 시스템 시간이 동기화되었는지도 살펴보세요. 오래된 노드 정보를 사용하는 경우에는 16, 32, 64를 반복해서 시도하지 말고 제공업체에 서버가 구식 인증 방식을 사용하는지 확인하세요.
VLESS 암호화가 none으로 표시됩니다. auto로 바꿔야 하나요?
기존 VLESS 노드는 제공업체가 지정한 encryption 값을 유지하고 VMess의 auto를 적용하지 마세요. 이어서 전송 보안이 TLS 또는 REALITY로 설정되었는지 확인하고 관련 항목을 점검하세요. 프로토콜 계층의 none과 연결 전체가 암호화되지 않은 상태는 서로 다른 의미입니다.
UUID가 같은데 VMess를 VLESS로 바로 바꿀 수 있나요?
클라이언트 설정만 바꿔서는 안 됩니다. 서버에도 해당 VLESS 인바운드가 있어야 하며 올바른 포트와 보안 매개변수를 제공해야 합니다. 새 전체 공유 링크를 받은 뒤 가져오고 프로토콜을 확인하세요. 기존 VMess 객체의 alterId와 security 사용자 항목은 남겨 두지 마세요.
flow 옵션이 있으면 모두 xtls-rprx-vision을 선택해야 하나요?
먼저 제공업체가 안내한 노드 매개변수를 확인하세요. 일반적인 WebSocket + TLS 노드는 보통 비워 둡니다. Vision을 명시적으로 제공하는 노드에만 해당 값을 입력하고 이를 지원하는 코어를 사용하세요. 변경 후 저장하고 코어를 다시 불러온 뒤 새 요청으로 확인하세요.
VLESS로 바꾼 뒤 지연 시간이 늘었습니다. 프로토콜이 더 느린 건가요?
먼저 출구, 테스트 대상, 테스트 방식이 동일한지 확인하세요. 두 노드에서 실제 연결 테스트를 여러 번 진행해 실패 횟수와 중앙값을 기록한 다음 같은 리소스로 처리량을 측정하세요. TCPing과 전체 프록시 요청은 측정하는 구간이 다르므로 결과를 그대로 비교할 수 없습니다.
선택 순서는 다음과 같습니다. 먼저 서버 프로토콜과 코어의 지원 여부를 확인하고, 인증 및 전송 매개변수를 빠짐없이 맞춘 뒤 실제 요청 성능을 비교하세요. 일반 사용자에게는 어떤 프로토콜이 ‘더 최신’인지 외우는 것보다 추적 가능한 원본 구독을 보관하고 확인된 항목만 수정하는 편이 유용합니다.