Android Clash와 VpnService: 클라이언트, 코어, 시스템 권한 구분하기

Android 스마트폰에서 Clash 계열 클라이언트를 사용하려면 보통 유효한 설정을 가져오고, 프록시 코어를 시작한 뒤, 클라이언트가 시스템 VPN 인터페이스를 만들도록 허용해야 합니다. 마지막 단계에는 Android의 VpnService가 사용됩니다. 원격 VPN 계정을 앱에 추가하는 절차가 아니며, 모든 트래픽이 프록시 노드를 거친다는 뜻도 아닙니다.

클라이언트는 가상 네트워크 인터페이스로 VPN 대상 IP 트래픽을 받은 다음 코어에 전달합니다. Rule 모드에서는 규칙에 따라 요청을 DIRECT, 프록시 정책 그룹 또는 차단 정책으로 보낼 수 있습니다. 따라서 상태 표시줄에 VPN 아이콘이 보인다는 것은 시스템 VPN 인터페이스가 만들어졌다는 뜻일 뿐, 특정 사이트가 실제로 어떤 경로를 이용하는지는 아이콘만으로 알 수 없습니다.

  • 클라이언트는 화면, 구독 관리, 시스템 권한 요청 및 백그라운드 서비스를 담당합니다.
  • Clash 또는 mihomo 코어는 프로토콜 연결, 규칙 매칭, DNS 등의 처리를 담당합니다. 지원하는 설정 항목은 실제 코어 버전에 따라 달라집니다.
  • VpnService는 Android에서 트래픽을 받아 서비스 수명 주기를 관리합니다. 구독 만료 여부나 노드 사용 가능 여부를 판단하지는 않습니다.

Android 클라이언트의 VPN 모드는 데스크톱에서 흔히 말하는 TUN 모드와 가상 인터페이스를 사용한다는 점에서 비슷하지만, 설정 방법은 제품마다 다릅니다. 휴대전화의 트래픽을 처리하려고 데스크톱용 서비스 설치 절차를 그대로 따라 하거나 tun: 설정을 무조건 추가하지 마세요.

첫 연결: VPN 권한 요청과 연결 충돌 해결

설정 → 정책 선택 → 시작 → 권한 허용 순서로 진행

  1. 클라이언트의 ‘설정’ 또는 ‘Profiles’ 화면에서 구독을 가져오고, 다운로드가 완료되었는지 확인한 뒤 사용할 설정을 선택합니다.
  2. ‘프록시’ 또는 ‘Proxies’ 화면에서 사용할 정책을 선택합니다. 처음 문제를 확인할 때는 규칙 모드를 사용하고 앱별 우회 설정은 추가하지 않는 것이 좋습니다.
  3. 클라이언트의 시작 스위치를 누릅니다. Android에 ‘네트워크 연결 요청’ 또는 비슷한 시스템 대화상자가 표시되면 앱 이름을 확인한 뒤 허용을 누릅니다.
  4. 클라이언트로 돌아와 실행 상태, 연결 기록 및 알림을 확인합니다. 브라우저에서 새 요청을 보내 로그에 해당 연결이 기록되는지 살펴보세요.

시스템 대화상자에는 앱이 네트워크 트래픽을 모니터링할 수 있다는 안내가 표시됩니다. 이는 VpnService 권한에 관한 설명입니다. 이 권한만으로 앱이 모든 HTTPS 평문을 자동으로 읽을 수 있는 것은 아닙니다. 다만 앱은 인터페이스로 들어오는 네트워크 트래픽을 처리하고 대상 주소나 일부 DNS 정보를 볼 수 있으므로 신뢰할 수 있는 클라이언트에만 권한을 허용하세요.

권한을 허용할 수 없다면 화면 오버레이부터 끄세요

‘확인’ 버튼이 눌리지 않으면 플로팅 창, 블루라이트 필터, 화면 오버레이 및 화면 위에 표시되는 도구를 잠시 끈 다음 다시 연결을 시도하세요. 일부 시스템은 화면이 가려진 상태에서 민감한 권한 작업을 차단합니다. 회사에서 관리하는 기기나 업무 프로필에는 VPN 제한이 적용될 수도 있습니다. 관리자 안내가 표시되면 앱을 반복해서 재설치하기보다 관리 담당자에게 문의하세요.

