PROTOCOL / CORE / CLIENT

V2Ray 프로토콜
및 코어 가이드

VMess · VLESS · Trojan · Shadowsocks
REALITY 보안 계층 및 Xray / V2Fly 코어

이 페이지는 설정값과 호환 범위를 중심으로 구성되어 있어 선택과 확인에 유용합니다. 처음 설치한다면 먼저 사용 가이드의 빠른 시작을 따라 하세요. 프로토콜 이름, 코어 또는 구독 항목이 맞지 않으면 해당 절을 확인하면 됩니다. 예시는 설정 구조만 설명하며, 실제로 연결할 수 있는 서버 정보는 제공하지 않습니다.

먼저 프로토콜 계층을 읽고, 서버에서 제공하는 프로토콜 종류에 맞춰 살펴보세요. 비교 표는 가로로 스크롤할 수 있습니다.

프로토콜 계층과 설정 범위

클라이언트 설정에서 말하는 ‘프로토콜’만으로는 연결 전체를 설명할 수 없습니다. 서버 설정 하나에는 보통 프록시 프로토콜, 하위 전송 방식, 전송 계층 보안, 클라이언트 라우팅의 네 부분이 들어갑니다. 프록시 프로토콜은 인증과 요청 형식을 정하고, 전송 방식은 데이터를 실어 나르며, 보안 계층은 핸드셰이크와 연결 보호를 처리합니다. 라우팅은 요청을 어느 아웃바운드로 보낼지 결정합니다. VLESS, tcp, reality가 함께 표시되어도 모순이 아닙니다. 각 항목이 서로 다른 질문에 답하기 때문입니다. 먼저 계층을 구분해야 다른 범주에 속하는 이름을 잘못 비교하지 않을 수 있습니다.

서버 편집 창에서 계층별로 확인하기

v2rayN의 서버 편집 창을 열고 먼저 프로토콜 종류를 확인한 뒤 ‘주소’, ‘포트’, ‘사용자 ID’ 또는 ‘비밀번호’를 대조하세요. 다음으로 ‘전송 프로토콜’, 마지막으로 ‘전송 계층 보안’을 확인합니다. 주소는 클라이언트가 실제로 연결하는 대상이고, SNI는 보안 핸드셰이크에서 사용하는 서버 이름이므로 서로 다를 수 있습니다. 주소에 도메인을 입력했다면 먼저 DNS 조회가 이루어져야 합니다. SNI를 주소란에 그대로 복사하면 전혀 다른 호스트에 연결될 수 있습니다. 서버의 수신 포트를 로컬 수신 포트로 잘못 입력해도 연결이 시작되기 전에 실패합니다.

일반적으로 tcp는 TCP로 데이터를 전달한다는 뜻이며, 일부 화면에서는 더 새로운 전송 방식 이름을 사용하기도 합니다. WebSocket은 HTTP 업그레이드 방식으로 양방향 데이터를 전달하고, gRPC는 HTTP/2 관련 메커니즘을 활용합니다. 전송 방식은 배포 경로와 요청 포장을 바꾸지만 VMess를 자동으로 VLESS로 바꾸지는 않습니다. path, Host, serviceName 등의 옵션은 해당 전송 방식에서만 의미가 있습니다. 서버가 사용하는 전송 방식에 맞춰 클라이언트 항목을 선택하세요. 이름이 더 최신처럼 보인다는 이유로 임의로 바꾸면 안 됩니다.

계층주요 이름확인할 항목
프록시 프로토콜VMess / VLESS / Trojan / Shadowsocks인증 방식, 사용자 ID, 비밀번호, 암호화 방식
전송 방식TCP / WebSocket / gRPC전송 유형, 경로, Host 또는 서비스 이름
보안 계층TLS / REALITY서버 이름, 검증 매개변수, 지문 설정
클라이언트 정책시스템 프록시 / TUN / 라우팅어떤 프로그램이 프록시를 사용하는지, 도메인과 IP를 어떻게 분기할지

설정이 성공해도 트래픽이 클라이언트로 전달된다는 뜻은 아닙니다

서버 설정이 올바르다는 것은 코어가 아웃바운드 연결을 맺을 조건을 갖췄다는 뜻일 뿐입니다. 브라우저가 해당 연결을 사용하는지는 시스템 프록시, 브라우저 자체 프록시 설정, 로컬 수신 포트에 달려 있습니다. TUN은 가상 네트워크 인터페이스를 통해 설정에 맞는 트래픽을 처리하는 별도의 연결 방식입니다. 라우팅의 직접 연결 규칙에 따라 일부 요청은 프록시 서버를 거치지 않을 수 있습니다. 따라서 ‘페이지가 열린다’고 해서 의도한 아웃바운드를 사용한다고 단정할 수 없고, ‘클라이언트가 실행 중’이라고 해서 모든 앱의 트래픽이 전달된다고 볼 수도 없습니다. 실제 요청과 로그를 함께 확인하세요.

프로토콜 이름만으로 보안 계층을 판단할 수도 없습니다. VLESS 자체는 페이로드를 암호화하지 않으므로 보통 TLS나 REALITY 같은 보호 방식과 함께 사용합니다. Trojan은 일반적으로 TLS를 기반으로 배포하고, Shadowsocks는 정해진 인증 암호화 방식을 사용합니다. 앱에서 사용하는 HTTPS는 그보다 안쪽에 있는 별도의 보호 계층입니다. 프록시 연결의 암호화가 웹사이트 인증서 검증을 대신하지 않으며, 접속 대상 사이트의 신뢰성을 보장하지도 않습니다. 설정을 선택할 때는 프로토콜 하나만 보지 말고 전체 조합을 확인하세요.

원본 정보를 보존하고 계층별로 확인하기

노드 정보를 정리할 때는 먼저 서버에서 제공한 전체 프로토콜 조합과 필요한 코어를 기록한 다음, 편집 창에서 항목이 빠지지 않았는지 확인하세요. 연결 오류는 주소 확인, 포트 연결, 핸드셰이크, 인증, 요청 전달 순으로 살펴보면 됩니다. 앞 단계가 완료되지 않았다면 뒤 단계 설정을 바꿔도 대개 소용없습니다. 예를 들어 연결 시간 초과라면 먼저 주소와 서버 접근성을 확인하고, 인증서 이름 오류라면 SNI를 확인해야 합니다. 인증 실패를 라우팅 모드 전환으로 해결할 수는 없습니다.

이 페이지에서는 프로토콜별로 살펴본 뒤 마지막에 성능과 사용 환경을 다룹니다. 현재 설정을 계층 표에 맞춰 보면서 지금 사용하는 전송 방식과 관계없는 고급 옵션은 일단 제외해도 됩니다. 아직 클라이언트를 설치하지 않았다면 데스크톱용 설치 파일 페이지에서 v2rayN을 선택한 다음 서버 설정에 맞춰 코어와 프로토콜을 정하세요. 더 빠를 것 같은 조합을 먼저 고른 뒤 서버의 기존 설정을 거꾸로 바꾸지는 마세요.

