Shadowrocket의 On Demand는 시스템이 조건에 따라 VPN 연결을 관리하도록 하는 기능이며, 특정 도메인을 프록시로 지정하는 기능과는 다릅니다. Settings → On Demand에서 Wi-Fi와 셀룰러 네트워크 연결 조건을 설정한 뒤 도메인 평가의 범위를 살펴보고, 네트워크 전환과 요청 기록으로 결과를 확인합니다. 수동 연결은 가능하지만 반복해서 연결을 켜고 끄는 일을 줄이고 싶은 사용자에게 적합합니다.
자동 연결과 요청 라우팅을 구분하기
On Demand는 조건에 따라 시스템이 VPN 터널을 설정할지 결정하고, Global Routing은 연결이 설정된 뒤 요청을 어떻게 처리할지 정합니다. 서로 다른 두 단계입니다. 자동 연결에 성공해도 모든 요청이 프록시를 통해 나가는 것은 아닙니다. 특정 요청이 DIRECT 규칙에 일치해도 시스템이 VPN 연결을 해제해야 한다는 뜻은 아닙니다.
Home에서 Global Routing을 확인합니다. Proxy는 전체 프록시 모드, Direct는 전체 직접 연결 모드이며, Config는 구성 파일의 규칙을 적용하고 Scene은 설정된 장면에 따라 관련 설정을 전환합니다. 규칙 라우팅을 테스트할 때는 Config를 선택하고, Config에서 의도한 구성이 활성화되어 있는지 확인합니다. Scene은 On Demand의 다른 이름이 아니므로 장면 전환과 시스템 자동 연결을 혼동하지 마세요.
Settings → On Demand: 확인 가능한 초기 설정 만들기
시작하기 전에 현재 설정을 저장하고 기존 On Demand 조건을 기록해 둡니다. Home에서는 현재 연결과 서버를 확인하고, Config에서는 구성 파일을 점검하며, Settings → On Demand에서는 주문형 연결을 관리합니다. 시스템 버전과 인터페이스 언어에 따라 조건 편집 항목의 배치가 다를 수 있으므로, 특정 스위치의 위치만 보지 말고 조건 유형과 동작의 의미를 확인하세요.
- 기준 상태를 기록합니다. Home에서 현재 서버, Global Routing 모드, 수동 연결 결과를 적어 둡니다. Scene이 활성화되어 있다면 테스트 중 장면이 자동 전환되지 않도록 먼저 확인합니다.
- 조건 설정으로 이동합니다. Settings → On Demand를 열어 활성화 여부와 기존 네트워크 조건 및 동작을 확인합니다. 조건을 여러 개 동시에 변경하지 말고 검증할 조건 하나만 남겨 둡니다.
- 시스템의 VPN 구성 저장을 허용합니다. 처음 설정할 때 시스템에서 VPN 구성을 추가하라는 메시지가 표시되면 내용을 확인한 뒤 허용합니다. 시스템 설정에서 VPN 항목의 이름과 위치는 버전에 따라 달라질 수 있으므로 기기에 표시되는 내용을 기준으로 확인하세요.
- 저장한 뒤 조건을 변경합니다. 편집을 마치고 돌아온 다음 Wi-Fi 또는 셀룰러 네트워크를 한 번 전환합니다. 편집 화면에서 기다리기만 하지 말고, 저장되지 않은 내용을 적용된 규칙으로 간주하지 마세요.
- 연결 상태와 접속 결과를 각각 기록합니다. 현재 네트워크, VPN 연결 여부, 웹페이지 접속 가능 여부를 따로 적어 둡니다. 세 항목을 분리해야 트리거 실패와 연결 후 라우팅 실패를 구분할 수 있습니다.
On Demand는 시스템의 네트워크 기능으로 작동하므로 Shadowrocket을 계속 전면에 열어 둘 필요는 없습니다. 백그라운드에서 트리거되는지는 시스템이 조건에 맞는 네트워크 변경이나 연결 요청을 감지했는지에 달려 있습니다. 자동 연결을 확인하기 위해 앱을 반복해서 강제 종료할 필요는 없습니다.
Wi-Fi 이름과 셀룰러 네트워크별 동작 설정
Wi-Fi 조건의 이름은 SSID이며 라우터 관리 주소나 Wi-Fi 비밀번호가 아닙니다. 입력할 때는 대소문자, 공백, 기호를 그대로 유지하고 이름 앞뒤에 따옴표를 임의로 붙이지 마세요. 듀얼 밴드 네트워크에서 대역별로 이름이 다르면 필요한 SSID를 각각 조건에 추가해야 합니다. 같은 이름을 공유한다면 SSID 조건만으로는 주파수 대역을 구분할 수 없습니다.
아래 두 카드는 조건 설계 예시이며 그대로 가져올 수 있는 구성 텍스트가 아닙니다. HomeNet과 OfficeNet은 예시 이름이므로 실제 설정에는 기기의 Wi-Fi 목록에 표시되는 SSID를 입력하세요. Connect는 연결 설정을 요청하고 Disconnect는 해당 조건에서 연결을 해제합니다. 선택할 수 있는 동작은 앱 인터페이스에 표시되는 항목을 기준으로 확인하세요.
직접 연결이 확인된 가정용 네트워크
- 경로
- Settings → On Demand
- 조건 유형
- Wi-Fi, 지정 SSID
- 예시 이름
- HomeNet
- 동작
- Disconnect
- 확인 방법
- 셀룰러 네트워크에서 HomeNet으로 전환
해당 네트워크에서 VPN 연결을 유지하지 않으려는 경우에만 사용하세요. SSID가 일치한다고 해서 네트워크를 신뢰할 수 있다는 뜻은 아닙니다.
지정한 Wi-Fi를 벗어나면 연결
- 경로
- Settings → On Demand
- 조건 유형
- 셀룰러 네트워크
- 동작
- Connect
- 사전 확인
- 셀룰러 데이터가 켜져 있고 네트워크 사용이 허용되어 있음
- 확인 방법
- Wi-Fi를 끈 뒤 새 요청 보내기
이 조건은 셀룰러 네트워크에 적용되며, 이름을 지정하지 않은 모든 Wi-Fi에 자동으로 적용되지는 않습니다.
“HomeNet에서는 연결 해제하고 다른 Wi-Fi에서는 연결”하려면 다른 Wi-Fi 조건도 별도로 설정해야 합니다. 셀룰러 네트워크의 Connect 하나만 추가했다고 모든 경우가 처리되는 것은 아닙니다. 구체적인 SSID 조건은 포괄적인 네트워크 조건보다 앞에 두세요. 저장된 순서를 확인해 앞선 포괄 조건이 뒤의 구체 조건보다 먼저 일치하는 일이 없도록 합니다.
- HomeNet과 셀룰러 네트워크 두 상태부터 테스트한 다음 “다른 Wi-Fi” 조건을 추가하세요. 한 번에 세 가지 변수를 바꾸지 않는 것이 좋습니다.
- 같은 이름의 Wi-Fi가 서로 다른 장소에 있을 수 있습니다. SSID만 보고 자동으로 Disconnect하는 방식은 네트워크 보안 인증 수단으로 적합하지 않습니다.
- 웹 로그인 인증이 필요한 Wi-Fi에서는 먼저 네트워크 로그인을 마친 뒤 서버에 연결할 수 있는지 확인하세요. Wi-Fi에 연결된 것만으로 인터넷을 사용할 수 있는 것은 아닙니다.
도메인 평가: EvaluateConnection 조건의 범위 이해하기
시스템의 주문형 VPN 도메인 기능은 연결 평가에 사용되며, 브라우저에서 임의의 웹 주소를 열 때 실행되는 연결 전환 명령이 아닙니다. 네트워크 수준의 Connect 또는 Disconnect는 해당 네트워크 조건에서 동작을 직접 결정할 수 있습니다. 반면 도메인 평가는 일반적으로 EvaluateConnection과 도메인별 동작을 통해 특정 도메인 조회 시 연결이 필요한지 판단합니다. 현재 인터페이스에 해당 도메인 평가 옵션이 있을 때만 이 방식으로 설정하고, 도메인을 Wi-Fi 이름 입력란에 넣지 마세요.
ConnectIfNeeded에서 중요한 부분은 “필요한 경우”입니다. DNS 조회 실패, 지정된 DNS 서버 또는 탐지 결과를 바탕으로 VPN 연결이 필요한지 평가할 수 있습니다. 현재 네트워크에서 도메인이 이미 정상적으로 조회된다면 연결이 반드시 시작될 것이라고 기대해서는 안 됩니다. NeverConnect는 해당 도메인이 연결 설정을 트리거하지 않는다는 뜻이지, 그 도메인에 접속하면 이미 설정된 VPN이 즉시 끊긴다는 뜻은 아닙니다.
| 설정 단계 | 확인 대상 | 기대할 수 있는 동작 | 이 설정만으로 판단할 수 없는 사항 |
|---|---|---|---|
| 네트워크 조건 Connect | Wi-Fi 또는 셀룰러 네트워크 일치 | VPN 연결 요청 | 모든 요청이 프록시를 사용함 |
| 네트워크 조건 Disconnect | 지정된 네트워크 조건 | VPN 연결 해제 | 다른 네트워크에서도 연결이 끊긴 상태로 유지됨 |
| ConnectIfNeeded | 도메인 및 조회 평가 조건 | 연결이 필요한 조건을 충족하면 VPN 설정 | 같은 도메인의 페이지를 열면 반드시 트리거됨 |
| NeverConnect | 도메인 평가 | 해당 도메인은 연결 트리거를 담당하지 않음 | 이미 설정된 연결을 직접 해제함 |
| DOMAIN-SUFFIX | 터널을 통과하는 요청 | 도메인 접미사에 따라 정책 선택 | 터널 밖에서 VPN 자동 시작 |
요약: 안정적인 자동 연결이 필요하면 네트워크 조건부터 설정
“집 Wi-Fi를 벗어나면 연결”이 목적이라면 먼저 SSID와 셀룰러 네트워크의 Connect/Disconnect 조합을 설정하세요. 조회 결과에 따라 연결할 필요가 있을 때만 도메인 평가를 추가합니다. 모든 네트워크 조건을 도메인 평가로 대체하지 마세요.
도메인 조건을 테스트할 때는 사용자가 관리하고 조회 동작을 알고 있는 테스트 도메인을 사용하며 DNS 캐시의 영향을 배제해야 합니다. 이미 열려 있는 웹페이지, 재사용 중인 연결, IP 주소 직접 접속, 앱 자체의 암호화 DNS 사용은 예상한 시스템 도메인 조회 이벤트를 발생시키지 않을 수 있습니다. example.com은 규칙 형식을 설명하기 위한 예시일 뿐, “반드시 조회에 실패해 연결을 트리거하는” 테스트 대상으로 적합하지 않습니다.
연결을 설정한 뒤 Config 규칙으로 도메인 경로를 정하기
“특정 도메인은 프록시를 사용하고 나머지는 직접 연결”하려면 일반적으로 네트워크 조건으로 연결을 설정하고 Config의 Rule로 요청을 라우팅합니다. 아래는 규칙 예시입니다. PROXY는 현재 구성에서 실제로 사용할 수 있는 정책 이름이어야 하므로, 정책 정의를 확인하지 않고 기존 구성을 덮어쓰지 마세요.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX,example.com,PROXY는 example.com과 모든 하위 도메인에 일치합니다. 아웃바운드 정책을 선택하는 규칙이지 On Demand 도메인 조건을 만드는 규칙은 아닙니다.IP-CIDR,192.168.0.0/16,DIRECT,no-resolve는 대상 IP 대역에 적용됩니다.no-resolve는 이 IP 규칙을 위해 별도의 도메인 조회를 트리거하지 않는다는 뜻입니다.GEOIP,CN,DIRECT는 대상 IP와 로컬 데이터베이스를 기준으로 지역을 판정합니다. 정확한 도메인 규칙을 대신하거나 웹페이지 언어에 따라 분류하는 기능은 아닙니다.FINAL,PROXY는 앞선 규칙이 하나도 일치하지 않을 때 적용되는 기본 규칙이므로 규칙 맨 끝에 둡니다. 이 예시의 기본 동작은 프록시이며 “나머지는 모두 직접 연결”이 아닙니다. 후자가 필요하다면 용도를 확인한 뒤 기본 동작을 DIRECT로 바꾸세요.
검증은 두 단계로 진행합니다. 먼저 On Demand가 연결을 설정했는지 확인한 다음, Global Routing이 Config인지 확인하고 요청에 실제로 적용된 규칙을 살펴봅니다. Proxy 모드에서는 결과만으로 위 라우팅 규칙이 적용됐는지 판단할 수 없습니다. Direct 모드에서도 웹페이지에 접속된다는 사실만으로 프록시 경로가 정상이라고 볼 수 없습니다.
Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard 등의 연결 정보는 서버 프로토콜 단계에 속하며, “어떤 조건에서 연결할지”와는 별개의 설정입니다. 기존 서비스의 주소, 포트 또는 인증 정보가 유효하지 않다면 해당 항목부터 수정해야 합니다. On Demand 조건을 추가해도 프로토콜 설정의 유효성이 바뀌지는 않습니다.
한 번의 연결 전환만 보지 말고 네 가지 상태를 확인하기
한 번에 한 항목만 변경하고 저장한 뒤 해당 네트워크 상태로 다시 전환해 새 네트워크 요청을 보냅니다. 아래 결과는 앞서 든 조합의 확인 목표이며 모든 기기에서 동일하게 동작한다는 보장은 아닙니다. 네트워크 전환 중에는 연결이 다시 설정되는 과정이 있으므로 전환 직후 아이콘만으로 판단하지 마세요.
| 테스트 상태 | 조작 | 기대 결과 및 확인 항목 |
|---|---|---|
| 지정된 Wi-Fi | HomeNet에 연결하고 새 요청 보내기 | Disconnect가 적용되는지 확인하고 VPN 상태와 웹 접속 여부 점검 |
| 셀룰러 네트워크 | Wi-Fi를 끄고 셀룰러 데이터를 사용할 수 있는지 확인 | Connect가 적용되는지 확인하고 연결 설정 및 서버 연결 가능 여부 점검 |
| 다른 Wi-Fi | 다른 확인된 SSID에 연결 | 결과는 셀룰러 조건이 아니라 “다른 Wi-Fi” 조건에 따라야 함 |
| 지정된 Wi-Fi로 돌아가기 | 셀룰러 네트워크에서 HomeNet으로 전환 | Disconnect 조건이 다시 일치하는지 확인하고 포괄적인 규칙이 먼저 적용되는지 점검 |
“수동으로 연결을 끈 뒤 다시 연결됨” 현상이 나타나면 On Demand가 여전히 활성화되어 있는지, 현재 네트워크가 Connect 조건을 계속 충족하는지 먼저 확인하세요. 시스템이 조건에 따라 다시 연결하는 것은 앱이 조작을 무시한다는 뜻이 아닙니다. 일시적으로 연결을 끊어 두려면 먼저 On Demand를 비활성화한 다음 Home에서 연결을 해제하세요. 다시 사용할 때는 기록해 둔 설정대로 활성화합니다.
자주 묻는 질문: 자동 재연결, 도메인 미작동, 일부 접속 실패
연결을 껐는데 왜 곧바로 다시 켜지나요?
Settings → On Demand에서 현재 Wi-Fi 또는 셀룰러 네트워크에 Connect 조건이 일치하는지 확인하세요. 자동 연결을 잠시 멈추려면 먼저 On Demand를 끈 다음 Home에서 연결을 해제합니다. 기존 조건을 기록해 두고 나중에 다시 활성화하면 되므로, 일시 중지를 위해 전체 설정을 삭제할 필요는 없습니다.
셀룰러 네트워크에서는 자동 연결되는데 다른 Wi-Fi에서는 왜 안 되나요?
셀룰러 조건은 셀룰러 네트워크에만 적용됩니다. 다른 Wi-Fi의 동작을 설정했는지, 지정 SSID 조건이 포괄적인 조건보다 앞에 있는지 확인하세요. 먼저 Wi-Fi 웹 로그인 인증을 마친 뒤 다시 시도합니다. 수동 연결도 실패한다면 네트워크에서 기존 서버의 주소와 포트에 접속할 수 있는지 확인하세요.
도메인을 입력했는데 웹페이지를 열어도 왜 트리거되지 않나요?
입력한 곳이 Config의 DOMAIN-SUFFIX가 아니라 도메인 평가 항목인지 먼저 확인합니다. 이어서 ConnectIfNeeded의 조회 조건을 점검하세요. DNS 캐시, IP 주소 직접 요청, 앱 자체 DNS 사용은 트리거에 영향을 줄 수 있습니다. 해당 도메인에 프록시를 적용하려는 것뿐이라면 네트워크 Connect와 Config 라우팅을 함께 쓰는 편이 확인하기 쉽습니다.
자동 연결은 됐지만 일부 웹페이지가 열리지 않으면 어떻게 하나요?
Home에서 Global Routing을 확인한 다음 Config에서 현재 파일의 규칙 순서, DNS 설정, FINAL을 점검합니다. 접속에 실패하는 도메인과 정상 도메인에 어떤 정책이 적용되는지 비교하고, 원래 구성을 저장한 뒤 하나씩 조정하세요. 서버 변경, DNS 수정, On Demand 조건 순서 변경을 동시에 하면 무엇이 결과에 영향을 줬는지 판단하기 어렵습니다.