TROUBLESHOOTING · 문제 해결
Clash 구독 업데이트 실패 원인과 자동 업데이트 설정 방법
구독 업데이트 실패는 네트워크 환경, 링크 만료, 클라이언트 캐시 문제와 관련이 많습니다. 순서대로 원인을 점검하고 자동 업데이트를 설정해 노드 목록을 최신 상태로 유지하세요.
구독 업데이트의 기본 원리
구독 주소는 서비스 제공사가 생성한 URL로, 요청을 보내면 Clash 설정 파일을 반환합니다. 일반적으로 YAML 텍스트이며, base64로 인코딩된 노드 목록인 경우도 있습니다. 클라이언트에서 「업데이트」를 누르면 순서대로 네 단계를 거칩니다: 구독 주소에 HTTPS 요청 전송, 반환된 내용 다운로드, 설정으로 파싱, 로컬에 저장 후 현재 설정으로 적용.
이 네 단계 중 어디서든 오류가 발생하면 화면에는 그냥 「업데이트 실패」라는 메시지만 나타납니다. 그래서 점검 순서를 정해두는 것이 중요합니다: 먼저 네트워크가 구독 주소에 연결되는지 확인하고, 다음으로 링크 자체의 유효성을 확인하고, 마지막으로 클라이언트의 캐시와 파싱 문제를 처리합니다. 이 순서대로 진행하면 대부분의 실패 원인을 몇 분 안에 특정할 수 있습니다.
흔한 원인과 점검 순서
1. 네트워크가 구독 주소에 연결되지 않는 경우
구독 도메인이 차단되거나 DNS가 오염된 경우가 업데이트 실패의 가장 흔한 원인입니다. 확인 방법은 간단합니다: 구독 링크를 브라우저 주소창에 복사해서 열어보세요. 긴 텍스트가 반환되면 네트워크 계층은 정상이고, 계속 로딩만 되거나 바로 오류가 뜨면 현재 네트워크에서는 이 주소 자체에 접근할 수 없다는 뜻입니다.
- 이미 사용 가능한 노드가 있다면 먼저 노드에 연결하고 시스템 프록시를 켠 뒤 구독을 업데이트하세요. Clash Verge Rev의 구독 설정에는 「시스템 프록시 사용」 옵션이 있는데, 이를 켜면 업데이트 요청이 현재 프록시를 경유해 성공률이 눈에 띄게 올라갑니다.
- 사용 가능한 노드가 없다면 접속 가능한 환경(예: 모바일 데이터)에서 브라우저로 구독 링크를 열어 내용을
.yaml파일로 저장한 뒤, 클라이언트의 「로컬 파일 가져오기」 기능으로 추가하세요. - 시스템 DNS를
223.5.5.5나119.29.29.29같은 공용 DNS로 바꿔 DNS 오염으로 인한 해석 오류를 배제하세요.
2. 구독 링크 만료
요금제 만료, 트래픽 소진, 서비스 제공사의 구독 토큰 재설정 등은 기존 링크를 무효화시킵니다. 브라우저로 열었을 때 설정 파일이 아니라 401, 403 또는 영문 오류 메시지가 표시된다면 링크가 만료됐다고 판단할 수 있습니다.
해결 방법: 서비스 제공사의 사용자 페이지에 로그인해 구독 주소를 다시 복사하고, 클라이언트에서 기존 구독 항목을 삭제한 뒤 새 주소로 다시 추가하세요. 일부 서비스는 Clash, Clash Meta 등 형식별로 링크를 구분하니, 복사할 때 Clash 또는 mihomo에 대응하는 항목을 선택해야 합니다.
3. 클라이언트 캐시 및 파싱 실패
대표적으로 두 가지 증상이 있습니다. 첫째는 업데이트가 성공한 것처럼 보이지만 노드 목록이 그대로인 경우—이는 클라이언트가 이전 설정을 캐시하고 있는 것으로, 구독을 삭제한 뒤 다시 추가하면 해결됩니다. 둘째는 바로 파싱 오류가 뜨는 경우로, 구독이 반환한 내용이 Clash 형식이 아닐 때 흔히 발생합니다. 일부 서비스는 User-Agent로 반환 내용을 구분하는데, 클라이언트 식별이 안 되면 다른 프로토콜의 노드 목록을 반환할 수 있어 Clash가 파싱하지 못합니다.
해결 방법: 구독 주소에 target=clash 같은 형식 매개변수가 붙어 있는지 확인하고, 없다면 구독 변환 도구로 Clash 형식 링크를 생성하세요. 참고로 mihomo(Clash Meta) 코어는 신규 필드에 대한 호환성이 가장 좋아서, 오래된 코어에서 파싱에 실패하는 설정도 mihomo 코어 클라이언트로 바꾸면 대부분 한 번에 해결됩니다.
4. 시스템 시간 오차로 인한 TLS 검증 실패
시스템 시간이 표준 시간과 크게 차이 나면 HTTPS 핸드셰이크 과정에서 인증서가 유효 기간 밖으로 판정되어, 로그에 certificate expired나 x509 관련 문구가 나타납니다. 시스템의 자동 시간 동기화 기능을 켜서 시간을 맞춘 뒤 다시 시도하면 됩니다. 오래 켜두지 않은 기기나 메인보드를 초기화한 기기에서 자주 발생합니다.
자동 업데이트 설정하기
노드 목록은 서비스 제공사의 조정에 따라 계속 바뀌기 때문에, 수동 업데이트만 믿고 있으면 놓치기 쉽습니다. 각 클라이언트별 자동 업데이트 설정 위치는 다음과 같습니다.
- Clash Verge Rev(Windows / macOS / Linux): 「구독」 페이지에서 해당 항목을 찾아 편집 아이콘을 누르고, 「업데이트 간격」에 분 단위 숫자를 입력합니다. 예를 들어
1440은 하루에 한 번을 의미하며, 빈칸 또는0은 자동 업데이트를 하지 않는다는 뜻입니다. 「시스템 프록시 사용」도 함께 켜두는 것을 권장합니다. - Clash for Android: 「설정」 페이지에서 구독 항목 오른쪽 메뉴를 눌러 편집을 선택하고, 「자동 업데이트 간격」을 설정합니다. 단위 역시 분입니다. 단, 시스템 백그라운드 제한으로 앱이 종료되면 타이머도 멈추므로, 며칠에 한 번씩 수동으로 보완해주는 것이 안전합니다.
- Clash for Windows: Profiles 페이지에서 구독 항목을 우클릭하면 업데이트 간격을 설정할 수 있습니다. 이 클라이언트는 개발이 중단됐으므로, 계속 사용 중이라면 Clash Verge Rev로 이전하는 것을 권장합니다.
- ClashX Meta(macOS): 메뉴바 아이콘의 설정 메뉴에서 수동 업데이트와 자동 업데이트 옵션을 제공합니다.
mihomo 명령줄 환경에는 화면상의 스위치가 없고 구독 자체가 설정 파일이므로, cron으로 정기적으로 다운로드한 뒤 핫 리로드하면 됩니다.
# 매일 06:00에 설정을 업데이트하고 mihomo에 핫 리로드 알림
0 6 * * * root curl -fsSL "https://example.com/sub?target=clash" -o /etc/mihomo/config.yaml.tmp \
&& mv /etc/mihomo/config.yaml.tmp /etc/mihomo/config.yaml \
&& curl -fsS -X PUT "http://127.0.0.1:9090/configs" \
-H "Content-Type: application/json" \
-d '{"path":"/etc/mihomo/config.yaml"}'
세부 사항 두 가지: 먼저 임시 파일로 다운로드한 뒤 mv로 덮어써야 네트워크 중단 시 설정 파일이 반쪼가리로 저장되는 것을 막을 수 있습니다. PUT /configs는 mihomo에 새 설정을 핫 리로드하도록 트리거하며 프로세스 재시작이 필요 없는데, 단 external-controller가 켜져 있고 9090 포트를 리스닝 중이어야 합니다.
주의
자동 업데이트 간격은 너무 짧게 잡지 않는 게 좋습니다. 노드 목록은 대체로 하루에 한 번 정도만 바뀌므로 720~1440분이면 충분합니다. 요청이 너무 빈번하면 서비스 제공사의 속도 제한 정책에 걸려 오히려 구독 주소가 차단될 수 있습니다.
수동 업데이트와 결과 확인
문제 해결 중에는 수동 업데이트를 우선하세요. 데스크톱 클라이언트는 구독 또는 설정 페이지에서 「업데이트」 버튼을 누르고, Clash for Android는 설정 페이지에서 아래로 당기면 새로고침됩니다. 매번 업데이트 후 다음 세 가지를 확인하세요.
- 구독 항목 옆 타임스탬프가 방금 시각으로 갱신됐는지;
- 프록시 페이지의 노드 목록에 새 노드가 추가되고 사라진 노드가 제거됐는지;
- 노드 하나를 골라 지연 시간 테스트를 해서 타임아웃이 아니라 실제 수치가 나오는지.
업데이트가 성공하고 타임스탬프도 바뀌었는데 모든 노드가 전부 타임아웃이라면, 문제는 구독이 아니라 노드 가용성이나 로컬 네트워크 환경에 있습니다. 처음 연결할 때와 같은 절차로 노드 교체, 네트워크 전환, 시스템 프록시와 TUN 모드 상태를 하나씩 점검하세요.
자주 묻는 질문
업데이트를 눌러도 아무 반응도, 오류도 없나요?
클라이언트의 로그 패널을 열고(Clash Verge Rev는 「로그」 페이지) 다시 업데이트를 눌러, 나타나는 오류 메시지를 앞서 설명한 네 가지 원인과 대조해보세요. timeout은 네트워크 문제, 401이나 403은 링크 문제, yaml이나 parse 관련 문구는 형식 문제, certificate는 시스템 시간 문제입니다.
브라우저로는 구독이 열리는데 클라이언트에서는 업데이트가 실패하나요?
먼저 「시스템 프록시 사용」을 켜고 다시 업데이트해보세요. 그다음 TUN 모드와 시스템 프록시가 동시에 켜져 충돌하는지 확인하고, 둘 중 하나를 끈 뒤 다시 시도하세요. 그래도 실패한다면 User-Agent 인식 문제일 수 있으니, 형식 매개변수가 포함된 구독 링크로 바꿔보세요.
자동 업데이트를 하면 선택해둔 노드가 초기화되나요?
구독 업데이트는 덮어쓰기 방식이라 노드 목록 전체가 교체됩니다. 대부분의 클라이언트는 현재 선택된 노드 이름을 기억해 업데이트 후 동일한 이름의 노드를 자동으로 다시 선택하며, 노드 이름이 바뀌거나 사라진 경우에만 다시 선택해야 합니다.
구독이 여러 개인데 하나로 합칠 수 있나요?
mihomo 코어는 proxy-providers를 지원해서, 하나의 설정 파일에서 여러 구독 주소를 참조해 프록시 그룹으로 합칠 수 있습니다. 일부 GUI 클라이언트도 다중 구독 합치기 기능을 제공합니다. 합친 뒤에는 프록시 그룹 이름을 구분하기 쉽게 지어, 노드 선택 시 출처가 헷갈리지 않도록 하세요.