VMess의 인증과 전송 방식 선택

VMess는 Project V 생태계에서 비교적 일찍 자리 잡은 프록시 프로토콜로, 사용자 식별, 요청 포장, 데이터 보호와 관련된 메커니즘을 포함합니다. 오랫동안 널리 사용되어 오래된 구독과 배포 문서에도 여전히 많이 등장합니다. VMess를 이해할 때는 현재도 사용할 수 있다는 사실과 오래된 안내가 지금도 유효하다는 사실을 구분해야 합니다. 이전 설정의 인증 방식이나 보조 항목은 최신 코어에 적합하지 않을 수 있습니다. 프로토콜 선택은 튜토리얼의 작성 시기나 노드 이름이 아니라 서버의 실제 구현을 기준으로 해야 합니다.

사용자 ID, 암호화 방식과 시간

‘사용자 ID’에는 보통 UUID를 입력합니다. 인증에 쓰이는 값이며 임의로 정하는 메모 이름이 아닙니다. 클라이언트에서 새 UUID를 생성해도 서버 권한이 자동으로 부여되지 않으므로 서버에 등록된 사용자 값과 일치해야 합니다. ‘암호화 방식’도 프로토콜 설정의 일부로, TLS 사용 여부와 혼동하면 안 됩니다. 자동 선택은 구현체가 적절한 방식을 결정하는 경우가 많습니다. 알고리즘을 직접 지정하기 전에는 양쪽에서 지원하는지 확인하세요. 프로세서의 하드웨어 가속 지원 여부에 따라 실제 처리 부담이 달라지므로, 이름만 보고 일관된 속도 순위를 정할 수는 없습니다.

VMess 인증에는 시간 관련 검사가 포함되므로 시스템 시각이 크게 어긋나면 인증에 실패할 수 있습니다. 문제를 해결할 때는 먼저 시스템 시간 동기화를 켜고 날짜, 시간, 시간대가 올바르게 표시되는지 확인하세요. 시간대는 표시 방식에 영향을 줄 뿐이며, 실제로 정확해야 하는 것은 시스템 시간입니다. 화면에 보이는 시간만 바꾸고 실제 시각을 바로잡지 않으면 문제가 계속됩니다. 시계를 확인하기도 전에 구독을 다시 만들거나 암호화 방식을 바꾸면 변수가 늘어나 오류를 재현하기 어려워질 수 있습니다.

오래된 공유 정보에는 alterId가 자주 포함됩니다. 현재 흔히 쓰이는 VMess AEAD 설정은 보통 0을 사용하거나 클라이언트가 해당 방식에 따라 처리합니다. 값을 크게 설정한다고 더 안전해지는 항목이 아닙니다. 이전 필드가 남아 있는 구독을 사용한다면 서버가 해당 인증 방식으로 설정되어 있는지, 클라이언트가 그 필드를 어떻게 해석하는지 확인하세요. 수년 전의 0이 아닌 값을 그대로 복사하지 마세요. 서버 안내와 가져온 설정이 서로 다르면 양쪽을 임의로 바꾸기보다 서버의 실제 배포 방식과 사용 중인 코어 문서를 기준으로 판단해야 합니다.

WebSocket과 TLS를 함께 사용하는 이유

VMess는 여러 전송 방식으로 전달할 수 있습니다. 역방향 프록시가 필요한 배포에서는 WebSocket과 TLS 조합이 흔합니다. 클라이언트가 먼저 TLS 핸드셰이크를 완료하고 올바른 HTTP 업그레이드 요청을 보낸 뒤 VMess 세션을 시작합니다. 따라서 포트에 연결할 수 있다고 경로까지 맞는 것은 아닙니다. WebSocket의 path와 Host는 배포 설정과 일치해야 하고, 역방향 프록시는 요청을 해당 백엔드로 전달해야 합니다. 경로 철자나 끝의 슬래시가 다르거나 잘못된 대상 사이트를 선택하면 핸드셰이크가 실패하거나 일반 웹페이지가 표시될 수 있습니다.

이 조합에는 포장과 핸드셰이크 단계가 더해지지만, 접속할 때마다 전체 비용을 다시 부담한다는 뜻은 아닙니다. 장기 연결 재사용, 연결 풀, 앱의 접속 방식, 중간 프록시의 시간 제한에 따라 결과가 달라집니다. 반대로 직접 TCP를 사용하면 포장 단계는 줄지만 모든 환경에서 페이지가 더 빨리 로드되는 것도 아닙니다. 서버 위치, 연결 품질, DNS가 다르다면 배포 방식이 서로 다른 두 연결만 비교해서 VMess 자체의 속도를 판단할 수 없습니다.

기존 배포를 유지할지 마이그레이션할지

기존 VMess 설정이 유지 관리 중인 클라이언트와 서버에서 정상 작동한다면, 프로토콜 이름이 오래되었다는 이유만으로 마이그레이션할 필요는 없습니다. 오래된 인증 방식을 아직 사용하는지, 설정이 안정적으로 가져와지는지, 전송 매개변수가 명확한지, 서버가 계속 관리되는지를 확인하는 편이 중요합니다. VLESS로 옮기려면 서버에 해당 인바운드를 만들고 새 설정값을 받아야 합니다. 클라이언트 드롭다운에서 VLESS만 선택하면 되는 것이 아닙니다. 두 프로토콜은 인증과 요청 형식이 달라 한쪽에서 이름만 바꿔 호환할 방법은 없습니다.

새로 배포하면서 Xray의 VLESS와 REALITY 조합이 필요하다면 해당 방식에 맞춰 설정하세요. 기존 VMess 서버에 계속 연결해야 한다면 프로토콜과 전송 방식을 그대로 유지하는 것이 우선입니다. ‘가져오기는 성공했지만 연결되지 않음’ 문제가 발생하면 원본 공유 정보와 편집 창의 암호화 방식, 전송 방식, 보안 계층, 경로를 비교한 다음 로그를 확인하세요. 일반적인 문제 해결 방법은 자주 묻는 질문에서 확인할 수 있습니다. 로컬 시스템 프록시 문제를 VMess 프로토콜 비호환으로 잘못 판단하지 마세요.

VLESS와 REALITY 설정값 맞추기

VLESS는 프록시 프로토콜 계층을 간결하게 하고 연결 보호는 적절한 외부 메커니즘에 맡기는 방향으로 설계되었습니다. VMess와 마찬가지로 프록시 프로토콜이지만 VMess의 암호화 옵션과 같은 방식으로 이해하면 안 됩니다. REALITY는 VLESS와 함께 자주 쓰이는 보안 방식이지, VLESS를 단독으로 대체하는 프록시 프로토콜이 아닙니다. 따라서 VLESS + REALITY 설정에는 최소 두 계층의 선택이 담겨 있으며, 실제 연결 설정을 완성하려면 전송 방식, 흐름 제어, 주소, 포트, 인증 정보도 지정해야 합니다.

