REALITY·XTLS Vision 원리와 속도 개선: 핸드셰이크 위장과 중복 암호화 줄이기

REALITY가 실제 사이트의 TLS 핸드셰이크를 활용하는 방식과 Vision 흐름 제어가 TLS 내부의 중복 암호화를 줄여 처리 부담을 낮추는 원리를 그림으로 쉽게 설명합니다.

핵심 내용

REALITY는 프록시 연결의 핸드셰이크와 인증을 처리하고, XTLS Vision은 조건에 맞는 데이터 전송을 처리합니다. 두 기능은 서로 다릅니다. 구독을 가져온 뒤 VLESS 노드 설정을 이해하고 싶은 사용자를 위해 프로토콜과 전송 계층을 구분하고, 실제 사이트가 핸드셰이크에 관여하는 범위를 살펴본 다음 클라이언트 항목별 설정을 확인합니다. 속도 향상 여부는 네트워크 경로와 부하에 따라 달라지므로 노드 이름만 보고 판단할 수 없습니다.

VLESS, REALITY, Vision의 역할부터 구분하기

‘VLESS + TCP + REALITY + Vision’은 네 가지 계층으로 나눠 볼 수 있습니다. VLESS는 사용자 식별 정보와 요청 대상 등을 전달하는 프록시 프로토콜이며, 자체적으로 전송을 암호화하지는 않습니다. TCP는 연결을 전달하는 전송 방식이고, REALITY는 보안 핸드셰이크와 인증을 제공합니다. Vision은 프록시 데이터를 캡슐화하고 전달하는 방식을 제어하는 XTLS 흐름 제어 모드입니다.

따라서 REALITY는 단독으로 가져와 사용할 수 있는 완성된 노드가 아니며, Vision도 서버 주소만 바꾸면 켜지는 가속 옵션이 아닙니다. 클라이언트와 서버가 같은 조합을 지원해야 합니다. Xray와 V2Ray는 같은 코어가 아니므로 이름이 비슷하다고 설정 항목을 그대로 서로 바꿔 쓸 수는 없습니다.

앱 요청 라우팅으로 출구 선택 보안 핸드셰이크 프록시 인증 데이터 전달

이 흐름은 논리적인 처리 단계를 보여 줄 뿐, 각 단계마다 네트워크 왕복이 한 번씩 더 발생한다는 뜻은 아닙니다. 라우팅으로 출구를 선택한다는 것은 클라이언트가 요청을 직접 연결할지 특정 프록시 노드에 전달할지 판단하는 과정입니다. 해당 노드를 실제로 통과하는 트래픽만 그 노드의 REALITY 및 Vision 설정을 사용합니다. 사이트에 직접 연결했을 때의 속도로 노드 프로토콜 성능을 판단할 수는 없습니다.

REALITY의 ‘핸드셰이크 활용’은 무엇을 활용하는 걸까?

먼저 핵심부터 말하면, 실제 사이트의 개인 키를 빌리거나 대상 사이트가 프록시 서버 대신 데이터를 복호화하는 방식은 아닙니다. 여기서 ‘활용’은 핸드셰이크 외관과 전달 방식을 쉽게 설명하기 위한 표현입니다. 이해할 때는 인증 정보가 유효한 클라이언트 연결과 일반 접속 또는 인증에 실패한 연결을 구분해야 합니다.

  1. 클라이언트가 핸드셰이크를 시작합니다. 클라이언트는 프록시 서버의 주소와 포트에 연결하고 설정에 따라 TLS ClientHello를 보냅니다. SNI는 핸드셰이크에서 선언하는 서버 이름이며, 클라이언트 지문은 핸드셰이크 메시지가 구성되는 방식에 영향을 줍니다.
  2. REALITY 서버가 인증 정보를 확인합니다. 인증된 클라이언트는 설정된 공개 키 등의 매개변수를 사용해 인증 및 키 협상에 참여하고, 서버는 이에 대응하는 개인 키로 핸드셰이크를 처리합니다. Short ID는 추가로 확인하는 매개변수이며 사용자 식별 정보를 대신하는 비밀번호가 아닙니다.
  3. 인증된 연결은 프록시 처리를 시작합니다. 인증이 성공하면 양측이 보호된 연결을 설정한 뒤 VLESS 요청을 처리합니다. 브라우저가 최종적으로 접속하는 사이트는 핸드셰이크에 선언된 이름과 다를 수 있습니다.
  4. 인증에 실패한 연결은 대상 사이트로 전달될 수 있습니다. 서버는 설정에 따라 이런 트래픽을 실제 TLS 사이트로 전달해 일반 사이트처럼 응답하도록 합니다. 구체적인 동작은 구현 방식, 대상 사이트, 네트워크 상태에 따라 달라집니다.

