모바일 기기에서 Clash 또는 mihomo 코어 기반 클라이언트를 실행하면 프록시를 완전히 끈 상태보다 배터리 소모가 다소 늘어나는 것이 일반적입니다. 원인은 단순히 클라이언트 화면이 백그라운드에서 실행되기 때문만은 아닙니다. 시스템은 로컬 VPN 인터페이스를 유지하고, 도메인을 해석하며, 프록시 규칙을 매칭하고, 원격 노드와 연결도 유지해야 합니다. 실제로 점검해야 할 이상 징후는 지속적인 고사용량, 대기 중 뚜렷한 배터리 감소, 기기의 반복적인 발열, 프록시 서비스의 계속되는 중지와 재시작입니다.

배터리 문제를 상태 표시줄의 VPN 아이콘만으로 판단해서는 안 됩니다. 아이콘이 계속 표시된다는 것은 네트워크 확장 기능이나 VPN 서비스가 작동 중이라는 뜻일 뿐, 프로세서가 계속 높은 부하 상태라는 의미는 아닙니다. 효과적인 점검 방법은 먼저 기준선을 세운 뒤 백그라운드 제한, 연결 모드, 노드 안정성, 상태 확인 주기와 규칙 규모를 각각 관찰하는 것입니다. 한 번에 하나의 변수만 바꿔야 어떤 설정이 변화를 일으켰는지 확인할 수 있습니다.

1. 비교 가능한 배터리 소모 기준선부터 설정하기

‘지난 24시간’ 배터리 사용 순위를 바로 확인하면 화면 사용, 동영상 재생, 이동통신 신호와 시스템 업데이트의 영향을 받기 쉽습니다. 야간 대기 2시간이나 평소 업무 1시간처럼 사용 조건이 비슷한 시간을 정해 프록시를 끈 상태, 시스템 프록시 기능만 켠 상태, TUN 또는 VPN으로 트래픽을 전환한 상태를 각각 비교하는 것이 좋습니다. 테스트 중에는 같은 네트워크, 같은 노드와 비슷한 앱 활동을 유지하세요.

핵심 정보 네 가지 기록하기

  1. 배터리 변화: 시작과 종료 시 배터리 잔량을 기록하고, 시스템 통계에서 클라이언트가 차지하는 비율 순위만 보지 마세요. 순위는 상대적인 값이므로 다른 앱의 사용량이 적으면 프록시 클라이언트의 실제 소모가 크지 않아도 상위에 표시될 수 있습니다.
  2. 기기 온도: 화면을 끈 뒤에도 계속 따뜻하다면 반복적인 재연결, 과도한 로그, 잦은 속도 측정 또는 비정상적인 네트워크 요청이 있을 가능성이 큽니다.
  3. 서비스 연속성: VPN 아이콘이 반복해서 사라지는지, 화면을 켜고 잠금 해제한 뒤에야 프록시가 복구되는지, 클라이언트 로그에 짧은 시간 동안 반복 실행 기록이 있는지 확인하세요.
  4. 네트워크 조건: Wi-Fi, 이동통신망, 약한 신호와 네트워크 전환 상황을 구분하세요. 이동통신 신호가 약하면 모뎀 자체의 전력 소모가 늘어나므로 모든 원인을 Clash 탓으로 돌릴 수 없습니다.
테스트 상태 권장 시간 중점 관찰 항목 판단 목적
프록시 완전히 끄기 1~2시간 기본 배터리 감소, 신호 세기 기기 대기 기준선 설정
프록시를 켜고 안정적인 노드 유지 1~2시간 백그라운드 활동, 온도, 연결 횟수 프록시 서비스의 고정 소모량 판단
네트워크 전환 또는 불안정한 노드 사용 30~60분 재연결, DNS 시간 초과, 로그 증가 네트워크 품질의 영향 확인
자동 테스트 및 잦은 업데이트 끄기 1~2시간 대기 중 배터리 감소 곡선 개선 여부 주기 작업의 영향 확인