인증 정보부터 확인하고 핸드셰이크를 점검하기

‘사용자 ID’는 서버에 등록된 인증 사용자와 일치해야 합니다. ‘흐름 제어’는 속도 설정이 아닙니다. xtls-rprx-vision은 특정 데이터 처리 방식을 뜻하며 서버, 클라이언트 코어, 전송 방식의 조합이 모두 지원해야 합니다. 흔히 사용하는 VLESS + REALITY + Vision은 TCP로 데이터를 전달합니다. Vision을 WebSocket 같은 조합에 임의로 추가할 수는 없습니다. 서버에서 해당 흐름 제어를 요구하지 않는데 다른 노드의 값을 복사하면 연결에 실패할 수 있습니다. VLESS의 encryption은 흔히 none으로 설정하지만, 그렇다고 외부 보안 계층까지 생략해도 된다는 뜻은 아닙니다.

REALITY 설정의 ‘SNI’ 또는 ‘서버 이름’은 서버에서 허용한 이름 범위에 포함되어야 합니다. 접속 가능한 웹사이트 이름을 아무거나 고르면 안 됩니다. ‘Fingerprint’는 클라이언트 핸드셰이크 지문 동작을 선택하는 항목이며 chrome은 흔한 예입니다. 이 설정은 브라우저 신원을 인증하는 기능이 아니고 다른 매개변수를 대신하지도 않습니다. 클라이언트와 코어에 따라 표시되는 옵션이 다를 수 있습니다. 가져온 뒤 항목이 빠졌다면 비슷한 이름의 설정을 찾아 임의로 입력하기 전에 해당 구현체의 지원 여부를 확인하세요.

‘PublicKey’에는 서버가 제공한 공개 키를 입력합니다. 일부 새 화면에서는 이에 해당하는 인증 매개변수에 다른 이름을 사용할 수 있으므로 현재 구현의 안내를 확인하세요. 서버의 개인 키를 클라이언트에 복사해서는 안 됩니다. ShortId도 서버에서 허용한 설정값을 사용해야 합니다. 보통 정해진 길이 범위의 16진수 문자열을 사용하며, 빈 값이 허용되는지는 서버 설정에 따라 다릅니다. ‘SpiderX’는 관련 접근 경로 동작에 관여하는 값으로 UUID를 대신하거나 대역폭을 높이는 설정이 아닙니다. 서버에서 요구하지 않는 값을 임의로 만들어 넣지 마세요.

필드값의 출처흔한 잘못된 사용
사용자 ID서버 사용자 설정새로 생성한 UUID를 승인된 사용자로 간주
흐름 제어서버 프로토콜 조합호환되지 않는 전송 방식에서 Vision 강제 사용
SNI서버에서 허용한 서버 이름주소란에 도메인을 임의로 입력
공개 키 / ShortId서버가 제공한 핸드셰이크 설정값문자를 빠뜨리거나 공백을 포함하거나 잘못된 키를 입력

Xray 코어를 먼저 확인해야 하는 이유

이 사이트에서 안내하는 세 가지 클라이언트 중 하나를 선택할 때 VLESS + REALITY를 사용한다면 Xray 지원 경로를 먼저 확인하세요. 데스크톱에서는 v2rayN의 코어 설정을 확인하고, Android에서는 v2rayNG가 해당 기능을 지원하는지 확인하는 것이 좋습니다. 가까운 생태계에서 나왔다는 이유만으로 V2Fly가 같은 보안 필드를 해석할 것이라고 가정하지 마세요. 클라이언트 메뉴에 VLESS가 보여도 실제로 실행 중인 모든 코어가 REALITY를 지원한다는 뜻은 아닙니다. 프로토콜 이름을 제공하는 것과 전체 조합을 실행할 수 있는 것은 서로 다른 조건입니다.

문제 해결은 핸드셰이크 매개변수를 하나씩 비교하는 데서 시작하세요. 공개 키, ShortId, SNI, 흐름 제어 중 하나만 달라도 연결이 완료되지 않을 수 있습니다. 복사할 때 앞뒤 공백, 줄바꿈, 전각 문자가 섞이지 않았는지 확인하세요. 구독 업데이트 후 갑자기 연결되지 않는다면 이전 기록과 새 기록을 먼저 비교하고 로컬 설정을 한꺼번에 초기화하지 마세요. 로그에 설정 필드를 인식할 수 없다고 나오면 코어와 생성된 설정을 확인하세요. 연결은 시도했지만 핸드셰이크가 실패했다면 서버 설정값과 시스템 시간으로 점검 범위를 옮기면 됩니다.

보안 메커니즘이 성능을 보장하지는 않습니다

REALITY의 기술적 특징을 모든 네트워크에서 속도가 더 빠르다는 뜻으로 해석할 수는 없습니다. 연결 수립에는 왕복 지연 시간, 서버 부하, 실제 전송 경로가 영향을 줍니다. Vision의 데이터 처리 방식도 설정 조건과 분리해 독립적으로 비교할 수 있는 옵션이 아닙니다. 초보자는 서버에서 명확히 제공하고 클라이언트가 완전히 지원하는 조합으로 안정적인 기준을 먼저 만드는 것이 좋습니다. 그다음 동일한 조건에서 다른 조합을 비교하세요. 처음부터 흐름 제어, 다중화, TUN을 동시에 켜지는 마세요.

기존 TLS 배포에서 REALITY로 옮길 때는 서버 설정, 클라이언트 코어, 구독 출력 방식을 함께 고려해야 합니다. 전송 계층 보안 드롭다운만 바꾸고 기존 인증서 설정을 유지하는 것으로는 보통 마이그레이션을 완료할 수 없습니다. 먼저 현재 작동하는 설정을 보존하고 별도의 항목을 추가해 테스트하세요. 설정 해석, 핸드셰이크, 대상 요청이 모두 정상인지 확인한 뒤 일상적으로 사용하는 항목을 바꾸는 것이 좋습니다. 용어는 개념 빠른 참조에서 확인할 수 있으며, 첫 연결 절차는 빠른 시작 가이드를 따르세요.

Trojan과 Shadowsocks의 차이

Trojan과 Shadowsocks는 또 다른 흔한 선택지지만 설계의 중점은 서로 다릅니다. Trojan은 일반적으로 TLS 연결과 비밀번호 인증을 중심으로 배포되므로 인증서와 서버 이름이 중요한 설정입니다. Shadowsocks는 간결한 프록시 전달 및 인증 암호화 메커니즘을 바탕으로 폭넓게 구현되어 있으며, 암호화 방식에 따라 세대가 나뉩니다. 비교할 때 ‘비밀번호만 필요하다’는 사실을 보안 계층까지 같다는 뜻으로 이해하면 안 됩니다. SS라고 적힌 노드가 모두 동일한 알고리즘과 기능을 제공하는 것도 아닙니다.

