클라이언트, 설정 형식, 서버 프로토콜을 구분하기
iPhone에서 Clash 구독을 사용하려면 먼저 해당 설정을 읽을 수 있는 iOS 클라이언트를 골라야 합니다. Clash 설정은 보통 YAML 형식이며, 노드와 정책 그룹, 규칙, DNS 설정을 포함합니다. 클라이언트는 설정을 가져와 표시하고 네트워크 확장을 실행합니다. 둘은 서로 다른 계층이므로 앱 이름에 “Clash”가 들어간다는 이유만으로 호환된다고 판단할 수 없습니다.
Clash Meta는 현재 mihomo라는 이름의 커널 프로젝트입니다. 데스크톱에서 mihomo를 쓴다고 해서 iOS 클라이언트도 같은 커널을 사용하거나 구독의 모든 필드를 그대로 처리한다고 볼 수는 없습니다. 프로토콜 이름이 같더라도 전송 매개변수, TLS 옵션, 규칙 확장 기능이 다를 수 있습니다.
| 클라이언트 또는 설정 유형 | 가져오기 전에 확인할 사항 | 단정할 수 없는 사항 |
|---|---|---|
| Stash | Clash 형식의 설정을 지원하는지 확인하고, 현재 버전 문서에서 확장 필드와 프로토콜 지원 여부를 살펴봅니다. | mihomo 전용 필드를 모두 지원한다고 가정할 수 없습니다. |
| Shadowrocket | 지원되는 노드 구독 또는 전용 설정 형식을 사용합니다. | 전체 Clash YAML을 그대로 동등한 설정으로 사용할 수 없습니다. |
| sing-box 계열 클라이언트 | 클라이언트가 요구하는 JSON 구조와 커널 버전을 확인합니다. | Clash YAML은 파일 확장자만 바꾼다고 sing-box 설정이 되지 않습니다. |
이 글에서는 Clash 형식 설정을 지원하는 클라이언트를 중심으로 설명합니다. Stash는 확인을 위한 사례일 뿐, 기존 Clash 프로젝트의 공식 iOS 버전은 아닙니다. 다른 앱도 개발자, 지원 형식, 현재 스토어 페이지를 각각 확인하고, 사이트 브랜드나 비슷한 이름만으로 프로젝트의 공식 승인 여부를 판단하지 마세요.
App Store 다운로드 경로와 계정 국가·지역 요건
먼저 App Store 페이지를 확인하고 지역 제한 여부를 살펴보세요
앱 검색 가능 여부는 Apple 계정의 스토어 국가·지역, 개발자의 배포 범위, 기기 호환성, 현재 배포 상태에 따라 달라집니다. 기기의 언어와 시간대, ‘설정’에 표시된 기기 지역은 App Store 계정 지역과 다릅니다. 네트워크 출구를 바꿔도 스토어 소속 지역은 자동으로 바뀌지 않습니다.
- 개발자 공식 웹사이트에서 App Store 링크를 열고 앱 이름, 개발자 이름, 최소 iOS 요구 사항, 가격을 확인하세요.
- “현재 국가 또는 지역에서는 사용할 수 없음”이라는 안내가 뜨면 휴대폰 언어를 계속 바꾸기보다 ‘미디어 및 구입 항목’에 연결된 계정부터 확인하세요.
- 시스템 버전이 지원되지 않는다는 안내가 나오면 ‘설정’ → ‘일반’ → ‘정보’에서 iOS 버전을 확인하세요. 지역을 바꿔도 시스템 호환성 문제는 해결되지 않습니다.
- 구입 전에 일회성 결제인지, 구독인지, 다른 결제 방식인지 당시 상품 페이지에서 확인하세요. 앱 가격과 노드 서비스 요금은 별개의 비용입니다.
계정 지역 변경과 보안
iOS 18을 기준으로 계정 지역은 ‘설정’ → 상단의 Apple 계정 → ‘미디어 및 구입 항목’ → ‘계정 보기’ → ‘국가/지역’에서 확인할 수 있습니다. 시스템 버전에 따라 메뉴 이름이 조금 다를 수 있습니다. 실제로 변경하기 전에 Apple 안내에 따라 계정 잔액, 기존 구독, 가족 공유, 결제 수단을 처리해야 합니다.
App Store 제공 여부는 바뀔 수 있으므로 특정 지역에서 계속 제공된다고 보장할 수 없습니다. TestFlight는 테스트용 배포 방식으로, 참여 인원과 빌드 유효 기간에 제한이 있으며 영구적인 다운로드 경로로 볼 수 없습니다. 설치 경로가 필요하다면 먼저 이 사이트의 다운로드 센터에서 플랫폼 안내를 확인한 뒤 개발자가 제공하는 공식 경로를 살펴보세요.
가져오기 전 준비: 구독이 전체 설정을 반환하는지 확인
‘구독 링크’는 통일된 형식이 아닙니다. 전체 YAML을 반환하는 경우도 있고 노드 목록만 제공하거나 인코딩된 노드 URI를 반환하는 경우도 있습니다. 요청 매개변수나 클라이언트 식별자에 따라 결과가 달라지기도 합니다. 브라우저에서 링크가 열린다는 것은 응답을 받았다는 뜻일 뿐, 현재 클라이언트에서 사용할 수 있다는 뜻은 아닙니다.
- 전체 Clash 설정: 일반적으로
proxies또는proxy-providers, 그리고proxy-groups,rules등의 필드를 확인할 수 있습니다. - 노드 제공자:
proxies목록만 포함할 수 있으며, 기본 설정에서proxy-providers로 참조해야 합니다. 전체 설정으로 바로 실행할 수 있는 것은 아닙니다. - 웹 페이지 응답: 로그인 페이지나 요금제 페이지, HTML이 표시된다면 페이지 주소를 받은 것이거나 인증에 실패했거나 서버에서 로그인을 요구하는 경우가 많습니다.
- 다른 클라이언트 전용 형식: 서비스 제공업체에 해당 클라이언트용 경로를 요청하세요. 파일 확장자만 보고 내용을 판단하지 마세요.
구독 주소의 쿼리 매개변수에는 접근 자격 증명이 들어 있는 경우가 많습니다. 복사할 때 매개변수 전체를 보존하고 끝부분이 누락되지 않았는지 확인하세요. 화면을 공유할 때는 주소 전체를 가려야 합니다. 유효한 구독 주소를 신뢰할 수 없는 온라인 변환 서비스에 입력하지 마세요. 변환이 필요하다면 서비스 제공업체의 호환 경로나 직접 관리할 수 있는 변환 도구를 우선 사용하세요.
컴퓨터에서 이미 구독을 사용 중이라면 iPhone으로 가져오기 전에 현재 선택한 정책 그룹, 실제 노드 이름, 구독 제공업체가 명시한 형식 등 세 가지를 기록해 두세요. 그러면 노드 개수만 비교하는 대신 항목별로 대조할 수 있습니다.
구독 가져오기: 다운로드, 선택, 업데이트를 각각 확인
클라이언트 버전에 따라 버튼 이름은 다를 수 있지만, 가져오기 과정에는 원격 설정 추가, 다운로드, 현재 설정으로 지정하는 세 단계가 포함되어야 합니다. Stash 같은 클라이언트를 예로 들면 설정 목록에서 URL 소스를 추가합니다. 현재 버전에서 QR 코드나 파일 가져오기를 지원한다면, 가져오는 항목이 원격 링크인지 로컬 복사본인지도 확인하세요.
- 설정 관리로 이동합니다. 클라이언트의 설정 목록을 열고 새 설정 추가 또는 URL 다운로드 메뉴를 선택하세요. 구독 주소를 HTTP 프록시 주소, DNS 주소, 노드 서버 주소 입력란에 넣지 마세요.
- 구독 주소를 그대로 붙여 넣습니다. 공백, 줄바꿈, 중국어 문장 부호, 메신저에서 덧붙인 안내 문구가 들어 있지 않은지 확인하세요. ‘일상 규칙’처럼 알아보기 쉬운 이름을 지정할 수 있습니다.
- 다운로드를 실행합니다. 클라이언트에서 파싱이 완료될 때까지 기다리세요. 오류가 나면 상태 코드와 필드 위치를 기록하고, 단순히 ‘가져오기 실패’라고만 적지 마세요.
- 현재 설정으로 선택합니다. 다운로드가 완료되면 설정 목록으로 돌아가 해당 설정이 선택되었는지 확인하세요. 설정이 여러 개라면 새로 추가되었다고 해서 바로 전환된 것은 아닐 수 있습니다.
- 정책 그룹을 확인합니다. 프록시 또는 정책 페이지를 열어 기본 정책 그룹에 선택 가능한 노드가 있는지, 규칙에서 참조하는 그룹 이름이 존재하는지 확인하세요.
- 업데이트 경로를 확인합니다. 원격 URL이 유지되었는지, 자동 업데이트가 켜져 있는지 또는 수동 업데이트 메뉴가 있는지 살펴보세요. 로컬 파일은 보통 원래 구독에서 자동으로 변경 사항을 가져오지 않습니다.
계속 다시 시도하기보다 오류 유형에 맞게 조치하기
401또는403: 먼저 자격 증명, 링크 유효성, 서버 접근 제한을 확인하세요. DNS부터 바꾸지는 마세요.404: 전체 경로를 확인하고 기존 구독이 교체되었는지 살펴보세요.- YAML 파싱 오류: 들여쓰기와 중복 키, 오류가 발생한 줄을 확인하세요. 서버가 YAML 대신 HTML을 반환했을 수도 있습니다.
- 다운로드 시간 초과: 기본 네트워크 연결과 구독 도메인에 접근할 수 있는지 확인하세요. 클라이언트가 기존 프록시를 통한 업데이트를 지원한다면, 이미 연결이 가능한 상태에서 해당 방법을 시도해 볼 수 있습니다.
VPN 구성 승인: iOS 네트워크 확장이 트래픽을 처리하는 방식
처음 연결할 때 iOS에서 VPN 구성을 추가할지 묻는 경우가 많습니다. 앱의 출처를 확인한 다음 시스템 안내에 따라 허용하고, 기기 암호나 시스템 인증으로 승인을 완료하세요. 여기서 VPN은 시스템 네트워크 확장 기능을 가리킵니다. 구독의 모든 노드가 전통적인 VPN 프로토콜을 사용한다는 뜻도, 모든 트래픽이 반드시 원격 노드를 거친다는 뜻도 아닙니다.
iOS 18을 기준으로 ‘설정’ → ‘일반’ → ‘VPN 및 기기 관리’ → ‘VPN’에서 구성을 확인하고 연결 상태를 볼 수 있습니다. 목록에 회사 VPN, 다른 프록시 앱, 보안 소프트웨어가 있다면 테스트 전에 다른 개인 VPN 연결을 중지하세요. 기기 관리 정책에 따른 제한은 기기 관리자에게 확인해야 합니다.
데스크톱 시스템 프록시 및 TUN과의 차이
데스크톱 시스템 프록시는 보통 앱이 HTTP 또는 SOCKS 프록시 설정을 따르도록 해야 합니다. 반면 iOS 클라이언트는 Network Extension의 Packet Tunnel을 통해 시스템 네트워크에 연결하는 경우가 많습니다. 데스크톱 TUN과 마찬가지로 네트워크 계층을 처리하지만, 권한, 라우팅 기능, 제외할 트래픽, 실행 수명 주기는 각 운영체제의 제약을 받습니다. Windows 서비스 모드 설정 절차를 그대로 따라 해서는 안 됩니다.
- Wi-Fi HTTP 프록시를 먼저 바꿀 필요는 없습니다. 클라이언트의 VPN 네트워크 확장을 사용하는 경우 Wi-Fi 상세 설정의 수동 프록시는 보통 필요하지 않습니다.
- 포트는 VPN 승인과 다릅니다. 데스크톱 설정의
mixed-port: 7890은 로컬 수신 포트의 예시이지, iPhone의 시스템 승인 매개변수가 아닙니다. - 로컬 네트워크 노출을 필요한 범위로 제한하세요. 다른 기기에서 연결해야 하는 경우가 아니라면 휴대폰 자체의 인터넷 연결을 위해 LAN 접근 허용을 켜지 마세요.
- 아이콘만으로는 충분히 확인할 수 없습니다. 시스템에 VPN 연결됨으로 표시되어도 터널 상태만 확인된 것입니다. 규칙과 노드, 대상 요청도 따로 점검해야 합니다.
규칙 모드 전환: 정책 그룹과 최종 연결 경로 확인
처음 사용할 때는 규칙 모드를 권장합니다. 규칙 모드는 순서에 따라 대상을 판별하고 정책을 적용합니다. 전역 모드는 일반적으로 해당 설정이 제어하는 트래픽을 전역 정책으로 전달하고, 직접 연결 모드는 프록시를 거치지 않고 연결할 때 사용합니다. 실제 적용 범위는 클라이언트 라우팅 설정과 시스템 제약에도 영향을 받습니다. ‘전역’이 기기의 모든 시스템 통신을 반드시 제어한다는 뜻은 아닙니다.
아래는 규칙 순서를 확인하기 위한 일부 예시이며, 단독으로 가져와 사용할 수 있는 전체 설정이 아닙니다. ‘프록시 선택’은 기존 설정의 정책 그룹 이름과 일치해야 합니다. 실제 그룹 이름이 다르면 해당 이름으로 바꾸세요.
mode: rule
rules:
- DOMAIN-SUFFIX,apple.com,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,프록시 선택
이 설정은 apple.com과 그 하위 도메인에 직접 연결하고, 대상 주소가 지정된 로컬 네트워크 대역에 속하면 직접 연결하며, 그 밖의 요청은 ‘프록시 선택’으로 전달합니다. 규칙 구조를 보여 주기 위한 예시일 뿐, 모든 사용자에게 권장하는 분할 라우팅 방식은 아닙니다. 특히 도메인 접미사 규칙 하나로 특정 회사의 모든 서비스 도메인을 처리할 수는 없습니다.
요청 하나로 세 가지 항목 확인하기
- 정책 그룹 선택: 클라이언트의 프록시 페이지에서 규칙이 참조하는 그룹을 찾아 노드를 하나 선택하세요. 자동 선택 그룹이라면 현재 실제로 선택된 구성원도 확인해야 합니다.
- 지연 시간 테스트: 클라이언트에서 제공하는 테스트를 실행하세요. 결과가
120 ms라면 해당 테스트 대상과 방법에서 측정한 시간이라는 뜻입니다. 읽는 법을 보여 주는 예시이며 이 글에서 직접 측정한 값이 아닙니다. 대역폭이나 실제 서비스 이용 가능성을 확인하는 테스트를 대신하지도 않습니다. - 연결 기록: 프록시를 사용할 것으로 예상되는 웹사이트를 연 다음 클라이언트의 연결 또는 요청 기록에서 대상 도메인, 적용된 규칙, 정책 경로, 실제 노드를 확인하세요.
외부 IP가 여전히 현지 통신사 주소라면 먼저 이번 조회에 직접 연결 규칙이 적용되었는지 확인하세요. IP 확인 사이트 자체가 직접 연결될 수도 있습니다. IP 주소 하나만 보고 휴대폰 전체에서 프록시가 작동하지 않는다고 판단하지 말고, 같은 시각의 연결 기록과 함께 결과를 확인하세요.
iPhone 자주 발생하는 문제: DNS, 업데이트 실패, 네트워크 전환
노드 지연 시간은 측정되지만 웹페이지가 열리지 않음
먼저 실제 서비스 요청과 지연 시간 테스트가 같은 대상을 확인하는지 비교한 뒤 DNS와 규칙을 살펴보세요. 노드 핸드셰이크가 성공해도 대상 웹사이트에 접속할 수 있다는 뜻은 아닙니다. 로그에 도메인 이름 확인 실패가 표시되면 클라이언트가 설정의 DNS 필드를 받아들이는지, 클라이언트 자체 DNS 설정이 해당 값을 덮어쓰는지 확인하세요. Fake-IP를 사용하려면 클라이언트도 해당 모드를 지원해야 합니다. enhanced-mode: fake-ip만 추가하면 작동한다고 가정할 수 없습니다.
데스크톱에서는 설정이 정상인데 iOS에서 지원하지 않는 필드라고 표시됨
오류가 발생한 필드 이름을 보관하고 현재 클라이언트 버전의 설정 문서를 확인하세요. mihomo 전용 확장, 규칙 제공자 동작, 전송 옵션은 서로 다를 수 있습니다. 오류를 없애려고 규칙이나 DNS 설정 전체를 삭제하지 마세요. 먼저 구독 제공업체의 iOS 호환 출력 기능을 사용한 뒤 중요한 정책이 유지되는지 확인하세요.
Wi-Fi에서는 되지만 셀룰러 네트워크에서 실패
먼저 프록시를 끈 상태에서 셀룰러 데이터가 정상적으로 연결되는지 확인한 다음, ‘설정’ → ‘셀룰러’에서 클라이언트에 필요한 데이터 접근 권한이 있는지 확인하세요. Wi-Fi와 셀룰러 네트워크를 전환한 뒤 터널이 다시 연결되는지, 노드 핸드셰이크가 재시도되는지 살펴보세요. 네트워크 경로에 따라 UDP 처리 방식이 다를 수 있습니다. Hysteria2처럼 QUIC 기반 프로토콜을 사용할 때는 UDP 연결 가능 여부를 특히 확인하고, 계정 지역 문제로 바로 단정하지 마세요.
구독을 업데이트한 뒤 기존 선택이 사라짐
구독 업데이트로 노드 이름이나 정책 그룹 이름, 그룹 구조가 바뀌었을 수 있습니다. 먼저 업데이트 결과를 확인한 뒤 구성원을 다시 선택하세요. 앱에서 정책 선택을 저장하더라도 일치 조건이 유효한 경우에만 선택을 복원할 수 있습니다. 서버에서 삭제된 노드는 로컬 설정을 보존해도 사용할 수 없습니다.
설정을 중지하거나 정리해야 할 때
먼저 클라이언트에서 연결을 중지하고 필요 시 연결 또는 자동 연결 옵션이 켜져 있는지 확인해 시스템이 바로 다시 연결되지 않도록 하세요. 구성을 제거하려면 시스템의 VPN 목록에서 해당 구성을 삭제합니다. 문제를 제보할 때는 클라이언트 버전, iOS 버전, 네트워크 유형, 오류 발생 시각, 관련 로그를 기록하고 구독 자격 증명, 노드 비밀번호, 개인 도메인은 가리세요. 추가 문제 해결 방법은 자주 묻는 질문에서 확인할 수 있습니다.