먼저 클라이언트와 Clash 구독 형식 확인하기

iPhone에서 Clash 구독을 사용하려면 Windows 설치 파일을 휴대폰으로 옮기는 것이 아니라, 해당 설정 형식을 지원하는 iOS 클라이언트를 찾아야 합니다. Clash는 프록시 코어와 설정 생태계에서 사용하는 이름으로, App Store에 공식 iPhone 앱이 하나로 제공된다는 뜻은 아닙니다. 이름이 비슷한 앱이라고 해서 설정 호환성이 보장되는 것도 아닙니다.

이 글에서는 Clash 형식의 YAML 설정을 지원하는 Stash를 예로 들어 설명합니다. Stash는 독립형 클라이언트이며 데스크톱 Clash의 iOS 버전이 아닙니다. 따라서 mihomo 코어를 사용한다고 단정할 수도 없습니다. 앱 제공 지역, 가격, 최소 시스템 요구 사항과 기능은 설치 시점의 App Store 페이지와 개발자 문서를 확인하세요.

받은 항목 확인 방법 가져오기 전에 확인할 사항
Clash YAML 설정 일반적인 필드로는 proxies, proxy-groups, rules가 있습니다. 클라이언트가 해당 프로토콜, 규칙 유형 및 확장 필드를 지원하는지 확인합니다.
노드 링크 또는 노드 목록 개별 링크는 ss://, trojan:// 등으로 시작할 수 있습니다. 전체 설정이 아니라 노드만 가져와야 하는지 확인합니다.
다른 클라이언트용 설정 설정 구조가 Clash YAML과 다릅니다. 서비스 제공자에게 현재 클라이언트에 맞는 버전을 요청합니다.

두 클라이언트가 모두 YAML을 지원하더라도 모든 필드를 공통으로 사용할 수 있는 것은 아닙니다. 특히 ‘mihomo 전용’으로 표시된 새 프로토콜이나 확장 문법은 항목별로 확인해야 합니다. Shadowrocket 같은 앱도 자체 구독 및 설정 방식을 사용하므로, 일부 노드 프로토콜을 지원한다는 이유만으로 전체 Clash 설정이 호환된다고 볼 수는 없습니다.

App Store에서 호환 클라이언트 설치하기

App Store 앱 정보를 확인한 뒤 설치하기

  1. iPhone에서 App Store를 열고 ‘검색’ 탭에서 클라이언트 이름을 입력합니다. 예를 들어 Stash를 검색하세요.
  2. 앱 상세 페이지에서 개발자 정보, 앱 설명, 버전 기록 및 ‘호환성’ 요구 사항을 확인합니다. Clash 설정 또는 YAML 가져오기를 지원한다고 명확히 안내되어 있는지 살펴보세요.
  3. 앱 상세 페이지에 표시된 다운로드 또는 구매 절차에 따라 설치합니다. 클라이언트 앱 비용과 프록시 서비스 비용은 별개이며, 앱을 설치해도 노드나 구독이 자동으로 제공되지는 않습니다.
  4. 처음 앱을 열면 설정 메뉴와 도움말을 확인한 다음 본인의 구독을 가져오세요. 출처가 불분명한 예시 노드는 바로 활성화하지 마세요.

검색 결과에 앱이 나오지 않는다면 먼저 현재 Apple 계정의 App Store 국가 또는 지역에서 해당 앱을 제공하는지 확인하세요. iPhone의 ‘언어 및 지역’ 설정과 App Store 계정 국가는 서로 다릅니다. 계정의 구입 항목 설정은 ‘설정’ → 상단의 Apple 계정 → ‘미디어 및 구입 항목’ → ‘계정 보기’에서 확인할 수 있습니다. 메뉴 이름과 위치는 iOS 버전에 따라 달라질 수 있습니다.

이 글에서는 특정 앱 버전이나 가격을 고정해 안내하지 않습니다. App Store 정보는 계속 바뀔 수 있습니다. 문제를 진단할 때는 클라이언트의 ‘정보’ 화면이나 App Store 버전 기록에서 실제 버전을 확인하고 iOS 버전도 함께 기록하세요. 단순히 ‘최신 버전’이라고 설명하는 것보다 호환성 문제를 찾기 쉽습니다.

가져오기 전 준비: 구독 링크, 네트워크 및 백업