Trojan: 비밀번호뿐 아니라 인증서와 이름도 필요합니다

v2rayN 또는 v2rayNG에서 Trojan을 추가할 때는 보통 주소, 포트, 비밀번호, TLS 관련 설정이 필요합니다. 비밀번호는 입력기에서 기호가 바뀌지 않도록 원본 그대로 입력하세요. 메모 이름은 인증에 사용되지 않습니다. 서버 이름은 배포 설정 및 인증서 검증 방식과 일치해야 합니다. 서버가 그렇게 구성되어 있다면 주소는 IP를 사용하고 검증에는 도메인을 사용할 수도 있습니다. 인증서 이름이 일치하지 않는다면 비밀번호 길이를 의심하기 전에 SNI와 서버 인증서를 확인하세요.

Trojan에 처음 연결할 때는 보통 TCP 연결과 TLS 핸드셰이크가 이루어집니다. 짧은 요청을 많이 보내는 경우 연결 재사용 여부가 체감에 영향을 줍니다. 오랫동안 데이터를 전송하는 경우에는 연결 처리량과 서버 자원이 더 중요합니다. TLS는 범용으로 널리 쓰이는 성숙한 보안 기반이지만 실제 성능은 구현, 인증서 배포, 중간 프록시, 핸드셰이크 재개 기능에 따라 달라집니다. TLS를 사용한다는 이유만으로 반드시 느리다고 단정하거나, 설정 항목이 적다는 이유로 문제 해결 때 비밀번호 하나만 확인해서는 안 됩니다.

Shadowsocks: 암호화 방식을 정확히 맞춰야 합니다

Shadowsocks의 일반적인 설정에는 서버, 포트, 비밀번호, 암호화 방식이 포함됩니다. 최신 AEAD 방식과 이전 세대의 스트림 방식은 설계가 다릅니다. AEAD는 암호화뿐 아니라 데이터 인증도 처리합니다. 서버에서 지정한 방식은 클라이언트와 실행 중인 코어가 모두 지원해야 하며, 드롭다운에 비슷한 이름이 있다고 서로 대체할 수 있는 것은 아닙니다. 방식을 잘못 선택하면 비밀번호가 맞아도 통신할 수 없습니다. 이전 설정을 가져올 수 있다는 것은 클라이언트가 공유 형식을 인식했다는 뜻일 뿐, 현재 코어가 해당 알고리즘을 지원한다는 뜻은 아닙니다.

AEAD 2022 같은 방식은 키 형식에 명확한 조건을 둘 수 있으므로 일반 텍스트 비밀번호처럼 생각해 임의로 입력하면 안 됩니다. 일부 배포는 다중 사용자 키 등의 확장 형식을 사용하므로 공유 정보 전체를 그대로 보존해야 합니다. 이러한 설정을 사용한다면 먼저 서버의 암호화 방식과 클라이언트 지원 범위를 확인한 뒤 키를 정확히 복사하세요. 구분자가 있는 내용을 일부만 잘라내거나 구독 변환 도구가 기존 비밀번호 방식으로 다시 해석하게 두면 의미가 달라질 수 있습니다. 키 형식은 프로토콜 조건이지 자유롭게 선택할 수 있는 표시 방식이 아닙니다.

기본 Shadowsocks 설정에서 TCP와 UDP를 지원하는지도 클라이언트의 트래픽 연결 방식과 함께 확인해야 합니다. 서버에서 UDP를 허용하더라도 시스템 HTTP 프록시를 통해 클라이언트에 연결된 프로그램이 UDP를 투명하게 전달받는 것은 아닙니다. 공유 링크에 플러그인 매개변수가 포함될 수도 있습니다. 이 사이트에서 안내하는 클라이언트와 코어가 해당 확장을 구현하지 않았다면 서버 주소와 비밀번호만 남겨서는 동등한 설정이 되지 않습니다. 이 경우 인식할 수 없는 필드를 지우고 계속 사용하기보다 양쪽이 지원하는 전체 설정을 요청하세요.

확인 항목일반적인 Trojan 설정일반적인 Shadowsocks 설정
인증 정보서버에서 지정한 비밀번호암호화 방식에 맞는 비밀번호 또는 키
보안 설정TLS, 서버 이름, 인증서 검증지정된 인증 암호화 방식
주요 호환 범위전송 확장 및 TLS 설정암호화 방식 세대, 키 형식, 확장 매개변수
문제 해결 시작점핸드셰이크, 이름, 비밀번호암호화 방식, 키, 포트, UDP 경로

설정 항목 수가 아니라 기존 배포 방식에 맞춰 선택하기

서버에서 올바르게 관리되는 Trojan 설정을 제공하고 클라이언트가 해당 전송 및 TLS 설정을 모두 지원한다면, 매개변수를 몇 개 줄이려고 다른 프로토콜로 바꿀 이유는 없습니다. 서버가 Shadowsocks를 사용한다면 특히 세대별 차이를 고려해 암호화 방식과 키 형식을 정확히 확인해야 합니다. 호환성을 높이겠다며 보안 검사를 끄거나 알 수 없는 매개변수를 삭제해서는 안 됩니다. 의미가 바뀌어 오류가 사라진 설정을 사용하는 것보다 원래 오류를 보존하는 편이 문제 해결에 도움이 됩니다.

실제 선택에서는 관리 부담도 고려해야 합니다. 인증서를 안정적으로 갱신할 수 있는지, 키 변경 사항이 구독에 반영되는지, 대상 코어가 필요한 확장을 지원하는지 확인하세요. 기존 서비스에 연결하려는 초보자라면 프로토콜을 새로 정하기보다 현재 배포 방식에 맞추는 것이 가장 중요합니다. 비밀번호나 구독 내용이 노출되었을 가능성이 있다면 서버에서 해당 정보를 폐기하고 다시 배포해야 합니다. 로컬 메모만 바꾸는 것으로는 해결되지 않습니다. 클라이언트 로그와 공유 링크에도 민감한 설정값이 포함될 수 있으므로 문의 내용을 보내기 전에 인증 정보와 전체 구독 주소를 삭제하세요.

V2Fly, Xray와 클라이언트의 역할

이 생태계를 이해하려면 Project V부터 살펴보는 것이 좋습니다. V2Fly는 V2Ray 관련 구현과 커뮤니티 유지 관리를 이어 왔고, Xray는 관련 코드 기반에서 출발해 독자적인 기능 방향으로 발전했습니다. 공통된 역사는 있지만 프로토콜 지원, 설정 구조, 구현 세부 사항은 달라졌습니다. 이름이 비슷하다고 실행 파일을 서로 바꿔 쓸 수 있는 것은 아니며, 설정 하나를 확인 없이 양쪽에서 실행할 수 있다는 뜻도 아닙니다. 호환성은 ‘같은 계열’이라는 말이 아니라 구체적인 프로토콜 조합과 필드를 기준으로 판단해야 합니다.

