Shadowrocket 규칙 설정법: 특정 사이트만 프록시로 보내는 Config 예시

DOMAIN-SUFFIX와 DOMAIN-KEYWORD로 지정한 사이트는 PROXY로 보내고, 나머지는 FINAL,DIRECT로 직접 연결하는 방법을 소개합니다. 규칙의 위에서 아래로 적용되는 순서와 Global Routing에서 Config를 선택했을 때의 동작도 설명합니다.

이 글의 핵심

iPhone/iPad의 Shadowrocket에 본인이 보유한 서버를 이미 추가했고, 일부 사이트만 프록시로 연결하려는 사용자를 위한 안내입니다. 먼저 Global Routing(전역 라우팅)이 Config(구성)로 설정되어 있는지 확인한 뒤, 현재 구성에 도메인 규칙을 추가하고 FINAL,DIRECT를 마지막에 배치합니다. 아래에서 기존 설정에 합칠 수 있는 규칙 예시와 저장·확인 방법, 규칙이 적용되지 않거나 페이지 리소스가 제대로 로드되지 않을 때 점검할 사항을 살펴봅니다. 예시 도메인은 설명을 위한 텍스트입니다.

Config와 기본 서버 확인하기

Shadowrocket의 연결 스위치, 서버 선택, 라우팅 규칙은 서로 다른 설정입니다. 연결 스위치를 켜면 연결이 활성화될 뿐입니다. 도메인별 라우팅 여부는 Home(홈)의 Global Routing(전역 라우팅) 설정에 따라 달라집니다. 이 글에서는 Config(구성) 모드를 사용하며, 현재 구성에 있는 규칙으로 연결 경로를 결정합니다.

시작하기 전에 보유한 서버가 연결되는지 확인하세요. Home(홈)의 서버 목록에서 사용할 항목 왼쪽의 선택 원을 눌러 기본 서버로 지정한 다음 Connectivity Test(연결 테스트)를 실행합니다. 이 글에서는 기본 제공 정책인 PROXY(프록시)를 사용합니다. 기존 구성에서 규칙이 사용자 지정 정책 그룹을 가리킨다면 실제 서버 연결은 해당 그룹의 선택에도 영향을 받으므로 기본 서버만 확인해서는 안 됩니다.

Config(구성)

권장

현재 구성의 규칙을 기준으로 연결을 처리합니다. 특정 도메인은 PROXY(프록시)를 사용하고 나머지 요청은 DIRECT(직접 연결)로 보낼 수 있습니다.

적합한 용도: 지정한 사이트만 프록시로 연결하고 나머지는 직접 연결하는 이 글의 설정입니다.

Proxy(프록시)

클라이언트가 처리하는 연결을 모두 프록시로 보냅니다. 이 글의 도메인 규칙에 따라 라우팅하는 방식은 아닙니다. 프록시 연결 문제와 규칙 문제를 구분할 때 잠시 사용할 수 있습니다.

적합한 용도: 보유한 서버로 대상에 접속할 수 있는지 잠시 확인할 때입니다.

Direct(직접 연결)

클라이언트가 처리하는 연결을 직접 전송합니다. 구성에 PROXY가 있더라도 프록시를 사용하지 않습니다.

적합한 용도: 현재 네트워크에서 대상에 직접 연결되는지 확인할 때입니다.

Scene(장면)

설정된 장면 조건에 따라 해당 라우팅 설정을 적용합니다. 이 글에서 사용할 고정 구성 규칙 모드는 아니므로 문제를 확인할 때는 먼저 Config로 전환하세요.

적합한 용도: 장면 조건을 이미 설정해 사용하는 경우입니다.

모드를 먼저 고정한 다음 규칙 수정하기

테스트하기 전에 Global Routing을 Config로 설정하세요. 장면, 서버, 규칙을 동시에 바꾸면 접속 결과가 달라져도 어떤 설정이 영향을 줬는지 알기 어렵습니다.

최소 규칙: 지정 도메인은 프록시, 나머지는 직접 연결