프록시를 켠 뒤 배터리 변화가 기준선보다 조금만 높고 발열이나 서비스 재시작이 없다면 모든 기능을 더 줄일 필요는 보통 없습니다. 백그라운드 활동을 지나치게 제한하면 오히려 시스템이 VPN 서비스를 종료할 수 있습니다. 이후 클라이언트나 시스템이 서비스를 다시 실행하면서 ‘중지—시작—재연결’이 반복되고, 결국 안정적으로 실행할 때보다 배터리를 더 많이 소모할 수 있습니다.

2. 백그라운드 실행 및 시스템 배터리 최적화 점검

Android 제조사는 대개 시스템 배터리 최적화, 앱 백그라운드 활동 제한, 자동 시작 관리와 절전 모드를 함께 제공합니다. 설정이 여러 경로에서 중복 적용될 수 있습니다. 클라이언트의 백그라운드 실행을 허용해도 시스템의 절전 정책이 화면이 꺼진 뒤 네트워크를 제한할 수 있고, 자동 시작을 허용해도 앱이 ‘제한됨’ 배터리 모드로 분류되어 VPN 서비스를 중지할 수 있습니다.

Android 점검 순서

  1. 시스템 앱 정보를 열고 현재 사용하는 Clash 또는 mihomo 그래픽 클라이언트를 찾습니다.
  2. 배터리 또는 전력 관리로 이동해 앱 설정을 ‘제한됨’에서 백그라운드 활동을 허용하는 모드로 변경합니다. 시스템에 따라 ‘제한 없음’, ‘백그라운드 실행 허용’ 또는 비슷한 이름으로 표시될 수 있습니다.
  3. 자동 시작, 연결된 시작 및 백그라운드 팝업과 같은 제조사 확장 옵션을 확인합니다. 서비스가 회수된 뒤 시스템이 정상적인 방식으로 복구할 수 있도록만 설정하면 되며, 프록시와 관계없는 권한까지 모두 켤 필요는 없습니다.
  4. 시스템 절전 모드가 VPN을 끄거나 백그라운드 네트워크를 제한하거나 예약 작업을 지연시키는지 확인합니다. 테스트할 때는 먼저 극한 절전 모드를 종료하세요.
  5. 최근 앱 화면에서 앱을 잠그는 것은 보조 수단일 뿐입니다. 일부 시스템은 여전히 배터리 정책에 따라 서비스를 회수하므로 앱 배터리 설정을 대신할 수 없습니다.

‘화면을 잠근 뒤 10여 분 후 인터넷이 끊기고, 화면을 켜 클라이언트에 들어가면 다시 연결된다’면 백그라운드 네트워크나 VPN 서비스가 제한되었을 가능성을 먼저 의심하세요. ‘프록시는 계속 사용할 수 있지만 클라이언트의 백그라운드 시간이 매우 길다’면 백그라운드 권한을 바로 끄기보다 상태 확인, 구독 업데이트, 로그 수준과 노드 재연결을 점검해야 합니다.

잦은 재시작은 계속 실행하는 것보다 전력을 더 많이 쓸 수 있습니다

프록시 서비스가 시작될 때는 설정을 읽고, 규칙 세트를 불러오며, DNS를 초기화하고, 가상 네트워크 인터페이스를 생성한 뒤 노드에 연결해야 합니다. 시스템이 일정 시간마다 서비스를 회수하면 클라이언트는 이 작업을 반복해야 합니다. 로그에 설정 로드, VPN 생성, 인터페이스 생성과 노드 연결 기록이 연속해서 나타난다면 백그라운드 체류 시간을 단순히 줄이기보다 시스템 백그라운드 정책이나 클라이언트 안정성을 우선 점검해야 합니다.

3. 연결 모드, 노드 안정성 및 재연결 동작 비교

