왜 macOS에서만 “설치했는데도 안 켜짐”이 잦을까

맥용 Clash 계열 앱(예: Clash Verge 등 Mihomo·Clash Meta 코어를 감싼 GUI)은 트래픽을 가로채거나 TUN 계층을 올리기 위해 네트워크 확장(Network Extension)·시스템 확장(System Extension) 같은 커널 근처 권한을 요구합니다. 사용자 입장에서는 “앱만 깔면 끝”이지만, 실제로는 시스템 설정 > 개인정보 보호 및 보안에서 개발자 서명 모듈을 명시적으로 허용해야 하는 경우가 많습니다. 이 단계를 건너뛰면 UI에서는 스위치를 눌러도 코어가 인터페이스를 만들지 못하거나, 로그에 permission denied·extension류 메시지만 남습니다.

또 하나의 큰 축은 구독(subscription) URL 갱신입니다. YAML이 비어 있으면 노드 목록이 없어 “프록시를 켜도 아무 일도 없는 것처럼” 보이기 쉽습니다. macOS에서는 특히 회사 프록시·SSL 검사·로컬 방화벽·잘못된 시스템 시각이 TLS 검증을 깨뜨려 구독 다운로드만 실패하는 패턴이 흔합니다. 이 글은 기술적 트러블슈팅에 한정하며, 관할 법규·조직 정책·서비스 약관 준수는 사용자 본인의 책임입니다. 회사 기기라면 MDM·보안 에이전트와 충돌할 수 있으니 내부 가이드를 우선하세요.

첫 실행 체크리스트: 앱이 살아 있는지부터

아래는 “한 번에 하나만” 바꾸기 좋게 정렬한 순서입니다. 중간에 증상이 사라지면 그 지점이 원인 후보에 가깝습니다.

  1. 앱 버전·아키텍처: Apple Silicon(M 시리즈) 기기에 Intel 전용 바이너리만 있거나 반대의 경우, 보조 프로세스가 제대로 뜨지 않을 수 있습니다. 공식 채널에서 현재 OS와 맞는 빌드를 쓰는지 확인합니다.
  2. 관리자·보안 소프트웨어: 일부 EDR은 네트워크 확장 로드를 지연시키거나 재부팅을 요구합니다. 설치 직후 한 번 재시동만으로 풀리는 경우도 있습니다.
  3. 다른 VPN·필터: 상용 VPN, Little Snitch류, 광고 차단 DNS 앱이 동시에 패킷 경로를 만지면 확장 승인이 꼬입니다. 테스트 때는 하나만 남기고 나머지를 끕니다.
  4. 구독이 실제로 들어왔는지: 대시보드에서 프로필 바이트 수·노드 개수가 0이면, 프록시 토글 이전에 fetch 실패부터 잡아야 합니다.

GUI 전체 흐름은 Clash Verge 계열 완전 튜토리얼과 함께 보면 메뉴 위치를 맞추기 쉽습니다. 다만 macOS 권한 문구는 OS 버전마다 조금씩 다르므로, 화면의 영문 레이블을 함께 대조하세요.

시스템 확장이 “막혔다”고 나올 때

macOS Ventura 이후 흐름을 기준으로 설명합니다(Sequoia에서도 대동소이). 클라이언트가 확장을 로드하려 하면 상단이나 설정 앱에 보안 차단 알림이 뜹니다.

  1. 시스템 설정을 열고 개인정보 보호 및 보안으로 이동합니다.
  2. 하단 근처에 “시스템 소프트웨어가 차단되었습니다” 또는 개발자 이름 옆 허용/활성화 버튼이 보이면 눌러 잠금을 해제합니다. 필요하면 관리자 암호를 입력합니다.
  3. 앱이 안내하면 재시동 또는 앱 재실행 후 다시 토글합니다.

버튼이 보이지 않으면, 해당 앱을 한 번 완전히 종료한 뒤 확장을 트리거하는 작업(예: TUN 켜기, 시스템 프록시 적용)을 다시 시도해 알림을 재발생시킵니다. 여전히 없다면 프로필이나 MDM이 “사용자 승인 확장”을 막고 있는지 IT에 문의해야 합니다.

게이트키퍼 관련으로 “앱이 손상되어 열 수 없음”이 뜨는 경우는 확장 문제가 아니라 코드 서명·검증 실패 쪽에 가깝습니다. 이 경우에도 공식 패키지 출처와 무결성을 확인하는 것이 먼저입니다. 설치 패키지는 공식 다운로드 페이지를 거치는 편이 서명·배포 정책을 맞추기 좋습니다.

TUN·패킷 처리: “확장은 허용했는데도 트래픽이 안 탄다”

시스템 확장 승인 후에도 TUN 인터페이스가 안 생기면 다음을 봅니다.

  • 앱 내부의 TUN/시스템 스택 스위치가 실제로 켜졌는지, 그리고 코어 로그에 인터페이스 생성 성공 메시지가 있는지 확인합니다.
  • 로컬 방화벽 규칙이 보조 바이너리의 수신·전달을 막는 경우: “앱만 허용”으로는 부족하고 관련 네트워크 항목까지 허용해야 할 때가 있습니다.
  • DNS 경로: TUN을 켠 뒤에만 이름 해석이 실패하면, fake-ip·DoH 체인이 물리 회선과 맞지 않는 경우가 많습니다. 설계는 DNS 유출 방지 가이드와 연결해 이해하면 빠릅니다.
# tun sketch — comments in English per project convention
tun:
  enable: true
  stack: system
  auto-route: true
  strict-route: false