일반적으로 같은 사용자 또는 프로필 공간에서는 VpnService 연결을 하나만 활성화할 수 있습니다. 다른 VPN, 로컬 VPN을 사용하는 방화벽·필터링 도구·패킷 캡처 앱이 현재 연결을 대체할 수 있습니다. 문제를 확인할 때는 이런 앱을 먼저 중지한 뒤 Clash 클라이언트를 시작하세요. 업무 프로필과 개인 프로필의 동작은 시스템 관리 정책에도 영향을 받습니다.

Android 13 이상에서는 알림 권한도 확인하세요

Android 13부터 알림 권한을 실행 중에 요청합니다. 알림을 거부해도 포그라운드 서비스가 반드시 즉시 중지되는 것은 아니지만, 실행 알림이 알림 창에 제대로 표시되지 않을 수 있습니다. ‘설정’ → ‘앱’ → 해당 클라이언트 → ‘알림’에서 서비스 알림을 허용하면 연결 상태를 확인하기 편합니다. 알림 권한과 VPN 권한은 별개의 설정입니다.

배터리 최적화 제외, 백그라운드 실행, 자동 시작: 각 설정의 역할

‘배터리 최적화 제외’, ‘백그라운드 활동 허용’, ‘자동 시작’은 서로 다른 설정입니다. 하나만 켜서는 모든 상황에서 시스템이 연결을 유지한다고 보장할 수 없습니다. 각 설정의 범위를 이해한 뒤 기기에서 실제로 나타나는 현상에 따라 조정하세요.

설정 주요 기능 보장하지 않는 동작
배터리 사용량 ‘제한 없음’ 앱에 적용되는 백그라운드 배터리 제한을 줄입니다. 구체적인 적용 방식은 시스템에 따라 다릅니다. 프로세스가 절대 종료되지 않는다는 뜻은 아니며, 사용할 수 없는 노드를 복구해 주지도 않습니다.
백그라운드 활동 허용 앱 화면을 닫은 뒤에도 필요한 작업을 계속 수행할 수 있도록 허용합니다. 휴대전화를 재시작한 뒤 자동으로 연결된다는 뜻은 아닙니다.
자동 시작 또는 백그라운드 자동 시작 일부 시스템 이벤트에 따른 앱 실행을 허용합니다. 부팅 후 시작 또는 연결 복구 기능은 클라이언트에서도 지원해야 합니다.
최근 앱에서 고정 일부 제조사 시스템에서 ‘모두 지우기’를 눌렀을 때 앱이 실수로 종료되는 일을 줄입니다. Android 표준의 백그라운드 실행 보장이 아니며, 강제 중지를 막을 수도 없습니다.

설정을 변경한 뒤 클라이언트를 다시 열고 한 번 직접 연결하세요. 시스템에서 ‘강제 중지’를 눌렀다면 일반적으로 사용자가 앱을 다시 실행해야 백그라운드 동작이 정상적으로 재개됩니다. 배터리 옵션을 ‘제한 없음’으로 바꾸기만 해서는 이미 중지된 서비스가 자동으로 연결되지 않습니다.

주요 Android 기기에서 배터리 최적화 제외 설정하기

아래는 일반적인 시스템 버전에서 설정에 들어가는 경로입니다. 모든 기기에서 메뉴 이름이 같은 것은 아닙니다. 시스템 업데이트, 지역별 버전, 제조사 맞춤 설정에 따라 메뉴 위치가 달라질 수 있습니다. 경로를 찾기 어렵다면 앱 아이콘을 길게 눌러 ‘앱 정보’로 이동한 다음 ‘배터리’, ‘배터리 사용량 관리’, ‘자동 시작’ 등을 찾아보세요.

Pixel 및 순정에 가까운 Android 14·15

  • ‘설정’ → ‘앱’ → ‘모든 앱 보기’ → 해당 클라이언트 → ‘앱 배터리 사용량’으로 이동합니다.
  • ‘백그라운드 사용 허용’을 켭니다. 이 화면에 ‘제한 없음’이 있으면 해당 옵션을 선택하세요. 버전에 따라 백그라운드 사용 설정을 눌러야 제한 옵션이 표시될 수 있습니다.
  • 같은 앱의 ‘알림’ 화면으로 이동해 서비스 알림이 꺼져 있지 않은지 확인합니다.

순정 Android에는 보통 제조사 기기처럼 ‘자동 시작 관리’ 목록이 없습니다. 재부팅 후 앱을 다시 실행할 수 있는지는 클라이언트의 시작 옵션, 시스템 제한 및 기기 잠금 해제 상태에 따라 달라집니다.