서비스 제공자의 계정 페이지에서 Clash 또는 현재 iOS 클라이언트용 구독 주소를 확인하세요. 보통 HTTPS 링크이며 계정 토큰이 포함될 수 있습니다. 전체 링크는 계정 접근 정보와 같으므로 단체 채팅방이나 공개 스크린샷, 공개 문의 게시판에 올리지 마세요.

  • 복사한 내용 확인: 쿼리 매개변수를 모두 포함하고, 페이지 제목이나 줄바꿈, 문장 끝의 문장 부호가 함께 복사되지 않도록 하세요.
  • 유효 기간 확인: 계정에서 서비스를 계속 이용할 수 있는지, 구독 링크가 재설정되지 않았는지, 기기 수 제한에 걸리지 않았는지 확인하세요.
  • 네트워크 확인: 먼저 Safari에서 일반 웹페이지를 열어 보고, 호텔이나 학교 Wi-Fi의 웹 로그인 인증을 완료하세요.
  • 기존 설정 보관: 이미 정상적으로 작동하는 설정이 있다면 덮어쓰기 전에 내보내 백업하거나 현재 설정 이름을 기록해 두세요.

브라우저에서 서비스 제공자의 홈페이지가 열린다고 해서 구독 API에도 접속할 수 있는 것은 아닙니다. 구독에는 다른 도메인이 사용될 수 있습니다. 반대로 Safari에 긴 설정 텍스트가 표시되거나 파일 다운로드를 제안하는 것이 API의 정상 응답일 수도 있습니다. 로그인 페이지, CAPTCHA 페이지 또는 HTML 오류 페이지가 반환된다면 YAML 설정으로 가져오면 안 됩니다.

구독 링크로 설정을 가져와 선택하기

Stash에서 ‘설정’ 페이지로 이동해 추가 메뉴를 열고 URL에서 설정을 다운로드하는 항목을 선택합니다. 버전에 따라 ‘다운로드’, ‘URL에서 다운로드’ 등으로 표시될 수 있습니다. 여기서 할 일은 원격 설정을 만드는 것이지, 노드 목록에서 서버를 직접 추가하는 것이 아닙니다.

  1. 구독 URL 전체를 붙여넣습니다. 이름을 입력하라는 메시지가 표시되면 ‘일상 구독’처럼 알아보기 쉬운 이름을 지정하세요.
  2. 다운로드를 시작하고 클라이언트가 설정을 가져와 파싱할 때까지 기다립니다. 처음 문제를 확인할 때는 자동 업데이트만 설정해 두고 넘어가지 말고 직접 한 번 다운로드하세요.
  3. 설정 목록에서 방금 가져온 설정을 선택해 현재 사용 중인지 확인합니다. 목록에 파일이 있다는 것만으로 해당 설정이 활성화된 것은 아닙니다.
  4. 프록시 그룹 페이지에서 선택할 수 있는 노드가 표시되는지 확인합니다. 수동 선택 방식인 select 유형 그룹에서는 필요에 따라 노드나 하위 정책 그룹을 선택하세요.
  5. 작동 모드를 확인합니다. 평소에는 rules에 따라 직접 연결, 프록시 또는 차단이 결정되는 규칙 모드부터 사용하세요. 전체 모드를 기본적인 해결책으로 삼지는 마세요.

구독 업데이트와 노드 속도 측정은 별도로 확인하기

구독 업데이트는 설정이나 노드 목록을 다시 가져오는 작업이고, 속도 측정은 노드 연결을 테스트하는 작업입니다. 두 작업은 서로 다릅니다. 업데이트가 성공했다는 것은 구독을 가져왔다는 뜻일 뿐, 모든 노드가 작동한다는 의미는 아닙니다. 속도 측정 결과에 숫자가 표시되어도 테스트 대상에 대한 결과일 뿐이므로 모든 웹사이트에 접속할 수 있다는 보장은 없습니다.

일부 설정은 proxy-providers를 통해 원격 노드 파일을 참조합니다. 이 경우 기본 설정 다운로드에 성공해도 노드 제공자 주소에 연결하지 못하면 그룹에 노드가 표시되지 않을 수 있습니다. 기본 설정을 반복해서 삭제하는 대신 제공자의 업데이트 결과도 확인하세요.

YAML 파일로 설정 가져오기