그래픽 인터페이스만으로 연결이 처리되는 것은 아닙니다

v2rayN은 이 사이트에서 데스크톱용으로 우선 추천하는 그래픽 클라이언트입니다. 서버 기록, 구독, 라우팅 옵션, 코어 실행을 관리합니다. 실제 아웃바운드 설정을 해석하고 트래픽을 전달하는 것은 실행 중인 코어입니다. 인터페이스 업데이트는 메뉴와 설정 생성 방식을 바꿀 수 있고, 코어 업데이트는 지원 필드나 프로토콜 동작을 바꿀 수 있으므로 두 변경 사항을 구분해야 합니다. ‘코어 전환’ 또는 관련 설정에서 이름을 선택한 뒤에는 실행 로그를 통해 실제로 의도한 구현체가 구동되었는지 확인하세요. 화면에 표시된 이름만으로 판단하면 안 됩니다.

v2rayNG는 Android용이며, 이 사이트에서는 Xray 경로를 우선 추천합니다. v2flyNG는 V2Fly 경로를 사용하는 대안입니다. 인터페이스가 얼마나 비슷한지가 아니라 연결할 서버에 필요한 기능을 기준으로 선택하세요. 일반적인 VMess 설정도 전송 방식과 보안 계층을 하나씩 확인해야 합니다. REALITY나 Vision이 포함된 경우 해당 기능을 지원하는 Xray 경로를 선택해야 합니다. 휴대전화에서 VPN 권한을 허용하면 클라이언트가 트래픽에 접근할 수 있지만, 코어에 새로운 프로토콜 지원 기능이 추가되는 것은 아닙니다.

클라이언트플랫폼선택 시 중점
v2rayNWindows / macOS / Linux데스크톱 설치 파일을 선택한 다음 실행 코어와 프로토콜 조합 확인
v2rayNGAndroidXray 경로 사용; REALITY와 흐름 제어 등 구체적인 필드 확인
v2flyNGAndroidV2Fly 경로 대안; 서버 설정이 지원 범위에 포함되는지 확인

JSON 구조가 비슷해도 기능이 같다는 뜻은 아닙니다

두 코어의 설정에는 inbounds, outbounds, routing, dns처럼 비슷한 구조가 자주 등장하지만, 바깥쪽 이름이 같다는 것은 개념이 비슷하다는 뜻일 뿐입니다. 내부 객체, 사용 가능한 열거값, 기본 동작, 새 필드는 다를 수 있습니다. REALITY 관련 설정을 임의의 코어가 사용하는 일반 TLS 필드로 취급할 수는 없습니다. 설정을 파싱할 수 있더라도 라우팅 순서, DNS 정책, 전송 기본값 차이로 원래 배포와 다르게 작동할 수 있습니다. 따라서 ‘구문 오류가 없다’는 것만으로 마이그레이션이 완료된 것은 아닙니다.

그래픽 클라이언트에서 관리하는 기록은 보통 먼저 클라이언트 내부 모델로 변환된 뒤 실제 실행 설정으로 생성됩니다. 일반적인 작업은 간편해지지만 표현 범위에 제한이 생길 수 있습니다. 서버에서 제공한 복잡한 네이티브 설정을 일반 노드 편집 창에 완전히 옮기지 못할 수도 있습니다. 사용자 지정 설정을 가져온 경우 일부 그래픽 인터페이스 설정을 우회할 수 있으며, 이때 화면에서 라우팅 옵션을 바꿔도 해당 설정에 반영되지 않을 수 있습니다. 먼저 현재 항목이 일반 서버 기록인지 사용자 지정 설정인지 확인하세요.

코어를 바꿀 때는 범위를 좁혀 마이그레이션하기

전환 전에 현재 작동하는 설정을 저장하고 로컬 포트, 시스템 프록시 모드, DNS, 라우팅 방식을 기록하세요. 그런 다음 대표 서버 하나만 선택해 코어가 실행되는지, 핸드셰이크가 완료되는지, 도메인 요청과 필요한 UDP 앱이 정상 동작하는지 확인합니다. 모든 구독을 한꺼번에 변환해 기존 기록을 덮어쓰지 마세요. 로그에 알 수 없는 필드가 표시되면 먼저 호환되지 않는 기능을 되돌리세요. 일부 요청만 잘못된 아웃바운드로 전달된다면 라우팅과 DNS를 확인해야 합니다. 서로 다른 문제를 모두 코어 오류로 처리하지 마세요.

코어 업데이트도 이름만 보고 ‘최신’을 추구해서는 안 됩니다. 해결하려는 문제가 해당 구현과 관련 있는지 먼저 확인하고, 롤백에 필요한 설정 자료를 보존하세요. 클라이언트와 코어는 서로 맞춰 사용해야 합니다. 오래된 인터페이스는 새 기능에 필요한 구조를 만들지 못할 수 있고, 인터페이스만 업데이트한 채 구형 코어를 계속 실행해도 오류가 발생할 수 있습니다. 이 사이트의 설치 파일 페이지에서는 운영체제와 아키텍처에 맞는 항목을 확인할 수 있습니다. 실행에 필요한 런타임이나 권한 문제는 v2rayN 시작 시 충돌 문제 해결 노트를 참고하세요.

유지 관리 여부도 구체적으로 판단해야 합니다. 오픈 소스라고 해서 모든 배포 파일이 같은 관리 절차를 따른다는 뜻은 아닙니다. 특정 코어가 계속 개발된다고 해서 모든 기존 설정이 자동으로 호환되는 것도 아닙니다. 초보자에게 유용한 것은 막연한 코어 순위가 아니라 ‘이 서버 설정에 필요한 기능은 무엇인가, 현재 클라이언트가 그 설정을 빠짐없이 만들 수 있는가, 실행 중 실제로 해당 기능이 활성화되어 있는가’입니다. 이 세 가지를 명확히 기록하면 기기 변경과 문제 해결이 훨씬 쉬워집니다.

연결 오버헤드, 시스템 자원과 모바일 배터리

‘어떤 프로토콜이 가장 빠른가’를 비교하려면 먼저 측정 대상을 정해야 합니다. 첫 연결은 DNS 조회, 연결 수립, 보안 핸드셰이크가 중요합니다. 웹페이지 사용 경험에는 대상 사이트, 연결 재사용, 리소스 개수도 영향을 줍니다. 지속 다운로드에서는 처리량, 패킷 손실, 서버 용량이 더 중요하고, 음성이나 실시간 앱에서는 지터와 UDP 경로를 살펴야 합니다. 지표마다 결과가 다를 수 있습니다. 클라이언트의 지연 시간 측정 하나로 모든 앱의 성능을 판단할 수 없으며, 서버가 서로 다른 두 수치를 비교해 프로토콜 자체의 속도 차이를 도출해서도 안 됩니다.