모바일 클라이언트는 일반적으로 시스템 VPN 인터페이스를 통해 트래픽을 전환하며, 이는 Clash 설정의 TUN 모드와 비슷한 역할을 합니다. 다만 구체적인 구현은 클라이언트와 운영체제에 따라 달라집니다. 일부 앱만 시스템 프록시 설정을 사용하게 하는 방식보다 VPN 또는 TUN의 전환 범위가 넓어 더 많은 연결, DNS 요청과 라우팅 판단을 처리하므로 고정 소모량이 높을 수 있습니다. 모바일 앱에서 모드 전환을 지원하는지는 실제 클라이언트 옵션을 기준으로 판단하세요.

TUN 또는 VPN 모드에서 소모량이 늘어날 수 있는 이유

  • 가상 인터페이스를 거치는 모든 연결은 코어가 읽고 규칙에 따라 매칭해야 하며, 일부 시스템 서비스와 백그라운드 앱의 트래픽도 포함됩니다.
  • UDP, 실시간 통신과 장시간 연결은 세션 상태를 유지해야 할 수 있고, 네트워크가 바뀌면 세션을 다시 만들 수도 있습니다.
  • DNS 하이재킹, Fake IP 또는 향상된 DNS 모드는 로컬 조회 처리를 늘릴 수 있습니다. 하지만 이것만으로 반드시 비정상적인 배터리 소모가 발생하는 것은 아니며, 조회 루프, 시간 초과 재시도 또는 설정 충돌이 있는지가 핵심입니다.
  • 이동통신망과 Wi-Fi를 전환하면 기존 연결이 무효화되고 새 연결에서 출구 노드를 다시 선택해야 합니다. 노드 핸드셰이크가 느리면 이 과정의 배터리 소모가 커집니다.

클라이언트가 특정 앱만 프록시하거나 LAN 트래픽을 우회하는 기능을 지원한다면 필요에 따라 전환 범위를 줄일 수 있습니다. 예를 들어 프록시가 필요 없는 로컬 화면 미러링, 프린터 서비스 또는 LAN 저장소 접근은 직접 연결할 수 있습니다. 배터리를 아끼려고 프록시가 필요한 시스템 구성 요소를 임의로 제외하면 일부 앱이 인터넷에 연결되지 않거나 DNS 경로가 달라지고, 연결이 잘못된 출구로 노출될 수 있으므로 주의하세요.

노드 불안정은 흔히 놓치는 원인입니다

노드 지연이 높다고 해서 반드시 배터리 소모가 큰 것은 아닙니다. 하지만 잦은 시간 초과와 연결 끊김은 재시도, 정책 그룹 재선택과 앱 계층의 연결 재생성을 유발합니다. 먼저 안정성이 확인된 노드 하나를 고정하고, 자주 전환되는 자동 정책 그룹은 잠시 사용하지 않은 채 관찰하세요. 온도와 백그라운드 활동이 뚜렷하게 줄어들면 정책 그룹의 테스트 주소, 테스트 간격과 전환 임계값을 점검합니다.

url-test는 설정된 간격으로 후보 노드를 테스트해 조건에 맞는 결과를 선택하고, fallback은 사용 가능 여부를 확인해 현재 노드가 실패하면 전환하며, load-balance는 정책에 따라 연결을 분배합니다. 노드가 많고 테스트 간격이 짧으면 주기적인 탐색이 추가적인 네트워크 깨움을 유발합니다. 모바일에서는 수십 개 노드를 모두 고빈도 자동 테스트 그룹에 넣을 필요가 없습니다. 자주 사용하는 지역과 품질이 안정적인 노드부터 추리세요.

proxy-groups:
  - name: 자동 선택
    type: url-test
    proxies:
      - 노드-A
      - 노드-B
      - 노드-C
    url: https://www.gstatic.com/generate_204
    interval: 600
    tolerance: 100

