핵심 내용

Shadowrocket의 On Demand는 시스템 VPN 터널을 언제 연결하거나 해제할지 관리하며, 연결 후 트래픽을 나누는 규칙과는 별개입니다. 직접 사용할 서버와 구독 정보가 있고 수동 연결이 가능한 사용자를 대상으로, 먼저 Wi-Fi와 셀룰러 네트워크를 구분하는 최소 규칙을 설정하고 도메인 조건을 따로 검증한 뒤 우선순위와 시스템 권한을 확인합니다. ‘연결됨’이 모든 요청이 프록시를 거친다는 뜻은 아닙니다.

먼저 On Demand와 Global Routing 구분하기

On Demand는 Settings → On Demand에서 설정합니다. 네트워크 인터페이스, Wi-Fi 이름, 도메인 평가 등의 조건에 따라 시스템 VPN 기능이 연결을 처리합니다. 예약 작업이 아니며 Shadowrocket이 전면에 열려 있는지 여부만으로 작동하지도 않습니다. 자동 연결에는 유효한 VPN 구성, 시스템 권한, 사용 가능한 네트워크가 필요합니다.

Global Routing은 터널이 연결된 뒤 요청을 어떻게 처리할지 결정합니다. Home의 Global Routing에는 Proxy, Direct, Config, Scene 등의 옵션이 있으며, Config는 현재 설정의 규칙에 따라 트래픽을 분배합니다. On Demand의 Connect가 Global Routing을 Proxy로 바꾸는 것은 아니며, Disconnect도 Direct로 바꾸지 않습니다. 문제를 확인할 때는 이 두 설정을 따로 살펴보세요.

네트워크 조건 변경 On Demand 조건 확인 시스템 터널 연결 요청 규칙에 따라 분배 아웃바운드 정책 적용

예를 들어 셀룰러 네트워크에서 Connect 조건이 충족되어도 Global Routing이 Config라면 DIRECT와 일치하는 요청은 직접 연결되고, 프록시 정책에 해당하는 요청만 지정된 아웃바운드를 사용합니다. 반대로 Config에 DOMAIN-SUFFIX 규칙이 있다고 해서 해당 도메인에 접속할 때 터널이 자동으로 연결되는 것은 아닙니다.

2개 계층
터널 연결 조건과 연결 후 요청 분배를 각각 확인
3단계
Settings → On Demand → 조건과 동작 확인
1개
검증할 때마다 조건 하나만 바꿔 결과를 비교

확인 순서: 먼저 터널, 다음으로 아웃바운드

자동 연결되지 않으면 먼저 On Demand를 확인하세요. 시스템에 연결됨으로 표시되는데 요청 경로가 예상과 다르다면 Global Routing과 Config를 확인합니다. 관련 없는 설정을 반복해서 바꾸지 마세요.

사용 전 준비: 수동 연결로 기준 상태 확인

자동화 규칙으로 작동하지 않는 연결 정보를 해결할 수는 없습니다. 시작하기 전에 Home에서 기존 구성 하나를 선택해 수동으로 연결하고, 시스템에서 VPN 구성을 추가하도록 허용했는지 확인한 다음 실제로 사용하려는 대상에 접속해 보세요. 구독은 기존 연결 정보를 제공하고 업데이트할 뿐, Wi-Fi 조건이나 도메인 트리거 방식을 정해 주지는 않습니다.

  1. 현재 설정 기록: Home에서 선택한 항목, Global Routing 옵션, Config에서 사용 중인 구성을 적어 둡니다. 기존 On Demand 규칙이 있다면 순서와 동작도 기록하세요.
  2. 연결 확인: 테스트할 Wi-Fi와 셀룰러 네트워크에서 각각 수동으로 연결합니다. 어느 한쪽에서 원래 연결되지 않는다면 네트워크나 기존 구성부터 점검하세요.
  3. 설정 화면 열기: Settings → On Demand에서 네트워크 조건, 동작, 규칙 순서를 확인합니다. 컨트롤 위치와 사용 가능한 조건은 현재 앱 화면을 기준으로 하며, 오래된 안내를 보고 특정 버튼을 찾지 마세요.
  4. 시스템 설정 확인: iPhone / iPad의 시스템 Settings에서 VPN 구성을 찾아 Shadowrocket에 해당하는 구성과 Connect On Demand 상태를 확인합니다. 구체적인 메뉴 이름과 경로는 기기에 표시되는 내용을 따르세요.
  5. 조건 하나씩 테스트: 먼저 네트워크 조건만 활성화하고 도메인 평가 조건은 추가하지 않습니다. 네트워크 전환이 예상대로 작동하는 것을 확인한 뒤 다음 조건을 추가하세요.