핸드셰이크 비용과 지속 전송은 따로 살펴보기

DNS 조회, TCP 연결 수립, TLS 또는 다른 보안 핸드셰이크에는 연결 전 대기 시간이 들어갑니다. WebSocket과 gRPC 등의 전송 방식도 연결을 만드는 과정이 있습니다. 하지만 연결 재사용과 핸드셰이크 재개로 반복 비용을 줄일 수 있고, 네트워크 재전송은 한 번의 실패로 드는 비용을 늘릴 수 있습니다. 연결을 자주 새로 만드는 앱에서는 불필요한 왕복을 줄이는 것이 도움이 될 수 있습니다. 이미 연결을 유지하며 데이터를 전송한다면 초기 핸드셰이크가 전체 시간에서 차지하는 비중은 줄어듭니다. 성능을 시험할 때 이 차이를 유지하고, 장시간 다운로드 한 번으로 짧은 연결의 사용 경험을 대신 판단하지 마세요.

CPU 사용량은 암호화 알고리즘, 하드웨어 명령어, 데이터 복사, 구현 최적화에 따라 달라집니다. 데스크톱 프로세서에서 부담이 적은 알고리즘도 다른 아키텍처의 휴대전화에서는 그렇지 않을 수 있습니다. 메모리 사용량은 연결 수, 버퍼, 라우팅 데이터, DNS 캐시, 로그 규모의 영향도 받으므로 프로토콜 하나로 결정되지 않습니다. 클라이언트 점유율이 늘어났다면 프로토콜을 바꾸기 전에 규칙 다운로드 중인지, 연결이 많이 유지되고 있는지, 상세 로그를 출력하는지 확인하세요.

모바일에서는 암호화 비용만 비교할 수 없는 이유

휴대전화 배터리를 많이 소모하는 요인에는 무선 모듈 깨우기, 약한 신호에서의 재전송, 백그라운드 연결, 잦은 재연결, 다른 앱의 활동이 있습니다. 프로토콜 암호화에도 연산 자원이 필요하지만 항상 주요 원인인 것은 아닙니다. 안정적으로 연결되어 깨우는 횟수가 적은 조합은 이론상 처리 단계가 가벼워도 계속 재시도하는 조합보다 전력을 덜 쓸 수 있습니다. 셀룰러 네트워크와 Wi-Fi의 전력 사용 조건도 다르므로 네트워크나 화면 밝기가 다른 상황에서 배터리 감소를 Xray 또는 V2Fly 탓으로 돌릴 수 없습니다.

Android에서 VPN 인터페이스로 트래픽을 연결하면 클라이언트가 패킷을 읽고 전달하는 작업도 맡습니다. 데스크톱 TUN 역시 가상 네트워크 인터페이스, 라우팅, DNS 처리와 연동됩니다. 이 기능은 트래픽이 연결되는 범위와 처리 경로를 바꾸는 것이지 서버 프로토콜을 업그레이드하지는 않습니다. 시스템 프록시가 대상 프로그램을 이미 처리하고 있다면 TUN을 켜도 속도가 나아지지 않을 수 있습니다. 대상 프로그램이 시스템 프록시를 따르지 않는다면 TUN으로 연결 범위를 넓힐 수 있습니다. 구체적인 설정 방법은 v2rayN TUN 모드 설정을 참고하세요.

Mux, 연결 유지와 UDP의 실제 제약

다중화는 여러 논리 요청을 더 적은 수의 하위 연결에 실어 보내는 방식으로, 특정 짧은 연결 상황에서는 연결 수립을 반복하는 비용을 줄일 수 있습니다. 하지만 공유 연결에서 혼잡이나 패킷 손실이 발생하면 여러 요청에 영향을 줄 수 있습니다. 일부 프로토콜과 흐름 제어 조합은 Mux 사용에 제약이 있으므로 기본으로 켜두면 안 됩니다. 연결 유지에도 절충점이 있습니다. 간격이 너무 짧으면 백그라운드 활동이 늘고, 너무 길면 일부 네트워크의 유휴 연결 상태가 유지되지 않을 수 있습니다. 호환되는 기본값을 우선 사용하고 구체적인 문제가 확인된 뒤에만 조정하세요.

실시간 앱에서 UDP를 사용한다면 로컬 연결, 코어 전달, 서버, 대상 네트워크를 포함한 전체 경로가 지원되는지 확인해야 합니다. UDP를 프록시로 전달한다고 지터가 줄어드는 것은 아니며, 서버 경로가 우회하거나 연결이 혼잡하면 사용 경험이 나빠질 수 있습니다. DNS 조회 방식도 대상 주소와 라우팅 선택에 영향을 주므로 테스트할 때 동일하게 유지해야 합니다. FakeDNS는 도메인 매핑과 캐시 동작을 포함하며 범용 속도 향상 옵션이 아닙니다. 관련 원리는 FakeDNS 사용 사례 노트를 참고하세요.

측정 대상동일하게 유지할 조건잘못 판단하기 쉬운 점
첫 요청대상, DNS, 캐시, 네트워크DNS 조회 차이를 프로토콜 핸드셰이크 차이로 오해
지속 전송서버, 시간대, 대상 리소스서버 대역폭 차이를 알고리즘 차이로 오해
백그라운드 배터리 소모화면, 신호, 앱, 연결 방식무선 재시도를 코어의 연산 부담으로 오해

비교할 때마다 변수 하나만 바꾸고 시작, 첫 요청, 지속 전송, 대기 상태를 각각 기록하세요. 가장 좋았던 한 번의 결과만 남기지 말고 여러 번 확인해야 합니다. 같은 서버에서 조건을 통제할 수 없다면 결과를 ‘현재 두 설정의 사용 경험 차이’라고 설명하고 프로토콜 순위로 일반화하지 마세요. 일상적인 사용에서는 미세한 측정 차이보다 안정적인 연결, 완전한 기능 지원, 쉬운 복구가 더 중요합니다. 따라서 선택할 때는 성능 비교에 앞서 호환성을 확인해야 합니다.

구독 형식과 설정 호환성

구독은 설정을 배포하는 방식이지 새로운 프록시 프로토콜이 아닙니다. 구독 주소가 제공하는 내용은 공유 링크 목록, 인코딩된 텍스트, 특정 클라이언트 전용 설정일 수 있습니다. VMess, VLESS, Trojan, Shadowsocks 링크도 각기 다른 필드 규칙을 따릅니다. 구독 다운로드, 링크 인식, 내부 기록 저장, 코어에서 설정 실행은 서로 별개의 단계입니다. 성공 메시지는 보통 이 중 일부만 확인하므로 서버에 실제로 연결할 수 있다는 뜻으로 받아들이면 안 됩니다.

