Shadowrocket 분기 규칙 설정: 특정 사이트만 PROXY로 연결하는 방법

DOMAIN-SUFFIX, DOMAIN-KEYWORD, FINAL,DIRECT를 예로 들어 소수의 사이트만 프록시를 사용하고 나머지는 직접 연결하는 방법과 규칙 순서가 매칭 결과에 미치는 영향을 설명합니다.

이 글 미리보기

이 글은 Shadowrocket에서 직접 서버 구성을 가져온 뒤, 특정 사이트에만 PROXY를 적용하려는 사용자를 위한 안내입니다. 핵심은 Global Routing에서 Config를 선택하고, 현재 구성에 대상 도메인을 먼저 지정한 다음 나머지 요청을 FINAL,DIRECT로 처리하는 것입니다. 설정 후에는 연결 아이콘만 보지 말고 요청 기록에서 실제로 적용된 규칙을 확인하세요.

1. Global Routing과 구성의 역할 확인

‘특정 사이트만 PROXY로 연결’하려면 규칙 기반 분기가 필요합니다. 연결 스위치를 켜는 것만으로 설정되지 않습니다. Home에서 선택한 서버는 프록시 출구를 제공하고, Config에서 활성화한 구성은 어떤 요청이 이 출구를 사용할지 결정합니다. 이 안내는 이미 사용할 서버와 구독을 보유한 경우를 전제로 하며, 연결 리소스를 얻는 방법은 다루지 않습니다.

Home에서 Global Routing을 열고 Config를 선택한 다음, Config에서 현재 활성화된 구성을 확인합니다. Proxy는 해당 모드로 처리할 수 있는 트래픽을 프록시로 보내고, Direct는 직접 연결합니다. 두 모드 모두 이 글에서 다루는 개별 규칙을 확인하는 데 적합하지 않습니다. Scene은 상황별 라우팅 동작을 선택하는 기능입니다. 처음 문제를 확인할 때는 Config로 고정해 Scene 전환에 따른 변수를 줄이세요.

요청이 터널로 진입 라우팅 모드 확인 규칙을 차례로 매칭 출구 정책 결정 대상에 연결

PROXY는 규칙에서 사용하는 정책 이름이고, Global Routing의 Proxy는 라우팅 모드입니다. 둘을 혼동하지 마세요. DIRECT는 대상에 직접 연결한다는 뜻이며, 요청이 시스템 VPN 터널을 거치지 않는다는 의미는 아닙니다. 상태 표시줄에 VPN 표시가 나타나도 터널이 연결된 상태일 뿐, 특정 사이트가 프록시 출구를 사용한다는 증거는 아닙니다.

2. 최소 규칙 작성: 지정 도메인은 PROXY, 나머지는 DIRECT

편집하기 전에 현재 구성을 백업해 복원할 수 있는 사본을 보관하세요. 아래는 규칙 구조의 예시입니다. example.com은 설명용 도메인이므로 실제로 매칭할 사이트의 도메인으로 바꿔야 합니다. 구독 주소나 서버 주소가 아닙니다.

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

각 필드는 영문 쉼표로 구분합니다. 첫 번째 줄의 DOMAIN-SUFFIX는 example.com 자체와 하위 도메인(예: www.example.com, static.example.com)을 매칭하지만 notexample.com은 매칭하지 않습니다. 마지막 줄의 FINAL,DIRECT는 도메인 조건을 더 확인하지 않고, 앞선 규칙에 매칭되지 않은 요청을 DIRECT로 보냅니다.

  1. Config에서 현재 활성화된 구성을 찾아 백업하거나 사본을 만듭니다.
  2. 해당 구성의 편집 화면을 열고 Rule 항목의 규칙 내용을 찾습니다. 텍스트 편집기를 사용한다면 [Rule]을 검색하세요.
  3. 대상 도메인 규칙은 적용 범위가 넓은 규칙보다 앞에 두고, FINAL,DIRECT는 규칙 끝에 배치합니다.
  4. 구성을 저장하고 활성화한 뒤 Home으로 돌아가 Global Routing이 Config인지 다시 확인합니다.
  5. 테스트 요청을 다시 보냅니다. 기존 연결의 동작이 계속 보이면 해당 연결을 종료하고 다시 테스트하세요. 필요하면 터널을 재연결합니다.

