팝업 유형을 먼저 구분한 뒤 권한 문제를 해결하세요

앱이 열리지 않는 문제, TUN 시작 실패, 키체인 접근 요청은 서로 다른 문제입니다. 먼저 팝업의 정확한 문구와 요청한 앱 이름, 팝업이 나타난 동작을 기록한 다음 해당 설정을 확인하세요. 모든 문제를 ‘권한 부족’으로 단정하거나 여러 보안 설정을 한꺼번에 변경하지 마세요.

Clash는 규칙 기반 프록시 엔진과 클라이언트 생태계에서 널리 쓰이는 이름이지만, macOS 클라이언트마다 백그라운드 구성 요소는 다릅니다. Clash Meta(현재 이름: mihomo) 엔진을 사용한다고 해서 앱에 Apple 네트워크 확장이 설치된 것은 아닙니다. 일부 클라이언트는 권한이 필요한 보조 서비스를 통해 엔진을 실행한 뒤 TUN 가상 인터페이스를 만듭니다.

표시된 경고 또는 증상해당 단계먼저 확인할 항목
개발자를 확인할 수 없음, Apple에서 악성 소프트웨어 포함 여부를 확인할 수 없음Gatekeeper 실행 검사설치 경로, 서명, 개인정보 보호 및 보안
VPN 구성 추가, 네트워크 확장 허용VPN 구성 또는 확장 등록요청한 앱 이름과 시스템에 표시된 해당 항목
보조 도구 설치, 관리자 승인 필요권한이 필요한 백그라운드 구성 요소클라이언트 서비스 상태 및 백그라운드 항목
앱에서 키체인의 기밀 정보에 접근하려고 함자격 증명 읽기키체인 이름, 항목 이름, 요청 프로세스

‘열 수 없음’: 아키텍처와 Gatekeeper부터 확인

현재 Mac에 맞는 설치 파일인지 확인

  1. Apple 메뉴 → ‘이 Mac에 관하여’를 엽니다. Apple M 시리즈 칩이 표시되면 Apple Silicon 또는 arm64 버전을, Intel 프로세서가 표시되면 x64 또는 Intel 버전을 선택하세요.
  2. 실행 중인 이전 클라이언트를 종료하고, 디스크 이미지에서 앱을 ‘응용 프로그램’ 폴더로 드래그한 다음 설치 이미지를 추출하세요. DMG 안에서 앱을 직접 실행하는 방식은 계속 사용하지 않는 것이 좋습니다.
  3. ‘응용 프로그램’ 폴더에서 앱을 한 번 실행하고 시스템에 표시된 정확한 문구를 기록하세요. 아키텍처 불일치, macOS 버전 미지원, 개발자 확인 실패는 각각 따로 해결해야 합니다.

‘터미널’에서 다음 읽기 전용 명령을 실행해 확인할 수도 있습니다. 기본 상태로 실행한 터미널에서 arm64가 표시되면 대개 Apple Silicon입니다. 터미널 자체가 Rosetta로 실행 중이면 x86_64로 표시될 수 있으므로, 이때는 ‘이 Mac에 관하여’에 표시된 칩 정보를 기준으로 판단하세요.

uname -m
sw_vers -productVersion

출처를 확인한 앱만 개별적으로 허용

개발자를 확인할 수 없다는 경고가 나타나면 먼저 공식 프로젝트 배포 경로에서 다운로드했는지 확인하세요. 그런 다음 Apple 메뉴 → ‘시스템 설정’ → ‘개인정보 보호 및 보안’을 엽니다. 아래로 스크롤해 ‘보안’ 영역에서 이번 실행을 차단한 기록 옆의 ‘그래도 열기’를 선택하고, 시스템 안내에 따라 인증한 뒤 다시 확인하세요. 이 항목은 보통 앱 실행을 시도한 뒤에 표시됩니다.

macOS 13 및 14에서는 일부 차단 상황에서 Finder에서 앱을 Control 키를 누른 채 클릭한 다음 ‘열기’를 선택해 확인할 수도 있습니다. macOS 15에서는 올바르게 서명되거나 공증되지 않은 소프트웨어를 우회 실행하는 경로가 제한됩니다. ‘개인정보 보호 및 보안’의 시스템 안내를 따르고, 반복해서 마우스 오른쪽 버튼을 클릭하지 마세요.

네트워크 확장 승인: 먼저 클라이언트 구현 방식 확인

