VMess는 프로토콜 계층에서 인증과 데이터 암호화를 처리합니다. 일반적인 VLESS 설정은 TLS나 REALITY로 연결을 보호하며, 프로토콜 자체는 더 간결합니다. 일반 사용자는 구독 정보를 그대로 가져오는 것이 우선이며, VMess 노드를 VLESS로 직접 바꾸면 안 됩니다. 두 프로토콜의 암호화 범위와 시간 조건, 속도 차이, v2rayN에서 확인할 설정 항목을 차례로 살펴봅니다. 구독을 처음 가져오거나 연결에 실패했을 때 하나씩 확인할 수 있습니다.
1분 비교: 차이는 어느 계층에 있을까?
둘 다 프록시 프로토콜이며 클라이언트 이름이 아닙니다. v2rayN은 노드와 구독, 프록시 설정을 관리하는 데스크톱 클라이언트이고, 실제 연결은 선택한 코어가 처리합니다. 프로토콜은 클라이언트와 서버가 데이터를 인증하고 캡슐화해 전달하는 방식을 정합니다. 따라서 v2rayN을 설치했다고 해서 서버가 VMess와 VLESS를 모두 지원하는 것은 아닙니다.
| 비교 항목 | VMess | VLESS |
|---|---|---|
| 인증 정보 | 일반적으로 UUID 등의 매개변수로 사용자를 식별 | 일반적으로 UUID 등의 매개변수로 사용자를 식별 |
| 일반적인 암호화 방식 | 프로토콜 계층에서 데이터를 암호화하거나 TLS와 함께 사용 | 일반적인 encryption=none 설정에서는 TLS 또는 REALITY로 연결을 보호 |
| 시간 조건 | 인증에 시간이 반영되므로 시각이 크게 어긋나면 연결 실패 가능 | 기존 인증 방식은 VMess처럼 시간 창을 사용하지 않지만, 외부 보안 계층은 시간에 의존할 수 있음 |
| 주요 추가 설정 | 암호화 방식, alterId, 전송 방식 및 TLS 설정 | encryption, flow, 전송 방식 및 TLS 또는 REALITY 설정 |
| 서로 바꿔 쓸 수 있나요? | 불가능합니다. 서버에서 해당 프로토콜과 전체 설정에 맞는 접속 지점을 제공해야 합니다. | |
프로토콜과 전송 방식, 보안 계층은 구분해서 봐야 합니다. 예를 들어 'VMess + WebSocket + TLS'는 각각 프록시 프로토콜, 전송 방식, 연결 보호를 나타냅니다. 'VLESS + TCP + REALITY'도 여러 설정이 결합된 연결 구성입니다. VLESS라는 이름만으로는 포트, 공개 키 필요 여부, 특정 flow 지원 여부를 알 수 없습니다.
VLESS의 none은 평문이라는 뜻인가요?
encryption=none이라고 해서 전체 연결이 평문인 것은 아닙니다. 일반적인 VLESS 설정에서 해당 프로토콜 항목의 추가 암호화를 사용하지 않는다는 뜻입니다. TLS나 REALITY를 사용하는 연결이라면 클라이언트와 프록시 서버 사이의 통신은 해당 방식으로 보호됩니다. 반대로 이런 보호 계층이나 신뢰할 수 있는 외부 보안 채널이 없다면, VLESS라는 이름만으로 연결이 안전하다고 판단할 수 없습니다.
- VMess 암호화 방식: 일반적으로
auto,aes-128-gcm,chacha20-poly1305를 사용합니다. 외부 TLS 설정과는 별개이므로 VLESS 항목에 그대로 입력하면 안 됩니다. - VLESS의 encryption: 일반적인 구성에서는
none을 사용합니다. 일부 최신 코어에는 다른 확장 옵션이 있지만, 사용 가능 여부는 서버 설정과 실제 코어 지원에 따라 달라지므로 임의로 바꾸지 마세요. - TLS의 SNI: 서버 이름을 지정하는 항목입니다. 일반적으로 서버가 제공한 설정 및 인증서 검증 조건과 일치해야 하며, 노드 목록에 표시되는 이름과 다를 수 있습니다.
- REALITY 설정: 일반적으로 서버가 제공한 공개 키나 해당 검증 항목, shortId, 서버 이름이 필요합니다. 여기에 입력하는 것은 공개 검증 정보이며, 클라이언트에 서버 개인 키를 입력하면 안 됩니다.
HTTPS 웹사이트의 암호화와 프록시 연결의 암호화는 서로 다릅니다. HTTPS 사이트에 접속하면 브라우저와 웹사이트 사이에도 사이트 자체의 TLS 연결이 설정됩니다. 프록시 프로토콜의 보안 계층은 클라이언트와 프록시 서버 사이를 보호합니다. VMess에 TLS를 함께 설정하면 해당 구간에 암호화가 추가될 수 있지만, 그렇다고 모든 경우에 TLS를 꺼야 하는 것은 아닙니다.
VMess에서는 왜 시스템 시간을 더 꼼꼼히 확인해야 하나요?
VMess 인증에는 시간 관련 정보가 포함됩니다. 클라이언트와 서버의 시각 차이가 너무 크면 설정이 올바르더라도 인증에 실패할 수 있습니다. 시간대 표시가 다른 것과 실제 시각이 잘못된 것은 구분해야 합니다. 두 기기의 현지 시간이 다르게 표시되더라도 같은 순간을 가리킨다면 일반적으로 인증 시각이 어긋나지는 않습니다.
- Windows에서 시간 동기화: '설정' → '시간 및 언어' → '날짜 및 시간'을 열고 '시간 자동 설정'을 켠 다음 '지금 동기화'를 선택하세요. 동기화에 실패하면 기기의 인터넷 연결이나 시간 서비스부터 확인합니다.
- Android에서 네트워크 시간 사용: 일반적으로 '설정' → '시스템' → '날짜 및 시간'에서 자동 시간 설정을 켭니다. 기기에 따라 메뉴 이름이나 위치가 다를 수 있습니다.
- 서버 관리 권한이 있을 때만 서버 확인: Linux에서는
timedatectl status로 시간 동기화 상태를 확인할 수 있습니다. 클라이언트 시간이 정확해도 서버 시간까지 정확하다는 뜻은 아닙니다. - 다시 연결: 시간을 동기화한 뒤 현재 연결을 재시작하고 새 로그를 확인하세요. 동기화 전에 남은 오류 기록만으로 계속 판단하지 마세요.
VLESS에서도 기기 시간을 무시해도 되는 것은 아닙니다. 기존 VLESS 인증은 VMess와 같은 시간 창을 사용하지 않지만, TLS 인증서 유효 기간 검사와 REALITY 관련 검증, 일부 최신 확장 기능은 시간의 영향을 받을 수 있습니다. 문제를 해결할 때 시간을 먼저 맞추는 것은 간단하고 노드 설정을 변경하지 않는 방법입니다.
VLESS가 항상 VMess보다 빠른가요?
항상 그런 것은 아닙니다. 프로토콜 캡슐화가 간결해도 성능의 일부에만 영향을 줍니다. 같은 회선과 보안 설정이라면 중복 암호화를 줄여 처리 부담을 낮출 수 있지만, 실제 다운로드 속도는 대역폭과 패킷 손실, 왕복 지연 시간, 서버 부하, 전송 방식, 기기의 암호화 성능에도 좌우됩니다. 서로 다른 출구를 사용하는 두 노드만으로 프로토콜의 우열을 판단할 수는 없습니다.
정상 작동이 확인된 구독 설정은 그대로 유지하세요
권장현재 사용하는 VMess 또는 VLESS 노드가 일상적인 작업에서 안정적으로 작동한다면 설정을 그대로 유지하세요. 프로토콜 이름만 보고 바꾸기보다 실제 연결 결과를 기준으로 선택해야 합니다.
적합한 사용자: 일반 사용자, 서버 관리 권한이 없는 구독 사용자
조건을 통제해 VLESS 구성 비교하기
서버가 두 프로토콜의 접속 지점을 모두 제공하는 경우에만 출구와 테스트 대상, 시간을 동일하게 맞춰 비교하세요. 사용할 수 있는 설정이 한 세트뿐이라면 클라이언트에서 프로토콜만 업그레이드할 수는 없습니다.
적합한 사용자: 서버를 직접 관리하거나 성능 병목을 찾으려는 사용자
각 접속 지점에서 같은 작업을 3회씩 수행하고, 최초 연결 성공 여부와 동일한 파일의 다운로드 시간, 로그 오류를 기록해 중앙값을 비교할 수 있습니다. 이는 테스트 방법이며 이 사이트에서 측정한 결과가 아닙니다. 지연 시간 테스트에 응답이 있다고 해서 웹페이지 접속이나 도메인 조회, 대용량 파일 전송까지 정상이라는 뜻은 아닙니다.
판단 기준: 회선 차이를 먼저 제외한 뒤 프로토콜 처리 부담을 비교하세요
두 노드의 서버나 출구가 다르면 결과를 우선 '노드 성능 차이'로 기록하고 encryption이나 flow를 바꾸지 마세요. 통제된 조건에서 비교해야 프로토콜 변경의 효과를 판단할 수 있습니다.
v2rayN에서 어떤 설정을 확인해야 하나요?
먼저 전체 구독이나 공유 링크를 가져온 다음 노드 편집 창에서 설정을 확인하세요. 스크린샷만 보고 값을 조합하지 마세요. v2rayN에서는 보통 '구독 그룹' → '구독 그룹 설정'에서 구독을 추가하고, '구독 그룹' 메뉴에서 업데이트합니다. 노드를 선택하고 마우스 오른쪽 버튼을 눌러 '서버 편집'을 선택할 수도 있습니다. 메뉴 이름은 버전에 따라 다를 수 있으니 실제 화면을 기준으로 확인하세요.
| 항목 | 확인할 내용 | 흔한 실수 |
|---|---|---|
| 주소와 포트 | 서버 접속 설정과 정확히 일치하는지 확인 | TLS가 보인다는 이유로 포트를 443으로 바꾸기. 443은 흔한 포트일 뿐 필수는 아닙니다. |
| 사용자 ID / UUID | 문자를 추가하거나 삭제하지 말고 전체 값을 가져오기 | 구독 계정 비밀번호를 UUID에 입력하기 |
| VMess alterId | 최신 AEAD 구성에서는 보통 0입니다. 제공업체 설정과 대조하세요. | 오래된 가이드에 나온 0이 아닌 값을 그대로 사용하기 |
| VLESS encryption | 서버 및 코어 지원과 일치해야 하며, 일반적으로 none을 사용합니다. | VMess의 auto나 AES 이름으로 바꾸기 |
| VLESS flow | 서버에서 지정한 경우에만 입력합니다. 예: xtls-rprx-vision | 모든 VLESS 노드에 Vision을 일괄 추가하기 |
| 전송 방식과 경로 | TCP, WebSocket 등의 방식을 확인하세요. WebSocket은 path와 Host도 확인해야 합니다. | WebSocket Host와 TLS SNI를 같은 항목으로 취급하기 |
| TLS / REALITY | 보안 유형과 서버 이름, 필요한 검증 설정을 확인하세요. | 보안 유형만 바꾸고 다른 필수 항목을 누락하기 |
flow=xtls-rprx-vision은 어디서나 쓸 수 있는 속도 향상 옵션이 아닙니다. 서버와 클라이언트 코어가 해당 조합을 지원해야 하며, 모든 WebSocket 노드에서 사용할 수도 없습니다. '지원하지 않는 flow'와 같은 오류가 나타나면 원래 구독 설정과 코어 지원 여부부터 확인하고 값을 무작위로 바꾸지 마세요.
노드의 서버 포트와 기기의 로컬 수신 포트도 다릅니다. 예를 들어 서버 접속 포트가 443이고 로컬 프록시 수신 주소가 127.0.0.1:10808일 수 있으며, 두 포트는 동시에 사용됩니다. 여기서 10808은 예시일 뿐입니다. 브라우저나 터미널에는 클라이언트에 실제로 표시된 로컬 포트를 입력해야 하며, 서버 포트를 로컬 프록시 포트로 사용하면 안 됩니다.
데스크톱과 Android에서 같은 구독을 사용할 수 있나요?
같은 구독을 사용할 수는 있지만, 모든 코어가 구독에 포함된 모든 노드를 지원하는 것은 아닙니다. v2rayN은 데스크톱 클라이언트이고, v2rayNG는 Android에서 Xray 코어를, v2flyNG는 Android에서 v2fly 코어를 사용합니다. 프로토콜 확장과 보안 계층, 전송 방식 지원 여부는 코어 버전에 따라 다릅니다. 한 기기에서 작동하는 REALITY나 Vision 설정이 다른 모든 기기에서도 작동한다고 볼 수는 없습니다.
동기화 방법: 같은 구독을 사용하고 각 기기에서 따로 연결 확인
데스크톱: v2rayN
- 구독 그룹에 제공업체가 안내한 원본 링크를 추가합니다.
- 현재 사용하는 코어가 노드의 전체 설정 조합을 지원하는지 확인합니다.
- 로컬 수신 포트와 시스템 프록시 상태를 확인한 뒤 웹사이트에 접속합니다.
Android: v2rayNG 또는 v2flyNG
- 구독 관리 메뉴에서 같은 출처의 구독을 추가한 뒤 업데이트합니다.
- 먼저 코어 지원 여부를 확인한 다음 지원되지 않는 프로토콜 확장을 살펴봅니다.
- 연결을 시작하고 시스템에서 요청하는 VPN 권한을 허용한 뒤 접속을 따로 확인합니다.
구독으로 동기화되는 것은 노드 설정입니다. 데스크톱의 시스템 프록시나 Android의 앱별 설정, 각 기기의 코어 지원 여부까지 동기화되지는 않습니다.
구독 링크는 비공개로 관리해야 합니다. 도움을 요청할 때는 오류 유형과 클라이언트 및 코어 버전, 전송 방식, 민감 정보를 가린 로그를 공유할 수 있습니다. 전체 구독 URL이나 UUID, 인증 정보가 포함된 QR 코드는 공개하지 마세요. 매개변수를 일부 삭제하거나 가린 정보는 가져올 수 있는 노드 설정으로 사용할 수도 없습니다.
가져온 뒤 연결되지 않으면 무엇부터 확인해야 하나요?
먼저 '서버에 연결하지 못한 경우'와 '연결은 됐지만 앱에서 프록시를 사용하지 않는 경우'를 구분하세요. 전자는 주소와 포트, 인증, 전송 및 보안 설정을 중점적으로 확인합니다. 후자는 시스템 프록시와 앱 자체의 프록시 설정, DNS, 라우팅 분할을 살펴봅니다. 한 번에 한 항목씩 바꾸고 원래 구독 설정을 보관해야 어떤 변경이 효과가 있었는지 알 수 있습니다.
어제까지 되던 VMess가 오늘 계속 인증에 실패하나요?
시스템의 날짜 및 시간 설정에서 먼저 동기화한 뒤 구독을 업데이트하고 다시 연결하세요. 계속 실패하면 UUID와 alterId, 계정 상태를 확인합니다. '인증 실패'라는 메시지만 보고 노드가 만료됐다고 단정하지 마세요.
VMess를 VLESS로 바꿨더니 왜 연결이 안 되나요?
원래 노드 설정으로 되돌리고 제공업체의 전체 공유 링크를 다시 가져오세요. 두 프로토콜은 핸드셰이크와 설정이 다릅니다. 서버에서 별도의 VLESS 접속 정보를 제공하는 경우에만 해당 주소와 포트, 보안 설정으로 연결할 수 있습니다.
VLESS에 none이 표시되는데 AES를 직접 선택해야 하나요?
그럴 필요 없습니다. 구독 설정에 따라 TLS나 REALITY가 활성화되어 있는지 확인하고, 서버가 제공한 encryption 값을 유지하세요. VMess 암호화 옵션은 VLESS로 옮겨 사용할 수 없습니다. 보안 설정 없이 연결 정보만 제공됐다면 제공업체에 보안 방식을 확인하세요.
노드 테스트는 응답하는데 브라우저에서 웹페이지가 열리지 않나요?
v2rayN 기본 화면이나 트레이 메뉴에서 '시스템 프록시'를 확인하고, 앱이 사용하는 로컬 포트가 클라이언트의 수신 포트와 일치하는지 살펴보세요. 그런 다음 로그에서 DNS와 연결, 라우팅 오류를 확인합니다. 시스템 프록시가 모든 터미널 프로그램에 자동으로 적용되는 것은 아닙니다.
같은 구독인데 다른 기기에는 노드가 몇 개 빠져 있나요?
먼저 두 기기에서 모두 구독을 업데이트했는지 확인한 다음 클라이언트와 코어 버전을 비교하고, 가져오기 로그에 지원되지 않는 프로토콜이나 항목이 표시되는지 살펴보세요. 노드 가져오기 실패와 연결 시간 초과는 다른 문제입니다. 강제로 가져오려고 보안 설정을 삭제하지 마세요.
최종 선택은 이름만이 아니라 전체 구성으로 판단하세요. 안정적으로 작동하는 VMess 노드가 있다면 그대로 사용하고, 완전한 VLESS 설정을 받았다면 외부 보안 계층과 코어 지원 여부를 확인하세요. 클라이언트 기본 설정을 정리하려면 빠른 시작 가이드를, 라우팅과 DNS를 더 자세히 확인하려면 심화 설정을 참고하세요.