수동 연결은 할 수 있고 네트워크 환경에 따라 자동으로 연결하거나 연결을 끊고 싶은 사용자를 위한 안내입니다. On Demand와 트래픽 분기를 먼저 구분한 다음, ‘지정 Wi-Fi 예외, 셀룰러 네트워크 연결, 기타 네트워크 기본 조건’ 순서로 설정하세요. 마지막으로 도메인 조건을 확인하고 완전히 비활성화하는 방법을 알아봅니다. 여기서는 iPhone / iPad의 시스템 VPN On Demand 기능을 중심으로 설명하며, 다른 플랫폼에 동일한 메뉴 경로를 적용하지 않습니다.
1. 자동 연결과 규칙 기반 트래픽 분리 구분하기
Shadowrocket의 On Demand는 시스템이 VPN 연결을 시도하는 시점을 관리합니다. 연결이 설정된 뒤 요청을 어떻게 처리할지는 Global Routing 및 현재 구성에 따라 달라집니다. 상태 표시줄에 VPN 아이콘이 보여도 모든 요청이 프록시를 거치는 것은 아닙니다. 특정 웹사이트에 DIRECT가 적용되어도 시스템이 VPN 연결을 끊는 것은 아닙니다.
이용 방법은 두 가지입니다. iPhone / iPad 버전은 App Store에서 $2.99 일회성 결제로 이용할 수 있으며, 개발자는 Shadow Launch Technology Limited입니다. 시스템 요구 사항은 App Store 페이지를 확인하세요. Mac(Apple 실리콘 / Intel), Windows, Android, Linux 버전은 무료입니다. 기기별 다운로드 경로는 전체 플랫폼 다운로드 페이지에서 확인할 수 있습니다. 이 글은 사용자가 직접 보유한 서비스와 구독이 있다는 전제로 작성되었습니다. 앱에는 연결 서비스가 포함되지 않으며, 이 사이트는 노드나 구독을 제공·판매·추천하지 않습니다.
웹사이트별로 트래픽을 분리하려면 Home에서 Global Routing을 확인하고, Config를 선택한 뒤 해당 Config가 실제로 활성화되어 있는지 확인하세요. Proxy, Direct, Config, Scene은 라우팅 모드이며 On Demand의 연결 동작과는 다릅니다. 특히 Global Routing의 Direct를 시스템 On Demand 규칙의 Disconnect와 혼동하지 마세요. 전자는 요청 전달 방식을, 후자는 터널 연결 여부를 결정합니다.
2. 사용 설정 전 수동 연결 한 번 완료하기
자동화 기능으로 잘못된 연결 설정을 바로잡을 수는 없습니다. 먼저 Home에서 직접 보유한 연결 구성을 선택하고 수동으로 연결한 다음, 접속 가능한 것으로 확인된 사이트를 열어 보세요. 이 단계에서 실패하면 On Demand를 설정하기 전에 서버 주소, 포트, 인증 정보, 프로토콜 매개변수를 확인해야 합니다. 서버를 바꾸거나 DNS를 수정하고 트래픽 분기 규칙까지 동시에 조정하지 마세요. 어떤 변경이 결과에 영향을 줬는지 알기 어렵습니다.
- Home에서 현재 선택된 연결 항목을 확인하세요. 구독을 가져온 항목이라면 먼저 정상적으로 업데이트해 구성이 비어 있지 않은지 확인합니다.
- 사용 중인 서버와 프로토콜이 일치하는지 확인하세요. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard의 인증 및 전송 매개변수는 서로 바꿔 쓸 수 없습니다.
- 수동으로 연결하고 시스템 안내에 따라 VPN 구성 추가를 허용하세요. 연결 스위치만 확인하지 말고 브라우저에서 실제 접속을 테스트합니다.
- Settings → On Demand로 이동해 현재 규칙과 순서를 기록한 다음, 네트워크 조건을 추가하세요.
- 한 번에 조건 하나만 수정하고 저장하세요. Home으로 돌아가 연결 상태를 확인한 뒤 실제로 네트워크를 전환해 테스트합니다.
3. 지정 Wi-Fi: 예외를 먼저 설정하고 나머지 네트워크 처리하기
‘집 Wi-Fi에서는 터널을 연결하지 않고, 다른 Wi-Fi에서는 연결 시도’를 예로 들어 보겠습니다. 먼저 시스템 Settings → Wi-Fi에서 현재 네트워크 이름을 확인하세요. SSID는 Wi-Fi 이름이며 라우터 브랜드, 게이트웨이 주소, 기기 이름이 아닙니다. 예시 이름 Home-WiFi는 기기에 실제로 표시되는 이름으로 바꿔야 합니다. 공백, 문장 부호, 이름에 들어간 문자도 하나씩 확인하세요.
Shadowrocket의 Settings → On Demand로 이동해 편집 가능한 Wi-Fi 조건에 해당 SSID를 지정하고 동작을 Disconnect로 설정하세요. 그런 다음 다른 Wi-Fi에는 Connect를 설정합니다. 시스템과 플랫폼에 따라 편집할 수 있는 항목이 다를 수 있습니다. 아래 카드는 조건과 동작의 관계를 보여 주는 것으로, 가져오기 가능한 구성 파일이 아닙니다. 현재 화면에서 제공하지 않는 조건을 대신하려고 Config에 도메인 규칙을 만들어 쓰지 마세요.
지정 Wi-Fi 예외
- 경로
- Settings → On Demand
- 네트워크 유형
- Wi-Fi
- SSID 예시
- Home-WiFi
- 동작
- Disconnect
- 규칙 순서
- 기타 Wi-Fi의 일반 조건보다 앞
SSID에는 실제 네트워크 이름을 입력하세요. 이름이 같은 네트워크는 동일한 조건에 해당할 수 있습니다.
기타 Wi-Fi
- 경로
- Settings → On Demand
- 네트워크 유형
- Wi-Fi
- SSID 지정
- 특정 이름을 지정하지 않는 일반 조건
- 동작
- Connect
- 규칙 순서
- 지정 SSID 예외 다음
일반 조건이 예외보다 앞에 있으면 지정한 네트워크도 먼저 Connect 조건에 해당할 수 있습니다.
SSID는 네트워크 이름만 나타내며 네트워크의 신뢰성을 보장하지 않습니다. 집의 라우터 이름을 바꾸거나, 2.4GHz와 5GHz 네트워크에 서로 다른 이름을 사용하거나, 게스트 네트워크의 이름이 다르면 매칭 범위를 다시 확인해야 합니다. 공용 Wi-Fi에서 인증 페이지를 열어야 한다면 먼저 네트워크 로그인을 완료하세요. 기본 네트워크가 인터넷에 연결되지 않은 상태에서는 Connect 동작을 설정해도 서버에 자동으로 접속할 수 없습니다.
4. 셀룰러 네트워크: 별도 조건으로 전환 확인하기
Wi-Fi에서 벗어났을 때 자동 연결하려면 셀룰러 네트워크에 Connect를 설정할 수 있습니다. 이 조건은 기기가 현재 사용하는 네트워크 인터페이스를 확인하며 SIM 카드에 표시된 이름이나 통신사를 기준으로 하지 않습니다. 셀룰러 기능을 지원하고 활성화한 iPad에서만 이 조건을 직접 테스트할 수 있습니다. 휴대전화 핫스팟에 연결한 기기는 보통 Wi-Fi 인터페이스를 사용하므로 연결된 SSID를 기준으로 확인해야 합니다.
- Settings → On Demand에서 셀룰러 네트워크 조건을 확인하고 원하는 동작을 Connect로 설정한 뒤 저장하세요.
- 지정 Wi-Fi의 Disconnect 예외는 그대로 두세요. 모든 상황에 적용되는 무조건 Connect 하나로 덮어쓰지 마세요.
- 시스템 Settings → Wi-Fi에서 Wi-Fi를 끄고 기기가 실제로 셀룰러 데이터를 사용하는지 확인하세요. 제어 센터에서 현재 네트워크 연결만 일시적으로 해제해서는 안 됩니다.
- 새 웹페이지를 열어 Home의 연결 상태와 접속 결과를 확인하세요. 시스템 작동은 네트워크 사용 가능 여부나 새 요청의 영향을 받을 수 있으므로, 전환 순간의 아이콘만으로 판단하지 마세요.
- 지정한 Home-WiFi에 다시 연결한 뒤 사이트를 열어 Disconnect 예외에 따라 연결 상태가 달라지는지 확인하세요.
5. 도메인 조건: 특정 웹페이지를 열면 전체 연결이 켜지고 꺼지는 기능이 아닙니다
시스템 VPN의 On Demand 기능은 EvaluateConnection과 같은 동작을 통해 도메인 확인 및 연결 가능성 조건에 따라 연결이 필요한지 판단할 수 있습니다. 네트워크 유형에 따라 바로 Connect하는 동작과는 다르며 브라우저 주소 표시줄을 읽는 기능도 아닙니다. 현재 편집 화면에 도메인 평가 조건이 실제로 제공될 때만 해당 동작을 설정하세요. 모든 플랫폼에서 동일한 도메인 조건을 편집할 수 있다고 가정하지 마세요.
도메인을 입력할 때는 example.com과 같은 호스트 이름을 사용하세요. https://example.com/path 같은 URL이나 웹페이지 제목은 입력하지 않습니다. 도메인 평가의 매칭 범위는 해당 필드의 정의에 따르므로 DOMAIN-SUFFIX의 의미를 그대로 적용할 수 없습니다. ‘DNS 조회 실패 시 연결’ 또는 ‘탐지 실패 시 연결’과 같은 조건이 있다면 실제로 제공되는 옵션에 따라 설정하고, 사용하는 DNS나 탐지 대상이 원하는 네트워크에서 작동하는지 확인하세요.
- 도메인 평가는 시스템이 관련 요청을 처리하는 동안 이루어집니다. DNS 캐시나 앱이 기존 연결을 재사용하면 페이지를 다시 열어도 처음 발생한 조건을 재현하지 못할 수 있습니다.
- 웹페이지는 이미지, 스크립트 및 다른 도메인의 리소스를 불러옵니다. 기본 페이지 도메인에 설정한 조건이 모든 제3자 요청에 자동으로 적용되는 것은 아닙니다.
- 브라우저 탭을 닫는 것은 터널 연결을 끊을 확실한 신호가 아닙니다. 페이지를 닫자마자 Disconnect된다고 보장할 수 없습니다.
- 앱이 자체적으로 DNS를 처리하거나 암호화된 DNS를 사용하거나 IP 주소로 직접 접속하면 조건이 작동하는 경로가 달라질 수 있습니다. 테스트할 때 시스템의 DNS 처리와 앱 동작을 따로 기록하세요.
목표가 ‘특정 웹사이트는 프록시로, 나머지는 직접 연결’이라면 보통 연결을 유지하고 Config에서 트래픽을 분기하는 편이 좋습니다. 도메인 조건으로 터널 연결을 자주 켜고 끄는 방식에 의존하지 마세요. 아래는 트래픽 분기 문법 예시이며 On Demand 설정이 아닙니다. PROXY는 현재 구성에서 실제로 사용할 수 있는 정책이어야 합니다.
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
두 줄의 규칙은 example.com과 하위 도메인에 PROXY를 적용하고 나머지 요청에는 DIRECT를 적용합니다. 해당 사이트를 벗어날 때 시스템이 VPN을 끄도록 하거나, 사이트에 필요한 다른 도메인을 자동으로 추가하지는 않습니다. 테스트 중에는 요청 기록에서 실제 대상과 적용된 정책을 확인한 뒤 필요한 규칙을 추가하세요.
6. 충돌 순서: On Demand 조건과 Config를 따로 확인하기
On Demand 연결과 요청 분기는 서로 다른 기준으로 판단하므로 따로 확인해야 합니다. 시스템의 On Demand 규칙은 순서대로 평가되며, 먼저 조건에 해당하는 규칙이 동작을 결정합니다. 연결 후 적용되는 Config 규칙도 순서가 중요하지만, 여기서 말하는 ‘일치’는 같은 의미가 아닙니다. Config의 맨 위로 DOMAIN-SUFFIX 규칙을 옮겨도 시스템 On Demand 목록의 Wi-Fi 예외 순서가 잘못된 문제는 해결되지 않습니다.
| 확인할 계층 | 충돌 사례 | 해결 방법 |
|---|---|---|
| On Demand | 일반 Wi-Fi Connect가 지정 SSID의 Disconnect보다 앞에 있음 | 지정 SSID 예외를 일반 Wi-Fi 조건보다 앞에 둔 다음 네트워크를 다시 전환하세요. |
| On Demand | 무조건 Connect가 먼저 조건에 해당함 | 구체적인 네트워크 및 도메인 평가 조건을 앞에 두고, 광범위한 기본 조건은 뒤에 배치하세요. |
| Global Routing | Direct 상태인데 Config의 PROXY 규칙이 적용되기를 기대함 | Home으로 돌아가 라우팅 모드를 확인하세요. Config를 선택한 뒤 실제 활성화된 구성을 확인합니다. |
| Config | 광범위한 규칙이 구체적인 도메인 규칙보다 앞에 있음 | 먼저 DOMAIN-SUFFIX 등 구체적인 조건을 확인하고, 그다음 GEOIP, IP-CIDR 등의 규칙과 마지막 FINAL을 확인하세요. |
FINAL을 On Demand의 기본 동작으로 사용하지 마세요. FINAL은 앞선 트래픽 분기 규칙에 해당하지 않는 요청만 처리하며 ‘다른 Wi-Fi에서 자동 연결’을 의미하지 않습니다. GEOIP와 IP-CIDR도 요청 대상 주소를 기준으로 매칭하는 규칙이지, 기기가 집 Wi-Fi나 셀룰러 네트워크에 연결되어 있는지 확인하는 규칙이 아닙니다.
7. 테스트 표로 문제를 찾고 자동 연결 끄기
유효한 테스트에는 전환 전 네트워크, 전환 후 네트워크, 연결 상태, 접속 결과가 포함되어야 합니다. 접속 가능한 동일한 대상을 고정하고 네트워크 조건을 한 번에 하나씩 바꾸세요. 네트워크 전환 중 이전 연결이 잠시 유지되는 것만 보고 규칙이 작동하지 않는다고 판단하지 마세요. 연결 상태와 대상 요청 기록을 함께 확인해야 합니다.
| 테스트 상황 | 기대 결과 | 결과가 다를 때 먼저 확인할 항목 |
|---|---|---|
| 다른 네트워크에서 Home-WiFi로 전환 | 지정 SSID의 Disconnect 조건 적용 | 실제 SSID, 규칙 순서, 변경 사항 저장 여부 |
| Home-WiFi에서 다른 Wi-Fi로 전환 | 일반 Wi-Fi Connect 조건 적용 | 일반 조건 설정 여부, 인증 페이지 완료 여부 |
| Wi-Fi를 끄고 셀룰러 데이터 사용 | 셀룰러 Connect 조건에 따라 연결 시도 | 셀룰러 데이터 권한, 네트워크 연결 가능 여부, 인터페이스 조건 |
| 연결 후 example.com 접속 | 현재 Config에 설정된 해당 정책 적용 | Global Routing, 활성화된 구성, 실제 요청 도메인 |
수동으로 연결을 끊었는데 왜 다시 자동 연결되나요?
먼저 Settings → On Demand에서 On Demand 연결을 비활성화하고 저장한 다음 Home에서 연결을 끊으세요. 그래도 시스템이 연결을 시작한다면 iPhone / iPad의 시스템 Settings → General → VPN & Device Management → VPN에서 해당 구성의 정보 페이지를 열고 Connect On Demand가 켜져 있는지 확인하세요. 표시되는 이름은 시스템 언어에 따라 다를 수 있습니다.
집 Wi-Fi로 돌아왔는데 계속 연결 상태로 표시되면 어떻게 하나요?
먼저 시스템의 Wi-Fi 화면에서 현재 SSID를 확인한 다음, 지정 SSID의 Disconnect가 일반 Connect보다 앞에 있는지 살펴보세요. 저장한 뒤 다른 네트워크로 전환했다가 해당 Wi-Fi에 다시 연결합니다. Shadowrocket에 해당하는 VPN 구성을 확인하고 있는지도 살펴보세요.
On Demand를 켰는데도 웹페이지가 열리지 않나요?
On Demand를 잠시 비활성화하고 Home에서 수동으로 연결해 같은 사이트에 접속해 보세요. 수동 연결도 실패하면 기본 네트워크, 서버 매개변수, DNS를 먼저 확인하세요. 수동 연결은 되지만 자동 연결이 작동하지 않는다면 네트워크 조건, 규칙 순서, 시스템 On Demand 설정을 확인합니다.
웹페이지를 닫아도 왜 자동으로 연결이 끊기지 않나요?
웹페이지를 닫는 것은 일반적인 On Demand Disconnect 조건이 아닙니다. 연결을 확실히 끊으려면 먼저 On Demand를 비활성화한 다음 수동으로 연결을 끊으세요. 다른 사이트를 직접 연결하려는 경우에는 터널을 유지하고 Config의 DIRECT 규칙을 사용하세요. 브라우저 탭 상태로 연결을 제어하지 마세요.
문제 해결을 마친 뒤 실제 요구에 맞춰 ‘지정 Wi-Fi 예외, 기타 Wi-Fi, 셀룰러 네트워크, 나머지 기본 조건’을 하나씩 복원하세요. 사용하지 않는 도메인 평가 조건은 남겨 둘 필요가 없습니다. 항목을 추가할 때마다 해당 테스트를 다시 실행해 연결 동작과 요청 정책이 각각 예상대로 작동하는지 확인한 뒤 설정을 마무리하세요.