시스템 프록시를 사용하는 데는 일반적으로 네트워크 확장이 필요하지 않습니다. 시스템 프록시는 주로 macOS의 HTTP, HTTPS 등의 프록시 설정을 변경해 시스템 프록시를 따르는 앱이 로컬 리스닝 포트에 연결하도록 합니다. TUN은 가상 네트워크 인터페이스로 트래픽을 처리하며, 필요한 권한은 클라이언트가 Network Extension을 사용하는지, 권한이 필요한 엔진과 보조 서비스를 사용하는지에 따라 달라집니다.

확장 또는 VPN 관련 팝업이 실제로 나타난 경우

  1. 클라이언트에서 해당 기능을 직접 켜고 시스템 팝업에 표시된 앱 이름을 확인하세요. 이름과 출처가 현재 작업에 부합하는 경우에만 VPN 구성을 추가하거나 확장을 활성화하세요.
  2. macOS 15에서는 ‘시스템 설정’ → ‘일반’ → ‘로그인 항목 및 확장 프로그램’으로 이동해 ‘확장 프로그램’ 영역의 ‘네트워크 확장’을 확인할 수 있습니다. 해당 클라이언트 항목이 있으면 활성화 여부를 확인하세요.
  3. macOS 13 및 14에서 시스템 소프트웨어 또는 확장이 차단되었다는 승인 안내가 표시되면 ‘개인정보 보호 및 보안’에서 해당 항목을 허용하는 메뉴를 확인하세요. 일반 앱 확장에는 같은 버튼이 표시되지 않을 수도 있습니다.
  4. ‘시스템 설정’에 ‘VPN’ 페이지나 ‘네트워크’의 VPN 구성이 표시되면 이름과 연결 상태를 확인하세요. VPN 구성 승인과 시스템 확장 승인은 별개의 절차이며, 모든 클라이언트에서 두 항목이 모두 나타나는 것은 아닙니다.

승인한 뒤 클라이언트로 돌아가 해당 기능을 껐다가 다시 켜세요. 시스템에서 명확히 요구하는 경우에만 Mac을 재시동하면 됩니다. 회사나 학교에서 관리하는 기기는 관리자가 승인 정책을 배포해야 할 수 있으며, 일반 계정으로 직접 처리할 수 없습니다. 같은 소프트웨어를 반복해서 설치해도 이 제한을 우회할 수 없습니다.

네트워크 확장 항목이 없는 경우

클라이언트 문서, 엔진 로그, ‘서비스 모드’ 상태를 확인하세요. TUN을 생성할 때 로그에 operation not permitted가 표시되면 존재하지 않는 네트워크 확장 스위치를 찾기보다 권한이 필요한 서비스를 먼저 확인하세요. TUN이 시작됐는데 도메인이 열리지 않는다면 DNS와 규칙을 점검하세요. 이는 대개 확장 승인 문제가 아닙니다.

보조 서비스 설치: 관리자 암호가 필요한 이유

일부 클라이언트는 TUN 인터페이스를 만들거나 라우팅을 관리하고, 엔진을 필요한 권한으로 실행하기 위해 권한이 필요한 보조 도구를 설치합니다. 시스템 인증 창에는 보통 관리자 계정 이름과 암호를 입력해야 합니다. 구독 암호나 Apple 계정 암호가 아니며, Touch ID 사용 가능 여부는 시스템 인증 방식에 따라 달라집니다.

  1. 라우팅을 이전 백그라운드 프로세스가 동시에 변경하지 않도록 실행 중인 다른 프록시나 VPN을 종료하고, 설정하려는 클라이언트 하나만 남겨두세요.
  2. 클라이언트에서 ‘서비스 모드’, ‘보조 서비스’, ‘서비스 설치’와 같은 메뉴를 찾으세요. 메뉴 이름은 클라이언트마다 다르므로 현재 사용 중인 클라이언트의 화면을 기준으로 해야 합니다. 한 클라이언트의 메뉴 경로를 모든 Clash 클라이언트에 그대로 적용하지 마세요.
  3. 서비스 설치 또는 복구를 클릭하고 인증 창에 표시된 요청 앱을 확인한 뒤, 이 Mac의 관리자 계정 정보를 입력하세요. 표준 계정이라면 관리자의 도움이 필요합니다. 터미널에서 root 권한으로 그래픽 앱 전체를 실행하려고 하지 마세요.
  4. ‘시스템 설정’ → ‘일반’ → ‘로그인 항목’을 엽니다. macOS 15에서는 ‘로그인 항목 및 확장 프로그램’에 해당합니다. ‘백그라운드에서 허용’ 영역에서 개발자 또는 보조 구성 요소가 비활성화되어 있는지 확인하세요.
  5. 클라이언트로 돌아가 서비스가 준비되었는지 확인한 다음 TUN을 활성화하세요. 그래도 실패하면 암호를 계속 입력하지 말고 서비스 설치 중 표시된 오류를 기록하세요.

