이 글의 핵심

이 글은 이미 이용 중인 서비스 제공업체와 구독이 있고, 수동으로 연결할 수 있는 사용자를 위한 안내입니다. 먼저 On Demand와 트래픽 라우팅의 차이를 살펴본 뒤, 지정 Wi-Fi와 셀룰러 네트워크 연결 조건을 설정하고 도메인 트리거의 제한, 규칙 순서, 자동 재연결 원인을 확인합니다. 테스트할 때는 한 번에 조건 하나만 변경하고, 시스템 VPN 상태와 실제 요청 기록을 각각 확인하세요.

On Demand는 연결을 제어하며 Global Routing을 대체하지 않습니다

Shadowrocket의 On Demand는 Apple 시스템의 주문형 VPN 기능을 사용합니다. 네트워크 조건이 규칙에 맞으면 연결을 요청하고, 규칙에 따라 연결을 해제합니다. 이는 ‘언제 터널을 만들지’를 처리하는 기능이지, ‘특정 웹사이트에 어떤 경로를 사용할지’를 정하는 기능이 아닙니다. 앱에서 Settings → On Demand로 조건을 설정한 다음, 현재 시스템 VPN 구성이 주문형 연결을 허용하는지도 확인해야 합니다.

Global Routing은 연결이 만들어진 뒤 트래픽이 이동할 경로를 처리합니다. Proxy, Direct, Config, Scene은 이 단계의 모드입니다. Config는 현재 구성의 규칙에 따라 트래픽을 분기하고, Scene은 선택한 시나리오 설정에 따라 동작합니다. Global Routing을 Direct로 설정해도 시스템 VPN이 꺼지거나 On Demand가 비활성화되는 것은 아닙니다.

네트워크 조건 변경 주문형 규칙 평가 시스템에서 터널 연결 트래픽 규칙 매칭 아웃바운드 정책 적용

따라서 ‘VPN 상태는 표시되지만 요청은 Direct로 나감’이 반드시 오류인 것은 아닙니다. 전자는 터널 상태를, 후자는 요청에 적용된 아웃바운드 정책을 나타냅니다. 문제를 확인할 때는 두 결과를 따로 기록하세요. 상태 표시줄 아이콘만 보고 모든 트래픽이 프록시를 거친다고 판단해서는 안 됩니다.

2개 계층
연결 트리거와 트래픽 라우팅을 각각 확인
2가지
이 글에서는 Wi-Fi와 셀룰러 네트워크를 따로 테스트합니다
4개 항목
Global Routing:Proxy / Direct / Config / Scene

활성화 전: 수동 연결과 시스템 권한부터 확인

On Demand는 유효하지 않은 구독, 잘못된 연결 매개변수 또는 사용할 수 없는 네트워크를 해결하지 않습니다. 먼저 Home에서 기존 연결 중 사용 가능한 항목을 선택하고 연결 스위치를 직접 켠 다음, 평소 정상적으로 열리는 페이지에 접속하세요. 수동 연결이 정상 작동해야 자동 트리거 테스트 결과도 제대로 판단할 수 있습니다.

  1. 기존 구성을 확인합니다. Home에서 현재 선택된 연결을 확인하세요. 규칙에 따라 트래픽을 분기해야 한다면 Config에서 예상한 구성이 선택되어 있는지도 확인해 테스트 도중 구성이 바뀌지 않도록 합니다.
  2. 시스템 권한을 허용합니다. VPN 구성을 처음 추가할 때 시스템 안내에 따라 확인하세요. 권한을 거부하거나 시스템 구성을 제거하면 앱의 조건만으로 터널을 만들 수 없습니다.
  3. 주문형 설정을 엽니다. Shadowrocket에서 Settings → On Demand로 이동해 현재 활성화 상태와 저장된 조건을 확인하세요. 항목과 선택 가능한 동작은 현재 화면을 기준으로 합니다.
  4. 시스템 구성을 확인합니다. iPhone 또는 iPad의 시스템 ‘설정’에서 ‘일반’ → ‘VPN 및 기기 관리’ → ‘VPN’으로 이동해 해당 구성의 정보 화면을 열고 Connect On Demand를 확인하세요. 시스템 언어에 따라 ‘주문형 연결’로 표시될 수 있습니다.
  5. 기준 상태를 기록합니다. 현재 Wi-Fi 이름, 셀룰러 데이터 활성화 여부, 연결 상태, Global Routing 모드를 기록하세요. 이후 테스트에서는 한 번에 항목 하나만 변경합니다.

