· 규칙과 라우팅 · 약 8분

Shadowrocket 지정 사이트 프록시 설정: 규칙으로 특정 도메인만 프록시 연결

Global Routing에서 Config를 선택하고 DOMAIN-SUFFIX로 프록시할 사이트를 지정하는 방법을 소개합니다. 나머지 트래픽을 FINAL,DIRECT로 처리하고 규칙 적용 여부를 확인하는 방법도 안내합니다.

이 글의 핵심

Shadowrocket에서 지정한 사이트만 프록시로 연결하려면 세 가지 조건이 필요합니다. Global Routing은 Config로 설정하고, 현재 구성에 대상 도메인의 PROXY 규칙을 포함하며, 나머지 요청은 FINAL,DIRECT로 처리해야 합니다. 사용할 연결 정보가 준비된 사용자를 대상으로 구성 백업, 규칙 추가, 연결 기록 확인 순서로 안내합니다. 규칙 미일치와 규칙 일치 후 연결 실패를 구분해 살펴봅니다.

1. Config 선택 후 현재 구성 확인하기

규칙을 올바르게 작성했는데 적용되지 않는다면 먼저 Home → Global Routing을 확인하세요. 이 글에서는 도메인에 따라 트래픽 경로를 지정하므로 Config를 선택해야 합니다. Config 파일만 수정하고 Global Routing을 Proxy로 둔 상태에서는 ‘지정 사이트는 프록시, 나머지는 직접 연결’ 동작을 확인할 수 없습니다.

아래에서는 이번 작업과 직접 관련된 세 가지 옵션만 비교합니다. Global Routing의 전체 옵션 목록은 아닙니다. Config는 구성에 있는 규칙을 적용하고, 규칙의 PROXY는 요청을 프록시 정책으로 전달합니다. 이름은 비슷하지만 서로 다른 설정입니다.

Config

권장

현재 적용 중인 구성의 규칙에 따라 요청을 처리합니다. 대상 도메인은 PROXY로, 그 밖의 요청은 FINAL,DIRECT로 직접 연결할 수 있습니다.

적합한 경우: 명시한 도메인만 프록시로 연결하려는 경우

Proxy

가로챈 요청을 이 글의 도메인 목록에 따라 나누지 않고 프록시로 전달합니다. 임시로 사용한 뒤에는 Config로 되돌려 라우팅을 테스트하세요.

적합한 경우: 기존 프록시 연결로 대상 사이트에 접속할 수 있는지 임시로 확인할 때

Direct

가로챈 요청을 직접 연결로 처리합니다. 구성에 PROXY 도메인 규칙이 있어도 자동으로 프록시를 사용하지 않습니다.

적합한 경우: 현재 네트워크에서 대상 사이트가 직접 연결되는지 확인할 때

결론: 테스트 조건을 먼저 고정하세요

수정 전에 현재 구성 파일 이름, 선택한 연결, Global Routing 설정을 기록하세요. 이후 한 번에 규칙 하나만 변경해야 구성 전환, 연결 변경, 규칙 자체 중 무엇이 원인인지 판단할 수 있습니다.

2. 네 단계로 최소 규칙 구성 만들기

먼저 Home에서 사용할 수 있는 연결이 선택되어 있는지 확인한 다음 Config에서 구성을 수정하세요. 기존 구독은 연결 정보를 관리하는 데 쓰이며, 이 글에서 필요한 도메인 라우팅 규칙이 활성화되었다는 뜻은 아닙니다. 연결 목록 업데이트와 구성 규칙 수정은 각각 확인해야 합니다.

  1. 구성 백업

    Config로 이동해 현재 선택된 파일을 확인하고, 사용 가능한 공유 또는 내보내기 기능으로 원본을 보관하세요. 기존 구성을 수정할 때는 특히 기존 DNS, Host, 정책 설정을 유지하세요. 도메인을 추가하려고 파일 전체를 덮어쓰지 않도록 주의합니다.

  2. 규칙 편집

    Config에서 사용할 구성을 열고 편집 화면으로 이동한 다음, 기존 [Rule] 섹션에 아래 예시를 추가하세요. 파일에 해당 섹션이 이미 있다면 그 안에서 수정하고, 이름이 같은 섹션을 새로 추가하지 마세요.

  3. 파일 적용

    저장한 뒤 Config로 돌아가 방금 수정한 파일이 선택되어 있는지 확인하세요. 이름이 비슷한 다른 구성과 혼동하지 않도록 주의합니다. 파일을 저장했다는 사실만으로 해당 파일이 적용되었다고 볼 수는 없습니다.

  4. 라우팅 방식 선택

    Home → Global Routing → Config로 돌아가 Config를 선택하세요. Home에서 대상 연결이 계속 선택되어 있는지도 확인한 뒤 연결을 켜거나 다시 연결합니다. 이후 새 요청으로 규칙 적용 결과를 확인하고, 이미 열려 있는 페이지만으로 판단하지 마세요.

