Clash for Android 사용법: 구독 추가부터 노드 변경까지

구독 URL 등록부터 프로필 갱신, 노드 선택과 프록시 모드 변경까지 Clash for Android의 핵심 기능을 처음 사용하는 사람도 따라 할 수 있도록 쉽게 설명합니다.

시작 전 확인할 항목: 앱, 구독 URL, 권한

Clash for Android는 안드로이드 기기에서 mihomo 계열 커널을 사용해 구독 프로필을 읽고, 규칙에 따라 애플리케이션의 연결을 직접 연결하거나 프록시 노드로 전달하는 클라이언트입니다. 앱을 설치하는 것만으로는 노드가 자동으로 생기지 않습니다. 먼저 사용할 클라이언트와 구독 URL을 준비한 다음, 프로필을 가져오고, 선택한 프로필을 활성화한 뒤, 안드로이드 VPN 권한을 허용해야 실제 연결이 시작됩니다.

화면에 표시되는 메뉴 이름은 Clash for Android의 배포판과 버전에 따라 조금 다를 수 있습니다. 예를 들어 프로필 메뉴가 Profiles, 프로필, 구성으로 표시되거나, 노드 선택 화면이 Proxies 또는 프록시로 표시될 수 있습니다. 이름이 다르더라도 프로필 추가, 프로필 적용, 프록시 그룹 선택이라는 세 단계는 동일합니다.

  • 안드로이드 버전: 일반적으로 Android 8.0 이상을 권장합니다. 제조사별 배터리 관리가 강한 기기에서는 최신 버전에서도 백그라운드 연결이 종료될 수 있습니다.
  • 구독 URL: 서비스 제공자가 발급한 전체 주소를 준비합니다. 계정 토큰이 포함될 수 있으므로 다른 사람에게 공유하거나 공개 게시물에 붙여넣지 마세요.
  • 네트워크: 첫 프로필 다운로드는 현재 네트워크에서 구독 서버에 접속할 수 있어야 합니다. 다운로드가 막히면 먼저 다른 네트워크에서 시도하거나, 이미 사용할 수 있는 임시 프로필로 연결한 뒤 다시 갱신합니다.
  • VPN 권한: 연결을 처음 켤 때 안드로이드 시스템의 VPN 연결 요청이 나타납니다. 이 권한을 거부하면 앱 화면에서는 실행 중처럼 보여도 실제 터널은 만들어지지 않습니다.

구독 URL은 비밀번호처럼 관리하세요

구독 주소를 알고 있는 사람은 노드 목록을 내려받거나 사용량을 소진할 수 있습니다. 주소가 유출되었다고 판단되면 제공자 관리 화면에서 URL을 폐기하거나 재발급하고, 기존 프로필을 삭제한 뒤 새 주소를 등록하세요.

구독 추가: URL에서 프로필 가져오기

Clash for Android의 구독은 보통 프로필 파일을 제공하는 URL 방식으로 추가합니다. 프로필에는 프록시 노드, 프록시 그룹, DNS, 규칙이 함께 들어 있을 수 있습니다. 따라서 노드 하나를 별도로 추가하는 것보다 구독 프로필을 가져오는 방식이 관리와 갱신에 적합합니다.

  1. 클라이언트 화면에서 Profiles 또는 프로필 메뉴를 엽니다. 기존에 등록된 프로필이 있다면 현재 활성화된 항목을 먼저 확인합니다.
  2. 화면의 입력란에 구독 URL을 붙여넣습니다. 주소 앞뒤에 공백이나 줄바꿈이 들어가지 않았는지 확인하고, 구성 이름은 main-subscription처럼 알아보기 쉬운 이름으로 지정합니다.
  3. Import, 가져오기, 또는 다운로드 아이콘을 눌러 서버에서 프로필을 내려받습니다. 프로필 크기와 네트워크 상태에 따라 몇 초에서 수십 초가 걸릴 수 있습니다.
  4. 다운로드가 완료되면 목록에서 방금 가져온 프로필을 눌러 활성화합니다. 단순히 목록에 표시되는 것과 실제로 현재 설정으로 적용되는 것은 다르므로, 활성 표시나 체크 표시를 확인해야 합니다.
  5. Proxies 메뉴로 이동해 노드와 정책 그룹이 표시되는지 확인합니다. 노드가 하나도 보이지 않으면 프로필 다운로드가 완료되지 않았거나, 가져온 파일이 현재 클라이언트의 커널과 호환되지 않을 가능성이 있습니다.