가져오기 과정에서 누락되기 쉬운 정보

클라이언트는 보통 구독 형식을 먼저 인식하고 각 항목을 내부 서버 기록으로 변환한 뒤 실행 설정을 생성합니다. 어느 단계에서든 필드 표현에 제한이 있을 수 있습니다. 예를 들어 구독에 REALITY 매개변수가 있지만 이전 파서가 인식하지 못할 수 있습니다. 공유 링크에 전송 확장이 있어도 편집 창에서 저장하지 못할 수 있고, 여러 아웃바운드가 포함된 사용자 지정 설정을 단일 서버 기록으로 처리할 수도 있습니다. 이런 문제는 비밀번호를 다시 입력해도 해결되지 않습니다. 원본 내용과 가져온 뒤의 필드를 먼저 비교하세요.

VMess 공유 링크에는 인코딩된 JSON 형식이 흔하고, VLESS와 Trojan에는 URI 매개변수 형식이 흔합니다. Shadowsocks 링크는 또 다른 인코딩 및 매개변수 규칙을 사용합니다. 이름이 같아도 모든 공유 구현이 같은 확장 규칙을 따르는 것은 아닙니다. 특히 비밀번호, 경로, 메모, 쿼리 매개변수에 들어가는 특수 문자는 올바르게 인코딩해야 합니다. 구분자가 잘못 해석되면 클라이언트가 필드 일부를 잘라낼 수 있습니다. 서버에서 제공한 전체 링크를 우선 사용하고 직접 분리했다가 다시 조합하지 마세요.

‘Base64 구독’은 바깥쪽 텍스트가 인코딩되었을 수 있다는 뜻일 뿐, 누락된 설정을 채워 주거나 내용을 암호화하지 않습니다. 디코딩할 수 있는 사람은 보통 서버와 인증 정보를 읽을 수 있습니다. 따라서 구독 주소는 민감한 인증 정보로 취급해야 합니다. 스크린샷, 로그, 문의 내용에 전체 주소를 포함하지 마세요. 주소가 작동하지 않으면 먼저 만료 여부, 재인증 필요 여부, 응답 내용이 실제 구독 텍스트인지 확인하세요. 로그인 페이지나 오류 페이지를 프로토콜 형식 문제로 오해하지 마세요.

코어 간 변환 및 형식 변환의 한계

형식 변환은 한 표현 방식을 다른 방식으로 옮기는 작업입니다. 대상 형식이 같은 프로토콜, 전송 방식, 보안 계층, 인증 필드를 표현할 수 있어야 의미를 유지할 수 있습니다. 표현할 수 없는 옵션은 빠지거나 변환기가 대상 구현체에서 인식하지 못하는 확장 필드로 작성할 수 있습니다. 특히 네이티브 JSON의 DNS, 다중 아웃바운드, 라우팅, 특정 전송 방식 설정은 단일 공유 링크에 담기지 않을 수 있습니다. 변환 후에는 노드 개수만 보지 말고 항목을 하나씩 확인하세요.

클라이언트마다 다른 전체 설정을 구독처럼 서로 가져다 써서는 안 됩니다. 전체 라우팅이 포함된 사용자 지정 설정을 가져오면 로컬 연결 포트, 아웃바운드 태그, DNS 동작이 바뀔 수 있습니다. 일반 서버 구독은 보통 노드 정보만 업데이트하므로 로컬 라우팅도 함께 변경된다고 볼 수 없습니다. 업데이트 후 웹페이지에 문제가 생기면 서버 설정값과 로컬 정책 중 어느 쪽이 바뀌었는지 먼저 확인하세요. 일부 도메인에서만 문제가 있다면 구독 전체를 다시 가져오기보다 라우팅과 DNS를 살펴보는 편이 효과적입니다.

업데이트 후 확인 순서

v2rayN에서 구독 그룹을 알아보기 쉬운 이름으로 정리한 다음 해당 그룹을 업데이트하세요. 업데이트 전에 현재 작동하는 독립 기록 하나를 보존해 구독 변경과 로컬 환경 변경을 구분할 수 있도록 합니다. 업데이트 후 노드 하나를 선택해 프로토콜, 주소, 포트, 인증 정보, 보안 계층, 전송 방식, 흐름 제어를 확인하세요. 노드 이름은 서버에서 바뀔 수 있어 같은 설정을 식별하는 확실한 기준이 아닙니다. 이름에 포함된 지역이나 프로토콜 약어로 실제 필드를 추측해서도 안 됩니다.

업데이트는 완료되었지만 모든 기록이 실패한다면 응답 내용, 파싱 결과, 실행 코어가 함께 바뀌었는지 확인하세요. 한 가지 프로토콜만 실패한다면 해당 프로토콜의 새 필드와 지원 범위를 먼저 확인합니다. 이전 기록은 작동하지만 새 기록이 실패한다면 인증 정보와 핸드셰이크 매개변수를 비교하세요. 네트워크는 연결되지만 구독 요청이 실패하는 경우 구독 주소에만 접근할 수 없거나 권한이 만료되었을 수도 있습니다. 이때 TUN, 암호화 방식, 시스템 프록시를 먼저 바꿀 필요는 없습니다. 업데이트 실패와 노드 연결 실패를 구분해 처리하세요.

일상적으로 관리할 때는 출처별 그룹을 유지하고, 서로 다른 출처의 동명 기록을 한곳에 섞지 마세요. 기기를 바꿀 때는 서버 정보와 로컬 정책을 각각 옮긴 뒤 트래픽 연결 권한을 다시 확인하세요. 구독 가져오기 단계는 사용 가이드를 참고하세요. 가져온 뒤 연결은 정상인데 웹페이지가 열리지 않는다면 시스템 프록시, DNS, 라우팅 문제 해결 목록에 따라 트래픽 경로를 확인하세요. 이미 올바른 구독 필드를 반복해서 바꾸지 않도록 주의하세요.

사용 환경에 맞는 프로토콜과 코어 선택

선택은 프로토콜 순위가 아니라 사용 조건을 기준으로 해야 합니다. 먼저 기기 플랫폼, 서버에서 실제로 제공하는 조합, 프록시가 필요한 앱 종류, UDP 사용 여부를 확인하세요. 그런 다음 필요한 매개변수를 빠짐없이 표현할 수 있는 클라이언트와 코어를 선택하고 관리 부담과 실행 성능을 비교하면 됩니다. 서버의 협조가 없다면 사용자가 프로토콜을 마음대로 바꿀 수 없으며 이미 제공된 설정 중에서 선택해야 합니다. 클라이언트의 프로토콜 드롭다운은 설정을 입력하는 곳이지 원격 서버를 자동으로 다른 프로토콜로 바꾸는 도구가 아닙니다.

데스크톱과 Android 시작하기