클라이언트를 업그레이드한 뒤에도 서비스 설치를 계속 요청한다면 이전 보조 도구와 새 앱 버전이 호환되지 않거나 백그라운드 구성 요소가 비활성화되었을 수 있습니다. 먼저 클라이언트에 포함된 ‘서비스 제거’ 또는 ‘서비스 복구’ 기능을 사용한 뒤 앱을 다시 실행하세요. 이름만 보고 /Library/PrivilegedHelperTools 또는 /Library/LaunchDaemons의 파일을 삭제하지 마세요. 잘못 삭제하면 다른 소프트웨어에도 영향을 줄 수 있습니다.

키체인 팝업: 항목을 확인한 뒤 접근 범위 선택

키체인에는 암호, 토큰, 인증서 등의 정보가 저장됩니다. 클라이언트가 구독 자격 증명이나 다른 민감한 설정을 키체인에 저장했다면 읽을 때 승인 팝업이 나타날 수 있습니다. 모든 Clash 클라이언트가 키체인을 사용하는 것은 아닙니다. 팝업이 나타나면 프록시 앱이라는 이유만으로 허용하지 말고 실제 항목을 확인하세요.

먼저 세 가지 항목 확인

  • 요청한 앱: 방금 실행한 클라이언트인가요, 아니면 낯선 프로세스인가요? 클라이언트를 업데이트하면 경로나 서명이 바뀌어 다시 확인을 요청할 수도 있습니다.
  • 항목 이름: 해당 클라이언트, 계정 또는 저장된 자격 증명과 관련이 있나요? 창의 모양만으로 신뢰 여부를 판단하지 마세요.
  • 키체인 이름: ‘로그인’ 키체인을 잠금 해제하라는 메시지가 표시되면 보통 해당 키체인의 암호가 필요합니다. 이 암호는 대개 Mac 로그인 암호와 같지만 항상 동기화되는 것은 아닙니다.

출처와 항목을 모두 확인했다면 먼저 ‘허용’을 선택해 이번 접근을 승인할 수 있습니다. 앱이 앞으로도 해당 항목을 읽어야 한다고 확인한 경우에만 ‘항상 허용’을 고려하세요. ‘거부’를 선택하면 이번 읽기가 차단되어 다시 로그인하거나 자격 증명을 입력해야 할 수 있지만, 소프트웨어가 제거되는 것은 아닙니다.

암호가 맞는데도 팝업이 반복되는 경우

‘Spotlight 검색’에서 ‘키체인 접근’을 검색해 실행한 다음 ‘로그인’ 키체인을 선택하고 팝업에 표시된 항목 이름을 검색하세요. 항목 세부 정보와 ‘접근 제어’ 설정을 확인해 허용된 앱이 이전 버전이나 이전 경로를 가리키는지 살펴보세요. 모든 앱에 접근을 허용하도록 설정하지 마세요. 최신 macOS에는 ‘암호’ 앱이 있지만 키체인 관리 기능을 모두 대체하지는 않습니다.

관리자가 Mac 암호를 재설정한 적이 있다면 ‘로그인’ 키체인에는 이전 암호가 설정되어 있을 수 있습니다. 이 경우 새 로그인 암호로 이전 키체인을 바로 잠금 해제할 수 없으며, 기존 키체인 암호를 사용하거나 시스템 복구 절차를 따라야 합니다. 기본 키체인을 재설정하면 저장된 자격 증명에 영향을 주므로 첫 번째 문제 해결 방법으로 사용하지 마세요.

승인 후에도 인터넷에 연결되지 않음: 포트, 트래픽, DNS 순으로 확인