URL을 입력했는데 오류가 발생하면 주소가 만료되지 않았는지, 복사 과정에서 물음표 뒤의 토큰이 잘리지 않았는지, 현재 날짜와 시간이 정확한지 확인하세요. HTTPS 주소를 사용하는 프로필은 기기의 시간이 크게 어긋나면 인증서 검증이 실패할 수 있습니다. 또한 일부 제공자는 한 번에 허용하는 기기 수나 IP 수를 제한하므로, 다른 기기에서 같은 구독을 동시에 사용 중인지도 확인해야 합니다.

프로필을 가져온 뒤 반드시 활성화하세요

프로필 목록에 이름이 보이는 것만으로는 설정이 적용되지 않습니다. 현재 활성 프로필을 바꾸면 규칙과 노드 목록이 함께 교체될 수 있으므로, 전환 후에는 Proxies 화면에서 예상한 그룹이 나타나는지 확인하세요.

프로필 갱신과 만료 문제 점검

구독 프로필은 서버에 저장된 노드 목록을 일정 시점에 내려받은 사본입니다. 제공자가 노드를 추가하거나 삭제해도 앱의 목록은 자동으로 즉시 바뀌지 않으므로, 주기적으로 갱신해야 합니다. Profiles 화면에서 해당 프로필의 새로고침 아이콘, 길게 누르기 메뉴, 또는 Update 버튼을 사용하면 최신 구성을 다시 다운로드할 수 있습니다.

  • 갱신 전 연결 상태: 프로필 URL 자체에 접속할 수 있어야 합니다. 구독 서버가 현재 네트워크에서 차단되어 있다면 Wi-Fi와 모바일 데이터를 번갈아 시험합니다.
  • 갱신 후 활성 상태: 새 파일을 받았더라도 이전 프로필이 계속 활성 상태일 수 있습니다. 목록에서 새로 갱신된 시간과 활성 표시를 함께 확인합니다.
  • 노드 수가 갑자기 감소한 경우: 제공자 측의 만료, 사용량 제한, 지역별 노드 필터, 또는 서버 장애일 수 있습니다. 앱을 반복해서 삭제하고 설치하기보다 구독 관리 페이지의 상태를 먼저 확인합니다.
  • 자동 갱신 주기: 앱에 자동 업데이트 항목이 있다면 너무 짧은 주기로 설정하지 마세요. 하루 한 번 정도면 대부분의 사용 환경에서 충분하며, 제공자가 허용한 갱신 횟수도 확인해야 합니다.

갱신이 계속 실패하면 기존 프로필을 바로 삭제하지 말고, 먼저 URL을 메모장에 다시 붙여넣어 형식을 확인합니다. 기존 프로필을 삭제하면 마지막으로 정상 작동하던 구성을 잃을 수 있습니다. 새 프로필을 별도 이름으로 추가해 비교한 다음, 새 구성이 정상일 때 이전 항목을 정리하는 편이 안전합니다.

노드 변경: 프록시 그룹에서 출구 선택하기