일반적으로 서버는 이 방식에 사용되는 이름의 공개 인증서와 개인 키를 보유할 필요가 없지만, 자체 REALITY 키 쌍은 올바르게 설정해야 합니다. 클라이언트에는 공개 키를 제공하며 서버 개인 키를 구독 정보에 넣어서는 안 됩니다. 실제 대상 사이트의 핸드셰이크 동작이 바뀌면 연결에 영향을 줄 수 있으므로, 이 방식을 언제나 같은 외관을 유지하는 고정 설정으로 이해해서는 안 됩니다.

TLS 1.3
REALITY 대상 사이트가 충족해야 하는 주요 핸드셰이크 조건 중 하나
443
일반적인 HTTPS 포트 예시이며, 실제 연결은 노드 설정을 따릅니다

포트 번호는 서버가 연결을 수신하는 위치일 뿐, 프로토콜을 증명하지 않습니다. 노드 포트가 443이라고 해서 반드시 REALITY를 사용하는 것은 아닙니다. 실제 사이트가 TLS 1.3을 지원하더라도 모든 서버 환경에서 대상 사이트로 적합한 것은 아닙니다. 일반 구독 사용자는 제공된 설정을 유지하고, 대상 사이트를 임의로 바꿔 가며 시험하지 않는 것이 좋습니다.

XTLS Vision은 중복 암호화를 어떻게 줄일까?

브라우저로 HTTPS 사이트에 접속하면 브라우저와 사이트 사이에 이미 TLS 암호화가 적용됩니다. 이 암호화된 데이터를 프록시의 외부 TLS로 한 번 더 통째로 감싸면 추가 캡슐화와 처리가 발생합니다. 이런 ‘TLS 안의 TLS’도 정상적으로 동작하지만 연산, 복사, 레코드 처리 비용이 늘어날 수 있습니다.

Vision은 내부 TLS 트래픽을 식별하고 조건을 충족하면 더 직접적인 전달 경로로 전환해, 이미 암호화된 애플리케이션 데이터를 외부에서 다시 암호화하는 처리를 줄이는 데 초점을 둡니다. 초기 데이터에 패딩을 적용해 특정 길이 패턴을 완화하기도 합니다. 브라우저의 HTTPS를 끄거나 웹 페이지 데이터를 평문으로 전송하는 기능은 아닙니다.

비교 항목일반적인 외부 TLS 캡슐화Vision의 처리 방식
내부 HTTPS브라우저와 최종 사이트 간 TLS 세션 유지브라우저와 사이트 간 TLS 세션을 그대로 유지
암호화된 애플리케이션 데이터일반적으로 외부 TLS로 한 번 더 캡슐화식별 조건을 충족하면 중복 처리 감소
초기 데이터사용 중인 프록시 및 TLS 구현에 따라 처리흐름 제어와 패딩 전략 적용
전환 조건을 충족하지 못한 경우기존 캡슐화 경로로 전달최적화 경로에 진입했다고 단정할 수 없음

이 과정을 ‘모든 데이터의 암호화가 한 번 줄어든다’고 단순화해서는 안 됩니다. 최적화 경로를 사용할 수 있는지는 내부 프로토콜과 구현의 판단에 달려 있습니다. TLS가 아닌 데이터가 내부 TLS의 보호를 받는 데이터로 바뀌는 것도 아닙니다. 직접 전달이 운영체제의 저복사 기능까지 활용할 수 있는지는 플랫폼, 커널, 연결 조건에 따라 달라지며 Flow를 입력했다고 반드시 제로 카피가 되는 것은 아닙니다.

확인: 먼저 최적화 대상부터 파악한 뒤 속도 차이를 살펴보세요

