v2rayN에서 구독을 업데이트하면 먼저 구독 주소에 요청을 보내고, 응답 내용을 확인한 뒤 서버 기록을 파싱해 해당 구독 그룹에 저장합니다. 창에 “업데이트 실패”만 표시될 때는 이 과정 중 어느 단계에서든 문제가 발생했을 수 있습니다. 무작정 업데이트 버튼을 반복해서 누르기보다 안내 문구와 핵심 로그를 먼저 확인하는 편이 원인을 좁히는 데 효과적입니다.

이 글 빠르게 보기

구독 요청 시간 초과, 빈 목록, 파싱 실패 또는 업데이트 후에도 노드가 바뀌지 않는 v2rayN 사용자를 위한 글입니다. 링크와 응답 상태를 확인한 뒤 네트워크 경로, 포트, 형식, 시스템 시간을 차례로 점검하고 마지막으로 적절한 자동 업데이트 주기를 설정합니다.

실패가 발생한 단계를 먼저 확인하기

구독 업데이트 한 번은 단순히 “파일 다운로드”만 수행하지 않습니다. v2rayN은 도메인 확인, HTTPS 연결, 응답 수신, 콘텐츠 유형 판별, 공유 링크 파싱, 로컬 그룹 업데이트까지 완료해야 합니다. 오류가 표시되면 원문을 먼저 기록하고 기존 서버를 서둘러 삭제하지 마세요. 그룹을 삭제하면 기존에 사용할 수 있던 기록만 사라질 뿐 원격 링크가 복구되지는 않습니다.

구독 주소 읽기 네트워크 연결 설정 응답 내용 수신 서버 파싱 구독 그룹에 저장
  1. v2rayN 기본 화면에서 구독 그룹의 업데이트 기능을 열고 문제가 발생한 그룹만 따로 업데이트하세요. 여러 링크를 동시에 요청하면 로그가 뒤섞일 수 있습니다.
  2. 오류 원문을 복사하고 발생 시각을 기록하세요. 그런 다음 로그 창을 열어 상태 코드, 시간 초과, 인증서, 주소 사용 중 여부와 파싱 오류를 중점적으로 확인합니다.
  3. 기존 노드에 여전히 연결할 수 있는지 확인하세요. 기존 노드는 작동하지만 업데이트만 실패한다면 대개 구독 요청 경로의 문제이며 프록시 코어 자체가 손상된 것은 아닙니다.
  4. 여러 구독이 동시에 실패하면 먼저 로컬 네트워크, 시스템 시간과 프록시 포트를 점검하세요. 한 그룹만 실패할 때는 해당 링크의 유효 상태와 형식을 우선 확인합니다.

오류: 구성된 HttpClient.Timeout으로 인해 요청이 취소되었습니다

원인 및 해결 방법: 제한 시간 안에 완전한 응답을 받지 못했습니다. 먼저 네트워크 경로를 바꾼 다음 프록시를 통한 업데이트와 직접 연결 업데이트를 각각 테스트하세요.

오류: 응답 상태 코드가 성공을 나타내지 않습니다: 404

원인 및 해결 방법: 원격 경로가 존재하지 않거나 구독 주소가 변경되었습니다. 서비스 페이지로 돌아가 전체 링크를 다시 복사하고 경로를 직접 덧붙이지 마세요.

첫 번째 원인: 구독 링크가 만료되었거나 불완전하게 복사됨

구독 주소에는 긴 경로와 접근 매개변수가 포함되는 경우가 많습니다. 메신저 줄바꿈, 텍스트 끝의 공백, 물음표 앞까지만 복사한 경우 서버가 오류 페이지를 반환할 수 있습니다. 상태 코드로 문제를 빠르게 구분할 수 있습니다. 401 또는 403은 주로 인증 상태와 관련되고, 404는 경로가 없다는 뜻이며, 410은 리소스가 철회되었음을 나타내는 데 사용됩니다.