노드 변경은 프로필 전체를 교체하는 작업이 아니라, 현재 프로필 안에 있는 정책 그룹의 출구를 바꾸는 작업입니다. Proxies 화면에는 일반적으로 Proxy, 自动选择, Fallback, 지역별 그룹과 같은 항목이 표시됩니다. 실제 연결에 사용되는 그룹을 선택한 뒤 그 안에서 특정 노드를 지정해야 합니다.

  1. 하단 또는 사이드 메뉴에서 Proxies를 엽니다.
  2. 현재 트래픽이 연결되는 최상위 정책 그룹을 찾습니다. 보통 Proxy 또는 PROXY라는 이름을 사용하지만, 제공자가 다른 이름을 지정할 수도 있습니다.
  3. 그룹을 눌러 노드 목록을 펼칩니다. 국가나 지역, 통신 방식, 번호로 구분된 항목 중 하나를 선택합니다.
  4. 선택한 노드에 체크 표시가 생겼는지 확인하고, 브라우저나 테스트 앱에서 새 연결을 생성합니다. 이미 열려 있는 연결은 기존 노드를 계속 사용할 수 있으므로 페이지를 새로고침하거나 앱을 다시 시작해야 결과가 반영될 수 있습니다.
  5. 노드가 느리거나 연결되지 않으면 같은 그룹의 다른 노드로 바꿉니다. 한 노드의 실패를 구독 전체의 문제로 판단하지 않도록 최소 두세 개의 노드를 비교하세요.

자동 선택 그룹은 지연 시간이 낮은 노드를 골라주는 방식이지만, 측정 지연이 낮다고 실제 서비스 품질이 항상 좋은 것은 아닙니다. 영상 재생, 로그인, 특정 지역 서비스처럼 출구 지역이 중요한 경우에는 자동 선택보다 요구 지역의 고정 노드를 직접 지정하는 편이 안정적입니다. 반대로 이동 중이거나 노드 장애가 잦다면 자동 선택 또는 장애 전환 그룹이 편리합니다.

선택 방식장점주의할 점
고정 노드출구 지역과 동작 결과를 예측하기 쉬움해당 노드 장애 시 직접 변경해야 함
자동 선택측정 결과에 따라 빠른 노드를 선택측정값과 실제 서비스 품질이 다를 수 있음
Fallback 그룹주 노드 장애 시 대체 노드로 전환전환 기준과 테스트 URL에 따라 결과가 달라짐
로드 밸런싱여러 노드에 연결을 분산로그인 세션이나 지역 고정 서비스에서 불안정할 수 있음

프록시 모드와 안드로이드 권한 설정

Clash for Android에서 자주 사용하는 모드는 Rule, Global, Direct입니다. Rule 모드는 프로필의 규칙에 따라 국내 연결은 DIRECT, 나머지는 지정한 프록시 그룹으로 보냅니다. Global 모드는 대부분의 연결을 선택한 프록시로 보내므로 테스트에는 편하지만, 모든 앱이 프록시를 사용해 배터리와 데이터 사용량이 늘 수 있습니다. Direct는 프록시를 사용하지 않는 상태이므로 문제 원인을 비교할 때만 사용하세요.

  • 일반 사용: 먼저 Rule 모드를 권장합니다. 규칙이 제대로 작성된 프로필이라면 앱별로 별도 설정을 반복하지 않아도 됩니다.
  • 연결 테스트: 특정 사이트가 규칙 때문에 잘못 분기되는지 확인할 때 잠시 Global로 바꿔 비교합니다.
  • 프록시 중지: Direct로 바꾸는 것과 VPN 연결을 완전히 끄는 것은 다를 수 있습니다. 필요하지 않을 때는 메인 화면의 중지 버튼으로 VPN 서비스를 종료합니다.

메인 화면의 연결 스위치를 켜면 안드로이드에서 VPN 연결 요청이 표시됩니다. 허용 후 상태 표시줄에 VPN 아이콘이 나타나야 하며, 아이콘이 없고 앱 내부 통계도 증가하지 않는다면 권한 승인 여부를 다시 확인하세요. 다른 VPN 앱이 이미 실행 중이면 안드로이드가 동시에 두 VPN 연결을 허용하지 않을 수 있으므로, 기존 VPN이나 광고 차단 VPN을 먼저 종료해야 합니다.