이미 전체 설정 파일을 받았거나 구독에 직접 접속하기 어려운 경우 파일 가져오기를 사용할 수 있습니다. 먼저 .yaml 또는 .yml 파일을 iPhone의 ‘파일’ 앱에 저장하세요. ‘나의 iPhone’이나 iCloud Drive에 저장할 수 있습니다. 파일 옆에 구름 아이콘이 표시된다면 다운로드가 끝날 때까지 기다리세요.

  1. 클라이언트의 설정 페이지를 열고 파일에서 가져오는 메뉴를 찾습니다.
  2. 시스템 파일 선택기에서 YAML 파일을 선택한 다음 파싱이 끝날 때까지 기다립니다.
  3. 가져온 설정을 선택한 뒤 프록시 그룹, 노드 수 및 규칙 모드를 확인합니다.
  4. 문법 오류가 표시되면 원본 파일에서 들여쓰기, 콜론 및 따옴표를 확인하세요. 파일 확장자만 바꿔서 다시 시도하지 마세요.

아래 내용은 설정 구조를 확인하기 위한 일부 예시이며, 연결에 사용할 수 있는 완성된 설정이나 실제 노드를 포함하지 않습니다. 규칙에서 프록시 그룹 이름을 참조하고, 해당 그룹은 설정의 다른 부분에 정의해야 한다는 점을 보여줍니다.

mode: rule
log-level: info

rules:
  - DOMAIN-SUFFIX,example.com,웹 프록시
  - MATCH,DIRECT

이 예시의 ‘웹 프록시’는 proxy-groups에 지정한 그룹 이름과 정확히 일치해야 합니다. 그렇지 않으면 참조 오류가 발생합니다. YAML 들여쓰기에는 탭 대신 공백을 사용하고, # 같은 특수 문자가 들어간 값은 따옴표가 필요한지 확인하세요. 데스크톱 설정 전체를 그대로 복사해도 리슨 포트, 라우팅 및 TUN 설정이 iOS에서 동일하게 작동하지는 않습니다.

첫 실행: VPN 설정 추가 허용

설정을 선택한 다음 클라이언트 홈 화면으로 돌아가 연결 스위치를 켭니다. 시스템 터널을 처음 만들면 iOS에서 보통 VPN 설정 추가 권한을 요청합니다. 팝업에 표시된 앱 이름을 확인해 방금 설치한 클라이언트가 맞는지 살펴본 뒤 ‘허용’을 누르고 시스템 안내에 따라 기기 인증을 완료하세요.

이 권한을 허용하면 앱이 iOS의 Network Extension을 통해 해당 네트워크 트래픽을 처리할 수 있습니다. 구독이 검증되었다는 뜻도, 모든 연결이 원격 노드를 통과한다는 뜻도 아닙니다. DIRECT 규칙에 해당하는 연결은 계속 직접 연결될 수 있습니다. iOS 상태 표시줄의 VPN 아이콘이나 제어 센터 상태는 주로 터널이 만들어졌는지 확인하는 데 사용합니다.

  • 실수로 허용 안 함을 눌렀다면: 클라이언트로 돌아가 연결을 다시 시작하고 안내에 따라 권한을 다시 요청하세요. 계속 실패하면 시스템의 VPN 설정을 확인하세요.
  • 설정 상태 확인: ‘설정’ → ‘일반’ → ‘VPN 및 기기 관리’ → ‘VPN’으로 이동해 현재 설정과 연결 상태를 확인하세요. 일부 iOS 버전에서는 빠른 VPN 메뉴가 표시됩니다.
  • 다른 VPN을 사용 중인 경우: 연결이 다른 앱으로 전환되지 않도록 개인용 VPN 앱과 자동 연결 설정을 일시 중지하세요. 회사나 학교에서 관리하는 기기라면 관리자에게 문의하세요.

구독을 가져올 때 서비스 제공자가 제공한 루트 인증서를 완전히 신뢰하도록 설정할 필요는 없습니다. 일반 프록시 연결에도 MDM 관리 프로파일을 추가로 설치할 필요가 없습니다. 절차 중 이런 권한을 갑자기 요구한다면 먼저 중단하고 용도를 확인하세요. HTTPS 복호화는 별도의 기능이며 이 글에서 다루는 일반적인 설정 절차에 포함되지 않습니다.

연결 후 확인: VPN 아이콘뿐 아니라 규칙 적용도 확인하기