위 예시는 후보 수와 검사 빈도를 조절하는 방식을 설명하기 위한 것으로, 모든 구독에 같은 값을 적용해야 한다는 뜻은 아닙니다. 테스트 주소는 예상한 결과를 안정적으로 반환해야 합니다. 사용 중인 네트워크에서 해당 주소에 안정적으로 접근할 수 없다면 클라이언트는 계속 실패 결과를 받고 노드 탐색이나 전환을 반복할 수 있습니다.

4. 규칙, DNS 및 주기 작업의 점검 범위 줄이기

규칙이 많다고 해서 반드시 배터리 소모 이상이 발생하는 것은 아닙니다. mihomo는 규칙 유형에 맞는 매칭 방식을 사용하므로 정상적으로 관리되는 대규모 규칙 세트도 네트워크 재시도보다 영향이 안정적인 경우가 많습니다. 주의할 부분은 규칙 제공자의 잦은 업데이트, 설정 반복 로드, 복잡한 스크립트 동작, DNS 조회 루프와 로그의 지속적인 기록입니다.

규칙 제공자 업데이트 주기 확인

원격 규칙 세트와 구독은 주기적으로 파일을 요청하고 다시 불러와야 합니다. 여러 규칙 제공자의 업데이트 간격을 모두 짧게 설정하면 모바일 기기가 네트워크를 자주 깨웁니다. 자주 바뀌지 않는 도메인 또는 IP 규칙 세트는 몇 분마다 업데이트할 필요가 없는 경우가 많습니다. 먼저 설정의 rule-providers, 구독 자동 업데이트와 클라이언트 예약 새로고침 옵션을 확인해 중복 작업이 없는지 점검하세요.

rule-providers:
  direct-list:
    type: http
    behavior: domain
    url: https://example.invalid/rules/direct.yaml
    path: ./ruleset/direct.yaml
    interval: 86400

예시의 주소는 필드 구조만 보여 줍니다. 실제 설정에는 구독 제공자나 규칙 관리자가 제공한 유효한 주소를 사용해야 합니다. 업데이트 주기를 조정한 뒤에는 설정을 다시 불러오고, 로그에서 규칙 다운로드와 설정 새로고침이 짧은 시간 안에 반복되는지 확인하세요.

DNS 재시도 및 해석 루프 확인

DNS 설정에 문제가 있으면 웹페이지 첫 접속이 느려지고, 로그에서 같은 도메인을 반복 조회하거나, 노드 도메인을 해석하지 못하거나, 네트워크 전환 후 오랫동안 연결되지 않는 현상이 나타날 수 있습니다. 암호화 DNS 서버에 프록시를 통해 접근해야 하는데 프록시 노드 도메인도 같은 해석 경로에 의존하면 시작 단계에서 의존성 문제가 생길 수 있습니다. 노드 해석에 사용할 수 있는 기본 DNS 경로를 확보하고, 클라이언트와 코어 문서에 따라 default-nameserver, nameserver 및 프록시 서버 도메인 해석을 설정하세요.

Fake IP 모드는 도메인에 가상 주소를 할당한 뒤 코어가 도메인과 연결의 매핑을 저장합니다. 일반적으로 규칙 매칭과 투명 프록시 호환성을 개선하지만, 일부 LAN 서비스, 특수 앱 또는 연결 확인용 도메인은 필터 목록에 추가해야 할 수 있습니다. 필터 범위가 지나치게 넓으면 모드의 효과가 떨어지고, 너무 좁으면 호환되지 않는 앱이 계속 재시도할 수 있습니다. 점검할 때는 로그에서 반복적으로 실패하는 특정 도메인을 기준으로 처리하고, 지나치게 큰 필터 목록을 그대로 복사하지 마세요.

디버그 로그의 지속적인 기록 줄이기

