v2rayNG에서 VLESS Reality 프로필을 만들 때는 VLESS라는 이름만 입력하는 것이 아니라 서버 주소, 포트, UUID, 전송 방식, SNI, 공개 키와 짧은 ID를 함께 맞춰야 합니다. 이 중 하나라도 서버가 전달한 값과 다르면 프로필은 저장되더라도 연결 테스트에서 실패할 수 있습니다. 이 글에서는 Android용 v2rayNG에서 서버 제공 정보를 각 입력란에 옮기는 순서와 연결 후 확인할 로그, 자주 발생하는 오류를 정리합니다.
VLESS Reality는 보통 Xray 코어를 통해 동작하며, 서버가 제공한 값을 그대로 옮기는 것이 가장 중요합니다. 먼저 필요한 입력값을 구분하고, v2rayNG의 수동 설정 화면에 입력한 뒤, 포트 테스트와 로그를 이용해 주소·인증·Reality 매개변수를 단계별로 확인합니다.
VLESS Reality에서 필요한 값 이해하기
VLESS Reality 설정은 하나의 비밀번호만 입력하는 방식이 아닙니다. 일반적으로 서버 제공자는 vless:// 링크나 QR 코드, 또는 다음과 같은 항목 목록을 전달합니다. 링크로 가져오면 대부분 자동으로 채워지지만, 수동 입력을 해야 할 때는 각 값의 역할을 구분해야 잘못된 필드를 줄일 수 있습니다.
- 주소와 포트: 서버의 접속 주소와 수신 포트입니다. 포트는 일반적으로
443이지만, 서버 제공자가 다른 숫자를 지정했다면 그 값을 사용해야 합니다. - UUID: VLESS 사용자를 식별하는 값입니다. 한 글자라도 다르거나 앞뒤에 공백이 들어가면 인증에 실패합니다.
- 전송 방식: Reality 조합에서는 보통
TCP를 사용합니다. 서버가 다른 전송 방식을 명시하지 않았다면 임의로 WebSocket이나 gRPC로 바꾸지 마세요. - Flow: 서버가 Vision을 요구하는 경우
xtls-rprx-vision을 입력합니다. 서버 링크에 값이 없는데 임의로 추가하면 연결 방식이 달라질 수 있습니다. - SNI 또는 서버 이름: TLS ClientHello에서 사용할 이름입니다. Reality 설정에서는 서버 주소와 다른 도메인이 SNI로 전달될 수 있으므로 두 값을 같게 만들 필요는 없습니다.
- 공개 키: Reality 서버의 공개 키입니다. 일부 화면에서는
Public Key또는pbk로 표시됩니다. UUID와 혼동하지 않아야 합니다. - 짧은 ID:
Short ID또는sid로 표시되는 선택적 식별값입니다. 서버가 제공한 16진수 문자열을 그대로 입력합니다. - 지문: 보통
chrome처럼 지정됩니다. 서버 설정이나 제공 링크에 명시된 값이 있을 때만 사용하고, 연결이 되지 않는다고 무작정 변경하지 마세요.
encryption=none이라는 문구를 보고 연결이 보호되지 않는다고 오해하는 경우도 있습니다. 이는 VLESS 프로토콜 계층에서 별도의 콘텐츠 암호화를 중복 적용하지 않는다는 의미입니다. 실제 연결 보호는 Reality 보안 계층과 서버·클라이언트의 핸드셰이크가 담당합니다. 따라서 VLESS, Reality, SNI, 공개 키, 짧은 ID는 각각 다른 입력값이며 하나의 값으로 대신할 수 없습니다.
서버가 제공한 공개 키, SNI, 짧은 ID와 Vision을 함께 입력하는 일반적인 Reality 구성입니다.
적합: 최신 Xray 서버, 일반적인 Android 연결
Reality가 아닌 일반 TLS 인증서를 사용하는 구성으로, SNI와 인증서 도메인 확인이 중요합니다.
적합: 일반 TLS 서버, Reality 미지원 환경
WebSocket 경로와 TLS를 함께 사용하는 방식입니다. 경로와 Host가 서버 설정과 일치해야 합니다.
적합: WebSocket 배포, 중간 프록시 환경
v2rayNG에서 프로필 직접 입력하기
가능하다면 서버가 제공한 vless:// 링크를 QR 코드나 클립보드로 가져오는 편이 안전합니다. 링크에는 UUID, 포트, Flow, SNI, 공개 키와 짧은 ID가 함께 들어 있으므로 수동 입력 과정에서 생길 수 있는 오타를 줄일 수 있습니다. 다만 제공자가 텍스트로만 값을 전달했거나 기존 링크를 수정해야 한다면 v2rayNG의 수동 추가 화면을 사용하면 됩니다.
코어 확인
v2rayNG를 열고 왼쪽 메뉴의 설정으로 들어갑니다. 코어 관련 항목에서 Xray 코어를 선택하거나, 현재 설치된 코어가 Reality를 지원하는지 먼저 확인하세요.
프로필 추가
메인 화면 오른쪽 아래의 추가 버튼을 누른 뒤 수동 설정 또는 VLESS 항목을 선택합니다. 서버에서 받은 링크가 있다면 클립보드 가져오기나 QR 코드 스캔을 우선 사용합니다.
기본값 입력
주소, 포트, 사용자 ID에 서버 제공값을 입력하고 보안 방식은 Reality, 전송 방식은 서버가 지정한 값으로 설정합니다. 포트가 443이라고 가정해 임의 입력하지 마세요.
Reality 입력
SNI, 공개 키, 짧은 ID, 지문과 Flow를 각각 해당 칸에 입력합니다. 공개 키를 UUID 칸에 넣거나 짧은 ID 앞에
0x를 붙이는 식으로 형식을 바꾸지 마세요.저장과 선택
저장 버튼을 누른 뒤 목록에서 새 프로필을 선택합니다. 여러 프로필이 있다면 이름에 서버 지역이나 생성일을 넣어 기존 설정과 구분하고, 연결 전에 선택 표시가 현재 프로필에 있는지 확인하세요.
화면의 항목 이름은 v2rayNG 버전과 번역에 따라 조금 다를 수 있습니다. Server Name은 SNI, Public Key는 공개 키, Short ID는 짧은 ID를 뜻하는 경우가 많습니다. Allow Insecure는 인증서 검증을 끄는 옵션과 관련된 항목이므로 Reality 설정이 되지 않는다고 무조건 활성화하지 않는 것이 좋습니다. Reality 서버가 요구하는 정상적인 SNI와 공개 키를 먼저 확인해야 합니다.
| v2rayNG 입력 항목 | 링크에서 보이는 이름 | 입력 기준 |
|---|---|---|
| 주소 | host |
서버 주소를 그대로 입력하며, https://를 앞에 붙이지 않습니다. |
| 포트 | port |
숫자만 입력합니다. 서버가 지정한 포트를 우선합니다. |
| 사용자 ID | uuid |
UUID 전체를 복사하고 공백이나 따옴표를 제거합니다. |
| Flow | flow |
제공된 경우에만 xtls-rprx-vision을 입력합니다. |
| SNI | sni |
서버가 전달한 도메인을 입력합니다. 주소와 다를 수 있습니다. |
| 공개 키·짧은 ID | pbk, sid |
Reality 항목에 각각 입력하며, 문자열을 임의로 줄이지 않습니다. |
연결 테스트와 로그로 원인 좁히기
프로필을 저장한 뒤 바로 여러 값을 바꾸기보다, 현재 설정으로 한 번 연결해 결과를 기록하세요. v2rayNG에서 VPN 연결을 시작하고 브라우저로 간단한 페이지를 열어 본 다음, 연결이 되지 않으면 앱의 로그 화면에서 오류가 발생한 시각의 메시지를 확인합니다. 연결 테스트 결과만으로는 DNS 문제와 Reality 핸드셰이크 문제를 구분하기 어려울 수 있으므로 로그의 핵심 단어를 함께 살펴봐야 합니다.
판단 기준: 먼저 핸드셰이크를 분리하세요
로그에 TLS·Reality 핸드셰이크나 인증 실패가 나타나면 라우팅보다 주소, 포트, UUID, SNI, 공개 키와 짧은 ID를 먼저 확인해야 합니다. 핸드셰이크가 성공한 뒤 특정 도메인만 열리지 않는다면 그때 DNS나 라우팅을 점검하는 순서가 효율적입니다.
- 연결 시간 초과: 서버 주소가 잘못되었거나 포트가 닫혀 있거나, 현재 네트워크에서 해당 서버로 접근하지 못할 수 있습니다. Wi-Fi와 모바일 데이터처럼 서로 다른 회선에서 한 번씩 테스트하세요.
- 인증 실패 또는 사용자 없음: UUID가 서버에 등록된 값과 다를 가능성이 큽니다. 복사 과정에서 공백, 줄바꿈, 대문자 변형이 생기지 않았는지 확인합니다.
- Reality 핸드셰이크 실패: 공개 키, SNI, 짧은 ID, 지문 또는 Flow가 서버와 다를 수 있습니다. 링크 원문과 앱의 각 필드를 한 줄씩 대조하세요.
- 연결은 성공하지만 웹이 열리지 않음: VPN 권한, 시스템 DNS, 라우팅 모드 또는 대상 사이트의 연결 상태를 확인합니다. 프로필 자체가 연결된 뒤의 문제라면 Reality 값만 반복해서 바꾸지 마세요.
- 일부 앱만 작동하지 않음: v2rayNG의 앱별 프록시 설정과 제외 목록을 확인합니다. 선택한 앱만 VPN을 통과하도록 설정되어 있으면 테스트 앱이 프록시 대상에서 빠져 있을 수 있습니다.
테스트는 한 번에 하나의 조건만 바꾸는 방식이 좋습니다. 먼저 주소와 포트, 다음 UUID, 그다음 Reality 매개변수 순서로 확인하면 어느 단계에서 실패하는지 좁힐 수 있습니다. 서버 제공자가 정상 링크를 다시 발급했다면 기존 프로필을 계속 수정하기보다 새 프로필로 가져와 비교하는 편이 빠릅니다. 연결이 성공한 뒤에는 프로필 이름, 코어 종류와 마지막으로 확인한 날짜를 기록해 두면 이후 구독 갱신이나 서버 변경 때 비교하기 쉽습니다.
자주 생기는 설정 실수와 안전한 수정 방법
가장 흔한 실수는 서버 주소와 SNI가 다를 수 있다는 사실을 무시하는 것입니다. Reality 구성에서는 접속할 서버 주소와 핸드셰이크에 사용할 SNI가 서로 다른 역할을 가질 수 있습니다. 서버가 주소는 IP로, SNI는 특정 도메인으로 전달했다면 두 값을 같은 문자열로 합치지 말고 각각의 입력란에 나누어 입력해야 합니다.
두 번째 실수는 공개 키와 짧은 ID를 하나의 값으로 보는 것입니다. 공개 키는 Reality 키 교환에 사용되는 값이고, 짧은 ID는 서버가 허용한 식별값입니다. 두 필드 중 하나만 틀려도 서버와의 핸드셰이크가 정상적으로 완료되지 않을 수 있습니다. 링크에 짧은 ID가 비어 있다면 임의의 값을 만들어 넣지 말고, 서버 설정이 정말로 빈 값을 허용하는지 제공자에게 확인하세요.
세 번째 실수는 코어와 설정의 조합을 확인하지 않는 것입니다. Reality와 xtls-rprx-vision은 일반적인 구형 V2Ray 코어 설정과 동일하게 처리되지 않을 수 있습니다. v2rayNG에서 프로필은 저장되는데 연결이 계속 실패한다면 앱 버전, 선택된 코어와 해당 코어의 Reality 지원 여부를 확인하세요. 다른 코어로 변경할 때는 같은 프로필이 모든 매개변수를 동일하게 해석한다고 가정하지 않는 것이 좋습니다.
최종적으로 정상 상태는 VPN 표시가 켜지는 것만으로 판단하지 않습니다. v2rayNG 로그에서 반복적인 핸드셰이크 오류가 없는지, 실제 브라우저 접속이 가능한지, Wi-Fi에서 모바일 데이터로 전환했을 때 다시 연결되는지 확인해야 합니다. 기본 연결이 안정된 뒤에야 앱별 프록시, 라우팅 모드와 DNS 같은 부가 설정을 조정하세요. 이렇게 순서를 지키면 VLESS Reality 자체의 입력 오류와 Android 네트워크 환경 문제를 구분하기 쉬워집니다.