규칙은 영문 쉼표로 항목을 구분합니다. DOMAIN-SUFFIX(도메인 접미사 일치)는 규칙 유형, 도메인 접미사, 대상 정책 순으로 입력합니다. 도메인 항목에는 호스트 이름만 입력하고 프로토콜, 경로, 포트, 와일드카드는 넣지 마세요. 아래는 규칙 영역의 예시이며 DNS 등 다른 설정을 포함한 전체 구성은 아닙니다.

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

이 부분을 기존 구성의 [Rule] 영역에 합치세요. 파일에 같은 이름의 규칙 영역을 여러 개 만들지 마세요. 기존 규칙이 있다면 먼저 백업한 뒤, 해당 규칙이 먼저 일치할 가능성이 있는지 확인하세요. “지정한 사이트만 프록시로 연결”하려면 다른 도메인까지 프록시로 보내는 광범위한 규칙을 남겨두면 안 되며, 기존 기본 처리 규칙이 중간에 들어가서도 안 됩니다.

2줄
최소 규칙 영역: 도메인 규칙 1개 + 기본 처리 규칙 1개
3개 항목
도메인 규칙 필드: 유형, 일치 값, 정책
마지막 1줄
FINAL,DIRECT: 앞선 규칙에 일치하지 않은 연결 처리

여기서 “나머지는 직접 연결”이란 해당 규칙 영역에서 앞선 규칙에 일치하지 않은 연결을 뜻합니다. 기기의 모든 시스템 통신이 요청 기록에 표시된다는 의미는 아닙니다. 또한 DNS 조회가 웹 연결과 반드시 같은 경로를 사용한다는 뜻도 아닙니다. DNS는 현재 구성에 따라 별도로 확인해야 합니다.

DOMAIN-KEYWORD와 규칙 순서

DOMAIN-KEYWORD(도메인 키워드 일치)는 도메인에 지정한 텍스트가 포함되어 있는지 확인합니다. 여러 도메인을 키워드로 묶어 처리해야 할 때 유용하지만 접미사 일치보다 적용 범위가 넓습니다. 사이트의 기본 도메인만 알고 있다면 DOMAIN-SUFFIX를 우선 사용하세요. 이름에 우연히 같은 문자가 들어간 다른 도메인까지 프록시로 연결되는 일을 막을 수 있습니다.

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

위 예시의 두 번째 규칙은 도메인에 media-example이 포함된 연결에 적용됩니다. 웹페이지 제목이나 본문 텍스트, 전체 URL을 검색하는 기능은 아닙니다. 사이트의 특정 경로에 적용하려고 example.com/video를 입력하지 마세요. 도메인 규칙으로는 같은 호스트의 서로 다른 URL 경로를 구분할 수 없습니다.

요청 호스트 이름먼저 일치한 규칙정책
api.example.comDOMAIN-SUFFIXPROXY
img.media-example.testDOMAIN-KEYWORDPROXY
unrelated.testFINALDIRECT

규칙은 위에서 아래로 순서대로 확인하며, 먼저 일치한 규칙의 정책을 적용합니다. 뒤에 있는 규칙이 더 구체적으로 보여도 자동으로 선택하지 않습니다. 예를 들어 local.example.com은 직접 연결하고 같은 접미사를 가진 나머지 도메인은 프록시로 연결하려면 정확한 도메인 규칙을 접미사 규칙보다 위에 배치해야 합니다.

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

iPhone/iPad에서 구성 저장 및 활성화