확인할 때는 v2rayN의 구독 그룹 설정에 주소를 다시 붙여 넣으세요. 이미 잘린 내용을 직접 편집하지 않는 것이 좋습니다. “구독 그룹” 관련 관리 화면에서 대상 그룹을 선택한 뒤 주소의 처음과 끝을 확인하세요. 링크는 한 줄로 유지하고, 올바른 HTTPS 주소로 시작해야 하며 끝에 한글·중국어 문장 부호, 줄바꿈 또는 불필요한 따옴표가 없어야 합니다.

  • 업데이트 후 노드 수가 0개: 원격 서버가 빈 구독을 반환했거나 로그인 페이지, 안내 페이지 같은 HTML 콘텐츠를 반환했을 수 있습니다.
  • 기존 노드만 남고 새 노드가 없음: 현재 업데이트한 그룹이 같은 이름의 다른 구독 그룹은 아닌지 확인하세요.
  • 브라우저에서는 열리지만 클라이언트에서 실패: 브라우저에는 로그인 상태가 유지되어 있을 수 있지만 v2rayN 요청은 해당 상태를 자동으로 재사용하지 않습니다.
  • 다시 복사하자마자 정상화됨: 대개 기존 링크 만료, 매개변수 교체 또는 복사 과정에서의 잘림이 원인입니다. 클라이언트를 다시 설치할 필요는 없습니다.

오류: 응답 상태 코드가 성공을 나타내지 않습니다: 403

원인 및 해결 방법: 서버가 현재 요청을 거부했습니다. 링크 인증이 만료되었거나 접근 조건이 바뀐 경우가 흔합니다. 구독 주소를 다시 발급받고 계정의 구독 상태를 확인하세요.

오류: 값을 파싱하는 중 예상치 못한 문자가 발견되었습니다: <

원인 및 해결 방법: 응답이 HTML 태그로 시작하며 파싱 가능한 구독 데이터가 아닙니다. 주소가 로그인 페이지나 오류 안내 페이지로 리디렉션되었는지 확인하세요.

두 번째 원인: 네트워크 경로, DNS 또는 업데이트 방식 불일치

구독 서버와 노드 서버는 서로 다른 대상입니다. 노드가 일시적으로 작동한다고 해서 현재 네트워크 경로에서 구독 도메인에도 접속할 수 있는 것은 아닙니다. 반대로 구독 업데이트에 성공해도 모든 노드에 연결된다는 뜻은 아닙니다. 점검할 때는 “구독 가져오기”와 “노드 연결”을 나누어 테스트하세요.

직접 연결 업데이트가 시간 초과되면 먼저 현재 사용할 수 있는 노드에 연결한 뒤 구독 설정에서 프록시를 통한 업데이트를 활성화하고 다시 시도하세요. 프록시 업데이트가 실패하면 해당 옵션을 끄고 직접 연결을 테스트합니다. 두 결과를 비교하면 문제가 로컬 직접 연결 경로에 있는지, 현재 프록시의 외부 연결에 있는지 판단하는 데 도움이 됩니다.

15초
첫 번째 대기 확인 시점
2가지
직접 연결 및 프록시 업데이트
1개
그룹별 개별 테스트
3회
연속 실패 후 경로 변경
테스트 결과 가능성이 높은 원인 다음 단계
직접 연결 실패, 프록시 성공 로컬 직접 연결 경로 또는 DNS 확인 오류 프록시 업데이트를 유지하고 로컬 DNS와 네트워크 경로를 점검하세요
직접 연결 성공, 프록시 실패 현재 노드를 사용할 수 없거나 프록시 포트가 수신 대기 중이 아님 사용 가능한 노드로 전환하고 로컬 수신 대기 포트를 확인하세요
두 방식 모두 404 반환 구독 경로 만료 전체 링크를 다시 발급받으세요
두 방식 모두 시간 초과 도메인 확인, 원격 서비스 또는 시스템 네트워크 오류 네트워크를 바꾼 뒤 다시 개별 테스트하세요

결론: 직접 연결과 프록시 업데이트를 교차 테스트하기

