왜 ‘연결 타임아웃·구독 실패·노드 전부 빨강’이 같이 보이기 쉬운가
Clash류 클라이언트를 쓰다 보면 한순간에 연결 타임아웃 메시지가 뜨거나, 구독 업데이트만 반복해서 실패하고, 대시보드에서는 노드가 줄줄이 빨간색·높은 지연으로만 보이는 상황을 자주 만납니다. 사용자 입장에서는 “공항이 통째로 죽었다”고 결론 내리기 쉬운데, 실제 현장에서는 종종 로컬 환경 변수가 한꺼번에 겹친 경우가 더 많습니다.
대표적으로 DNS가 엉켜 목적지 IP가 잘못 잡히면 모든 노드가 동시에 테스트에 실패할 수 있고, PC 시계가 몇 분만 어긋나도 TLS 핸드셰이크가 도돌이표처럼 끊깁니다. 회사 노트북이면 방화벽·SSL 검사·제로 트러스트 에이전트가 Clash가 쓰는 로컬 포트와 테스트 트래픽만 골라 막기도 합니다. 그래서 증상 세트가 비슷하게 보여도 원인은 완전히 다를 수 있습니다.
이 글의 목표는 단순히 “한 줄 해결법”을 나열하는 것이 아니라, 관측 가능한 단서—브라우저에서 구독 URL이 열리는지, 로그에 어떤 단계에서 멈추는지, 시스템 프록시와 mixed-port가 일치하는지—를 기준으로 빠르게 범위를 줄이는 것입니다. Windows와 macOS를 기준으로 설명하지만, Rule·DNS·코어 개념은 다른 데스크톱 빌드에도 그대로 이어집니다.
연결 타임아웃이 의미하는 것: 어디에서 시간이 터지는가
타임아웃은 “영원히 기다리다 포기했다”는 뜻에 가깝습니다. 프록시 체인 어딘가에서 패킷이 빠지거나, 중간 장비가 조용히 버리거나, 잘못된 IP로 붙느라 응답이 돌아오지 않는 경우가 많습니다. 그래서 화면 문구만 보고는 로컬 문제인지 중간 문제인지 노드 문제인지 나누기 어렵습니다.
실무에서는 아래 순서로 먼저 가릅니다.
- 같은 망에서 브라우저 일반 접속은 정상인가(캡티브 포털·회사 프록시 없음)?
- Clash 로그에 DNS 관련 오류나
REFUSED,NXDOMAIN비슷한 힌트가 있는가? - 시스템 프록시로 지정한 포트와 프로필의
mixed-port·port가 같은가? - 보안 제품이 루프백 트래픽을 분석하면서 지연만 크게 만든 것은 아닌가?
노드 한두 개만 타임아웃이면 해당 리전·프로토콜 문제일 확률이 높지만, 한꺼번에 전부라면 DNS·시간·로컬 차단을 먼저 의심하는 편이 시간을 덜 씁니다.
구독 가져오기 실패: 링크·토큰·User-Agent·중간 프록시
구독 동기화 실패는 사용자 경험상 가장 답답한 장애입니다. 프로필이 비어 있거나 오래된 상태로 남으면 이후 모든 증상이 연쇄로 보입니다. 흔한 원인을 카테고리로 나누면 다음과 같습니다.
- URL 자체 만료·회전: 공급자가 토큰을 바꿨는데 클라이언트에 옛 링크가 남음
- User-Agent 요구: 일부 소스는 특정 UA만 허용하고 나머지는 빈 응답·차단 페이지를 돌려줌
- 리다이렉트와 인증서: 중간
302가 로그인 페이지로 이어지면 파서가 YAML로 읽지 못함 - 회사망 SSL 가로채기: 기업 루트 인증서가 없으면 HTTPS 구독이 연쇄 실패
확인 루틴은 단순합니다. 같은 PC에서 브라우저나 curl로 구독 URL을 열었을 때 텍스트 본문이 바로 프로필 조각으로 보이는지 봅니다. HTML 로그인창이 뜬다면 Clash가 아무리 재시도해도 실패하는 것이 정상입니다. 클라이언트의 구독 전용 프록시 옵션이 있다면, 시스템 프록시와 별도로 지정돼 루프에 빠지지 않았는지도 확인하세요.
노드가 전부 빨간색·최악 지연으로 보일 때
대시보드에서 모든 후보가 동시에 불량으로 찍히면 서버 대량 장애를 먼저 떠올리지만, 로컬에서는 아래 경우에도 같은 그림이 나옵니다.
- DNS가 전부 엉킴: fake-ip와 실제 라우팅이 따로 놀거나, fallback이 끊김
- 시스템 시각 크게 틀어짐: 인증서 검증이 연쇄적으로 실패
- 백신·방화벽이 테스트 패킷만 드랍: 앱 UI는 실패, 브라우저 직결은 성공 같은 패턴
- 혼합 포트 불일치: OS는
7890을 바라보는데 프로필은7897등 다른 값
우선 하나의 노드만 골라 수동 선택한 뒤, 단순한 TCP 대상(예: 작은 바이너리나 텍스트 파일)과 실제 웹사이트를 나눠 보는 것도 방법입니다. 전부 동시에 실패하면 범위를 “노드 품질”보다 “공통 전제” 쪽으로 옮겨야 합니다.
DNS와 시스템 시간: ‘보이는 증상’을 속이는 대표 변수
Clash의 Rule 엔진은 도메인을 IP로 풀어 매칭하는 순간부터 결과가 갈립니다. dns 블록에서 enhanced-mode나 fake-ip를 쓰는 구성은 강력하지만, 호환되지 않는 앱과 만나면 “프록시는 켜졌는데 일부만 이상” 같은 부분 증상을 만듭니다.
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- https://1.1.1.1/dns-query
fallback:
- https://dns.google/dns-query
위는 예시이며, 제한된 망에서는 특정 DoH가 막혀 있을 수 있습니다. 중요한 것은 “어떤 서버가 먼저 응답했는가”와 “Rule이 기대한 IP와 실제 연결이 같은가”를 로그와 패킷 관점에서 맞추는 일입니다.
시스템 시간이 어긋나면 TLS에서 반복적인 handshake 실패가 나와 마치 노드가 전부 죽은 것처럼 보입니다. macOS·Windows 모두 자동 시간 동기를 켠 뒤 수동으로 한두 분만 틀어져도 재현되는 경우가 있어, 장애 유형이 네트워크가 아니라 인증서 체인일 때가 있습니다.
방화벽·보안 스택과 혼합 포트 정렬
Clash GUI는 종종 시스템 프록시를 자동 설정합니다. 이때 OS가 가리키는 주소·포트가 프로필의 mixed-port와 다르면, 겉으로는 프록시가 켜진 것처럼 보여도 실제 트래픽은 엉뚱한 리스너로 가거나 아예 빈 포트를 칩니다. 수동으로 프록시를 넣는 브라우저 확장을 같이 쓰면 이중 설정이 되기도 합니다.
회사 PC에서는 앱 네트워크 격리, SSL 인스펙션, 샌드박스가 로컬 프록시를 “안전하지 않은 터널”로 분류해 속도만 극단적으로 느리게 만들거나 조용히 끊어버리기도 합니다. 이때는 Clash 실행 파일·코어 바이너리·가상 어댑터(있는 경우)를 예외 처리해야 합니다.
코어 버전과 프로토콜 호환: ‘이름은 Clash인데 안 되는’ 경우
2026년 현재 공개 구독에는 VLESS Reality, Hysteria2 등 과거 코어가 해석하지 못하는 필드가 섞여 있는 경우가 많습니다. UI는 그대로인데 내부만 오래된 포크에 머문 클라이언트는 프로필은 받아도 실제 연결 단계에서 침묵하는 패턴을 보입니다.
그래서 장애가 장기화되면 첫째로 Mihomo(Clash Meta) 계열 최신 안정 빌드로 올리고, 둘째로 샘플 최소 프로필로 단일 노드만 남겨 교차 확인하는 것이 비용 대비 효과가 큽니다. 반대로 최신 코어에서만 재현되는 버그는 이슈 트래커와 릴리스 노트를 함께 봐야 합니다.
TUN·시스템 프록시 분리 진단
TUN을 켠 상태에서 라우팅 테이블이 꼬이면 “구독은 됐는데 웹만 안 됨”과 같은 역설적 증상이 나옵니다. 진단할 때는 TUN OFF + 시스템 프록시만으로 구독 갱신과 단일 사이트 접속을 먼저 안정화한 뒤, 필요할 때만 TUN을 켜서 범위를 좁히는 방식이 안전합니다. 다른 상용 VPN과 동시에 켜 두면 거의 항상 예측 불가능한 충돌이 생깁니다.
5분 체크리스트: 로그를 읽기 전에 손으로 건널 것
- 구독 URL이 브라우저에서 원시 텍스트로 열리는가
- OS 시간대·자동 시각이 정상인가
- mixed-port와 시스템 프록시가 같은가
- 백신·방화벽 로그에 차단이 있는가
- 단일 노드·단순 대상으로 분리 테스트가 가능한가
여기까지 통과했는데도 전 노드가 실패하면 그때는 공급자 상태·지역 네트워크 제한을 의심해도 늦지 않습니다.
자주 묻는 질문
Q. Rule 모드와 Global 모드 중 무엇을 써야 하나요?
A. 일상은 Rule이 기본입니다. Global은 모든 트래픽을 강제로 특정 그룹에 태우므로 국내 트래픽까지 느려질 수 있어 문제 분리용으로만 잠깐 쓰는 편이 좋습니다.
Q. 지연 숫자가 초록이라도 실제로는 느린 이유는?
A. 테스트 서버와 실제 서비스 CDN이 다르거나, UDP·QUIC 경로가 별도일 수 있습니다. 체감이 기준이면 앱별로 직접 확인해야 합니다.
Q. HTTP 프로필과 HTTPS 구독 차이가 장애에 영향을 주나요?
A. 중간 캐시·리다이렉트 정책이 달라질 수 있습니다. HTTPS가 막힌 망에서는 HTTP 미러가 잠깐 통했더라도 보안상 권장되지 않으므로, 가능한 한 신뢰할 수 있는 HTTPS 엔드포인트를 쓰세요.
정리: 증상 묶음을 쪼개면 반은 이미 해결이다
연결 타임아웃·구독 실패·노드 전부 빨간색이라는 세 증상은 서로를 자극합니다. 구독이 오래된 상태면 노드 품질을 논할 수 없고, DNS가 한 번만 틀어져도 테스트 UI는 재난처럼 보입니다. 그래서 관측 지점을 나누는 습관—URL·시간·포트·보안·코어 순—이 장기적으로 가장 값집니다.
한편 일부 올인원 VPN 앱은 버튼 하나로 보이지만, 세밀한 Rule·DNS 제어·프로토콜 폭에서는 Clash/Mihomo 계열이 유리한 경우가 많습니다. 반대로 유지보수가 멈춘 옛 포크는 이름만 같아도 최신 구독을 제대로 못 탑니다. 그 절충점에서 지속적으로 패치되는 코어와 명확한 로그를 제공하는 클라이언트를 고르면, 같은 증상이라도 원인 분리 시간이 크게 줄어듭니다.
플랫폼별 패키지와 릴리스를 한곳에서 정리해 두면 재설치·회귀 테스트가 빨라지므로, 필요할 때 바로 받을 수 있는 다운로드 허브를 북마크해 두는 것도 운영 부담을 줄이는 방법입니다.