배터리 최적화 예외 등록

화면을 끈 뒤 연결이 끊긴다면 설정 › 앱 › Clash for Android › 배터리에서 백그라운드 사용을 허용하고, 배터리 최적화를 제한 없음 또는 이에 해당하는 항목으로 바꾸세요. 샤오미, 오포, 비보, 화웨이 등 일부 제조사는 자동 시작과 백그라운드 활동을 별도로 제한하므로, 해당 제조사의 배터리 관리자에서도 앱을 허용 목록에 추가해야 합니다. 단, 배터리 제한을 해제하면 대기 중 전력 사용량이 증가할 수 있으므로 항상 연결이 필요한 경우에만 적용하는 것이 좋습니다.

연결이 되지 않을 때 확인할 순서

노드가 표시되는데 인터넷이 되지 않는다면 다음 순서로 범위를 좁히세요. 먼저 VPN 권한과 현재 모드를 확인하고, 그다음 노드를 바꾸며, 마지막으로 프로필과 DNS 문제를 점검하는 방식이 효율적입니다.

  1. Clash의 연결 스위치가 켜져 있고 안드로이드 상태 표시줄에 VPN 아이콘이 있는지 확인합니다.
  2. 현재 모드가 Direct가 아닌지 확인하고, Rule 모드에서 문제가 있으면 짧은 시간 Global 모드로 비교합니다.
  3. 현재 노드를 다른 노드로 바꿉니다. 특정 노드만 실패하는지 모든 노드가 실패하는지 구분해야 합니다.
  4. Proxies 화면에서 상위 정책 그룹이 실제로 선택한 노드를 가리키는지 확인합니다. 하위 그룹만 바꾸고 상위 그룹은 다른 자동 선택 그룹을 가리키는 경우가 있습니다.
  5. 프로필을 갱신하고, 갱신 후에도 문제가 계속되면 제공자가 안내한 최신 프로필을 새 항목으로 다시 가져옵니다.
  6. 특정 앱만 실패하면 앱의 자체 DNS, QUIC, 배터리 제한, 또는 앱별 우회 설정을 확인합니다. 모든 앱이 실패하면 VPN 권한, 노드, 네트워크부터 다시 점검합니다.

구독 URL이 만료된 경우에는 노드 변경으로 해결되지 않습니다. 반대로 노드 목록은 정상이고 일부 사이트만 열리지 않는다면 규칙 분류나 DNS 응답이 원인일 수 있습니다. 문제를 재현할 때는 사용 중인 모드, 선택한 그룹, 실패한 앱, 프로필 갱신 시각을 기록해 두면 원인을 훨씬 빠르게 찾을 수 있습니다.

정상 작동 확인 기준

프로필이 활성화되어 있고, Proxies에서 노드가 선택되며, VPN 아이콘과 연결 통계가 함께 증가해야 합니다. 여기에 Rule 모드에서 직접 연결 대상과 프록시 대상이 의도대로 나뉘면 기본 설정이 완료된 것입니다.

다운로드와 다음 설정

아직 클라이언트를 설치하지 않았다면 안드로이드용 다운로드 항목에서 지원 버전을 확인한 뒤 진행하세요. 설치 후에는 이 글의 순서대로 구독을 추가하고, 프로필을 활성화하고, 노드와 프록시 모드를 차례로 확인하면 됩니다. 규칙 분류나 DNS까지 세밀하게 조정해야 한다면 상세 튜토리얼에서 추가 설정 항목을 확인할 수 있습니다.

자주 나타나는 오류와 원인별 해결법