Xiaomi MIUI 14 및 HyperOS

  • 일반적인 배터리 설정 경로는 ‘설정’ → ‘앱 설정’ → ‘앱 관리’ → 해당 클라이언트 → ‘배터리 절약’입니다. 여기서 ‘제한 없음’을 선택합니다.
  • 자동 시작 설정은 보통 ‘설정’ → ‘앱 설정’ → ‘권한 관리’ → ‘자동 시작 관리’에 있습니다. 일부 HyperOS 버전에는 ‘백그라운드 자동 시작’으로 표시됩니다.
  • 최근 앱 화면에서 앱을 잠글 수 있다면 클라이언트 카드를 잠가 필요할 때 사용하세요. 수동으로 정리할 때 앱이 종료될 가능성을 줄일 수 있습니다.

일부 버전에서는 앱 배터리 설정이 ‘설정’ → ‘배터리 및 절전’ 아래에 있습니다. 해당 앱 정보 화면에 실제로 표시되는 옵션을 기준으로 설정하세요. ‘다른 앱 위에 표시’를 VPN 실행에 필요한 권한으로 오해하지 마세요.

Samsung One UI 6·7

  • ‘설정’ → ‘애플리케이션’ → 해당 클라이언트 → ‘배터리’로 이동한 뒤 ‘제한 없음’을 선택합니다.
  • ‘설정’ → ‘배터리’ → ‘백그라운드 사용 제한’으로 이동해 ‘절전 상태 앱’과 ‘초절전 상태 앱’을 확인하고 클라이언트를 목록에서 삭제합니다.
  • ‘절전 모드로 전환하지 않는 앱’ 항목이 있으면 클라이언트를 추가해 볼 수 있습니다. 일부 버전에서는 이미 ‘제한 없음’으로 설정한 앱을 다른 목록에 표시할 수 있습니다.

절전 모드는 백그라운드 네트워크와 시스템 동작에 영향을 줄 수 있습니다. 절전 모드를 켠 뒤에만 문제가 발생한다면 먼저 절전 모드를 끄고 비교해 본 다음 평소 사용 방식을 조정할지 결정하세요.

OPPO·OnePlus: ColorOS 및 OxygenOS

일반적인 경로는 ‘설정’ → ‘앱’ → ‘앱 관리’ → 해당 클라이언트 → ‘배터리 사용량 관리’ 또는 ‘배터리 사용량’입니다. ‘백그라운드 활동 허용’이나 ‘자동 시작 허용’이 있으면 필요에 따라 켜세요. 일부 버전에는 ‘배터리’ → ‘추가 설정’ → ‘배터리 사용 최적화’가 있으며, 여기서 클라이언트를 찾아 최적화 설정을 변경할 수 있습니다.

vivo·iQOO 및 Honor 기기

vivo·iQOO의 OriginOS에서는 보통 ‘설정’ → ‘배터리’ → ‘백그라운드 배터리 사용 관리’로 이동해 클라이언트의 백그라운드 고전력 사용을 허용합니다. 자동 시작은 i 관리자 앱의 ‘앱 관리’ → ‘권한 관리’에서 찾을 수 있습니다. Honor MagicOS에서는 보통 ‘설정’ → ‘앱’ → ‘앱 시작 관리’에서 자동 관리를 끈 뒤 필요에 따라 자동 시작, 관련 앱 시작 및 백그라운드 활동을 허용합니다. 버전에 따라 설정이 통합될 수 있으므로 시스템 안내를 확인하세요.

VPN 상시 연결, 앱별 프록시 및 DNS 설정 시 주의사항

‘VPN 상시 연결’은 프로세스를 백그라운드에서 유지하는 기능이 아닙니다

시스템 VPN 설정은 보통 ‘설정’ → ‘네트워크 및 인터넷’ → ‘VPN’에 있습니다. Samsung 등 일부 시스템에서는 ‘연결’ → ‘기타 연결 설정’ → ‘VPN’에 있습니다. 클라이언트 옆의 설정을 눌렀을 때 앱과 시스템이 지원하는 경우에만 ‘VPN 상시 연결’ 옵션이 표시됩니다. 이 옵션으로 시스템이 VPN 연결을 유지하거나 복구하도록 시도할 수 있지만, 앱이 비정상 종료될 때마다 자동으로 복구된다는 뜻은 아닙니다.