내용 전체를 구성 끝에 반복해서 붙여 넣지 마세요. [Rule] 구역이나 FINAL이 여러 개 생길 수 있습니다. PROXY가 지정하는 출구를 사용할 수 있는지도 확인하세요. 규칙은 트래픽의 목적지를 결정할 뿐, 서버에 연결할 수 없는 문제나 인증 정보 오류, 서버 측 설정 불일치를 해결하지는 않습니다.

3. DOMAIN-SUFFIX와 DOMAIN-KEYWORD 선택 방법

대상이 명확한 소수의 사이트만 처리하려면 DOMAIN-SUFFIX부터 사용하세요. 도메인 경계를 기준으로 매칭하므로 키워드 검색보다 범위를 제어하기 쉽습니다. 하위 도메인은 포함하지 않고 특정 호스트 하나만 처리하려면 DOMAIN으로 정확히 매칭할 수 있습니다.

도메인 경계 기준 매칭

키워드
DOMAIN-SUFFIX
전체 규칙
DOMAIN-SUFFIX,example.com,PROXY
매칭 예시
example.com、img.example.com
매칭되지 않는 예시
notexample.com

사이트의 기본 도메인을 알고 있고 하위 도메인까지 적용해야 하는 경우에 적합합니다.

도메인 문자열 기준 매칭

키워드
DOMAIN-KEYWORD
전체 규칙
DOMAIN-KEYWORD,example,PROXY
매칭 예시
example.com、notexample.com
범위 확대 위험
관련 없는 사이트까지 포함될 수 있음

키워드는 브랜드를 식별하지 않습니다. 실제 적용 범위는 요청 기록으로 확인해야 합니다.

DOMAIN-KEYWORD는 도메인에 지정한 문자열이 포함되어 있는지 확인하며, 전체 URL을 검색하지 않습니다. 예를 들어 https://www.example.com/video?id=8의 경로 /video와 쿼리 매개변수 id=8은 이 규칙의 매칭 대상이 아닙니다. 도메인 필드에 https://, 경로 또는 페이지 제목을 입력해도 웹페이지 경로를 기준으로 분기할 수 없습니다.

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

이 규칙에는 예외가 명시되어 있습니다. login.example.com은 직접 연결하고, example.com에 속하는 나머지 도메인은 PROXY를 사용합니다. 같은 구성에 범위가 넓은 DOMAIN-KEYWORD를 추가했다면 직접 연결하려는 사이트까지 포함되는지 다시 확인하세요.

4. 규칙 순서: 예외를 먼저, 일반 조건은 나중에

규칙은 순서대로 확인하며, 요청이 규칙에 매칭되면 해당 정책을 적용합니다. 뒤에 더 구체적인 조건이 있어도 결과가 자동으로 바뀌지 않습니다. 따라서 ‘정확한 예외를 앞에, 범위 규칙을 그다음에, FINAL을 마지막에’ 두는 편이 관리하기 쉽습니다.

규칙 배치요청 도메인예상 결과
DOMAIN 정확 매칭 예외를 DOMAIN-SUFFIX보다 앞에 배치 login.example.com 예외가 먼저 매칭되어 DIRECT
DOMAIN-SUFFIX를 정확 매칭 예외보다 앞에 배치 login.example.com 접미사 규칙이 먼저 매칭되어 PROXY
대상 도메인 규칙보다 앞에 FINAL 배치 www.example.com FINAL이 먼저 처리해 이후 규칙은 매칭되지 않음
대상 접미사 규칙과 마지막 FINAL,DIRECT만 배치 www.example.net 대상 접미사와 일치하지 않아 최종적으로 DIRECT

확인 방법: 테스트할 도메인을 첫 번째 규칙부터 대입하기

첫 번째로 매칭되는 조건의 정책을 확인하세요. 결과가 정해졌다면 목록 끝에 임시 규칙을 더하지 말고, 해당 규칙의 위치나 범위를 먼저 조정합니다.

GEOIP와 IP-CIDR은 도메인 규칙과 다른 조건을 처리합니다. GEOIP는 대상 IP의 지리 데이터베이스 결과로 매칭하고, IP-CIDR은 주소 범위로 매칭합니다. 두 규칙 모두 ‘특정 웹사이트 브랜드’를 정확히 지정할 수는 없습니다. 한 사이트가 여러 지역의 주소를 사용할 수 있고, 하나의 주소에서 여러 사이트가 서비스될 수도 있습니다.

5. 저장 후 확인 방법: 웹페이지가 열리는지만 보지 않기