아래 절차는 사용할 수 있는 구성이 이미 있는 상태에서 시작합니다. 먼저 원본 구성을 보존하고 로컬 복사본을 편집하세요. 유일하게 사용 가능한 파일을 바로 덮어쓰지 마세요. 원격 구성을 다시 다운로드하거나 업데이트하면 로컬 수정 내용이 덮어써질 수 있으므로 “서버 목록 업데이트”와 “규칙 구성 교체”를 구분해야 합니다.

  1. 구성 백업하기

    Config(구성)를 열어 현재 선택된 파일을 확인합니다. 해당 파일의 작업 메뉴에서 복사본을 만들고, 문제가 생겼을 때 되돌릴 수 있도록 기존 파일 이름을 기록해 두세요.

  2. 규칙 편집하기

    Config에서 복사본의 파일 작업 메뉴를 열고 Edit Plain Text(일반 텍스트 편집)를 선택합니다. [Rule]을 찾아 필요한 도메인 규칙을 FINAL,DIRECT 앞에 추가하고, 다른 필수 구성 영역은 그대로 유지하세요.

  3. 편집한 파일 선택하기

    파일을 저장한 뒤 Config로 돌아가 방금 편집한 로컬 구성을 선택합니다. 원격 구성 대신 해당 파일에 선택 표시가 있는지 확인하세요.

  4. 모드 전환하기

    Home → Global Routing → Config로 이동합니다. Home으로 돌아와 기본 서버를 확인한 뒤 연결 스위치를 켭니다. 시스템 VPN 구성 권한 요청이 처음 표시되면 안내에 따라 허용하세요.

  5. 연결 다시 시작하기

    열려 있던 테스트 페이지를 닫고 대상을 다시 여세요. 필요하다면 Shadowrocket 연결을 끊었다가 다시 연결해 새 요청에 저장한 규칙이 적용되도록 합니다. 기존 연결을 재사용하는 경우는 검증 기준으로 삼기 어렵습니다.

Settings → On Demand(설정 → 요청 시 연결)가 켜져 있으면 수동으로 연결을 끊어도 조건에 따라 다시 연결될 수 있습니다. 테스트 중에는 해당 조건을 확인하고, 필요한 경우 On Demand를 잠시 끄세요. 테스트가 끝난 뒤 다시 켜는 것도 잊지 마세요. On Demand는 연결이 시작되는 조건을 관리하며 도메인 규칙을 대신하지 않습니다.

규칙 적용 여부를 확인한 뒤 페이지 종속 도메인 추가하기

검증은 두 그룹으로 나누세요. 하나는 프록시가 필요한 대상에 접속하고, 다른 하나는 규칙에 추가하지 않은 대상에 접속합니다. 먼저 Home에서 Connectivity Test를 실행해 기본 서버가 연결되는지 확인한 다음 새 웹 요청을 보냅니다. 테스트 통과는 해당 테스트 대상의 연결만 확인한 것이며 모든 사이트에 접속할 수 있다는 뜻은 아닙니다.

아래 형식으로 확인된 리소스 도메인을 하나 더 추가할 수 있습니다. 여기의 static.example.net은 설명용 텍스트이므로 요청 기록에서 실제 확인한 호스트 이름으로 바꾸세요. 이 호스트만 필요하다면 DOMAIN(정확한 도메인 일치)을 사용하면 되며 상위 도메인 전체를 프록시로 보낼 필요는 없습니다.

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

도메인 규칙을 적용하려면 연결에서 도메인 정보를 확인할 수 있어야 합니다. 앱이 IP 주소에 직접 연결하면 단순 도메인 규칙은 일치할 대상이 없을 수 있습니다. 이때 곧바로 넓은 주소 범위 규칙을 추가하지 마세요. 먼저 요청 대상과 DNS 조회 결과를 확인하고, 해당 연결이 실제로 프록시를 적용하려는 사이트에 속하는지 살펴보세요.

GEOIP, IP-CIDR 및 구독 업데이트의 적용 범위

GEOIP(IP의 지리적 위치에 따른 일치)와 IP-CIDR(IPv4 주소 범위에 따른 일치)은 주소 조건을 처리하는 규칙이지 사이트 목록이 아닙니다. 특정 도메인만 프록시로 연결하려는 최소 규칙에는 두 규칙이 필요하지 않습니다. 범위가 넓은 주소 규칙을 앞쪽에 추가하면 뒤에 오는 도메인 규칙과 기본 처리 규칙의 적용 범위가 달라집니다.

