Shadowrocket에서는 ‘지정한 도메인은 PROXY, 나머지 요청은 DIRECT’로 설정해 사이트별로 트래픽을 라우팅할 수 있습니다. 구독을 이미 추가하고 정상적으로 연결할 수 있지만 모든 웹사이트를 프록시로 연결하고 싶지는 않은 사용자를 위한 안내입니다. Global Routing에서 Config를 선택하고 대상 도메인 규칙을 앞쪽에 배치한 다음 FINAL,DIRECT로 마무리하세요. 확인할 때는 일치한 규칙과 최종 정책뿐 아니라 웹페이지가 요청하는 관련 도메인도 함께 살펴봐야 합니다.
1. Config 모드와 기존 연결 확인
규칙은 요청에 적용할 정책을 결정할 뿐, 사용할 수 있는 프록시 연결을 만들어 주지는 않습니다. 시작하기 전에 Home에서 기존 구독을 가져왔는지, 선택한 서버에 연결할 수 있는지 확인하세요. 이 글에서는 노드나 구독을 제공하거나 판매하거나 추천하지 않습니다. 예시는 로컬 규칙 구조만 설명하며, 연결 가능한 서비스 주소를 포함하지 않습니다.
Home → Global Routing에서 Config를 선택해야 현재 구성의 규칙에 따라 트래픽이 라우팅됩니다. Proxy는 전체 트래픽을 프록시로 연결하는 모드이고 Direct는 전체 트래픽을 직접 연결하는 모드이므로, 이 글에서 설명하는 도메인별 라우팅을 확인하기에는 적합하지 않습니다. Scene은 상황별 선택에 사용하는 기능이며, 이번 기본 확인 절차에서는 제외해 모드 전환으로 인한 혼선을 방지합니다.
- Home: 선택한 서버와 연결 스위치를 확인한 다음 Global Routing에서 Config를 선택합니다.
- Config: 이름이 같은 다른 파일을 저장만 해 둔 상태가 아니라, 편집하려는 구성이 현재 활성화되어 있는지 확인합니다.
- Settings → On Demand: 현재 설정을 기록해 둡니다. On Demand는 연결을 자동으로 설정하는 조건에 영향을 주지만, 특정 도메인을 PROXY로 지정하는 기능은 아닙니다.
클라이언트 구입과 회선 이용은 별개입니다. 클라이언트 일회성 구입은 회선 요금제를 포함하지 않습니다. Shadowrocket은 Apple 플랫폼 전용 상용 앱이며 App Store에서만 이용할 수 있습니다. iPhone, iPad 및 기타 호환 기기의 시스템 요구 사항은 App Store 페이지를 확인하세요.
2. 기본 규칙: 지정 도메인은 앞에, FINAL,DIRECT는 뒤에
아래 코드는 구성 파일의 [Rule] 섹션에 넣는 내용이며, 완성된 구성 파일이 아닙니다. example.com과 example.net은 예시 도메인이므로 실제로 라우팅할 도메인으로 바꿔야 합니다. 코드를 구독 주소 입력란에 붙여 넣거나 DNS, 정책 그룹 등의 설정이 포함된 전체 구성을 그대로 덮어쓰지 마세요.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY는 example.com 자체와 하위 도메인(예: www.example.com, api.example.com)에 일치합니다. 입력할 때는 도메인만 쓰고 https://, 포트, 경로, 쿼리 매개변수는 포함하지 마세요. 문자열이 비슷하다는 이유만으로 notexample.com에 일치하지는 않습니다.
FINAL,DIRECT는 앞선 규칙이 하나도 일치하지 않을 때 DIRECT를 적용한다는 뜻입니다. 규칙은 순서대로 확인하며 가장 먼저 일치한 규칙이 정책을 결정하므로 FINAL은 규칙의 마지막에 두어야 합니다. 앞쪽에 더 넓은 범위의 PROXY 규칙이 남아 있으면 해당 요청은 FINAL까지 도달하지 않습니다. 마지막 줄만 수정해도 ‘그 외 모든 트래픽을 직접 연결’하도록 보장할 수는 없습니다.
전체 구성 백업하기Config에서 원본 구성의 사본을 저장한 뒤 작업용 사본을 수정합니다. 기존 구성에 여러 규칙 섹션, 규칙 세트 참조 또는 복잡한 정책이 있다면 먼저 순서와 용도를 확인하세요. 예시처럼 세 줄만 남기려고 여전히 필요한 다른 설정을 바로 삭제하지 마세요.
3. DOMAIN-SUFFIX와 DOMAIN-KEYWORD 선택하기
대상 웹사이트의 기본 도메인을 알고 있다면 DOMAIN-SUFFIX를 우선 사용하세요. DOMAIN-KEYWORD는 도메인 문자열에 포함된 키워드를 기준으로 일치시키므로 범위가 대체로 더 넓으며, ‘웹사이트 이름을 식별’하는 기능은 아닙니다. 예를 들어 키워드로 example을 사용하면 같은 문자열이 포함되어 있지만 다른 주체에 속한 도메인도 PROXY로 연결될 수 있습니다.
| 규칙 | 일치 범위 | 사용 사례 |
|---|---|---|
DOMAIN,api.example.com,PROXY | 지정한 정확한 도메인만 | 인터페이스 도메인 하나만 조정 |
DOMAIN-SUFFIX,example.com,PROXY | 기본 도메인과 하위 도메인 | 같은 도메인 계열 전체 라우팅 |
DOMAIN-KEYWORD,example,PROXY | 도메인에 지정한 문자열이 포함됨 | 범위를 확인한 키워드 규칙 |
키워드 규칙이 꼭 필요하다면 FINAL 앞에 아래 줄을 추가할 수 있습니다. 확인하지 않은 키워드를 여러 개 한꺼번에 추가하지 마세요. 일반 웹사이트까지 PROXY에 일치할 수 있고, 문제를 진단할 때 어느 규칙이 범위를 넓혔는지 파악하기 어려워집니다.
DOMAIN-KEYWORD,example,PROXY
규칙은 전체 웹페이지 경로를 기준으로 같은 도메인에 있는 페이지를 구분할 수 없습니다. https://example.com/news와 https://example.com/account에 접속할 때 DOMAIN-SUFFIX가 확인하는 대상 도메인은 같습니다. 특정 페이지에만 프록시를 적용하려고 경로가 포함된 URL을 이 규칙에 입력하지 마세요.
4. Config에서 규칙을 적용하는 5단계
수정 중에는 변수를 최소화하세요. 같은 기기와 네트워크, 같은 서버를 유지하고 한 번에 규칙 한 묶음만 수정합니다. 구독의 서버 목록 업데이트와 로컬 규칙 파일 편집은 별개의 작업입니다. 구독을 새로고침해도 수정한 Config가 활성화되는 것은 아닙니다.
-
구성 백업
Config에서 현재 사용하는 구성을 찾아 사본을 저장합니다. 원래 선택되어 있던 파일을 기록해 두고, 문제가 생기면 원본 구성으로 돌아갈 수 있는지 확인하세요.
-
규칙 편집
작업용 사본의 편집 화면을 열고 [Rule] 섹션을 찾습니다. 대상 DOMAIN-SUFFIX 규칙은 충돌할 수 있는 범위가 넓은 규칙보다 앞에 둡니다. 일부만 직접 연결하는 예외가 필요하면 범위가 더 정확한 DOMAIN,DIRECT 규칙을 더 앞에 배치하세요.
-
마무리 확인
규칙의 마지막이 FINAL,DIRECT인지 확인하고, 그 앞에 모든 요청을 처리하거나 범위가 지나치게 넓은 PROXY 규칙이 남아 있지 않은지 살펴봅니다. 저장한 뒤 Config에서 작업용 사본을 활성화하세요.
-
모드 선택
Home → Global Routing → Config로 돌아가 선택한 서버를 사용할 수 있는지 확인한 다음 연결을 켭니다. 규칙 적용 여부를 테스트할 때 Proxy나 Direct 모드에 두지 마세요.
-
다시 확인
기존 웹 연결을 닫고 새로 접속합니다. 필요한 경우 Shadowrocket 연결도 다시 설정하세요. 연결 기록에서 대상 도메인, 일치한 규칙, 최종 정책을 확인한 뒤 규칙에 없는 웹사이트도 테스트합니다.
5. 라우팅 확인: 웹페이지 결과만 보지 말고 요청 확인하기
웹페이지 하나가 여러 도메인에 요청을 보내는 경우가 많습니다. 페이지 본문, 이미지, 스크립트, 로그인 API, 미디어 리소스가 같은 기본 도메인을 사용한다고 볼 수는 없습니다. 메인 페이지가 PROXY에 일치해도 관련 요청 모두가 같은 규칙에 일치하는 것은 아닙니다. 페이지는 열리지만 이미지가 표시되지 않는다면 Global Routing을 장시간 Proxy로 바꾸기 전에 실패한 리소스의 실제 도메인부터 확인하세요.
이 흐름에서 알아둘 점은 두 가지입니다. VPN 표시가 나타났다는 것은 시스템 터널이 작동 중이라는 뜻일 뿐, 모든 요청이 프록시 서버를 거친다는 증거는 아닙니다. DIRECT 요청도 먼저 터널로 들어온 다음 Shadowrocket이 규칙에 따라 대상에 직접 연결할 수 있습니다. 연결 스위치가 켜져 있다는 이유만으로 ‘모든 웹사이트가 프록시를 사용한다’고 판단하지 마세요.
- 대상 웹사이트 테스트: 규칙에 추가한 도메인에 접속해 해당 DOMAIN-SUFFIX 규칙에 일치하는지, 최종 정책이 PROXY인지 확인합니다.
- 비교 웹사이트 테스트: 다른 규칙에 적용되지 않는 도메인에 접속해 FINAL에 도달하는지, 최종 정책이 DIRECT인지 확인합니다.
- 관련 리소스 테스트: 페이지 일부가 제대로 표시되지 않으면 실패한 요청의 도메인을 기록하고, 필요한 경우에만 하나씩 규칙을 추가합니다. 범위가 지나치게 넓은 키워드 하나로 처리하지 마세요.
- 기존 연결 재사용 확인: 규칙을 수정해도 기존 연결이 계속 사용될 수 있습니다. 새 규칙의 결과를 기존 연결 결과로 오해하지 않도록 페이지나 앱의 이전 연결을 닫은 뒤 다시 테스트하세요.
도메인 규칙은 요청에서 도메인 정보를 확인할 수 있어야 적용됩니다. 앱이 IP에 직접 연결하거나 주소를 캐시했거나 특수한 DNS 확인 방식을 사용하는 경우 DOMAIN-SUFFIX에 반드시 일치한다고 볼 수 없습니다. IP 기준으로 라우팅해야 한다면 IP-CIDR의 네트워크 범위와 규칙 순서를 별도로 확인하세요. GEOIP는 IP 주소의 지리적 위치를 기준으로 일치시키는 규칙이며, 웹사이트 운영자의 소재지를 판별하는 기준은 아닙니다.
6. 웹사이트가 열리지 않을 때: DNS, 연결, 규칙 문제 구분하기
아래는 브라우저에 표시될 수 있는 네트워크 오류 문구의 예시이며, Shadowrocket에 고정된 팝업 메시지가 아닙니다. 브라우저마다 표시 방식이 다를 수 있습니다. 먼저 어느 단계에서 실패했는지 확인한 뒤 규칙을 수정하세요. 시간 초과가 반드시 규칙 오류를 뜻하는 것은 아니며, DNS 확인 실패가 곧 서버를 사용할 수 없다는 의미도 아닙니다.
ERR_NAME_NOT_RESOLVED
원인: 브라우저가 대상 도메인의 DNS 확인을 완료하지 못했습니다. 도메인 철자나 현재 DNS 경로가 원인일 수 있습니다.
해결 방법: 먼저 도메인을 확인하고 Config의 기존 DNS 설정과 연결 기록을 살펴보세요. DNS 문제를 진단하는 대신 DOMAIN-SUFFIX 규칙을 더 추가하지 마세요.
ERR_CONNECTION_TIMED_OUT
원인: 제한 시간 안에 대상 연결이 완료되지 않았습니다. 직접 연결 경로, 선택한 서버 또는 대상 웹사이트와 관련된 문제일 수 있습니다.
해결 방법: 먼저 해당 요청에 실제로 적용된 정책을 확인한 다음, 그에 해당하는 연결 경로를 각각 점검하세요. PROXY가 적용됐다면 우선 Home에서 선택한 서버에 연결할 수 있는지 확인합니다.
모든 웹사이트가 PROXY로 연결된다면 먼저 Global Routing이 Proxy로 설정되어 있는지 확인한 다음, 대상 규칙보다 앞에 더 넓은 범위의 규칙이 있는지 살펴보세요. 모든 웹사이트가 직접 연결된다면 현재 모드가 Config인지, 작업용 사본이 활성화되어 있는지, 도메인에 프로토콜이나 경로가 포함된 URL을 입력하지 않았는지 확인합니다.
규칙 이름과 정책 대상 각각 확인하기PROXY는 프록시 정책을 선택한다는 뜻이지 특정 프로토콜 이름이 아닙니다. 원래 구성에서 사용자 지정 정책 그룹을 사용한다면 규칙의 마지막 열에 적힌 그룹 이름이 실제로 존재하는지, 그룹에서 어떤 연결 경로를 선택했는지 확인하세요. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard 등의 연결 프로토콜 설정은 DOMAIN-SUFFIX 한 줄로 변경되지 않습니다.
7. 특정 사이트 라우팅 관련 자주 묻는 질문
하위 도메인 하나만 프록시로 연결하려면 어떻게 하나요?
[Rule]에 DOMAIN,api.example.com,PROXY를 사용하고 마지막의 FINAL,DIRECT는 그대로 둡니다. 앞에 해당 도메인과 일치하는 DIRECT 규칙이 있다면 이 정확한 규칙을 그보다 앞에 배치하세요. 이 경우 기본 도메인 전체에 DOMAIN-SUFFIX를 추가할 필요는 없습니다.
사이트 전체는 프록시로 연결하고 특정 API만 직접 연결하려면 어떻게 하나요?
먼저 DOMAIN,api.example.com,DIRECT를 작성하고 다음 줄에 DOMAIN-SUFFIX,example.com,PROXY를 작성합니다. 범위가 더 정확한 예외를 먼저, 더 넓은 도메인 규칙을 그다음에 두고 마지막에 FINAL,DIRECT를 배치하세요.
구독을 업데이트한 뒤 규칙을 다시 작성해야 하나요?
먼저 업데이트한 항목이 Home의 서버 구독인지 Config의 원격 구성인지 확인하세요. 전자는 보통 서버 목록을 업데이트하고, 후자는 구성 내용을 바꿀 수 있습니다. 원격 구성을 업데이트하기 전에 로컬 사본을 보관하고, 업데이트 후에는 [Rule], 현재 활성화된 파일, 정책 그룹 이름을 다시 확인하세요. 직접 수정한 내용이 유지된다고 단정하지 마세요.
FINAL,DIRECT가 나머지 모든 요청을 직접 연결하나요?
현재 규칙 처리 과정에 들어왔고 앞선 규칙에 일치하지 않은 요청에만 적용됩니다. 먼저 Home → Global Routing에서 Config를 선택한 뒤 앞에 있는 모든 규칙과 참조 내용을 확인하세요. 이 규칙만으로 기기의 모든 네트워크 동작을 보장할 수는 없으며, DNS 조회에 사용할 경로도 지정하지 않습니다.
각 규칙의 용도를 설명할 수 있는 구성을 최종본으로 보관하세요. 대상 도메인 목록을 앞에 두고, 필요한 정확한 예외는 더 앞에, FINAL,DIRECT는 마지막에 배치합니다. 도메인을 추가할 때마다 대상 테스트와 직접 연결 비교 테스트를 한 번씩 수행하면 전역 모드를 반복해서 전환하는 것보다 실제 라우팅 적용 여부를 확인하기 쉽습니다.