웹페이지가 정상적으로 열렸다는 사실만으로는 요청에 사용할 경로가 있다는 것만 확인할 수 있으며, 출구가 올바른지는 알 수 없습니다. 먼저 대상 도메인 하나와 대상이 아닌 도메인 하나를 비교하고, 그다음 하위 도메인과 예외 도메인을 추가해 테스트하세요. 아래는 확인 기준이며 어떤 네트워크 환경의 속도 측정 결과도 아닙니다.

  1. Home에서 사용할 수 있는 서버가 선택되어 있는지, Global Routing이 Config인지, 연결이 설정되었는지 확인합니다.
  2. 현재 요청 기록이나 연결 세부 정보를 열고 필터를 초기화한 다음 대상 페이지에 다시 접속합니다. 이전 기록을 새 결과로 착각하지 않도록 하세요.
  3. 대상 호스트 이름을 찾아 매칭된 규칙과 출구 정책을 확인합니다. 대상 도메인은 지정한 DOMAIN 또는 DOMAIN-SUFFIX에 매칭되고 PROXY를 사용해야 합니다.
  4. 규칙에 없는 도메인에 접속해 FINAL,DIRECT가 처리하는지 확인합니다. 다른 규칙에 매칭되면 Config로 돌아가 앞쪽 항목을 점검하세요.
  5. 예외 도메인과 대상 하위 도메인을 테스트한 다음 전체 페이지를 열어 이미지, 로그인, 동영상 요청이 각각 예상대로 처리되는지 확인합니다.

웹페이지 하나가 도메인 하나를 뜻하지는 않습니다. 본문, 정적 리소스, 로그인 API, 미디어 콘텐츠가 서로 다른 호스트에서 제공될 수 있습니다. 홈 화면은 정상인데 이미지가 표시되지 않는다면 요청 기록에서 실패한 리소스의 실제 도메인을 먼저 찾고, 필요한 경우에만 규칙을 추가하세요. 짧고 범위가 넓은 키워드를 바로 구성에 넣지 마세요.

6. 자주 묻는 질문: 규칙을 바꿨는데도 예상대로 동작하지 않을 때

FINAL,DIRECT를 추가했는데도 많은 사이트가 PROXY를 사용하는 이유는 무엇인가요?

먼저 Home → Global Routing에서 Config가 선택되어 있는지 확인한 다음, 요청에 처음으로 매칭된 규칙을 살펴보세요. 앞쪽에 PROXY를 지정하는 DOMAIN-KEYWORD, 규칙 모음 또는 IP 조건이 남아 있다면 해당 항목을 조정해야 합니다. FINAL은 앞에서 처리되지 않은 요청만 받습니다.

하위 도메인 하나만 프록시로 연결하려면 사이트 전체가 포함되지 않게 어떻게 설정하나요?

DOMAIN,video.example.com,PROXY를 사용하고 마지막에는 FINAL,DIRECT를 유지하세요. 대상과 충돌하는 범위가 넓은 접미사 또는 키워드 규칙이 있는지도 확인해 삭제한 다음, video.example.com과 www.example.com을 각각 테스트합니다.

내 구독을 업데이트한 뒤 출구나 구성이 달라진 이유는 무엇인가요?

먼저 서버 구독 업데이트와 원격 구성 업데이트를 구분하세요. 전자는 선택할 수 있는 서버를 바꿀 수 있고, 후자는 Rule을 수정할 수 있습니다. Home에서 선택된 서버를 확인하고 Config에서 활성화된 파일과 규칙 내용을 점검하세요. 로컬 수정 사항은 별도 사본에 저장하고 업데이트 전후 내용을 비교합니다.

분기하려면 On Demand를 꺼야 하나요?

그럴 필요는 없습니다. Settings → On Demand는 조건에 따라 연결을 시작할 시점을 정하고, Config의 Rule은 연결이 설정된 뒤 트래픽을 어떻게 분기할지 결정합니다. 문제를 확인할 때는 테스트 조건을 일정하게 유지하도록 잠시 수동으로 연결할 수 있습니다. 규칙 확인을 마친 뒤에는 네트워크 환경에 맞는 On Demand 설정으로 되돌리세요.

설정을 관리할 때는 한 번에 변수 하나만 바꾸세요. 먼저 출구를 사용할 수 있는지 확인하고, 이어서 모드, 활성 파일, 매칭 조건, 규칙 순서를 점검합니다. 새 도메인을 추가한 이유를 기록하고 테스트 대상을 고정해 두세요. 문제가 생기면 구성을 다시 작성할 필요 없이 마지막 변경을 되돌릴 수 있습니다.

App Store 정품 구매 경로 개발자와 앱 ID를 먼저 확인하세요