‘VPN 미사용 연결 차단’은 더 강력한 제한입니다. VPN에 연결되지 않은 동안 네트워크가 차단될 수 있습니다. 호텔이나 공항의 포털 로그인 페이지를 사용하거나 불안정한 설정을 테스트해야 한다면 우선 이 옵션을 끄세요. 사용하기 전에 연결 해제, 재연결, 재부팅 후 동작을 확인하고, 필요할 때 시스템 VPN 설정으로 돌아가 끌 수 있는 방법도 알아두세요.

특정 앱만 연결되지 않는다면 앱별 적용 범위를 확인하세요

Android 클라이언트에는 ‘선택한 앱 우회’ 또는 ‘선택한 앱만 프록시 사용’ 옵션이 있을 수 있습니다. 두 옵션은 동작이 반대입니다. 전자는 목록의 앱을 제외하고, 후자는 목록에 있는 앱만 처리합니다. 브라우저는 정상인데 다른 앱에서 문제가 생기면 현재 목록의 의미를 확인한 다음 도메인 규칙을 점검하세요. 업무 프로필 앱은 개인 프로필의 VPN 적용 대상이 아닐 수도 있습니다.

비공개 DNS와 클라이언트 DNS를 혼동하지 마세요

Android의 ‘비공개 DNS’는 시스템 수준의 DNS over TLS 설정입니다. 클라이언트 설정의 dns:는 프록시 코어와 클라이언트의 트래픽 처리 방식에 따라 달라집니다. 두 기능의 상호 작용은 DNS 라우팅, VPN 구현 방식 및 앱 자체의 암호화 DNS 지원 여부에 따라 달라집니다. VPN을 켜면 모든 앱의 DNS 요청이 반드시 같은 DNS 서버를 거친다고 가정하지 마세요.

로그에 도메인 조회 시간 초과가 표시된다면 시스템 비공개 DNS를 지정된 호스트 이름에서 ‘자동’으로 바꾸고 브라우저의 보안 DNS를 잠시 끈 뒤 하나씩 비교해 볼 수 있습니다. 원인을 확인한 다음 장기 설정을 선택하세요. 모든 암호화 DNS를 끄는 것을 고정된 설치 절차로 삼거나, 코어와 호환되지 않는 DNS 가로채기 설정을 그대로 복사하지 마세요.

화면을 잠근 뒤 연결이 끊길 때: 앱 종료, 네트워크 전환, 노드 오류 구분하기

‘화면을 잠근 뒤 인터넷이 안 된다’는 것은 단지 증상일 뿐입니다. 시스템이 앱을 종료했거나 Wi-Fi에서 모바일 네트워크로 전환했거나, 노드 연결이 끊겼거나, DNS 요청이 시간 초과된 경우에도 웹페이지가 열리지 않을 수 있습니다. 먼저 상태를 확인한 뒤 설정을 조정하면 앱을 반복해서 재설치하는 일을 줄일 수 있습니다.

확인된 증상 우선 확인할 항목 다음 조치
VPN 아이콘이 사라지고 클라이언트가 중지 상태로 표시됨 앱 프로세스 종료, 다른 VPN의 연결 대체, 시스템 백그라운드 제한 백그라운드 권한과 종료 직전 로그를 확인하고 다른 VPN 앱을 잠시 중지합니다.
VPN은 연결되어 있지만 프록시 요청이 시간 초과됨 노드 사용 가능 여부, 네트워크 전환, 정책 그룹 선택 사용 가능한 노드로 바꾼 뒤 Wi-Fi와 모바일 네트워크에서 각각 테스트합니다.
일부 도메인만 열리지 않음 DNS, 규칙 적용 여부, 대상 서비스 상태 해당 도메인의 연결 로그, 적용된 정책 및 DNS 오류를 확인합니다.
재부팅 후에는 연결되지 않지만 수동으로 시작하면 정상 작동함 클라이언트의 부팅 후 시작 옵션 및 시스템 자동 시작 권한 기기의 잠금을 해제한 뒤 복구 동작을 확인하고 VPN 상시 연결을 사용할지 결정합니다.

