안드로이드에서 앱마다 VPN 연결 여부를 나누려면 먼저 두 가지 기능을 구별해야 합니다. 하나는 특정 앱의 트래픽을 VPN 터널로 보내고 나머지는 기기의 일반 네트워크로 보내는 앱별 분할 터널링이고, 다른 하나는 도메인이나 IP 주소에 따라 프록시와 직접 연결을 선택하는 규칙 라우팅입니다. 두 기능은 비슷해 보이지만 기준이 다릅니다. 앱별 설정은 패키지 단위로 동작하고, 도메인 규칙은 앱과 관계없이 요청 대상에 따라 적용될 수 있습니다.
또한 “직접 연결”은 VPN 앱을 완전히 끄는 것과 다릅니다. 분할 터널링이 제대로 설정되면 일부 앱은 VPN을 통과하고 다른 앱은 통신사나 Wi-Fi의 일반 연결을 사용합니다. 다만 실제 동작은 클라이언트의 모드, Android 버전, 앱별 권한 및 DNS 설정에 따라 달라질 수 있습니다. 메뉴 이름만 보고 판단하지 말고, 설정을 저장한 뒤 앱별로 연결 경로를 확인하는 것이 안전합니다.
안드로이드 분할 터널링의 작동 방식
Android VPN 클라이언트는 시스템의 VPN 인터페이스를 이용해 기기 트래픽을 가상 네트워크로 전달할 수 있습니다. 앱이 VPN 연결을 만들 때 허용할 앱이나 제외할 앱을 지정하는 기능도 제공할 수 있습니다. 이 목록의 실제 구성 방법과 지원 범위는 클라이언트마다 다릅니다. 어떤 앱은 VPN에 포함할 앱을 선택하고, 다른 앱은 VPN에서 제외할 앱을 선택하게 하므로 저장 전에 목록의 기준이 “포함”인지 “제외”인지 확인해야 합니다.
규칙 라우팅은 조금 다른 층에서 작동합니다. sing-box 계열이나 Android용 프록시 클라이언트는 설정에 따라 도메인, IP, 네트워크 또는 앱 식별 정보를 이용해 요청을 서로 다른 출구로 보낼 수 있습니다. 하지만 모든 클라이언트가 앱 이름을 규칙 조건으로 지원하는 것은 아닙니다. 구독을 가져올 수 있다는 사실만으로 앱별 규칙까지 편집할 수 있다고 볼 수는 없습니다. 클라이언트가 실제로 제공하는 라우팅 옵션과 가져온 프로필의 편집 권한을 먼저 살펴보세요.
| 설정 기준 | 주요 동작 | 확인할 점 |
|---|---|---|
| 앱별 포함 목록 | 선택한 앱의 트래픽을 VPN으로 전달 | 목록에 없는 앱이 직접 연결되는지 확인 |
| 앱별 제외 목록 | 선택한 앱을 VPN 터널에서 제외 | 제외 앱의 트래픽이 일반 네트워크로 나가는지 확인 |
| 도메인 규칙 | 요청 대상에 따라 프록시 또는 직접 연결을 선택 | 앱이 사용하는 실제 도메인과 DNS 처리 방식 확인 |
| 시스템 프록시 | 프록시 설정을 따르는 앱의 연결에 적용 | 프록시를 무시하는 앱에는 적용되지 않을 수 있음 |
Android에는 보통 한 번에 활성화할 수 있는 시스템 VPN 연결이 하나뿐입니다. 다른 VPN 앱을 켜면 기존 연결이 끊기거나 새 연결을 만들 수 없다는 알림이 표시될 수 있습니다. 따라서 VPN 기능을 사용하는 프록시 클라이언트와 별도의 VPN 앱을 동시에 켜 두는 방식은 피하세요. 앱마다 다른 경로가 필요하다면 하나의 클라이언트 안에서 분할 터널링이나 규칙 라우팅을 구성하는 편이 혼선을 줄입니다.
클라이언트와 라우팅 모드 선택하기
먼저 현재 사용하는 클라이언트가 Android에서 어떤 연결 모드를 제공하는지 확인합니다. Android용 sing-box 클라이언트나 일부 Clash 계열 클라이언트는 VPN 모드 또는 앱별 라우팅 기능을 제공할 수 있지만, 기능명과 지원 조건은 버전 및 빌드에 따라 다릅니다. 데스크톱용 Clash Verge 설정 화면을 Android에서도 그대로 찾을 수 있다고 가정하지 마세요. Shadowrocket은 iOS용 클라이언트이므로 Android 앱별 설정 안내에 그대로 적용할 수 없습니다.
구독 프로필을 사용하는 경우에는 구독이 노드와 기본 규칙을 제공하더라도 로컬 앱별 제외 목록이 별도로 저장될 수 있습니다. 프로필을 바꾸거나 갱신할 때 로컬 설정이 유지되는지 확인하고, 원본 구독이 읽기 전용이라면 클라이언트가 제공하는 로컬 오버라이드 기능을 이용하세요. 지원되지 않는 설정을 임의로 추가하면 프로필 파싱 오류가 나거나 클라이언트가 규칙을 무시할 수 있습니다.
- ✅ 설정 화면에서 VPN 모드와 앱별 포함·제외 기능이 실제로 제공되는지 확인하세요.
- ✅ 앱별 구성이 목적이면 도메인 규칙만으로 해결하려 하지 마세요.
- ✅ 웹사이트별 구성이 목적이면 앱 제외 목록보다 도메인 규칙을 우선 검토하세요.
- ✅ 구독 업데이트 전에는 로컬 규칙이 보존되는지 확인하세요.
- ❌ Android 시스템 프록시가 모든 앱에 적용된다고 가정하지 마세요.
- ❌ 두 개의 VPN 앱을 동시에 켜서 경로를 조합하려 하지 마세요.
앱별 프록시와 직접 연결 설정하기
메뉴 이름은 앱마다 달라도 다음 순서로 설정하면 실수를 줄일 수 있습니다. 먼저 클라이언트에서 프로필을 가져오고 기본 연결이 정상인지 확인합니다. 처음부터 여러 규칙을 동시에 바꾸면 연결 실패 원인이 노드, 프로필, DNS, 앱 목록 중 어디에 있는지 구분하기 어렵습니다.
- VPN 모드를 선택합니다. 클라이언트의 연결 화면에서 Android VPN 또는 터널 모드를 활성화하고, 시스템 권한 요청이 표시되면 앱 이름을 확인한 뒤 허용합니다.
- 앱별 라우팅 메뉴를 엽니다. 설정, 분할 터널링, 앱 필터 또는 유사한 이름의 항목을 찾습니다. 메뉴가 없다면 현재 클라이언트나 프로필이 앱별 제어를 지원하지 않을 수 있습니다.
- 목록의 의미를 확인합니다. “선택한 앱만 VPN 사용”은 포함 방식이고, “선택한 앱은 VPN 사용 안 함”은 제외 방식입니다. 원하는 결과와 반대되는 목록을 선택하지 않도록 설명 문구를 읽으세요.
- 앱을 선택하고 저장합니다. 앱 이름뿐 아니라 업무용 프로필이나 복제 앱처럼 같은 앱이 여러 개 표시되는지도 확인합니다. 필요한 앱을 빠뜨리거나 비슷한 아이콘의 다른 앱을 선택하지 않도록 합니다.
- 연결을 다시 시작합니다. 규칙 저장 후 VPN 연결을 끊었다가 다시 켭니다. 일부 클라이언트는 목록 변경을 즉시 적용하지만, 재연결해야 새 라우팅 테이블을 반영하는 경우도 있습니다.
- 앱마다 결과를 시험합니다. VPN을 사용하도록 지정한 앱과 직접 연결하도록 지정한 앱을 각각 열어 동작을 확인합니다. 한 앱의 성공만으로 전체 설정이 맞다고 판단하지 마세요.
“직접 연결” 항목은 대개 VPN 터널을 통과시키지 않는다는 뜻이지, 특정 앱이 반드시 안전하거나 익명이라는 뜻은 아닙니다. 해당 앱의 요청은 통신사나 Wi-Fi 네트워크의 일반 경로로 나갈 수 있습니다. 반대로 앱을 VPN에 포함했더라도 앱 내부에 별도 프록시가 설정되어 있거나 자체 DNS 방식을 사용하면 예상한 경로와 달라질 수 있습니다.
라우팅과 DNS를 확인하는 방법
설정을 검증할 때는 앱별로 같은 절차를 사용합니다. 먼저 VPN을 켠 상태에서 VPN 포함 앱의 네트워크 기능이 정상인지 살펴보고, 이어서 직접 연결 앱도 열어 봅니다. 직접 연결 앱이 VPN 포함 앱과 같은 출구를 사용한다고 해서 곧바로 설정 오류라고 단정할 수는 없습니다. 앱이 자체 프록시를 사용하거나 클라이언트가 전체 트래픽 모드로 동작할 수 있으므로, 선택한 목록의 기준과 클라이언트의 연결 모드를 함께 확인해야 합니다.
DNS도 경로 판정에 영향을 줍니다. 도메인 규칙은 이름을 어떤 DNS 서버에서 해석하는지에 따라 매칭 결과가 달라질 수 있고, Android의 비공개 DNS 설정이나 브라우저의 보안 DNS가 클라이언트 규칙과 다른 방식으로 이름을 조회할 수도 있습니다. 규칙이 도메인 기반인데 특정 사이트만 예상과 다르게 연결된다면, 앱별 목록뿐 아니라 DNS 모드와 도메인 매칭 옵션도 점검하세요.
Android의 “항상 켜짐 VPN”이나 “VPN 없이 연결 차단” 기능을 켠 상태에서는 직접 연결 앱이 통신하지 못할 수 있습니다. 특히 VPN을 우회하도록 지정한 앱과 VPN이 끊겼을 때 차단하는 시스템 옵션이 함께 작동하면, 클라이언트의 구현 방식에 따라 직접 연결이 허용되지 않을 수 있습니다. 분할 터널링을 사용하면서 이 옵션을 변경할 때는 보안 요구와 앱별 연결 정책이 서로 충돌하지 않는지 확인하고, 문제가 생기면 원래 상태로 되돌릴 수 있도록 현재 설정을 기록해 두세요.
연결 오류 해결과 설정 초기화
VPN을 켠 뒤 일부 앱만 접속되지 않는다면 앱 목록의 포함·제외 방향부터 다시 확인합니다. 모든 앱이 실패한다면 분할 터널링 규칙보다 먼저 클라이언트 연결 상태, 구독 갱신 여부, 선택한 노드와 프로토콜 호환성을 점검하세요. 연결은 정상인데 특정 사이트만 열리지 않으면 도메인 규칙, DNS 처리 또는 해당 앱의 자체 프록시 설정을 확인하는 편이 효율적입니다.
- VPN 권한 오류: Android 설정에서 기존 VPN 연결이 남아 있는지 확인하고 다른 VPN 앱을 종료한 뒤 클라이언트를 다시 연결합니다.
- 앱 목록 변경이 반영되지 않음: 설정을 저장했는지 확인하고 VPN을 재연결합니다. 앱을 강제 종료한 뒤 다시 실행해야 새 연결을 사용하는 경우도 있습니다.
- 직접 연결 앱이 차단됨: 항상 켜짐 VPN의 차단 옵션, 클라이언트의 전체 터널 모드, 제외 목록의 의미를 차례로 확인합니다.
- 일부 도메인만 예상과 다른 경로를 사용함: 규칙의 우선순위와 도메인 매칭 방식, DNS 모드를 확인합니다.
- 업데이트 뒤 설정이 사라짐: 프로필 갱신이 로컬 오버라이드를 덮어썼는지 확인하고 지원되는 방식으로 규칙을 다시 적용합니다.
초기화가 필요하면 먼저 현재 목록과 연결 모드를 기록합니다. 클라이언트의 앱별 규칙만 기본값으로 되돌릴 수 있다면 전체 데이터를 삭제하기 전에 해당 메뉴의 재설정 기능을 사용하세요. 전체 앱 데이터를 지우거나 프로필을 삭제하면 구독 정보와 로컬 규칙까지 함께 사라질 수 있습니다. 초기화 후에는 프로필을 다시 가져오고, VPN 모드와 앱 목록을 하나씩 구성한 다음 두 종류의 앱에서 각각 연결 결과를 검증합니다.
자주 묻는 질문
직접 연결로 지정한 앱은 VPN을 완전히 끈 것과 같은가요?
아닙니다. 일반적으로 해당 앱의 트래픽만 VPN 터널에서 제외한다는 의미입니다. VPN을 사용하는 다른 앱은 계속 터널을 이용할 수 있으며, 직접 연결 앱의 트래픽은 통신사나 Wi-Fi의 일반 네트워크로 나갈 수 있습니다. 항상 켜짐 VPN의 차단 옵션이나 클라이언트의 전체 터널 설정이 함께 적용되는지도 확인해야 합니다.
Android의 시스템 프록시 설정으로 앱마다 경로를 나눌 수 있나요?
보장할 수 없습니다. 시스템 프록시 설정을 따르는 앱에만 적용될 수 있으며, 프록시 설정을 무시하거나 자체 네트워크 방식을 사용하는 앱은 다른 경로를 사용할 수 있습니다. 앱별 제어가 목적이라면 클라이언트가 제공하는 Android VPN 기반 앱 필터를 확인하세요.
구독을 업데이트하면 앱별 규칙도 바뀌나요?
클라이언트가 구독 설정과 로컬 앱별 규칙을 어떻게 분리하는지에 따라 다릅니다. 업데이트 전에 규칙이 유지되는지 확인하고, 중요한 설정은 변경 내용을 기록해 두세요. 구독을 가져올 수 있다는 사실만으로 모든 로컬 설정의 보존 여부를 판단할 수는 없습니다.
프록시 앱과 다른 VPN 앱을 함께 실행할 수 있나요?
Android의 시스템 VPN 기능은 일반적으로 한 번에 하나의 VPN 연결만 활성화할 수 있습니다. 두 앱을 동시에 사용하려고 하면 기존 연결이 종료되거나 새 연결이 거부될 수 있으므로, 앱별 분할 라우팅은 한 클라이언트의 지원 기능 안에서 구성하는 것이 좋습니다.