Wi-Fi 이름과 셀룰러 네트워크별 동작 설정

먼저 원하는 동작을 정리하세요. 예를 들어 Home-WiFi라는 무선 네트워크에 연결하면 터널을 해제하고, 셀룰러 네트워크로 전환하면 터널을 연결하는 식입니다. Home-WiFi는 임의의 네트워크 이름 예시이므로 실제 설정에는 기기가 연결된 SSID를 입력하세요. 실제로 존재하지 않는 이름을 그대로 사용하면 안 됩니다.

SSID 조건을 설정할 때 실제 이름의 대소문자, 공백, 문장 부호를 확인하세요. 이름이 같은 여러 액세스 포인트는 같은 조건에 해당할 수 있으며, SSID만으로 네트워크의 안전성을 판단할 수는 없습니다. 회사와 집 네트워크의 이름이 같다면 이름만으로 둘을 구분할 수 없습니다.

특정 Wi-Fi 조건

설정 경로
Settings → On Demand
인터페이스
Wi-Fi
SSID 예시
Home-WiFi, 실제 네트워크 이름 입력
동작
Disconnect
순서
일반 Wi-Fi 조건보다 앞에 배치

해당 네트워크에서 터널을 연결하지 않으려는 경우에만 Disconnect를 사용하세요. 이는 네트워크의 안전성을 판단하는 기능이 아닙니다.

셀룰러 네트워크 조건

설정 경로
Settings → On Demand
인터페이스
Cellular
SSID
셀룰러 인터페이스에서는 적용되지 않음
동작
Connect
확인 방법
Wi-Fi를 끈 뒤 새 요청 보내기

셀룰러 기능이 없는 iPad에는 적용되지 않습니다. 개인용 핫스팟에 연결된 기기는 일반적으로 Wi-Fi 인터페이스를 사용합니다.

  1. 특정 Wi-Fi에 SSID 조건을 추가하고 Disconnect를 선택한 뒤 저장합니다. 조건이 인터페이스 제한 없는 일반 규칙이 아니라 Wi-Fi에 연결되어 있는지 확인하세요.
  2. Cellular에 Connect 조건을 추가합니다. 기기에서 셀룰러 데이터를 사용할 수 있는지 확인하세요. Wi-Fi만 끄고 셀룰러 데이터도 없는 상태는 유효한 네트워크 테스트가 아닙니다.
  3. 다른 Wi-Fi에서도 자동 연결하려면 다른 Wi-Fi에 적용되는 Connect 조건을 추가하고, 특정 SSID 예외 뒤에 배치하세요.
  4. 대상 Wi-Fi에 다시 연결한 다음 셀룰러 네트워크로 전환하고, 각 네트워크에서 새 요청을 하나씩 보냅니다. 네트워크 이름, 예상 동작, 시스템 VPN의 실제 상태를 기록하세요.

네트워크 전환 중에는 기존 연결, 인터페이스 전환 상태, 시스템 처리 시점이 관찰 결과에 영향을 줄 수 있습니다. 전환 직후 표시되는 아이콘만으로 결론 내리지 마세요. 네트워크를 사용할 수 있는 상태인지 확인한 뒤 VPN 상태와 새 요청 결과를 살펴보세요. 규칙을 테스트하려고 네트워크를 빠르게 연속 전환하지도 마세요.

도메인 트리거: DOMAIN-SUFFIX를 On Demand에 옮기는 설정이 아닙니다