키 이름과 기본값은 사용 중인 Mihomo(Clash Meta) 버전 문서와 반드시 대조하세요. 위는 개념 정리용 축약 예시입니다.

구독 갱신 실패: URL은 맞는데 왜 fetch만 에러인가

로그에 tls·certificate·timeout·403·EOF 같은 단어가 보이면 아래 축을 순서대로 의심합니다.

  1. URL 자체: 복사 과정에서 공백·줄바꿈이 들어갔는지, 구독이 만료·교체되지 않았는지 브라우저에서 한 번 직접 열어 봅니다. 로그인 쿠키가 필요한 페이지를 URL만으로 넣으면 실패합니다.
  2. 프록시 루프: “구독을 가져오는 HTTP 클라이언트까지 시스템 프록시를 탄다”면, 아직 노드가 없는 상태에서 스스로를 통해 나가려다 막히는 패턴이 생깁니다. 첫 import 때는 직접 연결·프록시 우회 옵션이 있는지 확인합니다.
  3. TLS 검사·기업 중간 인증서: 회사망에서 SSL 디코딩을 하면 시스템 신뢰 저장소에 없는 루트가 필요합니다. 개인 기기가 아니면 정책상 해결이 불가할 수 있습니다.
  4. DNS: 도메인은 잡히는데 IP가 차단되었거나, 잘못된 레코드로 붙는 경우. 시스템 DNS와 클라이언트 DNS 설정을 동시에 봅니다.
  5. 시간 동기화: 맥 시계가 크게 틀어지면 TLS 핸드셰이크가 실패합니다. 날짜·시간 자동 설정을 켭니다.
  6. 서버 측 제한: 일부 구독 CDN은 특정 User-Agent·Referer·IP 대역만 허용합니다. 로그의 HTTP 상태 코드가 403이면 이 축을 의심합니다.

포트·노드 지연과 헷갈리면 로그로 포트 문제와 노드 문제를 가르는 글과 대조해 “fetch 단계”인지 “dial 단계”인지 먼저 갈라 쓰면 재시도 횟수를 줄일 수 있습니다.

Clash Verge macOS에서 자주 묻는 조합

Verge류는 코어 바이너리·GUI·확장 구성요소가 나뉘어 있습니다. 한쪽만 옛날 버전이면 “UI는 최신인데 확장만 실패” 같은 부분 업데이트 상태가 됩니다. 앱 내 업데이트 채널에서 코어·프론트를 함께 맞추고, 권한 재요청이 뜨면 설정 앱에서 다시 허용합니다.

규칙·프로바이더를 쓰기 시작했다면 Rule Provider 가이드로 외부 규칙 세트 갱신 주기도 함께 점검하세요. 구독 YAML과 규칙 세트가 동시에 실패하면 “아무 노드도 없고 규칙도 비어 있다”는 이중 공백 상태가 됩니다.

긴급 복구와 기본기 다시 보기

네트워크가 전부 불안정해졌다면 TUN·시스템 프록시 스위치를 끄고 앱을 종료한 뒤, Wi‑Fi를 껐다 켜거나 재부팅으로 라우팅을 초기화합니다. 설정을 많이 건드렸다면 백업해 둔 최소 프로필로 되돌린 후 한 줄씩 추가하는 편이 디버깅에 유리합니다.

처음 구조를 잡을 때는 Clash 사용 문서에서 기본 연결·모드 개념을 정리한 뒤, 이 글의 macOS 권한·구독 축을 덧붙이면 “어디가 막혔는지”가 훨씬 잘 보입니다.

투명성·코어 저장소

엔진 동작과 이슈 추적은 Mihomo GitHub 저장소에서 확인할 수 있습니다. 다만 일상적인 클라이언트 설치 파일은 보안·서명 관점에서 위에서 안내한 공식 다운로드 페이지를 우선하는 것이 좋습니다.

정리

macOS에서 Clash macOS·Clash Verge macOS 환경의 초기 장애는 대개 시스템 확장 승인 지연구독 업데이트 실패 두 갈래로 수렴합니다. 확장이 막히면 토글과 로그가 서로 다른 이야기를 하고, 구독 fetch가 실패하면 노드가 비어 프록시 자체가 무의미해집니다. 개인정보 보호 설정에서 개발자 항목을 허용했는지, 첫 다운로드가 프록시 루프에 빠지지 않는지, TLS·DNS·시계가 정상인지를 순서대로 확인하면 재설치 없이도 상당 부분 복구됩니다.

기억할 점: “프록시가 안 된다”가 곧바로 “노드 품질 문제”만은 아닙니다. 확장 승인·구독 fetch 로그를 먼저 보고, 그다음에야 지연·룰 매칭을 의심하세요.

Windows TUN이나 Android VPN 권한과 달리 맥은 시스템 설정과의 대화가 필수입니다. 같은 증상이라도 OS별로 원인 표가 다르니, 플랫폼별 가이드를 나란히 두고 보는 습관을 들이면 운영 부담이 줄어듭니다.

규칙형 클라이언트는 한 번 안정화되면 이후에는 업데이트만 잘 맞춰도 장애 빈도가 낮아집니다. 다른 플랫폼에서 이미 쓰고 있다면, 맥에서는 권한·구독 두 축만 추가로 점검해도 첫 설정 시간을 크게 단축할 수 있습니다.

→ Clash를 무료로 내려받아 macOS에서도 권한·구독·규칙을 한 흐름으로 정리해 보세요