VMess와 VLESS는 프록시 프로토콜이지 클라이언트나 노드의 속도 등급이 아닙니다. VMess는 프로토콜 계층에서 페이로드를 암호화할 수 있으며 기기의 시간이 정확해야 합니다. 일반적인 VLESS 설정은 TLS 또는 REALITY로 전송을 보호합니다. 정상 작동하는 구독이 있다면 서버에서 제공한 프로토콜과 매개변수를 그대로 사용하세요. 직접 가져올 때는 UUID, 전송 방식, 보안 계층, 서버 이름을 확인하면 됩니다.
1분 비교: 프로토콜, 암호화, 시간
v2rayN과 v2rayNG는 설정을 관리하고 코어를 이용해 연결을 설정하는 클라이언트입니다. VMess와 VLESS는 연결에 사용되는 프로토콜입니다. 노드 설정에는 서버 주소, 포트, 전송 방식, 보안 매개변수도 포함됩니다. 따라서 ‘VLESS’라는 이름만 보고 현재 클라이언트에서 작동할지 판단할 수는 없습니다.
| 비교 항목 | VMess | VLESS |
|---|---|---|
| 인증 정보 | 일반적으로 UUID를 사용하며, 현재 널리 쓰이는 설정은 AEAD 인증을 적용합니다. | 일반적으로 UUID를 사용하며, 서버는 계속해서 사용자 인증을 확인합니다. |
| 페이로드 암호화 | 프로토콜 자체의 페이로드 암호화를 사용할 수 있습니다. | 일반적인 설정은 encryption=none을 사용하고, 외부 계층에서 전송을 보호합니다. |
| 시간 요건 | 인증에 시간이 사용되며, 일반적으로 서버와의 시간 차이가 약 120초 이내여야 합니다. | VMess 방식의 타임스탬프 인증 요건은 없지만, 외부 인증서 검증에는 정확한 시간이 필요합니다. |
| 일반적인 조합 | VMess + WebSocket + TLS | VLESS + WebSocket + TLS 또는 VLESS + TCP + REALITY |
| 가져올 때 확인할 항목 | UUID, 암호화 방식, 전송 매개변수, 이전 설정과의 호환성 | UUID, TLS 또는 REALITY, flow, 해당 전송 매개변수 |
표의 조합은 일반적인 사용 예일 뿐, 서로 고정된 조합은 아닙니다. WebSocket은 전송 방식이고 TLS는 보안 계층이며 REALITY는 별도의 보안 방식입니다. 이 셋을 같은 종류의 옵션처럼 임의로 바꿔서는 안 됩니다. 서버가 지원하는 조합에 맞춰 클라이언트도 설정해야 합니다.
확인 순서: 전체 조합부터 점검
노드 편집 화면을 열고 먼저 ‘프로토콜 + 전송 방식 + 보안 계층’을 기록한 다음 UUID와 추가 매개변수를 확인하세요. VMess와 VLESS라는 이름만 비교해서는 연결 실패 원인을 찾을 수 없습니다.
암호화 차이: VLESS의 none은 무엇을 뜻할까?
VMess의 인증 방식과 페이로드 암호화는 서로 다른 개념입니다. 클라이언트의 AEAD는 보통 최신 VMess 인증 방식을 가리킵니다. 페이로드 암호화 옵션은 auto, aes-128-gcm, chacha20-poly1305 등으로 표시될 수 있습니다. ‘AEAD 사용’을 특정 페이로드 암호화 알고리즘을 직접 입력해야 한다는 뜻으로 해석하지 마세요.
일반적인 VLESS 노드의 encryption=none은 VLESS 계층에서 페이로드를 암호화하지 않는다는 뜻이지, 전체 연결이 반드시 평문으로 전송된다는 뜻은 아닙니다. TLS를 사용하면 클라이언트와 서버 사이의 데이터가 TLS로 보호됩니다. REALITY를 사용하는 경우에는 해당 방식에 필요한 매개변수를 올바르게 설정해야 합니다. 모든 VLESS 노드가 자동으로 보호되는 것도 아니므로 실제 설정을 확인하세요.
- VLESS + TLS: 서버 이름, 인증서 검증, 전송 매개변수를 확인하세요. 설정을 바로잡는 대신 인증서 검증을 끄지 마세요.
- VLESS + REALITY: 서버에서 제공한 서버 이름, 공개 키, short ID를 확인하세요. 필드 이름은 클라이언트 화면에 표시된 내용을 따릅니다.
- VMess + TLS: VMess에서 페이로드 암호화를 사용하더라도 외부 TLS는 별도의 역할을 합니다. 임의로 삭제하지 마세요.
시간 검증: VMess 연결이 시간 초과되면 시스템 시간부터 확인
VMess 인증은 시간에 영향을 받습니다. 휴대전화나 컴퓨터의 시간이 몇 분만 어긋나도 주소와 UUID가 올바른데 인증에 실패할 수 있습니다. 약 120초는 시간 허용 범위를 이해하기 위한 일반적인 참고값이지, 한계에 맞춰 시간을 조정하라는 의미가 아닙니다. 기기의 자동 시간 설정을 켜고 시간을 최대한 정확하게 유지하세요.
- Android: 시스템 ‘설정’ → ‘시스템’ → ‘날짜 및 시간’으로 이동해 자동 시간 설정을 켜세요. 일부 기기에서는 ‘추가 설정’에 메뉴가 있습니다.
- Windows: ‘설정’ → ‘시간 및 언어’ → ‘날짜 및 시간’으로 이동해 ‘자동으로 시간 설정’을 켠 다음 ‘지금 동기화’를 실행하세요.
- 다시 테스트: 시간을 동기화한 뒤 클라이언트 연결을 중지했다가 다시 시작하세요. 인증 또는 핸드셰이크 오류가 계속되는지 확인하고, 구독 전체를 먼저 삭제할 필요는 없습니다.
표시되는 시간대가 다르다고 해서 시스템 시간이 틀렸다는 뜻은 아닙니다. 프로토콜에는 실제 타임스탬프가 주로 영향을 줍니다. VLESS에는 VMess와 같은 시간 인증 방식이 없지만, 기기의 날짜가 크게 틀리면 TLS 인증서가 ‘아직 유효하지 않음’ 또는 ‘만료됨’ 오류를 일으킬 수 있습니다. 따라서 ‘VLESS로 바꾸면 시간을 맞출 필요가 없다’고 볼 수는 없습니다.
전송 조합: 정상 설정은 유지하고 지원 범위에 맞게 선택
프로토콜 드롭다운을 바꾼다고 서버의 VMess 서비스를 VLESS로 변환할 수는 없습니다. 클라이언트와 서버가 같은 프로토콜을 사용해야 합니다. 구독에서 여러 접속 설정을 제공한다면 특정 프로토콜이 무조건 더 빠르다고 단정하지 말고 전체 조합과 실제 작동 여부를 비교하세요.
구독에서 정상 작동이 확인된 전체 설정
권장제공자가 구성한 프로토콜, 전송 방식, 보안 매개변수를 그대로 유지하세요. 안정적으로 작동하는 VMess 노드가 있다면 프로토콜 이름이 다르다는 이유만으로 바꿀 필요가 없습니다. VLESS 노드에서 낯선 flow나 REALITY 필드를 발견해도 삭제하지 마세요.
적합한 경우: 이미 구독을 사용 중이거나, 일상적으로 연결하거나, 수동 입력 오류를 줄이고 싶을 때
VMess + WebSocket + TLS
WebSocket 경로, Host, TLS 서버 이름을 각각 확인하세요. 경로는 대소문자를 구분하는 경우가 많습니다. 접속 주소에서 일반 웹페이지가 열린다고 해서 프록시 핸드셰이크 설정까지 올바른 것은 아닙니다.
적합한 경우: 서버에 해당 조합이 설정되어 있고 기존 접속 설정을 계속 사용해야 할 때
VLESS + TCP + REALITY
해당 기능을 지원하는 코어가 필요합니다. 서버에서 xtls-rprx-vision을 요구한다면 flow도 일치해야 합니다. 이 값을 WebSocket 노드에 그대로 복사하지 마세요.
적합한 경우: 제공자가 전체 매개변수를 명시했고 클라이언트 코어가 해당 조합을 지원할 때
v2rayNG는 Xray 코어를 사용합니다. v2rayN에서 사용할 수 있는 기능은 현재 선택한 코어에 따라 달라집니다. v2flyNG는 v2fly 코어를 사용하므로 특정 VLESS 설정을 처리할 수 있다는 이유만으로 Xray의 모든 확장 기능을 지원한다고 판단해서는 안 됩니다. 호환성을 확인할 때는 프로토콜, 전송 방식, 보안 방식, 코어의 지원 범위를 함께 살펴보세요.
클라이언트에 가져오기: UUID, SNI, flow 확인
가능하면 전체 공유 링크나 구독을 사용해 가져오세요. VMess 공유 링크는 보통 vmess://로 시작하며, 인코딩된 설정을 담고 있습니다. VLESS 공유 링크는 vless://로 시작하고 추가 매개변수는 대개 쿼리 부분에 들어갑니다. 링크가 긴 이유는 서버 주소 외의 정보도 포함하기 때문입니다. 도메인과 포트만 복사하지 마세요.
가져온 뒤 확인: 데스크톱과 Android
데스크톱: v2rayN
- 공유 링크 전체를 복사한 뒤 ‘클립보드에서 공유 링크 가져오기’를 선택하세요. 일반적인 단축키는
Ctrl+V입니다. - 구독 주소는 ‘구독 그룹 설정’에 추가하고 저장한 다음 구독을 업데이트하세요. 개별 노드 링크처럼 붙여 넣지 마세요.
- 노드 편집 창에서 프로토콜, 포트, 보안 계층을 확인하세요. REALITY를 사용하는 경우 이를 지원하는 코어가 선택되어 있는지도 확인해야 합니다.
Android: v2rayNG
- 오른쪽 위의 ‘+’ → ‘클립보드에서 가져오기’를 누르거나 전체 설정이 포함된 QR 코드를 스캔하세요.
- 사이드 메뉴의 ‘구독 그룹 설정’에서 구독을 추가한 뒤 ‘구독 업데이트’를 실행하세요. 메뉴 이름은 버전에 따라 달라질 수 있습니다.
- 노드를 편집할 때 TLS 또는 REALITY 매개변수를 확인하세요. 연결을 시작한 후 시스템 안내에 따라 VPN 연결을 허용하면 됩니다.
같은 구독으로 두 클라이언트의 매개변수를 비교할 수 있지만, 노드 목록이 같은지는 제공자가 반환하는 내용과 각 클라이언트의 호환성에 따라 달라집니다. 겉으로 설정을 맞추려고 프로토콜을 직접 바꾸지 마세요.
서버 주소, SNI, WebSocket Host는 서로 다른 필드입니다. 서버 주소는 연결할 대상을 지정하고, SNI는 보통 TLS 핸드셰이크에서 서버 이름으로 사용됩니다. WebSocket Host는 HTTP 요청과 관련된 매개변수입니다. 세 값이 같을 수도 다를 수도 있으므로 제공자의 설정에 맞춰 입력하고, 모두 접속 주소로 바꾸지 마세요.
- UUID: 앞뒤에 공백이 들어가지 않도록 전체를 복사하세요. 구독 접근 정보를 노드 UUID로 사용하지 마세요.
- VMess 이전 필드: 최신 VMess AEAD 설정은 보통
alterId=0을 사용합니다. 오래된 가이드의 0이 아닌 값을 그대로 따라 하지 마세요. 기존 설정을 계속 사용해야 한다면 제공자에게 확인하세요. - VLESS flow: 해당 조합에서 요구하는 경우에만 입력하세요. 빈 값과
xtls-rprx-vision은 임의로 바꿔 쓸 수 있는 옵션이 아닙니다. - 공유 시 보안: 링크, QR 코드, 구독 주소에 접근 정보가 포함될 수 있습니다. 화면을 캡처할 때는 내용을 가리고 전체 정보를 공개하지 마세요.
자주 묻는 질문: 연결 오류와 속도 확인
VMess는 연결되는데 VLESS로 바꾸면 연결되지 않아요. 왜 그런가요?
기존 설정으로 되돌리세요. 프로토콜 이름은 클라이언트에서 켜고 끄는 옵션이 아니며, 서버에도 VLESS가 설정되어 있고 해당 매개변수가 할당되어 있어야 합니다. 프로토콜을 바꾸려면 제공자에게 전체 링크를 다시 받아 별도의 노드로 가져오세요.
VLESS에 none이라고 표시되는데 비밀번호를 입력해야 하나요?
먼저 이 값이 보안 계층이 아니라 encryption 필드인지 확인하세요. 일반적인 VLESS 설정은 none을 사용하고 UUID로 인증하며, TLS 또는 REALITY로 전송을 보호합니다. 보안 계층이 원래 링크와 일치하는지 확인하고 VMess 암호화 알고리즘으로 임의 변경하지 마세요.
가져오기는 됐지만 핸드셰이크에 계속 실패합니다. 어디부터 확인해야 하나요?
가져오기에 성공했다는 것은 설정을 해석할 수 있다는 뜻일 뿐입니다. 먼저 시스템 시간을 동기화하고 주소, 포트, UUID, SNI, 전송 매개변수를 차례로 확인하세요. REALITY라면 공개 키와 short ID도 점검해야 합니다. 로그에 인증서 오류가 표시되면 서버 이름이나 서버 인증서를 바로잡고 검증을 건너뛰지 마세요.
VLESS는 항상 VMess보다 빠른가요?
프로토콜만으로 속도를 판단할 수 없습니다. 같은 네트워크에서 비슷한 시간대에 같은 테스트 대상으로 여러 번 측정하고 웹페이지 로딩, 연결 안정성, 다운로드 성능을 비교하세요. 서버 부하, 회선 혼잡, 전송 조합은 프로토콜 자체보다 결과에 더 큰 영향을 줄 수 있습니다. 한 번의 지연 시간이 낮다고 지속적인 처리량까지 높은 것은 아닙니다.
노드 테스트는 정상인데 브라우저에서 사이트가 열리지 않아요.
먼저 트래픽이 클라이언트를 통과하는지 확인하세요. v2rayN에서는 시스템 프록시 설정을 확인하고, v2rayNG에서는 VPN 서비스가 실행 중인지와 앱별 적용 범위를 확인하세요. 그다음 라우팅과 DNS를 점검하세요. 트래픽 적용 범위를 확인하기도 전에 VMess와 VLESS 매개변수를 계속 바꾸지 마세요.
문제 해결 원칙: 한 번에 변수 하나만 변경
기존 노드는 보존하고 문제를 확인할 복사본을 만드세요. 매번 불일치가 확인된 매개변수 하나만 수정한 뒤 다시 테스트하세요. 서버가 작동하지 않는다면 암호화, flow, 전송 설정을 계속 추측해 바꾸기보다 구독을 업데이트하거나 제공자에게 문의하세요.