같은 링크를 두 네트워크 경로에서 테스트한 결과가 업데이트 버튼을 연속해서 누르는 것보다 훨씬 유용합니다. 한 경로에서만 실패하면 해당 경로를 우선 복구하고, 두 경로에서 같은 상태 코드가 반환되면 링크 자체를 먼저 확인하세요.

세 번째 원인: 로컬 프록시 포트 충돌 또는 수신 대기 미시작

v2rayN이 프록시를 통해 구독을 가져오려면 로컬 프록시 포트가 수신 대기 상태여야 합니다. 일반적인 설정에서는 10808을 로컬 혼합 프록시 포트로 사용하며, 이전 설정에서는 10808과 10809를 각각 사용하기도 합니다. 포트 값은 고정 규칙이 아니므로 현재 설치된 프로그램의 “설정” → “매개변수 설정”에 표시된 값을 기준으로 하세요.

다른 프로그램이 같은 포트를 사용하면 코어가 시작되지 않을 수 있고, 시스템 프록시는 여전히 이전 포트를 가리킬 수 있습니다. 이때 구독 요청이 거부되거나 오랫동안 대기합니다. 먼저 기본 화면과 로그에서 코어 시작 상태를 확인한 뒤 시스템 프록시가 실제로 가리키는 주소를 점검하세요.

[Warning] subscription update failed
System.Net.Http.HttpRequestException: Connection refused (127.0.0.1:10808)

[Error] failed to start listener
listen tcp 127.0.0.1:10808: bind: address already in use
  1. “설정” → “매개변수 설정”으로 이동해 현재 로컬 프록시 포트를 기록하세요. 예: 10808.
  2. 로그에 address already in use, connection refused 또는 수신 대기 시작 실패가 표시되는지 확인하세요.
  3. 포트를 사용 중인 프로그램을 종료하거나 v2rayN의 로컬 포트를 사용되지 않는 값으로 변경하세요. 예를 들어 10808을 10818로 바꿀 수 있습니다.
  4. 설정을 저장하고 코어를 다시 시작한 다음 시스템 프록시를 재설정하세요. 시스템 프록시가 이전 포트를 계속 사용하지 않는지 확인합니다.
  5. 먼저 일반 웹 요청을 테스트한 뒤 단일 구독 그룹을 업데이트하세요. 한 번에 여러 변수를 추가하지 않는 것이 좋습니다.

오류: 대상 컴퓨터가 연결을 적극적으로 거부하여 연결할 수 없습니다

원인 및 해결 방법: 구독 요청이 가리키는 로컬 프록시 포트가 수신 대기 중이 아닙니다. 코어를 시작하고 프록시 업데이트에 사용하는 포트가 매개변수 설정과 일치하는지 확인하세요.

오류: bind: address already in use

원인 및 해결 방법: 로컬 포트를 다른 프로세스가 사용 중입니다. 해당 포트를 해제하거나 v2rayN의 수신 포트를 변경한 뒤 저장하고 코어를 다시 시작하세요.

네 번째 원인: 구독 콘텐츠 형식과 클라이언트 파싱 범위 불일치

일반적인 구독 응답에는 base64로 묶인 공유 링크 목록, 줄마다 정렬된 VMess 또는 VLESS 공유 링크, 서버가 생성한 클라이언트 전용 콘텐츠가 있습니다. 기본 V2Ray JSON 설정과 구독 묶음은 같은 구조가 아닙니다. JSON 설정은 전체 인바운드, 아웃바운드, 라우팅과 DNS를 설명하지만 구독은 보통 서버 항목을 일괄 전달하는 데 사용됩니다.

v2rayN은 일반적인 공유 링크와 구독 묶음을 인식할 수 있지만, 응답이 실제로 웹 페이지, 압축 데이터, 빈 텍스트이거나 다른 파서 전용 구조라면 파싱에 실패할 수 있습니다. Android용 v2rayNG는 Xray 코어를 사용하고 v2flyNG는 v2fly 코어를 사용합니다. 코어가 다르다고 해서 모든 구독 외부 형식을 서로 바꿔 쓸 수 있는 것은 아닙니다.