데스크톱에는 v2rayN을 우선 추천합니다. 설치 파일 페이지에서 운영체제와 CPU 아키텍처에 맞는 파일을 선택한 다음 필요한 프로토콜을 처리할 코어를 확인하세요. Windows 데스크톱 버전과 클래식 WPF 버전은 인터페이스 및 실행 환경의 선택일 뿐 원격 프로토콜이 다른 것은 아닙니다. macOS와 Linux에서도 아키텍처와 시스템 조건을 확인해야 합니다. 일반 브라우저의 트래픽이 이미 시스템 프록시를 사용한다면, TUN은 우선 끄고 변수를 줄여 기준을 만든 다음 트래픽 연결 범위를 넓힐지 결정하세요.

Android에서는 서버가 지원하는 기능에 맞춰 v2rayNG를 우선 선택하세요. 특히 Xray 관련 기능이 필요한 경우에 적합합니다. 배포 환경에서 V2Fly 경로를 명확히 요구하고 설정도 지원 범위에 있다면 v2flyNG를 고려할 수 있습니다. 처음 실행할 때 Android VPN 권한을 허용하고 다른 VPN 연결이 같은 접속 자리를 사용 중인지 확인하세요. 이후 백그라운드 제한과 네트워크 전환 시 동작을 살펴보면 됩니다. 앱을 백그라운드로 보낼 때 연결이 끊긴다고 바로 프로토콜 문제로 판단하지 마세요. 시스템 배터리 관리, 백그라운드 권한, 신호 변화도 각각 확인해야 합니다.

기존 서비스, 새 배포, 실시간 앱

기존 서비스에 연결할 때는 원래 프로토콜과 전송 방식을 유지한 채 전체 설정을 가져왔는지 확인하는 것이 가장 안전합니다. VMess + WebSocket + TLS가 정상 작동한다면 이름을 바꾸기 위해 마이그레이션할 필요는 없습니다. 기존 Trojan은 인증서, 서버 이름, 비밀번호를 정확히 관리하고, 기존 Shadowsocks는 암호화 방식과 키 형식을 맞추세요. VLESS + REALITY가 필요하다면 전체 조합을 지원하는 Xray 경로를 선택하고 서버에서 제공한 흐름 제어와 핸드셰이크 매개변수를 입력하세요. 다른 기록의 필드를 가져다 쓰면 안 됩니다.

새로 배포할 때는 유지 관리 역량을 기준으로 선택하는 것이 좋습니다. 인증서와 서버 이름을 관리할 수 있는지, 역방향 프록시를 전송에 사용해야 하는지, 대상 기기가 모두 같은 보안 방식을 지원하는지, 구독 도구가 매개변수를 빠짐없이 출력할 수 있는지 확인하세요. 이런 항목을 목록으로 정리하는 편이 이론적인 오버헤드만 따지는 것보다 유용합니다. 실시간 음성이나 다른 UDP 앱을 사용한다면 웹페이지가 열리는지만 확인하지 말고 전체 UDP 경로와 라우팅을 먼저 테스트하세요. 앱의 지역 설정, 대상 경로, 서버 위치도 사용 경험에 영향을 줍니다.

사용 환경우선 할 일나중에 조정할 항목
기존 서비스에 처음 연결기존 조합 유지, 전체 설정 확인프로토콜, DNS, 라우팅을 한 번에 변경
VLESS + REALITYXray, 흐름 제어, 핸드셰이크 필드 확인누락된 설정값을 비슷한 필드로 대체
프록시를 따르지 않는 앱도 연결해야 함TUN, 권한, 라우팅 검토TUN을 프로토콜 가속 기능으로 사용
모바일 대기 중 연결 이상재연결, 신호, 백그라운드 제한 확인배터리 변화 한 번만 보고 코어 교체

되돌릴 수 있는 최소 설정으로 기준 만들기

처음 확인할 때는 서버 하나, 명확한 라우팅 방식, 호환 가능한 기본 설정을 사용하세요. 먼저 코어가 실행되는지, 요청이 로컬 포트로 들어오는지, 서버 핸드셰이크와 대상 사이트 접속이 되는지 순서대로 확인합니다. 아래 JSON은 네이티브 설정에서 routing 객체가 사용하는 최소 규칙 구조만 보여 줍니다. 사설 주소를 direct라는 이름의 아웃바운드로 보냅니다. 완전한 연결 설정이 아니므로 사용하기 전에 해당 태그의 직접 연결 아웃바운드가 있어야 하며 기존 규칙의 순서도 확인해야 합니다. 그래픽 클라이언트 사용자는 라우팅 설정에서 같은 작업을 하는 것이 좋습니다.

{
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      }
    ]
  }
}

이 규칙은 프로토콜과 별개인 또 하나의 경계를 보여 줍니다. 노드 설정이 바뀌지 않아도 라우팅에 따라 요청이 노드를 통과할지 달라질 수 있습니다. 규칙은 구현체의 일치 처리 방식에 따라 적용되므로, 앞쪽의 넓은 조건이 먼저 일치하면 뒤쪽의 세부 규칙은 적용되지 않을 수 있습니다. 실제로 사용할 때는 지리 데이터 파일을 사용할 수 있는지도 확인해야 합니다. 예시를 적용하려고 routing 객체 전체를 덮어쓰지 말고 기존 규칙을 먼저 파악한 뒤 조건을 명확히 추가하세요. 로컬 네트워크와 대상 네트워크 접속도 각각 확인해야 합니다.

문제가 생기면 확인된 근거에 따라 되돌리기

코어가 실행되지 않으면 설정 생성과 포트 점유를 확인하세요. 핸드셰이크가 실패하면 인증 정보, 보안 계층, 시간을 확인합니다. 연결은 되었지만 앱이 응답하지 않는다면 로컬 트래픽 연결, DNS, 라우팅을 살펴보세요. 로컬 포트 충돌은 포트 점유와 수신 포트 변경 노트에서 확인할 수 있습니다. 한 번에 하나만 바꾸고 이전에 작동하던 상태를 보존하세요. 되돌릴 때는 설정 필드를 전부 다시 입력하기보다 새로 추가한 고급 기능부터 끄세요.

최종 선택 결과는 클라이언트, 코어, 프록시 프로토콜, 전송 방식, 보안 계층, 트래픽 연결 방식, 라우팅 방식을 한 줄로 정리해 둘 수 있습니다. 이렇게 기록하면 기기를 바꿀 때 항목별로 확인할 수 있고 문제가 생겨도 차이를 정확히 설명할 수 있습니다. 프로토콜 선택의 목적은 이름을 복잡하게 만드는 것이 아니라 서버 기능, 클라이언트 구현, 실제 앱의 요구 사항을 일치시키는 것입니다. 기준 설정을 완성한 다음 성능 절차에 따라 조건을 통제해 비교하세요. 일상적인 사용 방법은 빠른 시작 가이드에서, 구체적인 문의는 자주 묻는 질문에서 확인할 수 있습니다.