상세 로그는 짧은 시간 동안 장애 원인을 찾을 때 적합하며 장기간 유지하기에는 적합하지 않습니다. 로그 수준이 debug이면 많은 연결, DNS와 규칙 매칭 정보가 저장소에 계속 기록되고 화면 새로고침 부담도 커질 수 있습니다. 진단을 마친 뒤에는 info, warning 또는 클라이언트가 권장하는 일상 수준으로 되돌리세요. 기존 로그를 삭제하면 공간만 확보할 뿐이며, 이후 동작에 실제로 영향을 주는 것은 로그 수준과 기록 빈도입니다.

5. Android와 iOS의 백그라운드 메커니즘 차이

Android: VPN 서비스가 회수되는지 중점적으로 확인

Android 클라이언트는 일반적으로 VpnService를 통해 로컬 VPN을 구축합니다. 시스템 알림 표시줄의 상시 알림은 보통 포그라운드 서비스와 관련되어 있으며, 시스템에 해당 네트워크 서비스가 계속 실행 중임을 알립니다. 알림 권한을 수동으로 끄거나 백그라운드 활동을 제한하거나 제조사의 깊은 절전 기능을 켜면 서비스 안정성에 영향을 줄 수 있습니다. 구체적인 동작은 시스템 버전과 클라이언트 구현에 따라 다르므로 시스템 배터리 기록과 클라이언트 로그를 함께 확인해야 합니다.

Android에서는 앱 충돌, 응답 없음 또는 실행 횟수와 같은 시스템 정보도 확인할 수 있습니다. 클라이언트 자체가 자주 종료된다면 먼저 현재 시스템 버전에 맞는 안정 버전으로 업데이트하고, 같은 설정을 정상적으로 불러올 수 있는지 확인하세요. 설정 파일이 너무 크거나 문법 오류가 있거나 메모리 압박이 발생하면 시작에 실패할 수 있지만, ‘프록시 연결 끊김’만으로 코어 충돌이라고 단정해서는 안 됩니다.

iOS: 앱 화면과 네트워크 확장 기능 구분하기

iOS의 호환 클라이언트는 일반적으로 Network Extension을 통해 프록시 또는 VPN 기능을 제공합니다. 앱 화면이 백그라운드로 전환된 뒤에도 네트워크 확장 기능은 시스템이 관리할 수 있으므로 멀티태스킹 화면에서 앱을 제거하는 것이 클라이언트 내부의 중지 버튼으로 터널을 종료하는 것과 항상 같지는 않습니다. 배터리 통계에서도 일부 네트워크 활동이 클라이언트, 시스템 네트워크 서비스 또는 데이터를 전송 중인 앱으로 분류될 수 있습니다.

iOS 배터리 소모를 점검할 때는 저전력 모드, 이동통신망 품질, 주문형 연결 규칙과 클라이언트 내부의 노드 테스트 계획을 확인해야 합니다. 주문형 연결을 설정하면 네트워크 환경 변화가 규칙 평가를 트리거할 수 있습니다. 여기에 고빈도 상태 확인까지 설정되어 있으면 Wi-Fi와 이동통신망을 자주 오갈 때 연결 재생성이 더욱 두드러집니다. 테스트 중에는 네트워크를 고정하고 불필요한 노드 테스트를 일시 중지한 뒤 배터리 감소 곡선을 비교하세요.

어느 플랫폼을 사용하든 다른 시스템의 백그라운드 설정 이름을 그대로 적용하지 않는 것이 좋습니다. 다음 세 가지 사실을 중심으로 확인하세요. 프록시 터널이 계속 유지되는지, 시스템이 서비스를 반복해서 종료하는지, 설정이 네트워크 작업을 계속 트리거하는지입니다. 설정 경로는 다르지만 진단 논리는 같습니다.

6. 단계별로 모바일 배터리 소모 점검 완료하기