응답 특징 의미 처리 방법
긴 문자열의 영문자, 숫자와 등호로 구성됨 base64로 묶인 콘텐츠일 가능성 원본을 유지하고 임의로 줄바꿈하거나 끝 문자를 삭제하지 마세요
각 줄이 vmess:// 또는 vless://로 시작함 공유 링크 목록 각 기록이 완전한지, 특히 쿼리 매개변수와 이름 부분을 확인하세요
중괄호로 시작하며 inbounds, outbounds를 포함함 완전한 JSON 설정 설정 가져오기 방식으로 처리하고 기본적으로 구독 묶음으로 간주하지 마세요
<html 또는 <!DOCTYPE로 시작함 웹 페이지 또는 오류 페이지 로그인 리디렉션, 접근 권한과 구독 주소를 확인하세요
응답 길이가 0 원격 서버가 빈 콘텐츠를 반환함 잠시 후 다시 시도하고 서버 측 구독에 유효한 서버가 있는지 확인하세요

결론: 다운로드 성공이 파싱 성공을 의미하지는 않음

상태 코드 200은 서버가 콘텐츠를 반환했다는 뜻일 뿐입니다. 업데이트 후에도 노드가 0개라면 로컬 프록시 포트를 계속 조정하기보다 응답 유형과 구독 형식을 확인하세요.

다섯 번째 원인: 시스템 시간 오차로 인한 인증서 연결 실패

HTTPS 연결은 인증서의 유효 기간과 도메인을 검증합니다. 컴퓨터의 시간, 날짜 또는 시간대가 크게 어긋나면 인증서가 아직 유효하지 않거나 이미 만료된 것으로 판단될 수 있습니다. 이 문제는 여러 구독 주소에 동시에 영향을 주는 경우가 많으며 브라우저의 인증서 경고, 시스템 로그인 오류 또는 다른 HTTPS 요청 실패가 함께 나타날 수 있습니다.

먼저 시스템 날짜 및 시간 설정을 열어 자동 동기화를 활성화하고 시간대가 현재 위치와 일치하는지 확인하세요. 동기화가 끝나면 v2rayN을 완전히 종료한 뒤 다시 시작해 단일 구독을 업데이트합니다. 시계 표시만 바꾸고 시간대를 수정하지 않으면 몇 시간의 오차가 남을 수 있습니다.

오류: 원격 인증서가 유효성 검사 절차에 따라 유효하지 않습니다

원인 및 해결 방법: 인증서 검증에 실패했습니다. 먼저 시스템 시간과 시간대를 동기화한 뒤 구독 도메인과 인증서의 대응 관계를 확인하세요.

오류: 인증서가 만료되었거나 아직 유효하지 않습니다

원인 및 해결 방법: 로컬 시간이 크게 어긋났거나 원격 인증서가 유효하지 않은 시간 범위에 있습니다. 먼저 로컬 시간을 보정하고 여러 기기에서 동시에 발생하면 서버 측 처리를 기다리세요.

  • 작업 표시줄의 시·분만 보지 말고 연도, 월, 일과 현재 시간대를 확인하세요.
  • 시스템 시간 동기화를 실행한 뒤 네트워크 연결을 다시 설정해 이전에 실패한 HTTPS 세션을 재사용하지 않도록 하세요.
  • 한 구독 도메인에서만 인증서 오류가 발생하면 링크가 다른 도메인으로 리디렉션되는지 확인하세요.
  • 여러 주요 HTTPS 주소에서 동시에 문제가 발생하면 시스템 시간, 네트워크 가로채기와 로컬 인증서 환경을 우선 점검하세요.

자동 업데이트 주기 설정 방법