지속적으로 HTTPS를 다운로드하며 처리량을 확인하는 방법이 Vision의 최적화 효과를 살펴보기에 더 적합합니다. 노드 지연 시간만 측정하거나 작은 웹 페이지 하나를 여는 테스트는 주로 핸드셰이크와 네트워크 대기 시간을 반영하므로 중복 암호화가 줄었는지는 판단하기 어렵습니다.

클라이언트에서 확인할 설정 항목

데스크톱에서는 v2rayN 노드 목록에서 해당 노드를 선택하고 마우스 오른쪽 버튼을 눌러 ‘편집’을 선택한 다음 프로토콜, 전송 방식, 보안 유형, Flow를 확인합니다. 버전에 따라 편집 창에서 항목을 묶는 방식이 다를 수 있으니 노드 메모만 보지 말고 각 필드의 이름을 확인하세요. Android에서는 v2rayNG 노드 카드를 눌러 편집 아이콘을 선택하고 해당 항목을 확인합니다. 구독 노드는 먼저 구독 정보를 새로고침해 설정을 가져오고, 직접 수정하기 전에는 비교할 수 있도록 사본을 만들어 두세요.

VLESS + REALITY + Vision

프로토콜
VLESS
전송 방식
TCP, 일부 화면에서는 RAW로 표시
보안 유형
reality
Flow
xtls-rprx-vision
인증 매개변수
공개 키, Short ID, 사용자 식별 정보

자주 쓰이는 조합의 설정 항목을 비교한 표이며, 그대로 사용할 수 있는 노드 설정은 아닙니다. 각 값은 서버 설정과 일치해야 합니다.

VLESS + TLS + Vision

프로토콜
VLESS
전송 방식
TCP, 일부 화면에서는 RAW로 표시
보안 유형
tls
Flow
xtls-rprx-vision
인증서 검증
서버 이름으로 인증서 확인

Vision은 일반 TLS와도 함께 사용할 수 있습니다. REALITY의 다른 이름이 아니므로 두 보안 방식의 설정을 섞어 입력하지 마세요.

커널도 확인해야 합니다. v2rayNG는 Xray 커널을 사용하므로 해당 조합을 지원할 수 있습니다. v2flyNG는 v2fly 커널을 사용하므로 REALITY 및 Vision 노드와 동등한 실행 환경으로 볼 수 없습니다. v2rayN에서 여러 커널 설정을 지원한다면 클라이언트가 실행 중인지 여부만 확인하지 말고, 현재 노드가 해당 매개변수를 지원하는 Xray 커널에서 실제로 실행되는지 확인하세요.

REALITY와 Vision을 적용해도 속도가 나아지지 않을 수 있는 이유

두 기능은 서비스 제공업체의 대역폭을 늘리거나 다른 네트워크 구간의 혼잡을 해결하지 못합니다. 장거리 연결의 왕복 시간, 저녁 시간대의 패킷 손실, 서버 부하, 노드 속도 제한, 기기의 처리 성능이 중복 암호화 비용보다 더 큰 영향을 줄 수 있습니다. 병목이 외부 회선 대역폭에 있다면 암호화 처리를 줄여도 다운로드 속도가 회선 한계를 넘을 수는 없습니다.

  1. 먼저 테스트 조건을 통일하세요. 같은 기기와 접속 네트워크, 같은 다운로드 파일을 사용하고 다른 다운로드 작업은 중지하세요. 지역과 통신사가 다른 두 노드를 비교해 특정 흐름 제어가 더 빠르다는 근거로 삼기는 어렵습니다.
  2. 트래픽이 프록시를 통과하는지 확인하세요. v2rayN 메인 화면의 ‘시스템 프록시’에서 ‘시스템 프록시 자동 설정’을 선택한 다음 라우팅 모드를 확인합니다. 시스템 프록시는 해당 설정을 따르는 앱에만 영향을 주며 모든 프로그램의 트래픽을 자동으로 처리하지는 않습니다.
  3. 지연 시간과 처리량을 따로 확인하세요. 연결이 안정적으로 설정되는지, 지속 다운로드 속도가 변하는지, 로그에 연결 재시도가 반복되는지 기록하세요. 지연 시간이 낮다는 것은 대기 시간이 짧을 수 있다는 뜻이지 다운로드 대역폭이 크다는 의미는 아닙니다.
  4. 한 번에 하나씩만 변경하세요. 비교가 필요하다면 서버에서 명확히 지원하는 두 설정을 사용하세요. 클라이언트에서 Flow만 삭제한 뒤 인증 실패를 성능 저하로 판단해서는 안 됩니다.