먼저 시스템 프록시만 켜서 기본 연결을 확인하고, 필요할 때 TUN을 활성화하세요. 이렇게 하면 ‘엔진이 포트를 열지 않은 문제’와 ‘TUN 라우팅 처리 실패’를 구분할 수 있습니다. 아래 예시에서는 실제 설정의 mixed-port: 7890을 사용합니다. 7890이 모든 클라이언트의 기본값은 아니므로 현재 구성이나 클라이언트 설정에서 먼저 확인하세요.

scutil --proxy
lsof -nP -iTCP:7890 -sTCP:LISTEN
networksetup -listallnetworkservices
  • scutil --proxy는 현재 시스템 프록시 정보를 확인하는 명령입니다. 시스템 프록시를 사용할 때는 활성화 여부, 서버 주소, 포트가 클라이언트 설정과 일치하는지 확인하세요. TUN만 사용하는 경우 시스템 프록시가 꺼져 있어도 이상이 아닐 수 있습니다.
  • lsof로 TCP 7890 포트를 수신 중인 프로세스가 있는지 확인할 수 있습니다. 출력이 없다면 먼저 포트 번호가 맞는지, 엔진이 실행 중인지 확인하세요. 필요한 경우 클라이언트 로그를 확인하고, 바로 노드 문제로 단정하지 마세요.
  • networksetup -listallnetworkservices는 네트워크 서비스 이름을 표시합니다. 프록시를 수동으로 점검하기 전에 실제 사용 중인 Wi-Fi 또는 이더넷 서비스를 확인해 사용하지 않는 네트워크 인터페이스를 변경하지 않도록 하세요.

HTTP 호환 mixed-port로 7890을 사용하는 경우 아래와 같이 프록시 요청을 명시해 실행할 수 있습니다. 이 요청은 해당 요청이 로컬 프록시를 거쳐 목적지에 도달하는지만 확인하며, 시스템 프록시나 TUN이 모든 앱의 트래픽을 처리하는지는 증명하지 않습니다.

curl --proxy http://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com/

로컬 포트 연결이 즉시 실패하면 포트 수신 상태를 확인하세요. 로컬 프록시에는 연결되지만 요청 시간이 초과되면 노드, 정책 그룹, 규칙 매칭을 살펴보세요. 브라우저에서만 문제가 발생한다면 브라우저 프록시 확장 프로그램과 이전 프록시 설정을 확인하세요. TUN에서만 문제가 생기면 서비스 상태, 라우팅, 다른 VPN과의 충돌을 확인하세요.

도메인 이름 확인 오류가 발생하면 엔진의 DNS 로그와 현재 구성을 확인하세요. dig의 조회 경로는 브라우저와 다를 수 있으므로, 한 번의 조회 실패만으로 TUN 승인 실패를 판단할 수 없습니다. 작동 중인 구성을 먼저 보존하고 DNS 설정을 하나씩 변경하세요. Fake-IP, 업스트림 리졸버, 라우팅 정책을 동시에 바꾸지 마세요.

진단 정보를 전달하기 전 마무리 점검

설정을 마치면 ‘응용 프로그램’ 폴더에서 앱을 실행할 수 있어야 합니다. 필요한 보조 서비스가 준비된 상태여야 하며, 시스템 프록시 또는 TUN 중 적어도 한 가지 연결 경로가 정상 작동하는지 확인해야 합니다. 모든 Mac에 네트워크 확장, VPN 구성, 키체인 팝업이 모두 나타나야 하는 것은 아닙니다.

  1. macOS의 전체 버전, 칩 아키텍처, 클라이언트 버전, 클라이언트에 표시된 엔진 이름과 버전을 기록하세요.
  2. ‘서비스 설치를 클릭한 뒤’, ‘TUN을 켠 뒤’처럼 오류가 발생한 동작을 기록하고 팝업의 원문을 보관하세요.
  3. 오류가 발생한 시간대의 로그를 내보내고, 구독 주소의 토큰, 노드 암호, 계정 정보 등 민감한 항목은 가리세요.
  4. 시스템 프록시와 TUN이 각각 작동하는지, 다른 VPN을 함께 실행 중인지 알려주면 불필요한 추가 확인을 줄일 수 있습니다.

이후 입문 가이드를 참고해 구독을 가져오고 규칙 모드를 설정하세요. 연결 문제가 계속되면 문제 진단을 참고해 포트, DNS, 규칙을 확인하세요. 계속 재설치하기보다 원래 오류를 보관해 두면 문제가 발생한 단계를 찾기 쉽습니다.