업데이트 오류를 해결한 뒤 자동 업데이트를 설정하세요. 빈도가 높을수록 좋은 것은 아닙니다. 서버 목록은 보통 분 단위로 바뀌지 않으며, 지나치게 잦은 요청은 실패 로그를 늘리고 네트워크가 복구되는 순간 업데이트를 반복 실행할 수 있습니다. 대부분의 개인 사용 환경에서는 12시간 또는 24시간 주기가 적절합니다.

v2rayN 7.12.5에서는 구독 그룹 관리로 이동해 해당 그룹의 자동 업데이트 설정을 편집할 수 있습니다. 공통 매개변수는 “설정” → “매개변수 설정”에서 확인하세요. 7.x 버전에 따라 메뉴 문구가 조금 다를 수 있으므로 현재 화면의 구독 그룹 설정을 기준으로 합니다. 변경 후 한 번은 수동 업데이트를 실행해 링크, 네트워크 경로와 파싱이 정상인지 확인하세요.

12시간
일반적인 권장 주기
24시간
변경이 드문 환경
30분
장기간 이보다 짧게 설정하지 않는 것을 권장
  1. 먼저 대상 그룹을 수동으로 업데이트해 현재 링크가 서버 기록을 정상적으로 반환하는지 확인하세요.
  2. 일반적인 사용 환경에서는 12시간마다 업데이트하도록 설정하고, 서버 변경이 적다면 24시간으로 바꿀 수 있습니다.
  3. 여러 구독 그룹을 모두 지나치게 짧은 주기로 설정하지 마세요. 시작 후 대량의 요청이 동시에 발생할 수 있습니다.
  4. 프록시를 통해 업데이트해야 한다면 자동 작업이 실행되는 동안 코어가 시작되어 있고 해당 로컬 포트가 계속 수신 대기 중인지 확인하세요.
  5. 업데이트 후 노드 한두 개의 지연 시간과 연결 상태를 무작위로 테스트하세요. 노드 수만으로 결과를 판단하지 마세요.

구독 업데이트가 계속 시간 초과되면 어떻게 하나요?

현재 사용할 수 있는 노드에 먼저 연결하고 프록시를 통한 업데이트로 전환한 뒤 다시 시도하세요. 그래도 시간 초과가 발생하면 네트워크를 바꾸고 구독 도메인이 확인되는지 점검합니다.

업데이트에 성공했는데 노드 목록이 바뀌지 않는 이유는 무엇인가요?

현재 표시된 구독 그룹을 업데이트했는지 확인한 다음 원격 서버에 실제로 새 기록이 게시되었는지 확인하세요. 노드 수가 같다고 해서 업데이트가 실행되지 않은 것은 아닙니다.

업데이트 후 기존 노드를 먼저 삭제해야 하나요?

그럴 필요 없습니다. 문제를 점검하는 동안 기존 기록을 유지하고, 새 구독이 정상적으로 파싱되는 것을 확인한 뒤 중복 노드를 정리하세요. 임시로 사용할 수 있는 네트워크 경로를 잃지 않을 수 있습니다.

프록시 업데이트 중 10808 연결 실패가 표시되면 어떻게 하나요?

“설정” → “매개변수 설정”에서 로컬 포트를 확인하고 코어가 실행 중인지 점검하세요. 실제 포트가 10818이라면 10808로 계속 요청할 수 없습니다.

매일 한 번씩 수동으로 업데이트해야 하나요?

그럴 필요 없습니다. 수동 업데이트 테스트가 통과하면 자주 사용하는 그룹을 12시간 또는 24시간마다 자동 업데이트하도록 설정하고 실패 로그만 주기적으로 확인하세요.

전체 점검은 “링크, 네트워크 경로, 포트, 형식, 마지막으로 시간” 순서로 진행해야 합니다. 한 그룹만 실패하면 링크와 형식부터 확인하고, 모든 그룹이 동시에 실패하면 네트워크, 포트와 시스템 시간을 우선 점검하세요. 오류 원문과 테스트 결과를 보관하면 관련 없는 설정을 반복해서 바꾸는 일을 줄일 수 있습니다.