권한 설정을 마쳤다면 ‘터널 상태 → 정책 선택 → 실제 요청’ 순서로 확인하세요. 먼저 클라이언트에 연결됨으로 표시되는지 확인하고, Safari에서 새 페이지를 열어 정상적으로 접속되는 것으로 확인된 사이트와 프록시를 통해 접속할 것으로 예상되는 사이트를 각각 방문합니다. 다음은 확인 절차이며 일정한 지연 시간이 나오는 성능 테스트는 아닙니다.

  1. 클라이언트의 연결 기록이나 요청 로그에서 방금 방문한 도메인을 찾습니다.
  2. 적용된 규칙과 정책 그룹이 예상과 일치하는지 확인합니다. 규칙은 일반적으로 순서대로 검사되며 앞에서 일치하는 규칙이 발견되면 그 뒤의 규칙은 확인하지 않습니다.
  3. 정책 그룹에서 DIRECT를 선택했다면 VPN이 연결되어 있어도 해당 요청이 원격 프록시를 거쳤다고 볼 수 없습니다.
  4. 셀룰러 데이터로 전환한 뒤 다시 확인해 현재 Wi-Fi의 제한과 설정 문제를 구분하세요. 모바일 데이터 사용량도 확인해야 합니다.

데스크톱 튜토리얼에서 자주 보이는 mixed-port: 7890은 로컬 HTTP/SOCKS5 혼합 리슨 포트이며, iPhone에서 구독을 가져올 때 입력해야 하는 값이 아닙니다. iPhone에서 클라이언트 터널로 연결할 때도 현재 Wi-Fi의 ‘프록시 구성’에 127.0.0.1:7890을 입력할 필요가 없습니다. 이는 수동 프록시를 사용하는 별도의 방식이며, 두 방식을 혼용하면 문제를 진단하기 더 어려워집니다.

마찬가지로 데스크톱 튜토리얼을 그대로 따라 하며 똑같은 ‘TUN 모드’ 스위치를 찾지 마세요. iOS에서는 클라이언트가 시스템 네트워크 확장 기능과 연동해 트래픽을 처리합니다. DNS 및 라우팅 기능은 클라이언트와 시스템의 제약을 받으며, 데스크톱 mihomo의 tun 필드를 모두 그대로 실행하는 것과는 다릅니다.

가져오기 실패 및 연결 문제 해결

증상 먼저 확인할 항목 다음 단계
다운로드 시 401 또는 403 오류 토큰, 권한, 구독 유효 기간 또는 API 접근 제한 계정 페이지에서 주소를 다시 복사합니다. 계속 실패하면 서비스 제공자에게 확인하세요.
YAML 파싱 실패 메시지 응답이 웹페이지인지, 파일 들여쓰기가 올바른지 확인 구독 형식을 확인하고 오류가 발생한 줄과 바로 윗줄을 살펴보세요.
지원하지 않는 프록시 유형 메시지 프로토콜이나 확장 필드가 클라이언트 지원 범위를 벗어났는지 확인 호환되는 설정을 요청하거나 해당 프로토콜을 지원한다고 명시된 클라이언트로 바꾸세요.
설정은 가져왔지만 노드 목록이 비어 있음 새 설정을 선택했는지, 원격 제공자 업데이트가 성공했는지 확인 설정과 제공자 각각의 다운로드 오류를 확인하세요.
VPN 연결 후 웹페이지 시간 초과 선택한 노드, 적용된 규칙, DNS 및 현재 네트워크 노드 하나만 바꿔 다시 시도한 뒤 요청 로그를 확인하세요.

한 번에 변수 하나만 변경하기

문제를 진단할 때는 먼저 원래 설정을 보관하고 오류가 발생한 시간, 클라이언트 버전, iOS 버전 및 현재 네트워크를 기록하세요. 먼저 노드를 바꿔 보고 다른 네트워크에서도 시도할 수 있습니다. 모드 전환, DNS 재설정, 규칙 수정 및 앱 재설치를 한꺼번에 하면 어떤 조치가 효과가 있었는지 판단하기 어렵습니다.

DNS 오류가 표시되면 구독 도메인 이름 확인 실패, 노드 서버 도메인 이름 확인 실패, 대상 웹사이트 이름 확인 실패를 구분하세요. 각각 문제가 발생한 단계가 다르므로 공용 DNS 주소 하나로 모두 해결할 수는 없습니다. 회사, 학교 또는 관리형 네트워크에서는 외부 DNS나 VPN 연결을 제한할 수도 있으니 해당 네트워크의 이용 규정을 따르세요.

도움이 필요하다면 오류 메시지 원문과 민감 정보를 가린 스크린샷을 전달하면 됩니다. 구독 쿼리 매개변수, 노드 비밀번호, 계정 이메일 주소 및 전체 서버 접속 정보는 가리세요. ‘설정 파싱 성공, 현재 설정 선택, VPN 권한 승인 완료, 규칙 및 노드 선택 정상’ 네 가지를 확인한 뒤 특정 웹사이트 문제를 살펴보는 편이 처음부터 앱을 다시 설치하는 것보다 효과적입니다.