지정 Wi-Fi: 예외를 먼저, 일반 조건은 나중에

지정한 Wi-Fi 이름으로 설정할 때 매칭 대상은 SSID입니다. SSID는 라우터 뒷면의 관리 주소나 기기에 기록한 별칭과 다릅니다. 시스템 Wi-Fi 화면에서 현재 연결된 이름을 확인한 뒤 그대로 입력하세요. 공백, 기호, 대소문자에 유의하고 시스템이 부분 일치를 지원한다고 임의로 가정하지 마세요.

예를 들어 필요한 리소스에 직접 접속할 수 있다고 확인한 가정용 네트워크에서는 터널을 끊고, 다른 Wi-Fi에서는 연결을 요청하도록 설정할 수 있습니다. 이는 ‘지정 네트워크 예외 + 일반 네트워크 조건’ 구성으로, 모든 가정용 네트워크에서 연결을 끊어야 한다는 뜻은 아닙니다. 아래 SSID는 예시이므로 실제 네트워크 이름을 입력하세요.

지정 Wi-Fi 예외

위치
Settings → On Demand
네트워크 조건
Wi-Fi
SSID 예시
Home-WiFi-Example
동작
Disconnect
배치 순서
일반 Wi-Fi 조건보다 앞

해당 네트워크에서 실제로 터널이 필요하지 않을 때만 이 예외를 사용하세요. SSID만으로 네트워크의 신뢰성을 판단할 수는 없습니다.

그 외 Wi-Fi 조건

위치
Settings → On Demand
네트워크 조건
Wi-Fi
매칭 범위
앞선 예외에 해당하지 않는 Wi-Fi
동작
Connect
배치 순서
지정 SSID 예외 뒤

화면에 별도의 예외 목록이 있다면 해당 목록으로 범위를 지정하세요. 의미가 명시되지 않은 빈 필드를 와일드카드로 간주해서는 안 됩니다.

시스템은 주문형 규칙을 순서대로 평가합니다. 앞에 있는 일반 조건이 먼저 적용되면 뒤의 구체적인 조건이 가려질 수 있습니다. 현재 화면에서 목록 순서를 바꿀 수 있다면 범위가 좁은 예외를 넓은 조건보다 앞에 두세요. 분류 옵션으로 규칙을 생성하는 화면에서는 해당 예외 옵션을 사용하고, Config의 텍스트 규칙을 붙여 넣지 마세요.

셀룰러 네트워크: Wi-Fi 끄기로 대체하지 말고 전환을 따로 테스트

셀룰러 조건은 실제로 사용하는 네트워크 인터페이스를 기준으로 하며, SIM 카드가 꽂혀 있는지 여부를 뜻하지 않습니다. 셀룰러 데이터를 지원하는 iPhone 또는 iPad에서 먼저 데이터 연결이 가능한지 확인한 다음, 해당 조건의 Connect 또는 Disconnect 동작을 설정하세요. Wi-Fi 전용 iPad에서는 셀룰러 경로를 테스트할 수 없습니다.

  1. 먼저 Wi-Fi 기준 상태를 확인합니다. 지정 Wi-Fi에 연결하고 네트워크가 안정될 때까지 기다린 뒤, 예외 조건에서 예상한 VPN 상태인지 확인하세요.
  2. 셀룰러 네트워크로 전환합니다. 시스템 설정에서 Wi-Fi를 끄고, 네트워크가 끊긴 상태가 아니라 셀룰러 데이터로 일반 페이지에 접속할 수 있는지 확인하세요.
  3. 실제 요청을 발생시킵니다. 페이지를 열거나 요청을 새로 보내 셀룰러 조건에 따라 VPN이 연결되거나 해제되는지 확인하세요. 상태 표시줄 아이콘의 변화만 기다리지 마세요.
  4. 원래 Wi-Fi로 돌아갑니다. 같은 SSID에 다시 연결하고 네트워크 전환이 완료될 때까지 기다린 다음 요청을 보내 예외 조건에 해당하는 상태로 돌아오는지 확인하세요.
  5. 두 계층의 결과를 기록합니다. VPN 상태와 페이지 접속 결과를 각각 적으세요. 터널은 연결됐지만 페이지가 열리지 않는다면 네트워크 트리거 조건이 아니라 연결 매개변수와 트래픽 라우팅 규칙을 확인해야 합니다.

