Clash Android 클라이언트 사용 요점: VpnService 권한 승인과 절전 화이트리스트 설정
Android용 프록시 클라이언트는 시스템의 VpnService 인터페이스에 의존해 작동하며, 권한 승인·백그라운드 유지·절전 정책 세 가지가 서로 맞물려 있습니다. 한 부분이라도 제대로 설정되지 않으면 "쓰다가 갑자기 끊기는" 증상으로 나타납니다. 이 글은 실제 점검 순서대로 각 단계에서 해야 할 일을 정리합니다.
VpnService 권한 승인 절차와 열쇠 아이콘의 의미
Android 시스템은 앱이 전체 네트워크 트래픽을 직접 가로채는 것을 허용하지 않으므로, TUN 방식을 사용하는 모든 프록시 클라이언트(Clash for Android, ClashMeta for Android 등 포함)는 시스템이 제공하는 VpnService 인터페이스를 통해 권한을 승인받아야 합니다. 프록시를 처음 켤 때 시스템은 "앱이 VPN을 통한 연결을 설정하려고 합니다"라는 표준 대화상자를 표시하는데, 이는 서드파티 VPN 앱을 승인할 때와 동일한 시스템 구성 요소이며 클라이언트가 자체적으로 그린 화면이 아닙니다. 사용자가 허용을 누르면 시스템이 해당 앱을 위한 가상 네트워크 인터페이스를 생성하고, 그 이후부터 모든 트래픽을 가로채 규칙에 따라 분배할 수 있게 됩니다.
권한 승인이 완료되면 상태 표시줄에 열쇠 모양 아이콘(일부 커스텀 시스템에서는 자물쇠 모양이나 "VPN" 텍스트 배지로 표시)이 나타납니다. 이는 Android 자체의 강제 알림으로, "현재 어떤 앱이 네트워크 트래픽을 가로채고 있다"는 사실을 사용자에게 알리기 위한 것이며, VpnService를 사용하는 모든 앱에서 나타나므로 클라이언트 자체의 안전성과는 무관합니다. 이 아이콘이 표시되는 동안 배터리 소모가 약간 늘어나는데, 이는 가상 네트워크 인터페이스가 계속 패킷을 전달하는 데 따른 정상적인 대가이며 이상 상태가 아닙니다.
권한 승인은 처음 켤 때나 시스템 업데이트 후에만 다시 표시되면 됩니다. 매번 프록시를 켤 때마다 승인 창이 뜬다면, 대개 시스템이 해당 클라이언트를 "신뢰하지 않는 앱"으로 분류한 것이므로 시스템 설정의 앱 세부 정보 화면에서 직접 신뢰를 부여해야 합니다.
일부 제조사의 커스텀 시스템(특정 브랜드의 딥 커스터마이징 ROM)은 VpnService 권한 승인 외에 "항상 켜져 있는 VPN"이라는 옵션을 추가로 제공합니다. 이를 체크하면 시스템이 해당 앱의 가상 네트워크 인터페이스 우선순위를 높여 다른 백그라운드 정리 메커니즘에 의해 쉽게 중단되지 않도록 보장하므로, 함께 체크해 두는 것을 권장합니다.
백그라운드가 시스템에 종료되는 이유
Android는 전체 전력 소모를 제어하기 위해 백그라운드 프로세스에 여러 겹의 제한을 두며, 시스템 버전이 최신일수록 제한이 더 엄격해집니다. 이는 Clash Android 클라이언트에서 "화면을 잠그고 얼마 지나면 프록시가 끊긴다"는 흔한 불만의 근본 원인이기도 합니다. 주로 세 가지 메커니즘이 작동합니다:
- Doze 모드: 기기가 충전되지 않은 채 일정 시간 정지 상태를 유지하면 시스템이 저전력 상태로 전환되어 네트워크 접근과 백그라운드 작업 스케줄링을 크게 제한하고, 우선순위가 높은 포그라운드 서비스만 계속 활성 상태를 유지할 수 있습니다.
- App Standby(앱 대기 그룹): 시스템은 사용 빈도에 따라 앱을 활성, 워킹셋, 자주 사용, 거의 사용 안 함 등의 그룹으로 나누며, 뒤로 갈수록 사용 가능한 백그라운드 실행 할당량이 줄어듭니다.
- 제조사 커스텀 절전 관리: Android 기본 메커니즘 외에도 대부분의 제조사 커스텀 시스템은 자체 백그라운드 정리 정책을 추가로 얹는데, 이는 기본 시스템보다 훨씬 공격적인 경우가 많아 프록시가 "이유 없이 끊기는" 주된 원인이 됩니다.
제대로 구현된 프록시 클라이언트는 핵심 전달 프로세스를 포그라운드 서비스로 등록해 알림 표시줄에 상시 노출합니다. 포그라운드 서비스는 시스템 우선순위 체계에서 더 높은 생존 가중치를 가지므로 이론적으로는 Doze나 App Standby에 의해 바로 종료되지 않습니다. 그러나 제조사 커스텀 절전 정책은 종종 포그라운드 서비스 표시를 무시하고 프로세스를 강제로 동결하거나 직접 종료해 버리는데, 이것이 바로 화이트리스트를 수동으로 설정해야 하는 이유입니다.
절전 화이트리스트와 자동 실행 허용 목록 설정
Clash 클라이언트가 백그라운드에서 안정적으로 동작하려면 시스템 설정에서 다음 두 가지 권한을 모두 설정해야 합니다:
| 설정 항목 | 역할 | 일반적인 경로 |
|---|---|---|
| 배터리 최적화 화이트리스트 | 시스템이 백그라운드에서 해당 앱의 CPU와 네트워크 스케줄링을 제한하지 못하게 함 | 설정 → 배터리 → 배터리 최적화 → 클라이언트 찾아 "최적화 안 함" 선택 |
| 자동 실행 관리 | 부팅 시 또는 정리된 후 앱이 스스로 서비스를 다시 실행할 수 있도록 허용 | 설정 → 앱 관리 → 자동 실행 / 권한 관리 |
| 백그라운드 활동 권한 | 일부 시스템은 "백그라운드 활동 허용"을 별도로 제어하며, 배터리 최적화와는 별개의 스위치임 | 설정 → 앱 세부 정보 → 배터리 / 권한 |
| 백그라운드 작업 잠금 | 최근 작업 목록에서 클라이언트 카드를 길게 눌러 잠금을 선택하면 원터치 정리 시 회수되는 것을 방지 | 최근 작업 목록 |
제조사마다 메뉴 이름이 조금씩 다르지만 원리는 동일합니다. "지능형 관리", "절전 모드", "자동 관리" 같은 문구가 붙은 옵션은 기본적으로 백그라운드를 제한하는 설정이므로 직접 "허용" 또는 "제한 없음"으로 바꿔야 합니다. 다음 순서로 하나씩 확인하는 것을 권장합니다:
- 먼저 배터리 설정에서 클라이언트를 "지능형 절전"에서 제한 없음으로 변경합니다.
- 다음으로 자동 실행 권한이 켜져 있는지 확인합니다. 켜져 있지 않으면 기기 재부팅 후 프록시가 자동으로 복구되지 않습니다.
- 마지막으로 최근 작업 목록에서 앱 카드를 잠가, "원터치 메모리 정리"로 포그라운드 서비스까지 함께 종료되는 것을 막습니다.
클라이언트를 화이트리스트에 등록해도 극단적으로 배터리가 부족하거나 매우 오랜 시간 정지 상태로 있는 경우 시스템이 여전히 백그라운드 네트워크를 제한할 수 있습니다. 이는 하드웨어·시스템 차원의 최종 안전장치이며 설정 누락이 아니므로, 클라이언트를 다시 열면 바로 복구됩니다.
앱별 프록시 설정 방법
Android 클라이언트는 대부분 "앱별 프록시"를 지원하여 체크한 앱만 가상 네트워크 인터페이스를 거치게 하고 나머지 앱은 시스템 네트워크로 직접 연결하도록 지정할 수 있습니다. 흔히 두 가지 시나리오에서 사용됩니다. 하나는 브라우저나 메신저류 앱만 프록시를 거치게 하고 은행·결제 앱은 직접 연결을 유지하려는 경우이고, 다른 하나는 VPN 환경에 민감해 연결이 비정상적으로 동작하는 특정 앱을 제외하려는 경우입니다. 설정 위치는 대개 클라이언트 설정의 "네트워크" 또는 "앱 목록" 카테고리 아래에 있으며 두 가지 모드를 제공합니다:
- 화이트리스트 모드: 체크한 앱의 트래픽만 프록시로 들어가고 체크하지 않은 앱은 직접 연결됩니다. 어떤 앱에 프록시가 필요한지 명확히 아는 경우에 적합합니다.
- 블랙리스트 모드: 체크한 앱을 제외한 나머지 전부가 프록시를 거치고, 체크한 앱만 직접 연결됩니다. "기본적으로 전체 프록시, 일부만 예외"로 두려는 경우에 적합합니다.
주의할 점은, 앱별 프록시 역시 시스템 VpnService가 제공하는 addAllowedApplication / addDisallowedApplication 인터페이스에 의존한다는 것입니다. 설정을 변경한 후에는 보통 VPN 연결을 다시 시작해야 적용되며, 실시간으로 즉시 반영되지는 않습니다. 또한 시스템 자체의 일부 서비스(DNS 해석 컴포넌트 등)는 앱 목록에 나타나지 않을 수 있는데, 이는 시스템 차원의 동작이며 일반 앱에 대한 프록시 규칙 분배 판단에는 영향을 주지 않습니다.
자주 묻는 질문
열쇠 아이콘을 끌 수 있나요?
불가능합니다. 이는 Android 시스템이 모든 VpnService 계열 앱에 대해 강제로 표시하는 보안 알림으로, 어떤 클라이언트도 시스템 차원에서 이를 숨길 수 없으며 정상적인 현상입니다.
화이트리스트에 등록했는데 왜 가끔 끊기나요?
극단적으로 배터리가 부족하거나, 오랜 시간 정지 상태로 깊은 Doze에 진입했거나, 기기 재부팅 후 자동 실행 권한이 시스템에 의해 초기화된 경우 백그라운드 서비스가 일시적으로 정지될 수 있습니다. 클라이언트 화면을 다시 열면 연결이 복구되며 재설정할 필요는 없습니다.
앱별 프록시와 규칙 분배는 같은 개념인가요?
아닙니다. 앱별 프록시는 특정 앱의 트래픽이 가상 네트워크 인터페이스로 들어갈지를 결정하는 시스템 차원의 스위치이고, 규칙 분배(도메인이나 GEOIP 매칭 등)는 가상 네트워크 인터페이스에 들어온 트래픽이 어느 프록시 노드로 갈지를 결정합니다. 둘은 서로 다른 단계에서 작동하므로 동시에 사용할 수 있습니다.
프록시를 켜면 일부 앱에서 네트워크 오류가 뜨는 이유는 무엇인가요?
일부 앱은 기기에 활성 VPN 연결이 있는 것을 감지하면 스스로 서비스를 거부합니다. 네트워크 환경에 민감한 앱에서 흔히 나타납니다. 앱별 프록시에서 이런 앱을 직접 연결로 제외해 두면 다른 앱은 계속 프록시를 사용할 수 있습니다.