규칙 유형문법 예시확인할 점
DOMAIN-SUFFIXDOMAIN-SUFFIX,example.com,PROXY기본 도메인과 하위 도메인을 기준으로 사이트에 적용합니다.
DOMAIN-KEYWORDDOMAIN-KEYWORD,media-example,PROXY도메인에 포함된 텍스트를 기준으로 일치시키므로 의도치 않은 적용에 유의하세요.
GEOIPGEOIP,CN,DIRECT주소 위치 정보에 따라 판단하며, 사이트의 소속 지역을 뜻하지는 않습니다.
IP-CIDRIP-CIDR,192.0.2.0/24,DIRECT,no-resolve예시는 문서용 주소 범위입니다. no-resolve는 이 규칙을 위해 도메인을 직접 조회하지 않는다는 의미입니다.

표는 규칙 유형을 구분하기 위한 것으로, 모든 행을 구성에 추가할 필요는 없습니다. 특히 공유 서버 주소 하나에 여러 사이트가 연결될 수 있으므로 IP 범위 기준으로 프록시를 적용하면 “지정한 사이트만 선택”하려는 목적과 어긋날 수 있습니다. 도메인이 명확하다면 먼저 도메인 규칙을 사용하고, 주소 규칙은 주소 일치가 필요한지 확인한 경우에만 추가하세요.

자주 묻는 질문: 규칙을 작성했는데 라우팅이 예상과 다를 때

모든 사이트가 프록시로 연결되는 이유는 무엇인가요?

먼저 Home → Global Routing에서 Proxy가 아닌 Config가 선택되어 있는지 확인하세요. 그런 다음 현재 선택된 구성을 열어 FINAL,PROXY나 적용 범위가 지나치게 넓은 프록시 규칙이 남아 있는지 살펴보세요. 대상 규칙 이외의 연결이 어디로 가는지 확인한 뒤 기본 처리 규칙을 FINAL,DIRECT로 설정하세요.

지정한 사이트가 계속 직접 연결되는 이유는 무엇인가요?

Config에서 방금 편집한 파일을 사용 중인지 확인하세요. 도메인에 프로토콜이나 경로가 잘못 포함되지 않았는지, FINAL이 맨 앞에 있지 않은지, 먼저 일치하는 DIRECT 규칙이 있는지 살펴보세요. 그런 다음 열려 있던 페이지를 닫고 새 요청을 보낸 뒤 실제 호스트 이름을 확인하세요.

메인 페이지는 열리는데 로그인이나 이미지가 작동하지 않나요?

요청 기록에서 실패한 리소스의 호스트 이름을 찾고 기본 사이트 도메인 밖에 있는지 확인하세요. 프록시가 필요한 것으로 확인된 별도 도메인을 FINAL 앞에 추가한 다음 페이지를 다시 여세요. 페이지 한 번 로드에 실패했다고 서버 전체가 작동하지 않는다고 판단하지 마세요.

Proxy에서는 접속되지만 Config에서는 안 되나요?

먼저 Home → Global Routing → Config로 되돌린 다음 대상 요청에 어떤 규칙이 적용됐는지 확인하세요. DIRECT에 일치했다면 도메인 범위나 규칙 순서를 수정하세요. PROXY에 일치했다면 해당 정책에서 선택한 서버가 임시 Proxy 테스트에서 사용한 서버와 같은지 확인하고, DNS와 리소스 도메인도 점검하세요.

설정을 마친 뒤에는 작동하는 복사본을 보관하고 직접 추가한 도메인을 기록해 두세요. 한 번에 한 가지씩만 바꾸세요. 먼저 모드, 다음으로 규칙, 마지막으로 서버를 확인합니다. 이 순서로 점검하면 “구성이 활성화되지 않음”, “규칙이 적용되지 않음”, “프록시 연결 실패”를 구분할 수 있어 구성을 통째로 반복해서 교체할 필요가 없습니다.

App Store 정식 구매 확인