전환 중에는 기존 장시간 연결이 끊겼다가 다시 시도될 수 있고 DNS 캐시가 남아 있을 수도 있습니다. 한 번 잠시 실패한 것만으로 규칙 충돌이라고 단정할 수 없습니다. 네트워크가 안정된 뒤 새 요청을 보내 같은 테스트를 반복하세요. On Demand가 모든 앱에서 지속적인 네트워크 활동을 보장하는 것도 아니므로, 유휴 상태에서 일정 시간 안에 반드시 연결된다고 기대해서는 안 됩니다.

도메인 트리거: On Demand 평가와 DOMAIN-SUFFIX 구분하기

‘특정 도메인에 접속하면 자동 연결’과 ‘특정 도메인에 Proxy 적용’은 서로 다른 요구입니다. 후자는 Config의 DOMAIN-SUFFIX 같은 규칙으로 처리할 수 있지만, 관련 요청이 먼저 터널에 들어와야 합니다. [Rule]에 도메인 규칙만 추가해도 시스템의 도메인 기반 주문형 트리거가 만들어지지는 않습니다.

Apple의 주문형 기능에서 도메인 관련 동작은 EvaluateConnection 및 ConnectIfNeeded와 연관될 수 있습니다. 시스템은 조건에 맞는 도메인 확인 또는 연결 평가 과정에서 VPN이 필요한지 판단하며, 브라우저 주소창을 감시해 모든 접속마다 무조건 연결하는 방식은 아닙니다. 설정 가능 여부와 입력 방법은 Shadowrocket에서 현재 제공하는 옵션에 따라 다릅니다. 시스템이 지원하는 모든 필드가 앱에 반드시 설정 항목으로 있는 것은 아닙니다.

설정 위치 또는 기능해결하는 문제이것만으로 판단할 수 없는 결과
Settings → On Demand시스템이 터널 연결 또는 해제를 요청하는 시점 정의해당 도메인이 반드시 Proxy를 사용한다고 볼 수 없음
EvaluateConnection / ConnectIfNeeded도메인 및 연결 평가 조건에 따라 연결 필요 여부 판단같은 도메인을 열 때마다 반드시 다시 연결되는 것은 아님
DOMAIN-SUFFIX,example.com,PROXYConfig의 트래픽 라우팅에서 일치하는 도메인에 지정된 정책 적용아직 연결되지 않은 터널을 단독으로 시작할 수 없음

도메인 테스트는 캐시의 영향을 특히 많이 받습니다. 기존 DNS 결과, 앱 자체의 암호화 DNS, IP 주소로 직접 접속하는 경우에는 예상한 시스템 도메인 확인 경로를 거치지 않을 수 있습니다. 현재 네트워크에서 도메인 확인이 정상적으로 되더라도 ‘연결 필요’ 평가 조건을 충족하지 않을 수 있으므로, ‘웹페이지는 열리지만 자동 연결되지 않음’만으로 설정이 작동하지 않는다고 단정할 수 없습니다.

규칙 충돌: 트리거 순서와 트래픽 라우팅 순서를 따로 확인

두 계층의 규칙은 각각 순서가 있으므로 한데 섞어 비교해서는 안 됩니다. On Demand가 먼저 연결 동작을 결정하고, 연결이 만들어진 뒤 Global Routing이 Config 규칙을 사용할지 결정합니다. 현재 Proxy 또는 Direct 모드라면 [Rule]을 수정해도 해당 모드의 동작을 확인하는 적절한 방법이 아닐 수 있습니다.