증상가능한 원인확인할 항목
로그인 명령이 즉시 연결 거부Clash가 꺼져 있거나 포트가 다름mixed-port, HTTP 포트, 로컬 리스닝 상태
브라우저 인증은 끝났지만 CLI가 대기콜백 주소가 프록시나 보안 프로그램에 의해 차단됨localhost를 NO_PROXY에 포함했는지 확인
TLS handshake timeout노드 품질 저하, 잘못된 규칙, MTU 문제Clash 로그, 다른 노드, TUN 사용 여부
인증 성공 후 요청만 실패API 요청이 다른 호스트로 이동하거나 규칙에서 DIRECT 처리됨요청 도메인의规则匹配 결과와 프록시 그룹
명령을 찾을 수 없음CLI 설치 경로가 PATH에 없음codex --help, 운영체제 PATH, 설치 방식
인증 정보가 반복해서 사라짐권한 문제, 임시 컨테이너, 자격 증명 저장 실패설정 디렉터리 쓰기 권한과 실행 환경

로그인 콜백이 멈추는 경우에는 NO_PROXY가 지나치게 넓게 설정되지 않았는지 확인하세요. localhost127.0.0.1은 로컬 콜백을 위해 직접 연결하는 것이 일반적이지만, 외부 인증 서버 도메인을 무심코 NO_PROXY에 넣으면 브라우저 인증 페이지와 CLI의 인증 요청이 서로 다른 경로로 나갈 수 있습니다.

반대로 TUN 모드에서 localhost까지 가상 인터페이스로 보내면 콜백 서버가 정상적으로 응답하지 않을 수 있습니다. 이런 환경에서는 DNS 하이재킹과 자동 라우팅을 켜더라도 로컬 주소 예외를 유지하세요. TUN을 켠 뒤 문제가 시작됐다면 TUN을 끄고 환경 변수 방식으로 재시험하면 원인을 빠르게 분리할 수 있습니다.

프록시 오류와 인증 오류를 구분하세요

“connection refused”, “timeout”, “TLS handshake”는 대체로 네트워크 경로 문제이고, 인증 만료·권한 부족·잘못된 계정은 서버가 반환하는 인증 단계의 오류입니다. 전자는 Clash 로그와 포트를 먼저 보고, 후자는 Codex CLI의 로그아웃 후 재로그인과 계정 권한을 확인해야 합니다.

TUN과 DNS를 사용할 때의 추가 점검

Codex CLI가 실행하는 셸 명령이나 패키지 도구까지 같은 네트워크 정책으로 처리해야 한다면 TUN 모드가 편리할 수 있습니다. 다만 TUN은 단순히 브라우저를 프록시로 바꾸는 기능이 아니라 시스템 라우팅과 DNS 흐름을 변경하는 기능입니다. Windows에서는 서비스 모드와 관리자 권한이 필요할 수 있고, macOS에서는 네트워크 확장 또는 VPN 구성 허용이 요구될 수 있습니다.

mihomo 기반 클라이언트에서는 auto-route, auto-detect-interface, dns-hijack 설정이 서로 맞물립니다. 자동 라우팅이 꺼져 있으면 TUN 인터페이스가 만들어져도 일부 트래픽이 기존 네트워크 카드로 빠질 수 있습니다. DNS 하이재킹이 빠지면 도메인 조회는 운영체제 DNS로 남아 규칙 매칭이 불안정해질 수 있습니다. fake-ip을 사용하는 경우 198.18.0.1/16과 같은 가상 대역이 로컬 네트워크 규칙에 의해 차단되지 않는지도 확인하세요.

  • Clash 로그에서 DNS 요청이 기록되는지 확인합니다.
  • nslookup 또는 dig 결과가 매번 바뀌는지, 특정 잘못된 주소가 반복되는지 비교합니다.
  • 사내 도메인과 로컬 프린터 주소는 NO_PROXY 또는 DIRECT 규칙으로 분리합니다.
  • 패키지 설치 명령이 실패하면 Codex 자체가 아니라 패키지 저장소의 인증서, 별도 프록시 설정, 저장소 정책을 확인합니다.