1단계: 프록시와 직접 관련이 있는지 확인

  1. 같은 네트워크 환경에서 프록시를 끈 상태로 일정 시간 대기하며 배터리 잔량을 기록합니다.
  2. 프록시를 켜고 안정적인 노드 하나를 고정한 뒤 다운로드, 동영상 재생 또는 대규모 동기화는 하지 않습니다.
  3. 배터리 감소량, 온도와 백그라운드 활동을 비교합니다. 차이가 작다면 짧은 시간의 백분율 변동으로 결론을 내리지 말고 더 긴 주기로 관찰하세요.

2단계: 시스템의 반복적인 서비스 회수 배제

  1. 클라이언트가 정상적으로 백그라운드에서 실행되도록 허용하고 시스템의 극한 절전 모드를 종료합니다.
  2. 화면을 잠근 뒤 프록시가 끊기는지, 잠금 해제 후 새 실행 로그가 다시 나타나는지 확인합니다.
  3. 서비스가 자주 복구된다면 배터리 최적화, 자동 시작, 백그라운드 네트워크와 VPN 권한을 점검하세요.

3단계: 주기적인 네트워크 작업 줄이기

  1. 구독 자동 새로고침과 원격 규칙 세트의 고빈도 업데이트를 일시 중지합니다.
  2. 자동 정책 그룹의 후보 노드 수를 줄이고 상태 확인 간격을 늘립니다.
  3. 로그 수준을 디버그에서 일상적인 수준으로 되돌립니다.
  4. 안정적인 노드 하나를 고정해 노드 시간 초과와 정책 그룹의 반복 전환을 배제합니다.

4단계: DNS 및 트래픽 전환 범위 확인

  1. 로그에 연속적인 DNS 시간 초과, 같은 도메인의 반복 조회 또는 노드 도메인 해석 실패가 있는지 확인합니다.
  2. 프록시가 아직 구축되지 않은 상태에서도 기본 DNS가 필요한 해석을 수행할 수 있는지 확인합니다.
  3. 필요에 따라 앱 우회, LAN 직접 연결과 TUN 전환 범위를 조정하고, 변경할 때마다 다시 테스트합니다.

5단계: 기능 복원 및 검증

배터리 소모를 뚜렷하게 개선한 변수를 찾았더라도 즉시 테스트를 끝내지 마세요. 구독 업데이트, 정책 그룹과 기존 규칙을 하나씩 복원하고, 항목을 복원할 때마다 일정 시간 관찰합니다. 특정 항목을 복원한 뒤 이상이 다시 나타나면 범위를 더 좁힐 수 있습니다. 예를 들어 특정 자동 정책 그룹을 켰을 때만 발열이 발생한다면 설정 전체를 삭제하기보다 해당 그룹의 노드 수, 테스트 주소와 간격을 확인하세요.

결론: 과도한 백그라운드 제한보다 안정적인 실행이 우선

Clash 모바일 배터리 소모 이상은 보통 하나의 스위치 때문에 발생하지 않습니다. 시스템 배터리 제한, VPN 서비스 재시작, 불안정한 노드 재연결, 잦은 상태 확인, 구독 새로고침과 DNS 시간 초과가 함께 작용한 결과인 경우가 많습니다. 가장 효과적인 방법은 먼저 프록시를 끈 상태와 안정적인 프록시 상태를 비교하는 기준선을 세우고, 서비스가 연속해서 실행되는지 확인한 다음, 주기 작업을 줄이고 DNS와 노드 품질을 검증하는 것입니다.

하루 종일 프록시를 유지해야 하는 기기라면 서비스를 반복해서 종료하고 복구하는 것보다 안정적으로 상주시키는 편이 더 절전적일 때가 많습니다. 특정 상황에서만 프록시를 사용하는 기기라면 클라이언트 내부에서 서비스를 직접 중지할 수 있습니다. 설정을 마친 뒤에는 최소 한 번의 완전한 일상 사용 주기를 관찰하고 Wi-Fi와 이동통신망에서의 동작을 각각 기록해야 신뢰할 수 있는 결론을 얻을 수 있습니다.