V2Ray를 처음 접할 때 어려운 점은 특정 설정 키가 복잡해서라기보다 클라이언트, 코어, 구독, 노드, 시스템 프록시라는 개념이 한꺼번에 등장하기 때문입니다. 아래에서 실제 작업 순서에 따라 10가지 질문에 답합니다. 이 글은 v2rayN 7.x와 v2rayNG 1.10.x의 일반적인 화면을 기준으로 합니다. 마이너 버전에 따라 버튼 위치는 달라질 수 있지만 판단 방법과 설정 관계는 같습니다.
구독 링크를 막 받았지만 첫 연결을 아직 완료하지 못한 사용자에게 적합합니다. 읽고 나면 클라이언트를 선택하고, 구독과 단일 노드 링크를 구분하며, 업데이트와 연결을 완료할 수 있습니다. 또한 시스템 프록시, 전체 프록시, 분할 라우팅, 속도 측정과 설정 백업의 차이도 이해할 수 있습니다.
1. 클라이언트와 코어 선택 방법
질문 1: v2rayN, v2rayNG, v2flyNG는 각각 어떤 사용자에게 적합할까요?
클라이언트는 노드 관리, 구독 업데이트, 라우팅 전환과 화면 조작을 담당하는 프로그램입니다. 코어는 VMess, VLESS 등의 프로토콜을 실제로 해석하고 연결을 수립하는 네트워크 구성 요소입니다. 둘은 같은 개념이 아닙니다. 클라이언트가 조작 창구라면 코어는 연결을 실행합니다.
Windows 데스크톱에서는 v2rayN을 우선 사용합니다. 시스템 프록시, 규칙 기반 라우팅, 구독 그룹과 로그 확인이 필요한 사용자에게 적합합니다. Android에서는 v2rayNG 또는 v2flyNG를 선택할 수 있습니다. v2rayNG는 Xray 코어를 사용하므로 일반적인 VLESS, REALITY, XTLS Vision 노드는 보통 여기로 가져오는 것이 좋습니다. v2flyNG는 v2fly 코어를 사용하므로 기존 VMess, VLESS 또는 표준 V2Ray 설정을 유지하면서 v2fly 생태계를 사용하려는 사용자에게 더 적합합니다.
권장 구성: 데스크톱과 Android에서 같은 구독 사용
데스크톱(v2rayN)
- v2rayN 7.x의 일반적인 화면 사용
- 「설정」→「매개변수 설정」→「Core 유형」에서 코어 확인
- 시스템 프록시와 라우팅 규칙으로 트래픽 제어
Android(v2rayNG 또는 v2flyNG)
- 같은 유효한 구독 링크 가져오기
- 연결하기 전에 특정 노드 하나 선택
- 필요할 때 앱별 프록시 활성화
구독 내용은 제공 업체가 결정합니다. 양쪽에서 같은 구독을 사용하면 노드 이름은 대체로 같지만, 로컬 라우팅과 적용할 앱 범위는 각각 설정해야 합니다.
질문 2: V2Ray, Xray, VMess, VLESS는 모두 같은 것인가요?
아닙니다. V2Ray와 Xray는 코어 구현과 그 설정 체계로 볼 수 있고, VMess와 VLESS는 아웃바운드 연결에 사용하는 프로토콜입니다. 노드 정보에는 TCP, WebSocket, gRPC, TLS, REALITY 같은 전송 계층과 보안 계층도 포함됩니다. 프로토콜이 같다고 해서 노드 매개변수를 서로 바꿔 쓸 수 있는 것은 아닙니다.
VLESS 노드를 가져올 때는 최소한 서버 주소, 포트, 사용자 식별자, 전송 방식과 보안 유형을 확인해야 합니다. REALITY 노드에는 보통 서버 이름, 공개 키, 짧은 식별자와 지문도 포함됩니다. 필드가 하나라도 빠지면 클라이언트가 항목을 만들 수는 있지만 연결 로그에 핸드셰이크 실패, 연결 재설정 또는 시간 초과가 나타날 수 있습니다.
2. 구독 링크 확인 및 올바른 가져오기
질문 3: 구독이란 무엇이며, 클라이언트가 노드를 자동으로 제공하나요?
구독은 일반적으로 노드 서비스 관리자가 생성한 주소입니다. 클라이언트가 이 주소에 접속하면 여러 노드 설정을 가져옵니다. v2rayN, v2rayNG, v2flyNG는 모두 연결 도구이므로 원격 서버를 자동으로 만들지 않으며, 설치가 끝났다고 사용 가능한 노드가 자동으로 나타나는 것도 아닙니다.
구독 주소는 실제로 이용 중인 서비스의 관리 페이지에서 받아야 합니다. 복사할 때는 전체 프로토콜 헤더, 경로와 쿼리 매개변수를 유지하세요. 메신저의 자동 줄바꿈, 끝에 붙은 공백, 물음표 앞까지만 복사하는 실수로 업데이트가 실패할 수 있습니다. 관리 페이지 주소, 결제 페이지 주소 또는 단일 서버 주소를 구독으로 착각하지 마세요.
-
전체 주소 복사
구독 관리 페이지에서 복사 버튼을 사용하고, 주소의 처음과 끝에 공백이 없으며 두 줄로 나뉘지 않았는지 확인하세요.
-
새 구독 그룹 만들기
v2rayN 메인 화면에서 「구독 그룹」→「구독 그룹 설정」→「추가」를 열고 별칭을 입력한 뒤 구독 주소를 붙여 넣습니다.
-
노드 업데이트
저장한 후 「구독 그룹」→「모든 구독 업데이트(프록시 사용 안 함)」를 엽니다. 로컬 네트워크에서 구독 주소에 직접 접속할 수 없을 때는 프록시를 통한 업데이트로 바꾸세요.
-
서버 선택
노드 목록에서 대상 항목을 더블 클릭하거나 마우스 오른쪽 버튼을 눌러 「활성 서버로 설정」을 선택하고, 활성 행이 바뀌었는지 확인하세요.
-
코어 유형 확인
변경이 필요하면 「설정」→「매개변수 설정」→「Core 유형」으로 이동해 노드 프로토콜의 해당 필드를 해석할 수 있는 코어를 선택합니다.
질문 4: Base64 구독, vmess://, vless://는 어떻게 다른가요?
vmess://와 vless://는 보통 하나의 공유 링크를 뜻합니다. 한 번 가져오면 노드 하나만 추가됩니다. 구독 주소는 업데이트 가능한 진입점이며, 반환되는 내용은 Base64로 인코딩되거나 구조화된 형식일 수 있습니다. Base64는 인코딩 방식일 뿐 프록시 프로토콜이 아니며, 연결 품질이 더 높다는 뜻도 아닙니다.
판단할 때 주소 길이만 보지 마세요. 단일 노드 링크는 보통 vmess:// 또는 vless://로 시작하며, 구독 주소는 흔히 https://로 시작해 구독 관리 메뉴에 입력합니다. 구독 주소를 “클립보드에서 공유 링크 가져오기”에 붙여 넣으면 클라이언트가 인식하지 못할 수 있습니다. 반대로 단일 노드 링크를 구독 그룹에 넣어도 정상적으로 업데이트되는 노드 목록을 만들 수 없습니다.
구독 주소 → 구독 그룹 → 구독 업데이트 → 여러 노드 생성
vless:// → 클립보드에서 가져오기 → VLESS 노드 하나 생성
vmess:// → 클립보드에서 가져오기 → VMess 노드 하나 생성
3. 연결 후에도 프록시 모드를 설정해야 하는 이유
질문 5: 연결을 눌렀는데 웹페이지가 계속 기존 네트워크를 사용하는 이유는 무엇인가요?
코어가 성공적으로 시작되었다는 것은 로컬 프록시 포트가 수신 대기 중이라는 뜻일 뿐, 모든 앱이 자동으로 해당 포트를 사용하는 것은 아닙니다. v2rayN에서는 시스템 트레이 메뉴의 시스템 프록시 상태도 확인해야 합니다. 일반적으로 “시스템 프록시 자동 구성”을 선택하면 시스템 프록시 설정을 따르는 브라우저와 데스크톱 프로그램이 로컬 수신 포트를 사용합니다.
로컬 포트는 클라이언트 설정에 따라 달라집니다. 일반적인 SOCKS 수신 포트는 10808, HTTP 수신 포트는 10809일 수 있지만 버전과 사용자 설정에 따라 다른 값이 사용될 수 있습니다. 브라우저나 앱을 수동으로 설정할 때는 프로토콜 유형과 포트가 서로 맞아야 하며, HTTP 프록시만 받는 필드에 SOCKS 포트를 입력하면 안 됩니다.
질문 6: 전체 프록시와 분할 라우팅은 어떻게 다른가요?
전체 프록시는 일반적으로 클라이언트로 들어온 트래픽을 가능한 한 현재 프록시 아웃바운드로 보내는 방식입니다. 첫 검증에 유용합니다. 전체 모드에서는 접속되지만 규칙 모드에서는 접속되지 않는다면 문제는 노드 핸드셰이크보다 라우팅 규칙에 있을 가능성이 큽니다. 전체 모드라고 해서 운영체제의 모든 프로세스가 반드시 프록시를 통과하는 것은 아니며, 시스템 프록시를 읽지 않는 프로그램은 별도로 설정해야 합니다.
분할 라우팅은 코어가 도메인, IP, 포트 또는 프로세스 규칙에 따라 직접 연결, 프록시 또는 차단을 결정하는 방식입니다. 예를 들어 로컬 사이트는 직접 연결하고 대상 사이트는 프록시를 사용하며, LAN 주소는 직접 연결로 유지할 수 있습니다. 초보자는 먼저 전체 모드로 연결을 확인한 다음 규칙 모드로 전환해 노드 매개변수와 라우팅 적용 여부를 동시에 점검하는 일을 피하는 것이 좋습니다.
- 첫 테스트: 노드를 선택하고 코어를 시작한 뒤 시스템 프록시를 켜고 전체 모드에서 기본 연결을 확인합니다.
- 일상 사용: 규칙 모드로 돌아가 직접 연결, 프록시와 LAN 예외가 라우팅 설정에 포함되어 있는지 확인합니다.
- 결과 확인: IP 조회 페이지에 접속해 전환 전후 결과를 비교하고, 직접 연결되어야 하는 사이트도 하나 테스트합니다.
4. 속도 측정, 지연 시간과 노드 사용 가능성 판단
질문 7: 지연 시간이 짧은데 실제 웹페이지는 왜 여전히 느린가요?
지연 시간 테스트, 실제 연결 테스트와 다운로드 속도 측정은 서로 다른 작업입니다. 서버 주소까지의 연결 시간만 측정하면 프로토콜 핸드셰이크, TLS 또는 REALITY 교환, 원격 출구 품질과 대상 웹사이트의 응답을 확인할 수 없습니다. 45ms로 표시된 항목도 핸드셰이크 실패로 전혀 사용할 수 있을 수 있고, 120ms인 노드가 실제 웹페이지 로딩에서는 더 안정적일 수도 있습니다.
더 신뢰할 수 있는 방법은 실제 연결 테스트를 실행해 클라이언트가 노드를 통해 요청을 보내도록 하는 것입니다. 테스트 후에도 직접 확인해야 합니다. 노드에 연결하고 대상 웹페이지를 2~3회 새로 고친 다음, 코어 로그에 시간 초과나 재연결이 계속 나타나는지 확인하세요. 노드를 선택할 때는 핸드셰이크 성공 여부, 첫 응답 시간, 지속 속도와 패킷 손실을 함께 고려해야 합니다.
질문 8: 구독 업데이트는 성공했는데 왜 모든 노드가 시간 초과되나요?
“업데이트 성공”은 클라이언트가 구독 내용을 가져왔다는 뜻일 뿐, 모든 원격 노드를 현재 사용할 수 있다는 뜻은 아닙니다. 모두 시간 초과될 때는 먼저 기기의 시스템 시간을 확인하세요. TLS 계열 연결은 정확한 시간에 의존하므로 시간 차이가 크면 인증서나 핸드셰이크 검증이 실패할 수 있습니다. 그런 다음 로컬 방화벽, 코어 실행 여부와 포트를 다른 프로세스가 사용 중인지 확인합니다.
구독 업데이트 요청이 시간 초과되나요?
먼저 주소가 완전한지 확인하세요. 사용 가능한 노드가 있다면 v2rayN의 구독 업데이트 메뉴에서 “프록시를 통해 업데이트”로 바꾸고, 사용 가능한 노드가 없다면 네트워크를 변경한 뒤 프록시 없이 다시 업데이트해 보세요.
연결은 성공했는데 웹페이지가 열리지 않나요?
시스템 프록시가 활성화되어 있는지 확인한 다음 「설정」→「매개변수 설정」에서 로컬 수신 포트를 확인하고, 브라우저에 다른 수동 프록시 설정이 남아 있지 않은지 점검하세요.
노드 하나만 계속 시간 초과되나요?
구독을 다시 업데이트하고 해당 노드의 주소, 포트, 전송 방식과 보안 필드를 비교하세요. 다른 노드가 정상이라면 단일 노드의 상태나 매개변수 변경을 먼저 의심하는 것이 좋습니다.
Android에서는 연결되는데 데스크톱에서는 연결되지 않나요?
양쪽의 노드 업데이트 시간과 코어 유형을 비교하세요. 데스크톱에서는 「설정」→「매개변수 설정」→「Core 유형」으로 이동한 뒤 로그에서 알 수 없는 필드나 핸드셰이크 오류를 확인합니다.
속도 측정 결과가 모두 실패로 표시되나요?
먼저 노드 하나에 직접 연결해 웹페이지를 확인하세요. 로그에 로컬 포트 사용 중이라는 메시지가 나오면 중복 실행된 클라이언트를 종료하거나 수신 포트를 사용되지 않는 값으로 바꾼 뒤 코어를 다시 시작합니다.
어떤 노드 하나가 Windows와 Android에서 동시에 실패하고 같은 구독의 다른 노드는 정상이라면 해당 단일 노드가 비활성화되었을 가능성이 높습니다. 모든 노드가 한 기기에서만 실패한다면 구독을 반복해서 삭제하기보다 해당 기기의 시간, 네트워크 권한, 로컬 포트, 코어 유형과 프록시 상태를 중점적으로 확인해야 합니다.
5. 클라이언트 업데이트, 설정 저장과 문제 복구
질문 9: 클라이언트를 업데이트하면 구독과 라우팅 설정이 사라지나요?
유지 여부는 업데이트 방식과 설정 폴더에 따라 달라집니다. v2rayN의 노드, 구독 그룹, 라우팅과 화면 설정은 로컬 데이터 파일에 저장됩니다. 새 버전을 새 폴더에 압축 해제한 뒤 데이터를 옮기지 않고 새 프로그램만 실행하면 새 폴더에 기존 설정이 나타나지 않는 것이 정상입니다. 기존 폴더에 덮어쓰기 업데이트하기 전에는 실행 중인 클라이언트를 종료하고 원본 폴더를 먼저 복사해 두어야 합니다.
더 안전한 방법은 현재 버전, 코어 유형, 로컬 포트와 라우팅 모드를 먼저 기록한 다음 프로그램 데이터 폴더 전체를 백업하는 것입니다. 업데이트 후에는 구독 그룹과 활성 서버를 먼저 확인하고 이전 폴더를 바로 삭제하지 마세요. 새 버전에서 구독 업데이트, 코어 시작과 라우팅 로드가 가능한지 확인한 뒤 이전 파일을 정리합니다.
- 클라이언트를 종료하고 작업 표시줄 알림 영역에서 주 프로그램이 완전히 종료되었는지 확인합니다.
- 기존 프로그램 폴더 또는 클라이언트에서 내보낸 설정 백업을 복사합니다.
- SOCKS, HTTP 수신 포트와 현재 시스템 프록시 모드를 기록합니다.
- 새 버전을 시작하고 구독 그룹, 라우팅 규칙과 Core 유형을 확인합니다.
- 구독을 한 번 업데이트하고 노드에 연결한 뒤 로그를 확인한 다음 웹페이지 접속을 테스트합니다.
질문 10: 문제가 생겼을 때 가장 효과적인 문제 해결 순서는 무엇인가요?
먼저 문제가 어느 계층에서 발생했는지 구분하세요. 첫 번째는 구독입니다. 업데이트할 수 있고 노드를 받아오는지 확인합니다. 두 번째는 설정입니다. 주소, 포트, 프로토콜, 전송 방식과 보안 필드가 완전한지 확인합니다. 세 번째는 코어입니다. 시작되는지, 로컬 포트가 수신 대기 중인지 확인합니다. 네 번째는 시스템 프록시와 라우팅입니다. 앱 트래픽이 클라이언트로 들어오는지 확인합니다. 마지막으로 원격 노드와 대상 네트워크 상태를 점검합니다.
로그는 연결 버튼을 반복해서 누르는 것보다 훨씬 유용합니다. “포트가 이미 사용 중”이면 먼저 로컬 수신 문제를 해결하고, “호스트를 확인할 수 없음”이면 주소와 DNS를 확인하세요. 핸드셰이크 실패가 나타나면 시스템 시간, 보안 유형과 관련 필드를 점검합니다. 원격 주소 연결이 계속 시간 초과될 때만 다른 노드, 다른 네트워크와 다른 기기의 결과를 비교하세요.
subscription
먼저 구독 계층 확인
주소가 완전한지, 업데이트 결과 노드가 반환되는지, 구독이 아직 유효한 상태인지 확인합니다.
outbound
다음으로 노드 계층 확인
서버 주소, 포트, 사용자 식별자, 전송 방식과 보안 매개변수를 하나씩 확인합니다.
inbound
로컬 수신 포트 확인
코어가 실행 중이며 10808, 10809 또는 사용자 지정 포트를 다른 프로그램이 사용하고 있지 않은지 확인합니다.
routing
마지막으로 분할 라우팅 확인
먼저 전체 모드에서 노드를 검증한 다음 규칙 모드로 돌아가 대상 도메인이 어떤 규칙에 적용되는지 확인합니다.