도메인별 On Demand 연결과 일반적인 도메인 트래픽 분배는 목적이 다릅니다. 전자는 도메인 관련 연결 평가 조건에 따라 시스템이 터널을 연결할지 판단하고, 후자는 터널이 작동하는 동안 요청에 적용할 정책을 선택합니다. Apple의 On Demand 기능은 EvaluateConnection과 도메인 평가 동작을 통해 이를 처리할 수 있습니다. ConnectIfNeeded는 조건을 평가해 연결이 필요한지 판단한다는 뜻이지, 특정 웹사이트를 열 때마다 무조건 연결한다는 뜻은 아닙니다.

Settings → On Demand에서 현재 화면에 도메인 평가 항목과 해당 동작이 있는지 확인합니다. 항목이 있다면 internal.example.com처럼 도메인을 입력하세요. https://internal.example.com/path와 같은 전체 URL을 입력하면 안 됩니다. 예시 도메인은 입력 형식을 설명하기 위한 것으로 실제 내부 서비스가 아닙니다. 실제 테스트에는 접근 권한이 있고 DNS 조건을 알고 있는 도메인을 사용하세요.

따라서 ‘모든 Wi-Fi에서 먼저 Connect’와 ‘특정 도메인이 필요할 때만 연결’은 서로 다른 목표입니다. 전자는 네트워크 조건이 일치하는 즉시 터널을 연결하므로, 뒤에 둔 도메인 조건으로 범위를 좁힐 수 없습니다. 도메인별 연결을 원한다면 일반 네트워크 규칙이 먼저 평가 기회를 차지하는지 확인하세요.

Config의 도메인 규칙은 연결된 뒤의 트래픽만 처리

다음은 Config 규칙 구문의 예시이며 On Demand 설정 텍스트가 아닙니다. 해당 요청에 지정된 정책을 적용하는 예시일 뿐, 시스템 자동 연결 조건을 설정하는 내용은 아닙니다.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

Global Routing이 Config일 때 첫 번째 규칙은 해당 도메인 요청에 PROXY를 사용하고, 나머지 요청은 마지막 규칙인 FINAL의 DIRECT를 따릅니다. 실제 구성에서 PROXY에 유효한 아웃바운드가 연결되어 있는지 확인하세요. 이 규칙을 Config에 저장해도 도메인별 On Demand 설정이 완료되는 것은 아닙니다.

여러 조건이 동시에 일치할 때: 규칙 순서부터 확인

시스템은 On Demand 규칙을 순서대로 평가하며, 먼저 일치하는 규칙이 해당 평가에서 사용할 동작을 결정합니다. 모든 동작을 함께 적용하는 방식이 아닙니다. 구체적인 예외는 일반적인 네트워크 조건보다 앞에 두는 것이 좋습니다. 도메인 평가 규칙 내부의 조건도 별도로 확인해야 하며, Config의 규칙 순서와 혼동하지 마세요.

순서일치 조건동작확인할 점
1Wi-Fi이며 SSID가 Home-WiFiDisconnect특정 이름 예외를 일반 Wi-Fi보다 먼저
2그 밖에 일치하는 Wi-Fi 네트워크Connect앞선 규칙이 일치하지 않을 때만 적용
3CellularConnect셀룰러 데이터를 사용할 수 있을 때 확인

이 표는 네트워크 우선 설정 예시이며 도메인 평가는 포함하지 않습니다. 일반 Wi-Fi의 Connect를 첫 번째로 옮기면 Home-WiFi도 이 조건에 일치하므로 뒤에 있는 Disconnect로 원하는 예외를 처리할 수 없습니다. 인터페이스 제한이 없는 일반 조건을 추가했다면 이후의 모든 네트워크 규칙을 가로막는지도 확인하세요.

  1. 결과가 예상과 다르면 첫 번째 규칙부터 ‘현재 인터페이스 일치 여부, SSID 일치 여부, 동작’을 차례로 적어 보세요.
  2. 추가한 규칙을 잠시 비활성화하고 이전에 검증한 최소 규칙만 남긴 뒤, 새 조건을 제거했을 때 문제가 해결되는지 확인하세요.
  3. 한 번에 규칙 위치 하나 또는 동작 하나만 바꾸세요. 저장한 뒤 네트워크를 전환하고 새 요청을 보내 다시 테스트합니다.