3. DOMAIN-SUFFIX로 프록시할 도메인 지정하기

아래 도메인은 문법 예시일 뿐 연결 서버 주소가 아닙니다. 실제로 접속하려는 웹사이트의 도메인으로 바꾸세요. 규칙의 도메인에는 https://, 포트, 경로를 포함하지 않습니다. 예를 들어 대상 페이지 주소가 https://www.example.com/account이면 일치 여부를 확인할 도메인은 www.example.com입니다.

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

DOMAIN-SUFFIX,example.com,PROXY는 example.com 자체와 하위 도메인(예: www.example.com, api.example.com)에 일치합니다. 도메인에 example이 포함되기만 하면 일치하는 규칙은 아니므로 notexample.com은 하위 도메인으로 처리되지 않습니다.

2개
예시에 사용된 DOMAIN-SUFFIX 프록시 규칙
1개
규칙 끝에 배치하는 FINAL,DIRECT
3개 항목
도메인 규칙은 유형, 도메인, 정책 순서로 작성합니다

특정 호스트 이름만 프록시로 연결하고 같은 도메인의 다른 호스트는 제외하려면 범위가 더 좁은 DOMAIN 규칙을 사용하세요. 예를 들어 아래 규칙은 api.example.com에만 일치합니다. www.example.com은 이 줄에 일치하지 않으므로 다음 규칙을 계속 확인합니다.

[Rule]
DOMAIN,api.example.com,PROXY
FINAL,DIRECT

DOMAIN과 DOMAIN-SUFFIX로는 같은 도메인 아래의 페이지 경로를 구분할 수 없습니다. 같은 사이트에서 /video는 프록시로, /news는 직접 연결하려 해도 DOMAIN-SUFFIX 뒤에 경로를 추가하는 방식으로는 구현할 수 없습니다. 먼저 도메인 기준으로 구분할지 페이지 콘텐츠 기준으로 구분할지 정한 뒤 이 방법이 적합한지 판단하세요.

4. 규칙 순서와 FINAL 위치 확인하기

규칙은 순서대로 확인하며, 일치하면 일반적으로 이후 규칙은 더 이상 확인하지 않습니다. 범위가 넓은 규칙보다 구체적인 예외를 앞에 두세요. FINAL은 나머지 요청을 처리하는 기본 규칙이므로 도메인 규칙보다 앞에 두면 안 됩니다. 여러 구성의 FINAL 규칙을 한 섹션에 그대로 중복해서 넣지 마세요.

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

이 예시에서는 account.example.com이 먼저 DIRECT에 일치합니다. example.com에 속한 다른 호스트는 뒤에 있는 PROXY 규칙과 계속 일치할 수 있습니다. 앞의 두 줄 순서를 바꾸면 범위가 넓은 DOMAIN-SUFFIX가 먼저 일치해 앞서 설정한 직접 연결 예외가 적용되지 않습니다.

5. 연결 기록으로 라우팅 결과 확인하기

페이지가 열렸다는 것은 해당 접속이 성공했다는 뜻일 뿐, 예상한 정책이 적용되었다는 증거는 아닙니다. 대상 호스트 이름, 일치한 규칙, 실제 적용된 정책을 함께 확인하세요. 테스트할 때는 대상 사이트와 목록에 없는 사이트에서 각각 새 요청을 발생시켜 기존 연결이나 페이지 캐시의 영향을 줄이세요.

  1. Home → Global Routing이 계속 Config인지, Config에서 방금 수정한 파일이 선택되어 있는지 확인하고 연결이 켜져 있는지도 확인하세요.
  2. 대상 사이트에 다시 접속한 다음 앱 내 연결 기록에서 해당 호스트 이름을 찾아 예상한 DOMAIN 또는 DOMAIN-SUFFIX 규칙에 일치했는지, PROXY로 전달되었는지 확인하세요.
  3. 프록시 목록에 없는 사이트에 접속해 해당 요청이 FINAL로 처리되어 DIRECT에 전달되는지 확인하세요. 같은 사이트의 다른 하위 도메인을 비교 대상으로 사용하지 마세요.
  4. 리디렉션, 로그인, 이미지 로딩 문제가 있다면 새로 발생한 요청의 호스트 이름도 각각 확인하세요. 주소 표시줄만 보지 말고 페이지의 기본 도메인과 페이지가 사용하는 리소스 도메인을 따로 기록합니다.