터미널 명령 실행을 허용할 때는 네트워크가 안정적이라는 이유만으로 모든 명령을 자동 승인하지 마세요. Codex CLI가 파일을 수정하거나 외부 패키지를 설치하도록 설정되어 있다면 프로젝트 디렉터리, 셸 권한, 환경 변수에 저장된 비밀 정보까지 함께 고려해야 합니다. 먼저 읽기 작업으로 검증하고, 변경 작업은 명령별로 확인하는 것이 안전합니다.

FAQ: Codex CLI와 Clash 연결 문제

시스템 프록시를 켰는데도 Codex CLI가 직접 연결되는 이유는 무엇인가요?

터미널 프로그램이나 내부 HTTP 라이브러리가 운영체제의 시스템 프록시를 읽지 않을 수 있습니다. 현재 셸에 HTTP_PROXYHTTPS_PROXY를 직접 지정한 뒤 다시 실행하세요. 그래도 로그가 보이지 않으면 TUN 모드로 비교 테스트를 진행해 프로세스가 프록시 변수를 무시하는지 확인할 수 있습니다.

HTTP_PROXY와 HTTPS_PROXY에 서로 다른 포트를 넣어야 하나요?

Clash의 mixed 포트를 사용한다면 두 변수에 같은 HTTP 주소를 넣어도 됩니다. 다만 실제 클라이언트에서 HTTP와 SOCKS 포트가 분리되어 있다면 HTTPS 요청에 SOCKS 포트를 HTTP 주소로 입력하지 않도록 주의하세요. 포트 형식과 프로토콜이 맞지 않으면 연결 거부 또는 TLS 오류가 발생합니다.

Codex 로그인 후에는 환경 변수를 삭제해도 되나요?

로그인 정보가 안전하게 저장되고 이후 요청이 직접 연결로도 허용되는 환경이라면 가능하지만, 인증 후 API 요청도 프록시가 필요한 네트워크라면 환경 변수를 계속 유지해야 합니다. 테스트할 때는 변수를 삭제한 새 셸에서 간단한 요청을 실행해 인증 경로와 실제 작업 경로가 모두 정상인지 구분하세요.

노드를 바꾸면 Codex CLI 인증을 다시 해야 하나요?

일반적으로 노드 변경만으로 저장된 인증 정보가 사라지지는 않습니다. 그러나 출구 지역이나 IP가 바뀌면서 보안 확인이 추가되거나, 이전 연결이 만료되어 재인증이 요구될 수 있습니다. 짧은 시간에 여러 지역의 노드를 반복해서 바꾸기보다 안정적인 하나의 그룹을 선택하고 Clash 로그에서 연결 상태를 확인하세요.

다음 단계: Clash 설정과 Codex 실행 환경 정리

Codex CLI 연결 문제는 대부분 클라이언트 자체보다 로컬 포트, 셸 환경 변수, DNS 경로, 규칙 순서 중 하나에서 발생합니다. 먼저 mixed 포트와 전역 연결을 이용해 기본 경로를 검증한 뒤, 규칙 모드와 TUN 모드로 범위를 좁히면 불필요한 설정 변경을 줄일 수 있습니다. 설치 파일과 클라이언트 선택이 아직 정해지지 않았다면 다운로드 센터에서 플랫폼에 맞는 mihomo 기반 클라이언트를 확인하고, 적용 후에는 단계별 튜토리얼에 따라 프로필과 프록시 모드를 설정하세요.

Clash 클라이언트 다운로드

규칙 분리를 적용하려면 먼저 클라이언트가 트래픽을 인계받아야 합니다. 다운로드 센터에서 사용 중인 플랫폼에 맞는 클라이언트를 선택한 뒤, 다시 가이드로 돌아와 시스템 프록시 또는 TUN 인계를 완료하세요.

Clash 다운로드