아래는 트래픽 라우팅 문법 예시이며 On Demand 설정이 아니고 연결 가능한 서비스도 포함하지 않습니다. PROXY는 현재 구성에서 사용할 수 있는 정책에 연결되어 있어야 합니다. 실제 구성에 적용하기 전에 원래 구성을 백업하고 정책 이름을 확인하세요.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

문제 확인은 다음 순서로 진행하세요. 현재 네트워크 조건을 확인하고, 주문형 규칙의 적용 범위를 확인한 뒤, 시스템 VPN이 연결됐는지 살펴보고, 마지막으로 Global Routing과 요청에 적용된 규칙을 확인합니다. 마지막 단계에서만 문제가 발견된 경우에 트래픽 라우팅 규칙의 순서를 조정하세요. 구독 업데이트로 사용 가능한 연결이 바뀌었다면 On Demand와 구성을 동시에 변경하지 말고 수동 연결부터 다시 확인해야 합니다.

자주 겪는 현상: 자동 재연결, 예외 미적용, 테스트 중단

Home에서 연결을 껐는데 왜 다시 연결되나요?

먼저 Settings → On Demand에서 주문형 트리거를 끈 다음 시스템 VPN 정보 화면에서 Connect On Demand 상태를 확인하세요. 조건이 계속 활성화되어 있으면 새 네트워크 요청이 연결을 다시 트리거할 수 있습니다. Home 스위치만 끄는 것은 주문형 조건을 제거하는 것과 다릅니다.

집 Wi-Fi에 Disconnect를 설정했는데 왜 계속 연결되나요?

먼저 실제 SSID가 완전히 일치하는지 확인한 뒤 일반 Wi-Fi의 Connect 조건이 예외보다 앞에 있는지 살펴보세요. 예상한 네트워크에 연결된 것이 확인되면 해당 네트워크의 연결을 끊었다가 다시 연결하고 새 요청을 보내 해당 시스템 VPN 구성의 상태를 확인하세요.

셀룰러 네트워크에서 VPN 상태는 표시되지만 페이지가 열리지 않으면 어떻게 하나요?

먼저 On Demand를 끄고 같은 셀룰러 네트워크에서 수동 연결을 테스트하세요. 계속 실패한다면 Home에서 선택한 항목, 기존 연결의 유효성, Global Routing을 확인하세요. 수동 연결은 정상이라면 셀룰러 조건을 다시 활성화하고 트리거 과정만 따로 확인합니다.

도메인 규칙을 추가했는데 접속해도 자동 연결되지 않는 이유는 무엇인가요?

수정한 위치를 확인하세요. Config의 DOMAIN-SUFFIX만 수정했다면 트래픽 라우팅 규칙을 바꾼 것입니다. Settings → On Demand로 돌아가 도메인 트리거 옵션이 있는지 확인하세요. 해당 옵션이 없다면 라우팅 문법으로 시스템 트리거 조건을 대신하려고 계속 시도하지 마세요.

완전히 수동 연결 방식으로 되돌리려면 어떻게 하나요?

먼저 앱에서 On Demand를 끄고 해당 시스템 구성의 Connect On Demand도 꺼져 있는지 확인한 다음 Home에서 연결을 해제하세요. Wi-Fi에 다시 연결해 요청을 보내고 기존 조건으로 재연결되지 않는지 확인합니다. 이후 필요할 때 수동으로 연결을 켜면 됩니다.

테스트를 마친 뒤에는 목적이 분명한 조건만 남기세요. 지정 SSID 예외, 그 외 Wi-Fi, 셀룰러 네트워크를 각각 검증해야 합니다. 도메인 관련 조건에서 예상한 동작을 안정적으로 재현할 수 없다면 해당 항목을 먼저 끄고 검증된 네트워크 조건만 유지하세요. 이렇게 하면 ‘트리거 여부’와 ‘연결 후 사용 가능 여부’를 나누어 확인할 수 있습니다.