확인된 현상우선 확인할 항목다음 단계
대상 요청이 FINAL,DIRECT에 일치함도메인 범위 및 적용 중인 구성기록에 표시된 실제 호스트 이름을 확인하고, 작성한 도메인 접미사에 해당하는지 살펴보세요.
대상 요청이 PROXY에 일치하지만 시간 초과됨선택한 연결 및 서버 연결 가능 여부규칙은 그대로 두고 기존 연결 정보와 연결 테스트 결과를 확인하세요.
목록에 없는 사이트도 PROXY로 연결됨Global Routing 및 다른 프록시 규칙Proxy가 선택된 상태가 아닌지 확인하고, 앞쪽 규칙이나 규칙 세트 참조를 살펴보세요.
웹페이지 텍스트는 표시되지만 이미지나 로그인이 실패함리소스 및 인증 도메인실패한 요청의 호스트 이름을 찾아 실제로 필요한 경우에만 범위가 좁은 규칙을 추가하세요.

이는 연결 기록을 해석할 때 예상할 수 있는 현상이며, 모든 네트워크 환경에서의 속도 테스트 결과를 뜻하지 않습니다. 기록에 PROXY 규칙이 올바르게 적용된 것으로 표시된다면 같은 도메인을 반복해서 추가해도 도움이 되지 않습니다. 이 경우 연결 설정, 서버 상태 또는 대상 사이트의 접속 제한을 확인하세요.

6. 리소스 도메인, DNS, 자동 연결 문제 확인하기

하나의 웹페이지가 기본 사이트, 로그인 API, 이미지 도메인, 별도의 콘텐츠 전송 도메인에 동시에 요청할 수 있습니다. 기본 사이트에 DOMAIN-SUFFIX를 추가해도 페이지에 필요한 모든 리소스가 같은 접미사를 사용한다는 뜻은 아닙니다. 실패한 요청 기록으로 도메인의 용도를 먼저 확인한 뒤 추가 여부를 판단하세요. 리소스 하나를 해결하려고 공용 도메인 범위 전체를 프록시하지 않도록 주의합니다.

문제 해결을 위해 On Demand 설정을 임시로 변경했다면 확인이 끝난 뒤 필요한 기존 설정으로 되돌리세요. 연결 스위치가 계속 켜져 있다는 사실만으로 실제 정책을 확인했다고 볼 수는 없습니다. 연결 상태는 트래픽 가로채기가 설정되었는지를 보여 주며, 개별 요청의 경로는 규칙 기록으로 확인해야 합니다.

7. 되돌릴 수 있는 규칙 목록 보관하기

테스트를 통과했다면 정상 작동하는 구성을 보관하고 새로 추가한 도메인의 용도를 기록하세요. 이후 특정 기능에 문제가 생기면 먼저 새로운 요청 도메인이 있는지 확인한 뒤 필요한 범위만 조정합니다. 규칙을 관리하는 목적은 프록시 범위를 계속 넓히는 것이 아니라 실제 요구에 맞게 유지하는 것입니다.

Shadowrocket은 비공개 소스 상용 앱이며, 앱 일회성 구매와 연결 서비스 요금제는 별개입니다. 이 글은 사용자가 직접 서비스 제공업체와 연결 정보를 준비한 경우를 전제로 합니다. 주로 iPhone과 iPad에서 사용할 수 있으며, Mac, Apple TV, Apple Vision 호환 여부는 App Store 페이지에서 확인할 수 있습니다. 시스템 요구 사항과 구매 가능 여부는 App Store 페이지 표기를 기준으로 하며, 앱을 받을 수 있는 유일한 곳은 App Store입니다.

App Store에서 Shadowrocket 다운로드