여기서 말하는 ‘순서’ 문제는 Config의 FINAL로 해결할 수 없습니다. FINAL은 요청 분배의 기본 규칙일 뿐 시스템 On Demand의 기본 연결 동작이 아니며 잘못된 SSID 조건도 바로잡지 않습니다.

자동 연결 실패, 해제 후 재연결, 도메인 미작동 확인

먼저 재현 가능한 상황을 기록하세요. 어떤 네트워크에서 어떤 네트워크로 전환했는지, 현재 선택된 구성은 무엇인지, 첫 번째로 일치한 조건과 시스템 VPN 상태는 어떤지 적습니다. 다음은 증상별 점검 방법이며 모든 설정을 한꺼번에 초기화할 필요는 없습니다.

On Demand를 켰는데 셀룰러로 전환해도 연결되지 않나요?

먼저 셀룰러 데이터가 실제로 작동하는지 확인한 다음 Settings → On Demand에서 Cellular 조건과 Connect 동작을 살펴보세요. 앞에 일반 Disconnect 규칙이 있는지도 확인합니다. 이어서 시스템 VPN 구성의 Connect On Demand 상태를 확인하세요. 수동 연결도 실패한다면 기존 연결 구성부터 점검하세요.

Home에서 수동으로 연결을 해제했는데 잠시 뒤 다시 연결되는 이유는 무엇인가요?

On Demand가 계속 활성화되어 있으면 이후 네트워크 이벤트나 요청이 연결 조건을 다시 충족할 수 있습니다. 일시 중지 테스트를 하려면 Settings → On Demand에서 On Demand 연결을 비활성화한 뒤 수동으로 연결을 해제하고, 시스템에서 해당 구성의 상태를 확인하세요. Home의 연결 스위치만 반복해서 누르지 마세요.

특정 Wi-Fi에 Disconnect를 설정했는데 왜 계속 연결 상태인가요?

실제 SSID를 확인하세요. 이름 끝의 공백이나 비슷하게 생긴 문자도 살펴봅니다. 특정 SSID 규칙이 일반 Wi-Fi Connect보다 앞에 있는지 확인하세요. 또한 시스템에서 현재 Shadowrocket에 해당하는 VPN 구성을 연결했는지 확인해 다른 구성의 연결 상태를 이 규칙의 결과로 착각하지 않도록 하세요.

대상 도메인에 접속해도 트리거되지 않습니다. 도메인을 잘못 입력했나요?

먼저 전체 URL이 아니라 도메인을 입력했는지 확인한 뒤, 앞선 네트워크 동작이 평가를 먼저 끝내는지 살펴보세요. ConnectIfNeeded를 사용한다면 직접 연결된 네트워크의 DNS가 이미 조건을 충족하는지, 테스트 앱이 기존 연결을 재사용하는지도 확인합니다. 시스템 트리거 문제를 해결하려고 Config에 DOMAIN-SUFFIX 규칙을 반복해서 추가하지 마세요.

자동 연결은 성공했는데 일부 요청은 왜 직접 연결되나요?

Home으로 돌아가 Global Routing 설정을 확인하세요. Config를 사용한다면 대상에 일치하는 정책과 FINAL 규칙을 하나씩 점검합니다. Direct를 사용 중이면 On Demand의 Connect가 요청을 자동으로 프록시 경유로 바꾸지 않습니다. 먼저 요청에 적용된 정책을 확인한 다음 기존 아웃바운드가 작동하는지 살펴보세요.

이전 상태로 되돌리려면 먼저 On Demand를 비활성화하고 수동 연결로 돌아가 기준 상태가 여전히 유효한지 확인한 다음 규칙을 하나씩 복구하세요. 일상적으로는 각 결과를 설명할 수 있는 최소한의 규칙만 유지하는 것이 좋습니다. 서로 덮어쓰는 중복 조건으로 문제를 숨기지 마세요.