구독 업데이트는 네트워크 요청, 응답 내용 읽기, 노드 파싱의 세 단계로 진행됩니다. v2rayN, v2rayNG, v2flyNG에서 업데이트 시간 초과, 파싱 오류, 노드 0개 문제가 발생했다면 먼저 기존 설정을 보존하고 링크와 요청 경로를 확인한 뒤 응답 형식과 클라이언트 지원 범위를 점검하세요. 구독 오류를 노드 연결 문제로 오인하지 않는 것이 중요합니다.
구독 업데이트는 어느 단계에서 실패할까?
구독 링크는 클라이언트가 서버 설정을 가져오는 주소이지, 노드 자체나 웹 계정 로그인 주소가 아닙니다. 업데이트할 때 클라이언트는 구독 주소에 요청을 보내 텍스트를 받은 뒤, 그 안의 노드 정보를 로컬 설정으로 변환합니다. 어느 단계에서든 실패하면 화면에는 '업데이트 실패'로 표시될 수 있지만, 해결 방법은 원인에 따라 다릅니다.
로그에 연결 시간 초과가 표시되면 먼저 네트워크 경로를 확인하세요. 서버가 접근을 거부했다면 계정과 링크를 점검해야 합니다. 텍스트를 받은 뒤 파싱 오류가 발생한 경우에만 형식을 확인하세요. 업데이트는 성공했지만 연결되지 않는 문제는 그다음 단계입니다. 서버 주소, 포트, 프로토콜, 전송 매개변수를 확인하고 구독 주소를 반복해서 바꾸지 마세요.
- 업데이트 시간 초과: 대기 시간 안에 요청이 완료되지 않은 상태입니다. 구독 내용이 올바른지는 아직 판단할 수 없습니다.
- 파싱 실패: 클라이언트가 응답에서 가져올 노드를 찾지 못한 상태입니다. 응답이 웹페이지일 수도 있고, 호환되지 않는 설정 형식일 수도 있습니다.
- 노드 0개: 실제로 빈 목록이 반환됐거나 파서가 모든 항목을 건너뛰었을 수 있습니다. 현재 화면에서 다른 그룹을 보고 있는지도 확인하세요.
기존 노드를 보존하고 구독 링크 확인하기
처음부터 서버 목록을 모두 지우지 마세요. 구독 업데이트 시 해당 그룹의 항목을 교체하는 클라이언트가 있으며, 실패 결과를 처리하는 방식도 버전에 따라 다릅니다. 먼저 설정을 백업하고, 사용 가능한 노드가 있다면 프록시 경유 업데이트를 시험할 때 활용할 수 있도록 남겨 두세요. 백업에는 구독 인증 정보와 노드 접속 정보가 들어 있을 수 있으므로 신뢰할 수 있는 기기에만 보관해야 합니다.
-
기존 상태 기록하기
클라이언트 버전, 구독 그룹 이름, 업데이트 전 노드 수, 오류 발생 시간을 기록하세요. 데스크톱 v2rayN에서는 '도움말' → '정보'에서 버전을 확인할 수 있습니다. 버전에 따라 메뉴 이름이 다르면 현재 클라이언트에 표시되는 항목을 기준으로 하세요.
-
주소 입력란 확인하기
v2rayN에서 '구독 그룹' → '구독 그룹 설정'을 열고 대상 그룹의 구독 주소를 편집하세요. 전체 주소를 붙여 넣었는지, 앞뒤 공백이나 줄바꿈, 한글 따옴표, 메신저가 덧붙인 설명 문구가 없는지 확인하세요.
-
링크 새로 발급받기
서비스 제공업체 계정 페이지에서 서비스 이용 기간이 끝났는지, 구독 링크가 재설정됐는지 확인한 뒤 현재 유효한 링크를 복사하세요. 링크를 재설정하면 이전 주소가 무효화되는 경우가 많습니다. PC와 Android 기기 모두에서 기존 링크를 새 링크로 바꿔야 합니다.
-
그룹 하나만 업데이트하기
먼저 문제가 있는 그룹만 업데이트하고 모든 그룹을 한꺼번에 처리하지 마세요. 현재 버전에 전체 구독 업데이트만 있다면 로그에 표시된 그룹 이름을 기준으로 결과를 구분하세요. 다른 그룹의 성공 메시지를 대상 구독이 복구된 것으로 오해하지 않도록 주의해야 합니다.
직접 업데이트와 프록시 경유 업데이트
'브라우저에서 구독 주소가 열린다'는 것과 '클라이언트에서 업데이트된다'는 것은 같은 테스트가 아닙니다. 브라우저는 시스템 프록시, 캐시, 로그인 상태를 사용하지만 구독 요청은 클라이언트 자체의 다운로드 경로를 사용할 수 있습니다. 반대로 시스템 프록시를 켰다고 구독 업데이트가 반드시 프록시를 경유하는 것도 아닙니다. 업데이트 방식을 직접 선택해 확인하세요.
| 현재 상황 | 우선 테스트 | 결과 확인 |
|---|---|---|
| 현재 네트워크에서 구독 주소에 접속할 수 있음 | 프록시 없이 업데이트 | 현재 프록시 노드가 다운로드에 미치는 영향 배제 |
| 직접 요청은 시간 초과지만 사용 가능한 노드가 있음 | 프록시 경유 업데이트 | 기존 노드를 통해 요청이 완료되는지 확인 |
| 기존 노드가 모두 작동하지 않음 | 먼저 사용 가능한 네트워크 경로 복구 | 작동하지 않는 노드로 새 노드를 가져오려 하지 않기 |
| 두 경로 모두 접근 거부 | 계정과 구독 권한 확인 | 프록시만 바꿔서는 보통 권한 문제를 해결할 수 없음 |
v2rayN의 '구독 그룹' 메뉴에는 보통 '모든 구독 업데이트(프록시 사용 안 함)'과 '모든 구독 업데이트(프록시 사용)' 메뉴가 있습니다. 괄호 표기와 그룹별 업데이트 메뉴 이름은 버전에 따라 다를 수 있습니다. 프록시 경유 업데이트를 시험하기 전에 실제로 작동하는 노드를 선택하고 코어를 실행한 뒤 해당 메뉴를 사용하세요. v2rayNG와 v2flyNG에서는 구독 설정이나 업데이트 메뉴에서 현재 버전이 프록시 업데이트를 지원하는지 확인하세요. 데스크톱 메뉴 이름을 그대로 적용하지 마세요.
- 한 번에 조건 하나만 바꾸세요. 먼저 직접 업데이트를 시험하고, 이어서 프록시 경유 업데이트를 시험한 뒤 각각의 오류를 기록하세요.
- 로컬 프록시 포트를 변경했다면 클라이언트에 현재 표시된 값을 기준으로 하세요. 업데이트 경로가 이전 포트를 참조한다면 함께 수정해야 합니다.
- 집 인터넷과 모바일 핫스팟을 바꿔 테스트하면 네트워크 차이를 확인하는 데 도움이 됩니다. 다만 만료된 구독 토큰을 다시 유효하게 만들 수는 없습니다.
HTTP 상태 코드와 자주 발생하는 오류
아래 숫자는 HTTP 상태 코드이며 클라이언트 버전 번호가 아닙니다. 클라이언트 로그의 전체 문구는 운영체제, 언어, 요청 라이브러리에 따라 달라질 수 있습니다. 예시와 글자 하나까지 일치하는지 따지기보다 상태 코드, 예외 유형, 실패 단계를 우선 확인하세요.
오류: Connection timed out
원인: 제한 시간 안에 연결되지 않았습니다. 라우팅, 서버 상태 또는 현재 프록시 경로가 원인일 수 있습니다. 해결: 직접 업데이트와 사용 가능한 노드를 통한 업데이트를 각각 시험하세요. 한 네트워크에서만 실패한다면 해당 네트워크의 DNS와 연결 제한을 확인하세요.
오류: 401 Unauthorized
원인: 서버가 요청의 인증 정보를 받아들이지 않았습니다. 토큰이 만료됐거나 주소가 불완전하게 복사된 경우가 흔합니다. 해결: 계정 페이지에서 구독 링크를 다시 복사하고 서비스가 유효한지 확인하세요. 코어를 반복해서 재시작할 필요는 없습니다.
오류: 403 Forbidden
원인: 서버가 현재 요청을 거부했습니다. 계정 권한, 접속 위치 제한 또는 접근 방어 정책과 관련됐을 수 있습니다. 해결: 서비스 제공업체의 제한 안내를 확인하고 상태 코드와 발생 시간을 문의에 포함하세요. 이 상태 코드만으로 계정이 만료됐다고 단정하지 마세요.
오류: 404 Not Found
원인: 요청한 경로가 존재하지 않습니다. 이전 주소가 비활성화됐거나 경로가 빠졌거나 복사 중 잘렸을 수 있습니다. 해결: 전체 구독 주소를 다시 발급받으세요. 기존 경로와 쿼리 매개변수를 유지하고 불필요해 보이는 부분도 임의로 삭제하지 마세요.
오류: The SSL connection could not be established
원인: HTTPS 연결을 설정하지 못했습니다. 내부 예외를 추가로 확인해야 하며, 시스템 시간, 인증서 신뢰 설정, 서버 TLS 구성 등이 원인일 수 있습니다. 해결: 먼저 시스템 시간을 맞추고 시스템 인증서 환경을 업데이트하세요. 인증서 문제가 계속되면 제공업체에 문의하세요. 인증서 검증을 끄는 것은 장기적인 해결책이 아닙니다.
429 Too Many Requests가 발생하면 반복 요청을 멈추고 서버가 안내한 대기 시간을 따르세요. 500이나 503이 표시되면 서버 상태를 확인하는 것이 중요합니다. 시간 제한을 늘리면 느린 요청이 완료될 수도 있지만, 잘못된 링크, 권한 거부, 파싱할 수 없는 응답은 해결되지 않습니다.
요청은 성공했지만 파싱 실패: 응답 형식 확인
HTTP 200은 요청이 성공했다는 뜻일 뿐, 응답 본문이 올바른 구독이라는 뜻은 아닙니다. 서버가 로그인 페이지, 접근 안내, 점검 공지 또는 빈 문자열을 반환할 수도 있습니다. 브라우저에 내용이 표시된다면 노드 텍스트인지 웹페이지인지 먼저 확인하세요. 웹페이지를 억지로 구독으로 가져오지 마세요.
| 응답 내용의 특징 | 가능한 의미 | 조치 |
|---|---|---|
<html, 로그인 양식 또는 접근 안내가 표시됨 | 노드 구독이 아니라 웹페이지가 반환됨 | 제공업체 페이지에서 클라이언트용 구독 주소를 다시 발급받기 |
여러 줄의 vmess:// 또는 vless:// 링크 | 일반적인 노드 공유 텍스트 | 클라이언트가 해당 프로토콜과 매개변수를 인식하는지 확인 |
| 긴 Base64 문자열 | 인코딩된 노드 목록일 수도 있고 내용이 불완전할 수도 있음 | 해당 구독 형식을 지원하는 클라이언트로 읽고, 바로 깨진 텍스트라고 단정하지 않기 |
| JSON 또는 YAML 설정 파일 | 노드 목록이 아닌 전체 설정일 수 있음 | 제공업체에서 현재 클라이언트에 맞는 구독 형식 선택 |
| 본문이 비어 있거나 노드 항목이 없음 | 서버가 노드를 제공하지 않았거나 계정 상태에 문제가 있음 | 계정에 노드가 할당됐는지와 서비스 상태를 확인하고 기존 설정을 보존한 뒤 재시도 |
Base64는 인코딩 방식이지 암호화 방식이 아닙니다. 구독 전체가 Base64로 인코딩될 수도 있고, 개별 공유 링크에 인코딩된 매개변수가 포함될 수도 있습니다. 수동으로 반복 인코딩·디코딩하거나 문자를 바꾸면 원래 형식이 손상될 수 있습니다. 내용을 확인해야 한다면 신뢰할 수 있는 로컬 환경에서만 처리하고, 구독 텍스트를 공개 디코딩 사이트에 입력하지 마세요.
- VMess: 일반적으로
vmess://뒤에 인코딩된 매개변수가 이어집니다. 텍스트가 잘리면 필요한 필드를 복구하지 못할 수 있습니다. - VLESS: 일반적으로
vless://링크를 사용합니다. 쿼리 매개변수의 전송 및 보안 설정도 구성의 일부이므로 서버 주소만 남기면 안 됩니다. - 클라이언트 구독: 전체 코어 설정과 노드 공유 목록은 서로 다른 입력 형식입니다. 특정 프로토콜을 실행할 수 있다고 해서 모든 서비스 제공업체의 구독 형식을 파싱할 수 있는 것은 아닙니다.
노드 0개와 클라이언트 호환성
v2rayN은 데스크톱 클라이언트이고, v2rayNG는 Xray 코어를, v2flyNG는 v2fly 코어를 사용합니다. 코어 기능과 클라이언트의 가져오기 기능이 모두 결과에 영향을 줍니다. 코어는 설정 실행 가능 여부를, 클라이언트는 구독 항목을 로컬 노드로 변환할 수 있는지를 좌우합니다. 이름에 V2Ray가 들어간다고 해서 세 클라이언트가 모든 매개변수를 똑같이 지원한다고 볼 수는 없습니다.
예를 들어 구독에 Xray 전용 기능을 사용하는 VLESS + REALITY 설정이 포함돼 있다면 v2flyNG에서도 같은 설정을 그대로 사용할 수 있다고 가정해서는 안 됩니다. Xray를 사용하더라도 클라이언트와 코어 버전이 제공업체의 구체적인 필드를 지원하는지 확인하세요. 전송 또는 보안 매개변수를 임의로 삭제하기보다는 기기에 맞는 안정 버전으로 업데이트하고 호환되는 구독 형식을 발급받는 편이 안전합니다.
- 그룹 필터 확인: 업데이트 후 검색어를 지우고 대상 구독 그룹으로 돌아가 노드가 화면 필터로 숨겨지지 않았는지 확인하세요.
- 전체 실패와 일부 실패 구분: 원래 여러 노드가 있어야 하는데 일부만 가져왔다면 건너뛴 항목의 프로토콜과 전송 방식을 확인하세요. 구독 전체가 만료됐다고 바로 판단하지 마세요.
- 실제 버전 기록: 문제를 문의할 때 클라이언트 버전과 코어 버전을 각각 알려 주세요. '최신 버전'이라고만 적으면 호환성 차이를 파악하기 어렵습니다.
- 기존 매개변수 유지: UUID, 서버 포트, 전송 경로, 서버 이름 등은 서버 설정과 일치해야 합니다. 가져오기 안내를 없애려고 값을 바꾸면 이후 연결에 실패할 수 있습니다.
구독 업데이트 FAQ 및 문의 시 필요한 정보
브라우저에서는 열리는데 클라이언트에서는 왜 실패하나요?
먼저 브라우저에 표시된 것이 로그인 페이지가 아니라 노드 텍스트인지 확인하세요. 그런 다음 브라우저와 클라이언트가 같은 네트워크 경로를 사용하는지 비교합니다. v2rayN에서 프록시 없이 업데이트와 프록시 경유 업데이트를 각각 실행해 어느 쪽이 성공하는지 기록하세요. 시스템 프록시 설정만 보고 요청 경로를 추측하지 마세요.
기존 노드가 모두 작동하지 않아도 프록시 경유 업데이트가 가능한가요?
프록시 업데이트에는 사용할 수 있는 프록시 경로가 필요합니다. 기존 노드가 모두 작동하지 않으면 먼저 직접 업데이트를 시험하거나 신뢰할 수 있는 다른 네트워크에서 구독을 가져오세요. 서비스 제공업체에 임시 연결 방법을 문의할 수도 있습니다. 작동하지 않는 노드로는 새 설정을 다운로드할 수 없습니다.
PC에서는 업데이트되는데 Android에서는 노드가 0개인 이유는 무엇인가요?
두 기기에서 같은 유효 링크와 구독 형식을 사용하는지, 클라이언트 버전이 최신인지 확인한 다음 Android 클라이언트가 해당 프로토콜을 지원하는지 점검하세요. v2flyNG를 사용 중이고 구독이 Xray 전용 기능에 의존한다면 제공업체에서 호환되는 형식을 받거나 설정에 맞춰 v2rayNG를 선택하세요.
업데이트 간격을 줄이면 해결되나요?
인증 오류나 형식 오류는 업데이트 간격을 줄여도 해결되지 않습니다. 문제를 점검하는 동안 자동 업데이트를 잠시 중지하고 수동으로 한 번 재시도한 뒤 결과를 확인하세요. 요청 제한에 걸렸다면 서버가 허용한 시간만큼 기다린 다음 적절한 업데이트 주기로 되돌리세요. 요청을 계속 보내면 실제 오류를 파악하기 어려워집니다.
위 순서대로 확인해도 해결되지 않으면 '구독이 안 된다'고만 쓰지 말고 문제를 재현할 수 있는 조건을 함께 전달하세요. 클라이언트 파싱 문제와 서버 구독 권한 문제를 구분해 설명하면 담당자나 서비스 제공업체가 원인을 더 쉽게 찾을 수 있습니다.
- 기기 운영체제, 클라이언트 이름과 버전, 코어 버전
- 오류 발생 시간, 대상 그룹, 직접 업데이트와 프록시 경유 업데이트의 각 결과
- HTTP 상태 코드 또는 예외 원문, 응답 내용이 웹페이지·빈 텍스트·노드 목록 중 무엇인지
- 업데이트 전후 노드 수, 모든 그룹에서 실패했는지, 최근 구독 링크를 재설정했는지
- 민감 정보를 가린 로그 일부. 전체 구독 주소, 토큰, UUID, 노드 인증 정보는 숨기세요.