v2rayN, v2rayNG, v2flyNG에서 구독을 다운로드하지 못하거나 응답 내용을 인식하지 못하는 경우, 업데이트 후 목록이 비는 경우에 적용할 수 있습니다. 먼저 현재 사용할 수 있는 노드를 보존하고 링크, 요청 경로, 응답 본문, 구독 그룹을 확인하세요. 한 번에 한 가지 조건만 바꾸어 비교하면 다운로드, 파싱, 표시 중 어느 단계에서 문제가 생겼는지 구분할 수 있으며, 구독 문제를 노드 연결 문제로 오인하는 일도 줄일 수 있습니다.
다운로드 실패·파싱 실패·빈 목록 구분하기
구독 업데이트는 노드 연결 테스트가 아닙니다. 클라이언트가 먼저 구독 주소로 요청을 보내고, 응답 내용을 읽어 노드 항목을 파악한 다음, 해당 그룹에 결과를 저장합니다. 어느 단계에서든 실패하면 화면에는 ‘새 노드가 없음’으로 표시될 수 있지만, 원인에 따라 해결 방법은 다릅니다.
- 다운로드 실패: 로그에 도메인 이름 확인 실패, 연결 시간 초과, 인증서 오류 또는 HTTP 오류 상태가 표시됩니다. 이 경우 링크와 네트워크부터 확인하세요. VMess 또는 VLESS 노드 매개변수를 먼저 변경할 필요는 없습니다.
- 파싱 실패: 클라이언트가 응답을 받았지만 유효한 노드로 인식하지 못합니다. 로그인 페이지가 반환되었거나 형식이 맞지 않거나 구독 본문이 잘린 경우가 흔한 원인입니다.
- 목록이 비어 있음: 서버가 실제로 빈 내용을 반환했을 수도 있고, 검색 조건이나 현재 그룹 또는 노드 필터 때문에 항목이 표시되지 않을 수도 있습니다.
- 노드는 있지만 연결 실패: 구독 파싱이 적어도 일부 완료된 상태입니다. 노드 설정, 시스템 시간, 서버 상태를 확인하고 구독 업데이트를 반복하지 마세요.
1단계: 복사한 주소가 구독 링크인지 확인
구독 링크, 계정 관리 페이지, 개별 노드 공유 링크는 서로 다른 내용입니다. 구독 주소는 보통 https://로 시작합니다. vmess://, vless:// 등은 노드 공유 링크이므로 클라이언트의 해당 가져오기 기능을 사용해야 합니다. 긴 문자열을 복사할 수 있다는 이유만으로 구독 주소라고 판단하지 마세요.
-
원본 주소 다시 복사하기
서비스 제공자의 구독 메뉴에서 주소를 다시 복사하고, 안내 문구나 따옴표, 앞뒤 공백이 포함되지 않았는지 확인하세요. 채팅 기록에 생략되어 표시된 링크는 그대로 사용할 수 없습니다.
-
쿼리 매개변수 확인하기
물음표 뒤의 내용이 빠짐없이 포함되었는지 확인하세요. 구독 주소의 액세스 토큰, 매개변수 순서, 서명은 인증에 쓰일 수 있습니다. 매개변수를 임의로 삭제하거나
&뒤의 내용을 잘라내지 마세요. -
유효한 링크인지 확인하기
계정 페이지에서 구독 권한과 만료 여부, 링크 재설정 여부를 확인하세요. 링크를 재설정했다면 새 주소를 기존 그룹에 저장해야 합니다. 이전 주소는 즉시 만료될 수 있습니다.
-
그룹 하나만 업데이트하기
저장한 뒤 해당 그룹만 업데이트하고 결과를 기록하세요. 여러 구독을 동시에 업데이트하면 다른 그룹의 오류가 같은 로그에 섞일 수 있습니다.
브라우저에서 주소가 열린다고 해도 브라우저의 접속 경로로 어떤 응답을 받았다는 사실만 확인할 수 있습니다. 브라우저에는 로그인 쿠키가 있을 수 있고, 클라이언트와 다른 프록시나 DNS를 사용할 수도 있습니다. 따라서 ‘브라우저에서 열림’만으로 클라이언트가 파싱 가능한 구독 본문을 가져올 수 있다고 단정할 수 없습니다.
2단계: 직접 연결과 프록시 다운로드 비교하기
‘구독 업데이트 시 프록시를 사용할지’와 ‘노드에 어떤 라우팅 규칙을 적용할지’는 서로 다른 설정입니다. 구독은 클라이언트 자체의 HTTP 요청 기능으로 다운로드될 수 있으며, 프록시 코어의 DNS, 라우팅, 분할 규칙을 그대로 따르지 않을 수도 있습니다. 코어의 라우팅 모드만 바꿔도 구독 요청 경로가 달라진다고 볼 수는 없습니다.
Windows용 v2rayN 6.x의 일반적인 화면에서는 ‘구독 그룹’ 메뉴에서 ‘모든 구독 업데이트(프록시 사용 안 함)’ 또는 ‘모든 구독 업데이트(프록시 사용)’를 선택해 비교할 수 있습니다. 다른 버전에서는 괄호 표기나 문구, 그룹 조작 메뉴가 다를 수 있으니 현재 메뉴를 기준으로 확인하세요. 특정 버전의 업데이트 방식을 모든 버전의 기본 동작으로 간주하지 않습니다.
- 먼저 프록시 없이 시도: 사용할 수 있는 노드가 없거나 로컬 프록시가 실행되지 않는 것으로 의심될 때 적합합니다. 실패하면 오류를 기록하고 그룹을 바로 삭제하지 마세요.
- 그다음 프록시를 통해 시도: 선택한 노드로 일반 웹사이트에 접속할 수 있는지 확인한 뒤 다시 업데이트하세요. 선택한 노드 자체를 사용할 수 없다면 해당 노드에 의존해 새 구독을 다운로드할 수 없습니다.
- 로컬 리스닝 확인: 로그에
127.0.0.1연결이 거부되었다고 표시되면 클라이언트가 실제로 수신 대기 중인 주소와 포트를 확인하세요.10808,10809는 문제 해결 중 접할 수 있는 포트 예시일 뿐입니다. 모든 버전이 이 포트를 쓰거나 HTTP와 SOCKS 리스너를 각각 제공한다는 뜻은 아닙니다. - 네트워크를 한 번 바꿔 보기: 가능하다면 현재 네트워크와 신뢰할 수 있는 다른 네트워크에서 결과를 비교하세요. 한 네트워크에서만 실패한다면 해당 네트워크의 DNS, 접속 제한 또는 인증 포털을 먼저 확인하세요.
Android에서는 먼저 v2rayNG 또는 v2flyNG의 ‘구독 그룹 설정’에서 저장된 주소를 확인한 다음 메뉴의 ‘구독 업데이트’를 사용하세요. 메뉴 이름은 버전에 따라 달라질 수 있습니다. 현재 버전에 업데이트 시 프록시를 사용하는 옵션이 있다면 같은 방식으로 비교하세요. 해당 옵션이 없다면 데스크톱 버전의 메뉴 경로를 Android에 그대로 적용하지 마세요. 테스트마다 업데이트 경로나 네트워크 중 한 가지만 변경하세요.
상태 코드로 인증·리디렉션·차단 원인 찾기
로그에 HTTP 상태 코드가 표시되면 상태 코드를 먼저 확인한 다음 본문을 살펴보세요. 아래 숫자는 HTTP 프로토콜 상태이며, 속도 측정 결과나 클라이언트 버전이 아닙니다. 200 응답도 본문은 오류 안내나 웹페이지일 수 있습니다.
아래는 HTTP 상태 표시줄과 요청 구성 요소에서 나타날 수 있는 실제 오류 문구입니다. 클라이언트, 실행 환경, 화면 언어에 따라 다른 안내가 추가될 수 있습니다. 문구 하나만 대조하기보다는 오류가 어느 단계에서 발생했는지 함께 확인하세요.
HTTP 401 Unauthorized
원인 및 해결: 요청에 유효한 인증 정보가 없거나 토큰이 만료되었습니다. 계정의 구독 메뉴에서 주소를 다시 복사하고, 인터페이스가 로그인된 웹 세션에서만 작동하는 것은 아닌지 확인하세요.
HTTP 403 Forbidden
원인 및 해결: 서버가 현재 요청을 거부했습니다. 권한, 접속 정책, 보안 규칙과 관련된 문제일 수 있습니다. 계정 상태를 확인하고 발생 시간, 상태 코드, 접속 방식을 서비스 제공자에게 전달하세요. 403만으로 계정 만료라고 단정하지 마세요.
HTTP 407 Proxy Authentication Required
원인 및 해결: 요청이 통과하는 프록시에서 인증을 요구하고 있습니다. 구독 서비스가 원인이 아닐 수 있습니다. 시스템 또는 네트워크 프록시의 인증 설정을 확인하거나 프록시 없이 업데이트한 결과와 비교하세요.
The operation has timed out.
원인 및 해결: 정해진 시간 안에 요청이 완료되지 않았습니다. 이름 확인, 연결, 응답 읽기 단계에서 지연되었을 수 있습니다. 먼저 네트워크와 다운로드 경로를 비교하고 주변 로그도 확인하세요. 시간 초과만 늘려서는 만료된 주소를 해결할 수 없습니다.
301 또는 302가 표시되면 최종 응답이 로그인 페이지가 아닌지 확인하세요. 429가 표시되면 업데이트를 연속해서 시도하지 말고 서버의 Retry-After 안내에 따라 기다리세요. 복구 여부를 확인하려고 업데이트 버튼을 계속 누르면 제한이 더 오래 지속될 수 있습니다.
3단계: 응답 본문 형식과 인코딩 확인하기
구독 다운로드가 성공했는데도 파싱 오류가 발생한다면 ‘실제로 어떤 내용을 받았는지’를 확인해야 합니다. 응답 내용은 개인 기기나 통제된 환경에서만 확인하고, 노드 설정 전체를 외부 도구에 붙여넣지 마세요. 노드 본문에도 접속 정보가 포함될 수 있으므로 구독 링크와 마찬가지로 취급해야 합니다.
| 응답 특징 | 가능한 의미 | 다음 단계 |
|---|---|---|
<!DOCTYPE html> 또는 <html로 시작 |
로그인 페이지, 오류 페이지 또는 네트워크 인증 페이지 | 구독 메뉴에서 원본 주소를 다시 가져오고 최종 리디렉션과 접근 권한 확인 |
여러 줄의 vmess://, vless:// 등 공유 링크 |
일반적인 노드 목록 형식 | 현재 클라이언트 버전이 각 링크와 매개변수를 지원하는지 확인 |
| 긴 Base64 문자열 하나 | 인코딩된 노드 목록일 수 있음 | 응답이 완전한지 확인하고 먼저 클라이언트에서 파싱하세요. 필요하다면 로컬 기기에서만 디코딩해 확인하세요. |
| JSON 또는 YAML 텍스트 | 전체 설정, API 오류 객체 또는 다른 형식일 수 있음 | 현재 구독 가져오기 기능에서 요구하는 형식인지 확인하세요. 파일 확장자만으로 판단할 수 없습니다. |
| 본문이 비었거나 안내 문구만 있음 | 사용 가능한 항목이 없거나 서버에서 서비스 오류를 반환함 | 계정 권한, 노드 필터 조건, 서버 안내 확인 |
Base64 디코딩에 성공해도 노드를 가져올 수 있다는 뜻은 아닙니다
Base64는 인코딩 방식이지 구독 프로토콜이 아닙니다. 디코딩에 성공했다는 것은 텍스트가 특정 인코딩 규칙을 따른다는 뜻일 뿐, 내부 링크가 유효하다는 보장은 없습니다. 일반적인 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩된 JSON을 사용합니다. 반면 VLESS 공유 링크는 식별자, 주소, 전송 매개변수를 URI에 기록하므로 두 형식을 같은 필드 기준으로 처리할 수 없습니다.
- 전체 내용을 반복해서 디코딩하지 마세요: VLESS 링크의 퍼센트 인코딩은 경로, 메모, 쿼리 매개변수에 쓰일 수 있습니다. 전체를 디코딩한 뒤 다시 조합하면
&,#같은 구분자의 의미가 달라질 수 있습니다. - 잘림과 변경 여부 확인: 복사 과정에서 줄바꿈, 전각 문장 부호, 문자 누락이 생기거나
+가 공백으로 바뀌면 파싱에 문제가 생길 수 있습니다. 불확실한 본문을 직접 보완하기보다 원본 주소를 다시 복사하세요. - 가져오기 기능 구분: 코어가 특정 설정 형식을 읽을 수 있다고 해서 클라이언트의 구독 가져오기 기능이 이를 노드로 변환하는 것은 아닙니다. 전체 JSON 설정, 개별 노드 공유 링크, 구독 목록은 각각 해당 기능으로 가져와야 합니다.
- 호환되는 매개변수 확인: 오래된 클라이언트는 일부 전송 또는 보안 매개변수를 인식하지 못할 수 있습니다. 먼저 현재 버전을 기록하고 다운로드 페이지에서 사용할 수 있는 클라이언트를 확인하세요. 가져오기를 위해 TLS, SNI 또는 기타 보안 설정을 삭제하지 마세요.
4단계: 그룹·필터·저장 결과 확인하기
로그에 다운로드 완료와 노드 인식이 표시되면 네트워크를 계속 바꾸기보다 목록 화면을 먼저 확인하세요. v2rayN에서는 ‘구독 그룹’ → ‘구독 그룹 설정’에서 현재 그룹 주소를 확인합니다. v2rayNG와 v2flyNG에서는 ‘구독 그룹 설정’으로 들어가 해당 항목을 확인하세요. 저장 버튼, 필터, 새로 고침 방식은 버전에 따라 다르며 세 클라이언트의 기능이 완전히 같다고 가정하지 않습니다.
- 검색어 지우기: 노드 검색창을 비우고 대상 구독 그룹 또는 전체 노드 화면으로 전환해 이름 필터 때문에 목록이 비어 보이는지 확인하세요.
- 필터 확인: 현재 버전에 구독 정규식 필터나 포함·제외 조건이 있다면 기존 값을 기록한 뒤 필터를 잠시 해제하고 한 번 업데이트하세요.
- 저장 여부 확인: 주소를 바꾼 뒤 실제로 저장했는지 확인하세요. 편집란에 주소를 붙여넣기만 하고 적용하지 않았다면 업데이트 시 이전 주소를 사용할 수 있습니다.
- 분리 테스트: 필요하면 테스트 그룹을 새로 만들어 해당 구독만 넣고 따로 업데이트하세요. 사용 가능한 노드를 덮어쓰지 않도록 기존 그룹은 그대로 두세요.
- 실행 중인 프로그램 확인: 데스크톱에 v2rayN이 여러 개 설치되어 있다면 현재 어느 프로그램과 설정 폴더를 사용 중인지 확인하세요. 한 프로그램의 설정을 수정하고 다른 프로그램을 실행하는 일을 방지할 수 있습니다.
‘시스템 프록시 사용’, ‘전역 라우팅’, ‘구독 업데이트 시 프록시 사용’은 같은 설정이 아닙니다. 첫 번째는 시스템 프록시를 따르는 앱에 영향을 주고, 두 번째는 코어가 연결을 받은 뒤 선택할 아웃바운드 경로를 결정하며, 마지막 설정은 구독 요청의 다운로드 방식을 직접 지정합니다. 문제를 확인할 때 변경한 설정을 구체적으로 기록하고 여러 옵션을 ‘프록시를 켰다’는 말로 뭉뚱그리지 마세요.
재테스트 체크리스트와 문의 정보
설정을 변경한 뒤 대상 그룹만 한 번 업데이트하세요. 복구 여부는 업데이트 로그, 노드 목록, 실제 연결 결과를 모두 확인해야 합니다. 오류가 없다고 유효한 노드가 있다는 뜻은 아니며, 노드가 표시되어도 모든 서버에 연결된다는 뜻은 아닙니다. 구독은 복구되었지만 특정 노드에서 시간 초과가 발생한다면 별도의 연결 문제로 처리하세요.
- 계정 페이지나 개별 노드 링크가 아니라 전체 구독 주소를 저장했는지 확인했습니다.
- 계정 권한과 링크 재설정 여부를 확인하고, 편집한 주소가 저장되었는지 확인했습니다.
- 직접 연결과 사용할 수 있는 프록시를 통한 업데이트 결과를 각각 기록했거나, 현재 버전에 해당 옵션이 없다고 명시했습니다.
- ‘작동하지 않음’이라고만 쓰지 않고 HTTP 상태, 오류 원문, 실패 단계를 기록했습니다.
- 응답 본문이 HTML 로그인 페이지가 아니며 현재 가져오기 기능에 맞는 형식인지 확인했습니다.
- 검색, 그룹 선택, 구독 필터 때문에 목록이 비는 경우를 배제했습니다.
- 기존 설정을 백업하고 재테스트 중 DNS, 프록시, 라우팅, 구독 형식을 동시에 변경하지 않았습니다.
기본 가져오기 방법은 빠른 시작을 참고하세요. 로컬 리스너, 시스템 프록시, 라우팅 문제를 더 자세히 구분하려면 문제 해결 가이드를 확인할 수 있습니다. 문제가 발생한 단계를 먼저 파악한 뒤 해당 단계의 설정만 변경하는 편이 구독을 반복해서 삭제하고 다시 만드는 것보다 증거를 보존하고 결과를 검증하기 쉽습니다.