정해진 절차로 재현하고 테스트 시간을 시스템 보장 기준으로 여기지 마세요

  1. 휴대전화 모델, Android 버전, 클라이언트 버전 및 코어 버전을 기록하고 현재 설정 화면을 저장합니다.
  2. Wi-Fi 연결을 유지한 상태에서 프록시를 시작하고 확인할 웹사이트에 접속합니다. 테스트 시간과 적용 중인 정책도 기록하세요.
  3. 화면을 10분간 잠근 뒤 잠금을 해제하고 새 요청을 보냅니다. 10분은 첫 번째 테스트 시간일 뿐, Android 전체에 적용되는 프로세스 종료 기준이 아닙니다.
  4. 화면을 30분간 잠그는 테스트를 한 번 더 진행한 다음, Wi-Fi를 끄고 모바일 네트워크로 전환한 뒤 새 연결을 별도로 테스트합니다.
  5. 한 번에 변수 하나만 조정하세요. 예를 들어 배터리 정책만 변경하면 설정이 실제로 효과가 있는지 확인하기 쉽습니다.

네트워크가 전환되면 VPN 서비스가 계속 실행 중이어도 기존 TCP 연결이 끊길 수 있습니다. 판단 기준은 새 연결이 복구되는지 여부로 삼으세요. 진행 중인 모든 연결이 끊김 없이 유지되어야 한다고 기대할 필요는 없습니다.

로그에서 timeout, DNS, network unreachable 등의 메시지를 먼저 검색한 다음 발생 시간을 기준으로 살펴보세요. 문제를 제보할 때는 구독 URL, 액세스 토큰, 노드 비밀번호 및 개인 접속 기록을 삭제하고 관련 오류 전후 내용만 남기세요.

Android Clash 백그라운드 실행 관련 자주 묻는 질문

연결할 때마다 VPN 권한을 요청하는데 정상인가요?

같은 앱에 권한을 한 번 허용했다면 일반적으로 매번 다시 확인할 필요는 없습니다. 다른 VPN을 사용했거나 클라이언트를 재설치했거나 프로필 공간을 전환했거나 기기 관리 정책이 변경되었다면 권한을 다시 요청할 수 있습니다. 먼저 권한 요청 창의 앱 이름을 확인하세요. 시스템 권한 안내를 구독 갱신 안내로 오해하지 마세요.

최근 앱에서 카드를 지우면 프록시가 반드시 중지되나요?

반드시 그렇지는 않습니다. 표준 Android에서는 최근 앱 카드를 지우는 것과 앱을 강제 중지하는 것은 다르며, 포그라운드 서비스가 계속 실행될 수 있습니다. 제조사 시스템이나 클라이언트에 별도의 종료 방식이 있을 수도 있으므로 VPN 상태와 클라이언트 로그를 확인하세요. 연결을 계속 유지하려면 시스템의 ‘모두 지우기’ 기능을 사용하지 말고 제조사의 백그라운드 관리 설정도 확인하세요.

자동 시작을 켰는데도 재부팅 후 직접 연결해야 하는 이유는 무엇인가요?

시스템의 자동 시작 허용은 앱이 시작될 수 있도록 조건을 열어 주는 기능일 뿐입니다. 클라이언트에서도 부팅 후 시작 또는 연결 복구 기능을 구현하고 활성화해야 하며, 설정 파일을 읽을 수 있어야 합니다. 일부 기능은 기기를 처음 잠금 해제한 뒤에야 동작할 수 있습니다. 클라이언트에 관련 기능이 없다면 시스템의 자동 시작 설정만으로 자동 연결할 수 없습니다.

화면을 끄면 연결이 끊깁니다. 구독을 먼저 바꿔야 하나요?

먼저 클라이언트가 계속 실행 중인지 확인하세요. 서비스가 중지되었다면 백그라운드 제한이나 VPN 충돌부터 해결해야 합니다. 서비스가 실행 중인데 같은 네트워크에서 여러 노드가 모두 실패한다면 네트워크와 DNS를 확인하세요. 특정 노드에서만 오류가 발생하고 노드를 바꾸면 해결되는 경우에야 노드 문제를 의심할 만한 근거가 있습니다.

설정 후에는 VPN 권한 허용, 화면을 벗어난 뒤 새 연결 생성, 화면 잠금 후 요청 복구, 네트워크 전환 후 재연결을 각각 확인하세요. 권한을 한꺼번에 모두 켜는 것보다 네 가지 항목을 따로 테스트하면 문제 원인을 찾기 쉽고 시스템 업데이트 후에도 다시 점검하기 편합니다.