조치: 먼저 네트워크 문제를 점검한 뒤 프로토콜 설정을 조정하세요

여러 노드가 같은 시간대에 느려진다면 먼저 접속 네트워크를 바꾸거나 다른 시간대에 다시 테스트하세요. 특정 노드 하나만 핸드셰이크에 실패한다면 구독 정보와 인증 항목부터 확인하세요. SNI, 지문, Flow를 연달아 바꾸면 어떤 항목이 영향을 줬는지 파악하기 어렵습니다.

핸드셰이크 오류와 자주 생기는 오해

로그 오류는 문제를 좁히기 위한 단서이지 원인을 하나로 확정하는 결론이 아닙니다. EOF, 시간 초과, 연결 재설정이 나타나면 발생 단계를 살펴보세요. 먼저 서버에 연결됐는지 확인하고, 다음으로 핸드셰이크 성공 여부를 확인한 뒤, 마지막으로 프록시 요청이 완료됐는지 확인합니다. 로그를 공유하기 전에는 구독 주소와 사용자 식별 정보 등 인증 정보를 가리세요.

구독을 가져오는 데 성공했는데 왜 핸드셰이크에 실패하나요?

가져오기에 성공했다는 것은 클라이언트가 구독 형식을 읽었다는 뜻일 뿐입니다. 먼저 노드 편집 창을 열어 서버에서 제공한 주소, 포트, 공개 키, Short ID, SNI, Flow를 대조하고 기기의 시간이 정확한지도 확인하세요. 이 노드 하나만 실패한다면 구독 정보를 새로고침한 뒤 다시 시도하세요. 오류를 피하려고 다른 보안 검증부터 끄지는 마세요.

로그에 reality 또는 flow를 인식할 수 없다고 나오면 어떤 값을 바꿔야 하나요?

먼저 실제로 실행 중인 커널과 지원 기능을 확인한 다음 다운로드 페이지에서 알맞은 클라이언트를 선택하세요. 알 수 없는 필드 오류는 대체로 설정과 커널이 호환되지 않는 문제와 관련이 있습니다. reality를 임의로 tls로 바꾸지 마세요. 두 방식은 인증 방법이 다르므로 이름만 바꾼다고 서버가 설정에 맞춰 동작하지 않습니다.

Vision을 켰는데 지연 시간이 거의 그대로인 이유는 무엇인가요?

정상적으로 나타날 수 있는 결과입니다. 노드 지연 시간은 주로 네트워크 왕복 시간과 테스트 방식에 영향을 받으며, Vision의 최적화 목표는 물리적 거리를 줄이는 것이 아닙니다. 같은 회선에서 지속적인 HTTPS 전송을 테스트하고 기기의 부하와 연결 안정성을 살펴보세요. 개선되지 않더라도 이름 때문에 현재 잘 작동하는 설정을 바꿀 필요는 없습니다.

핸드셰이크 이름을 현재 접속 중인 사이트로 바꿔도 되나요?

권장하지 않습니다. 핸드셰이크 이름은 서버 설정에 맞아야 하며 브라우저가 실제로 방문하는 도메인과 일치할 필요는 없습니다. 먼저 구독에 있던 값으로 되돌리세요. 제공업체가 이름을 변경했다면 사이트 도메인을 하나씩 시험하지 말고 구독 정보를 새로고침하세요.

REALITY를 사용하면 DNS와 라우팅을 확인하지 않아도 되나요?

아니요. 서버 주소가 도메인이라면 연결 전에 DNS 조회가 필요할 수 있습니다. 앱 요청이 프록시로 전달되는지는 시스템 프록시와 앱 설정, 라우팅 규칙이 함께 결정합니다. 일반 사이트와 대상 사이트가 각각 어떤 출구를 사용하는지 확인하고, 그다음 이름 해석 실패나 잘못된 규칙 매칭을 해결하세요. 핸드셰이크 방식이 이런 설정을 대신하지는 않습니다.

v2rayN 다운로드