Shadowrocket에 본인의 구독을 가져왔고 수동 연결이 정상적으로 되는 사용자를 위한 안내입니다. 먼저 On Demand의 연결 트리거와 Config의 트래픽 라우팅을 구분한 다음, 지정한 Wi-Fi, Cellular, 도메인 조건을 차례로 설정합니다. 확인할 때는 한 번에 조건 하나만 변경하고 규칙 일치 여부, 터널 상태, 요청 정책을 각각 점검해 자동 연결 실패와 라우팅 규칙 오류를 혼동하지 않도록 합니다.
On Demand와 Global Routing의 차이
Shadowrocket의 On Demand는 Apple 시스템의 VPN On Demand 기능을 이용해 네트워크가 바뀌거나 조건에 맞는 네트워크 요청이 발생할 때 연결을 설정할지 판단합니다. 이는 ‘언제 연결할지’를 정하는 기능이지 ‘각 요청에 어떤 정책을 적용할지’를 정하는 기능은 아닙니다. 연결이 설정된 뒤에도 요청은 Home의 현재 Global Routing 설정과 해당 구성의 영향을 받습니다.
평소 점검은 세 단계로 나누면 편리합니다. Home에서 선택된 연결과 Global Routing을 확인하고, Config에서 실제로 활성화된 구성 파일을 확인한 다음, Settings → On Demand에서 트리거 조건을 점검합니다. 서버 주소, 포트, 인증 매개변수 오류는 On Demand 설정을 바꿔 해결할 수 없습니다. 먼저 수동 연결 상태에서 해당 매개변수를 검증하세요.
Config
권장연결이 설정되면 현재 구성의 규칙에 따라 요청 정책이 결정됩니다. DOMAIN-SUFFIX, IP-CIDR, GEOIP, FINAL을 확인할 때는 의도한 Config가 활성화되어 있는지 확인하세요.
적합한 경우: 자동 연결을 사용하면서 명확한 라우팅 규칙도 유지하려는 일상적인 사용.
Proxy
앱이 처리하는 요청에 Proxy 정책을 적용합니다. Config 라우팅의 영향을 일시적으로 배제해 확인할 때 사용할 수 있습니다. On Demand가 활성화되었다는 뜻은 아니며, 시스템의 모든 트래픽을 처리한다고 보장하지도 않습니다.
적합한 경우: 연결 자체와 구성 규칙이 각각 정상인지 짧게 확인할 때.
Direct
Direct 정책을 사용합니다. On Demand가 트리거되어 터널이 설정되더라도 요청이 자동으로 Proxy를 거치는 것은 아닙니다. 따라서 연결 표시만으로 요청의 출구를 판단할 수 없습니다.
적합한 경우: Direct 동작을 확인하거나 ‘연결됨’ 상태인데 정책이 예상과 다를 때 점검할 경우.
결론: 먼저 라우팅 모드를 고정하세요
테스트를 시작하기 전에 Global Routing을 Config로 고정하고 현재 구성 이름을 기록하세요. 한 번의 트리거 테스트가 끝날 때까지 라우팅 모드, 구성 파일, 연결 대상을 동시에 바꾸지 마세요.
활성화 전: 수동 연결부터 확인
다음 단계는 사용자가 이미 본인의 서비스 제공업체와 구독을 보유하고 있다는 전제에서 설명합니다. 이 글은 노드나 구독을 제공·판매·추천하지 않습니다. 구독 업데이트와 On Demand는 서로 별개의 작업입니다. 전자는 기존 연결 정보를 업데이트하고, 후자는 시스템이 언제 연결을 사용할지 제어합니다. 자동 연결로 만료된 구독 정보를 복구할 수는 없습니다.
-
기존 항목 확인
Home으로 이동해 본인의 구독이 가져와졌고 필요한 경우 업데이트되었는지 확인한 다음, 정상 작동이 확인된 연결을 선택하세요. 주소, 포트, 프로토콜, 인증 정보를 확인하고 이때 여러 매개변수를 동시에 바꾸지 마세요.
-
수동으로 연결
Home에서 연결을 수동으로 켭니다. 처음 사용할 때는 시스템 안내에 따라 VPN 구성을 추가하도록 허용하세요. 수동 연결부터 실패한다면 자동 트리거를 설정하기 전에 연결 매개변수나 현재 네트워크 문제를 해결하세요.
-
라우팅 확인
Home → Global Routing에서 모드를 확인한 다음 Config에서 활성화된 파일을 확인하세요. 어떤 정책이 적용되어야 하는지 명확한 요청을 보내 테스트하고, 요청 시간과 일치 결과를 기록합니다.
-
설정 열기
Settings → On Demand를 열어 기존 조건과 순서를 확인하세요. 자동화 규칙이 이미 있다면 현재 설정을 기록하고, 이번에 확인할 조건만 남겨 이전 규칙이 먼저 일치하지 않도록 합니다.
-
조건을 하나씩 설정
Settings → On Demand에서 네트워크 조건을 하나 설정하고 On Demand를 활성화합니다. Home으로 돌아가 상태를 확인한 뒤 실제로 네트워크를 전환하세요. 도메인 조건을 추가하기 전에 Wi-Fi와 Cellular의 기본 트리거부터 검증합니다.
아래에서는 Apple의 On Demand 규칙에서 Connect, Disconnect, EvaluateConnection, Ignore가 의미하는 동작을 설명합니다. Shadowrocket 화면의 각 버튼 이름을 그대로 재현한 것은 아닙니다. 편집할 수 있는 필드와 동작 조합은 현재 화면을 기준으로 확인하세요. 화면에서 제공하지 않는 조건을 Config 규칙을 On Demand에 붙여 넣는 방식으로 대체하지 마세요.
Wi-Fi SSID: 구체적인 네트워크를 일반 조건보다 앞에
SSID는 Wi-Fi 네트워크 이름이며 라우터 주소나 무선 액세스 포인트의 하드웨어 주소가 아닙니다. 특정 네트워크 조건을 설정할 때는 기기에 현재 연결된 Wi-Fi 정보를 확인해 전체 이름을 입력하세요. 예: Home-WiFi. 대소문자, 공백, 문장 부호에 유의하고 Home-*가 와일드카드로 일치한다고 임의로 가정하지 마세요.
Settings → On Demand의 Wi-Fi 조건에 대상 SSID를 입력하거나 선택하고 해당 네트워크에서의 연결 동작을 설정합니다. 예를 들어 사용 요건을 충족한다고 확인한 집 네트워크에서는 연결을 끊고 다른 Wi-Fi에서는 연결하려면, 특정 SSID의 연결 해제 조건을 일반 Wi-Fi 연결 조건보다 앞에 둡니다. SSID는 일치 여부를 판단하는 기준일 뿐, 네트워크의 정체성이나 신뢰도를 증명하지 않습니다.
| 순서 | 일치 조건 | 동작 의미 | 확인 방법 |
|---|---|---|---|
| 1 | Wi-Fi, SSID가 Home-WiFi인 경우 | Disconnect | 해당 SSID에 연결한 뒤 설정에 따라 터널 연결이 해제되는지 확인합니다. |
| 2 | 기타 Wi-Fi | Connect | 이름을 알고 있는 다른 Wi-Fi로 전환해 연결이 트리거되는지 확인합니다. |
| 3 | 그 외 네트워크 | 별도 조건 설정 | 셀룰러 네트워크는 별도로 설정해야 하며 Wi-Fi 조건만으로 동작을 예상할 수 없습니다. |
이 표는 규칙의 의도를 설명하기 위한 예시이며 그대로 가져올 수 있는 구성 텍스트가 아닙니다. 시스템이나 앱에서 네트워크 정보를 읽기 위한 권한을 요청하면 실제 안내에 따라 확인하세요. SSID를 가져오지 못하면 지정 SSID 조건이 예상대로 일치하지 않을 수 있습니다. 공용 Wi-Fi에 웹 로그인이 필요하다면 먼저 인증을 완료한 뒤 On Demand를 테스트하세요. 아직 인터넷에 접속할 수 없는 상태를 연결 매개변수 오류로 오인하지 마세요.
Cellular: Wi-Fi를 끄고 별도로 테스트
Cellular 조건은 기기에서 실제로 사용 중인 셀룰러 데이터 네트워크를 대상으로 합니다. 설정하기 전에 기기에서 셀룰러 데이터를 사용할 수 있고 활성화되어 있는지 확인하세요. Wi-Fi 전용 iPad는 이 조건을 추가해도 셀룰러 네트워크를 사용할 수 없습니다. 네트워크 이름이 비슷해도 연결 유형은 다를 수 있습니다. 휴대폰 핫스팟에 연결된 다른 기기는 일반적으로 자체 Wi-Fi 인터페이스를 사용합니다.
Settings → On Demand에서 Cellular 동작을 설정한 뒤 Wi-Fi를 끄고 기기가 실제로 셀룰러 데이터로 전환되는지 확인합니다. 특정 SSID의 범위를 벗어나는 것만으로는 확실한 테스트가 되지 않을 수 있습니다. 기기가 곧바로 저장된 다른 Wi-Fi에 연결될 수 있기 때문입니다.
- 셀룰러 네트워크에서 자동 연결하려는 경우: Cellular 조건을 연결 동작으로 설정하고, 앞에 있는 일반 조건이 먼저 일치하지 않는지 확인하세요.
- 셀룰러 네트워크에서 연결을 유지하지 않으려는 경우: 해당 연결 해제 동작을 설정하고 목록 마지막의 일반 연결 조건이 의도한 동작을 덮어쓰지 않는지 확인하세요.
- 듀얼 SIM 기기를 사용하는 경우: 먼저 현재 셀룰러 데이터에 사용 중인 회선을 기록하세요. 데이터 회선을 바꾼 뒤 다시 확인하고, 통신사 네트워크 변경과 규칙 순서 문제를 혼동하지 마세요.
- 데이터 사용량에 유의하세요: On Demand는 연결 트리거를 제어하는 기능이지 데이터 한도 관리 도구가 아닙니다. 구독 업데이트, 앱 동기화 및 기타 요청에서도 셀룰러 데이터를 사용할 수 있습니다.
도메인 트리거: DOMAIN-SUFFIX를 설정에 붙여 넣지 마세요
도메인 기반 On Demand 연결은 시스템의 연결 평가 기능을 사용합니다. Apple의 EvaluateConnection은 도메인 일치 여부와 연결에 필요한 DNS, 도달 가능성 등의 조건을 함께 고려해 연결을 설정할지 판단할 수 있습니다. 웹페이지 URL을 계속 확인하는 필터가 아니며, ‘특정 도메인에 접속하면 무조건 즉시 연결’되는 기능도 아닙니다. 현재 화면에 해당 도메인 평가 필드가 있을 때만 필드의 의미에 맞게 설정하세요.
Settings → On Demand에서 도메인 평가 옵션을 사용할 수 있는지 확인하세요. 편집할 수 있다면 필드의 안내에 따라 example.com과 같은 도메인을 입력하세요. https://example.com/path처럼 전체 URL을 붙여 넣거나 DOMAIN-SUFFIX,example.com,PROXY를 도메인 값으로 입력하지 마세요. 하위 도메인까지 포함되는지는 해당 필드의 실제 일치 방식에 따라 확인해야 하며, Config의 규칙 문법을 그대로 적용할 수 없습니다.
| 항목 | On Demand 도메인 평가 | Config 도메인 규칙 |
|---|---|---|
| 주요 목적 | 연결 설정이 필요한지 평가합니다. | 처리 대상 요청에 적용할 정책을 결정합니다. |
| 설정 위치 | Settings → On Demand에 실제로 제공되는 도메인 필드. | Config에서 활성화된 파일의 규칙 섹션. |
| 입력 내용 | 필드 안내에 따라 도메인과 평가 조건을 입력합니다. | DOMAIN-SUFFIX,example.com,PROXY |
| 주요 변수 | DNS 캐시, 기존 연결, 앱의 도메인 확인 방식, 앞서 적용되는 On Demand 규칙. | 앞선 규칙이 먼저 일치함, 잘못된 정책 이름, 활성 파일 불일치. |
위 표의 Config 규칙을 사용하려면 현재 구성에 사용할 수 있는 PROXY 정책도 있어야 합니다. 이 규칙은 라우팅 문법을 설명할 뿐 On Demand 조건을 생성하지 않습니다. 도메인 트리거를 테스트할 때는 그 전에 네트워크 수준의 Connect 조건이 무조건 터널을 설정하지 않았는지 확인하세요. 그렇지 않으면 네트워크 조건이 작동했다는 점만 확인할 수 있고 도메인 평가가 작동했다는 증거는 되지 않습니다.
결론: 도메인 테스트에서는 조건을 분리하세요
도메인 평가를 확인하려면 먼저 너무 광범위해 먼저 일치하는 네트워크 연결 조건을 잠시 비활성화하고, 관련 앱의 기존 세션을 닫은 다음 요청을 다시 보내세요. 화면에 도메인 평가 옵션이 없다면 네트워크 트리거만 사용하고 Config 규칙을 해당 기능처럼 사용하지 마세요.
규칙이 여러 개일 때: 연결 조건을 먼저 일치시키고 요청 정책을 적용
On Demand 규칙은 순서대로 평가되며, 먼저 일치하는 규칙이 우선 적용됩니다. 일반적으로 특정 SSID와 같은 예외를 앞에 두고, 더 넓은 범위에 적용되는 인터페이스 조건이나 기본 조건은 뒤에 둡니다. 한 규칙에 여러 조건을 입력할 때는 ‘한 필드에 여러 선택값 입력’과 ‘인터페이스와 SSID를 동시에 제한’을 구분해야 합니다. 모든 조건이 하나라도 일치하면 된다고 해석해서는 안 됩니다.
Connect는 조건에 맞을 때 연결을 설정하고, Disconnect는 조건에 맞을 때 해당 연결을 유지하지 않도록 합니다. Ignore는 기존 연결 상태를 바꾸지 않는 동작이므로 Disconnect처럼 사용할 수 없습니다. EvaluateConnection은 연결 조건을 추가로 평가하므로 무조건 Connect와 같은 의미가 아닙니다. 실제 설정에서는 화면에서 지원하는 동작만 사용하고 규칙 순서를 기록하세요.
- 먼저 원하는 동작을 정리하세요: 예를 들어 ‘Home-WiFi에서는 연결 해제, 다른 Wi-Fi에서는 연결, Cellular에서는 연결’처럼 각 네트워크 상태에서 명확한 결과 하나만 설정합니다.
- 구체적인 조건을 먼저, 일반 조건은 나중에: 지정 SSID를 일반 Wi-Fi 조건 앞에 둡니다. 예외를 덮어쓸 수 있는 일반 조건을 예외보다 앞에 두지 마세요.
- 도메인 평가의 순서를 확인하세요: 네트워크 수준의 Connect가 이미 일치하면 뒤에 있는 도메인 평가가 해당 연결의 결정에 영향을 주지 않는 경우가 많습니다.
- 마지막으로 Config를 확인하세요: 연결이 설정된 뒤 DOMAIN-SUFFIX, IP-CIDR, GEOIP 등의 요청 규칙과 마지막의 FINAL을 확인합니다. 이는 별도의 일치 단계입니다.
‘On Demand 규칙의 기본 동작’을 FINAL과 혼동하지 마세요. FINAL은 Config에서 요청 규칙의 최종 정책을 지정하며 요청 규칙 목록 끝에 둡니다. Wi-Fi를 선택하거나 시스템에서 On Demand를 활성화하는 기능은 아닙니다.
확인 및 문제 해결: 한 번에 변수 하나만 변경
테스트 기록에는 현재 네트워크 유형, SSID, On Demand 조건 순서, Home 연결 상태, Global Routing 모드, 요청의 규칙 일치 결과를 포함하세요. 연결에 걸리는 시간을 미리 정해 둘 필요는 없습니다. 네트워크 전환, 시스템 스케줄링, 서버 응답이 관찰 결과에 영향을 주므로 일정 시간 안에 연결되는지를 성공 기준으로 삼을 수 없습니다.
수동으로 연결을 끊었는데 왜 다시 연결되나요?
먼저 Settings → On Demand에서 On Demand를 일시적으로 끈 다음 Home으로 돌아가 수동으로 연결을 해제하세요. 현재 네트워크가 계속 Connect 조건을 충족하면 시스템이 다시 평가한 뒤 연결을 설정할 수 있습니다. 장기간 중지하려면 조건을 수정하거나 기능을 꺼 두세요.
집에 돌아왔는데도 자동으로 연결이 끊기지 않나요?
현재 연결된 SSID가 설정한 이름과 정확히 일치하는지 확인한 다음, 지정 SSID 조건이 일반 Wi-Fi 조건보다 앞에 있는지 살펴보세요. 화면에서 네트워크 정보 권한을 요청하면 먼저 권한을 처리한 뒤 네트워크를 다시 전환해 확인합니다.
셀룰러 데이터에서는 연결되는데 웹페이지가 열리지 않나요?
먼저 On Demand를 끄고 같은 셀룰러 네트워크에서 수동으로 연결해 테스트하세요. 수동 연결도 실패한다면 기존 연결 매개변수와 네트워크 도달 가능성을 확인합니다. 수동 연결이 정상이면 조건 순서, Home → Global Routing, Config에서 실제 활성화된 규칙을 확인하세요.
대상 도메인에 접속해도 트리거되지 않는 이유는 무엇인가요?
먼저 화면에서 도메인 연결 평가를 실제로 설정했는지 확인하세요. Config 규칙만 추가한 것은 도메인 연결 평가가 아닙니다. 앱의 기존 세션을 닫고 다시 시도한 뒤 DNS 캐시와 앱 자체의 도메인 확인 방식을 점검하세요. DNS 확인 실패와 같은 조건에서만 기능이 트리거되도록 설정되어 있다면, 정상적으로 확인되는 상황에서 연결되지 않는 것이 설정에 맞는 동작일 수 있습니다.
구독을 업데이트한 뒤 설정을 다시 해야 하나요?
업데이트한 뒤 Home으로 돌아가 선택한 항목이 그대로 있는지 확인하고 한 번 수동으로 테스트하세요. 구독 내용이 바뀌면 연결 대상에 영향을 줄 수 있지만 On Demand 조건을 모두 다시 만들어야 한다는 뜻은 아닙니다. 수동 연결이 정상인지 먼저 확인한 다음 On Demand 테스트를 재개하세요.
전체 검증에는 ‘지정 Wi-Fi → 다른 Wi-Fi → Cellular → 지정 Wi-Fi’ 순서로 왕복 전환하고, 각 단계에서 예상 동작과 관찰된 상태를 따로 기록하는 과정이 포함되어야 합니다. 이번 설정을 되돌리려면 먼저 Settings → On Demand를 끈 다음 기존 조건과 순서를 복구하세요. 조건 하나만 삭제하고 더 광범위한 자동 연결 규칙을 남기지 않도록 주의합니다.