Shadowrocket 규칙 설정: 특정 사이트만 프록시로 연결하는 DOMAIN-SUFFIX 구성

Global Routing에서 Config를 선택한 상태에서 DOMAIN-SUFFIX, DOMAIN-KEYWORD, FINAL,DIRECT를 조합해 지정한 사이트는 PROXY로, 나머지는 직접 연결하는 방법을 설명합니다.

이 글 한눈에 보기

이 글은 Shadowrocket에서 사용할 수 있는 프록시 연결을 이미 설정했고, 특정 사이트만 프록시로 연결하려는 사용자를 위한 안내입니다. 먼저 Global Routing이 Config로 설정되어 있는지 확인한 다음, 도메인 목록 규칙을 앞부분에 넣고 FINAL,DIRECT로 마무리하세요. 기존 구성에 추가할 규칙 예시와 저장·활성화 절차, 확인 방법을 안내하고 규칙이 일치하지 않는 문제와 프록시 연결 실패를 구분해 설명합니다.

먼저 Config 확인: 목록 규칙 적용을 위한 전제

‘지정한 사이트만 프록시로 연결’하려면 서로 독립적인 두 조건이 필요합니다. 지정한 도메인과 일치하면 PROXY를 사용하고, 그 외 요청은 기본적으로 DIRECT를 사용해야 합니다. 도메인 규칙만 추가해서는 충분하지 않습니다. 현재 Global Routing이 Proxy로 설정되어 있다면 요청이 전역 프록시 방식으로 처리되므로, 이 설정으로 목록의 분류 결과를 확인할 수 없습니다.

Home에서 Global Routing을 열고 Config를 선택한 다음, Config에서 현재 사용 중인 구성 파일을 확인하세요. Home에서 선택한 프록시 연결도 정상적으로 사용할 수 있어야 합니다. 이 글은 이미 자체적으로 이용 중인 서비스와 구독 또는 연결 정보를 보유한 경우를 전제로 하며, 연결 서비스의 이용 방법은 다루지 않습니다.

모드처리 방식이 글에서의 사용 방법
Config현재 구성의 규칙에 따라 연결 방식을 결정합니다.목록 분류를 확인하기 위한 전제입니다.
Proxy전역 프록시 모드로, 이 글의 도메인 목록에 따라 분류하지 않습니다.프록시 연결이 작동하는지 비교 확인할 때 사용할 수 있습니다. 테스트 후 Config로 다시 전환하세요.
Direct전역 직접 연결 모드입니다.직접 연결 여부를 비교할 때 사용하며 PROXY 규칙은 확인할 수 없습니다.
Scene설정된 조건에 따라 해당 라우팅 설정을 적용합니다.문제를 해결할 때는 먼저 Config로 전환해 장면 전환으로 인한 변수를 줄이세요.

On Demand는 조건에 따라 연결을 설정하거나 복구하는 기능이며 도메인 규칙을 대신하지 않습니다. 테스트 중 연결이 자동으로 바뀐다면 Settings → On Demand에서 기존 조건을 확인하고, 원래 설정을 기록한 뒤 잠시 수동으로 연결을 제어하세요. On Demand, DNS, 규칙을 동시에 수정하면 어떤 변경이 영향을 주었는지 판단하기 어렵습니다.

최소 규칙: DOMAIN-SUFFIX와 FINAL,DIRECT 조합

아래는 규칙 부분의 예시이며 연결 매개변수를 모두 포함한 전체 구성은 아닙니다. example.com은 예시 도메인으로, 실제 프록시 연결이 필요한 사이트를 뜻하지 않습니다. 사용할 때는 원하는 사이트의 도메인으로 바꾸고 기존 구성의 [Rule] 섹션에 추가하세요. 이 부분으로 파일 전체를 덮어쓰지 마세요.

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

DOMAIN-SUFFIX,example.com,PROXY는 example.com 자체와 www.example.com, api.example.com 등의 하위 도메인에 일치합니다. 도메인 계층을 기준으로 일치하므로 notexample.com의 끝부분에 같은 문자열이 들어 있다는 이유만으로 같은 도메인 접미사로 처리하지 않습니다.

2줄
최소 규칙 조합: 도메인 일치 규칙 하나와 최종 정책 하나
접미사 1개
example.com은 기본 도메인과 하위 도메인을 함께 포함합니다
마지막 줄
FINAL,DIRECT는 일치시킬 모든 규칙 뒤에 배치

FINAL,DIRECT는 앞의 어떤 규칙에도 일치하지 않을 때 직접 연결을 사용한다는 뜻입니다. 규칙은 순서대로 확인하며 먼저 일치한 규칙의 정책이 적용됩니다. 따라서 목록 위에 범위가 넓은 규칙이 있거나 FINAL이 먼저 나오면 요청이 새로 추가한 줄까지 도달하지 않을 수 있습니다.

DOMAIN, DOMAIN-SUFFIX, DOMAIN-KEYWORD의 차이

목록의 정확도는 일치 키워드에 따라 달라집니다. 사이트의 기본 도메인과 하위 도메인을 모두 프록시로 연결하려면 DOMAIN-SUFFIX를 우선 사용하세요. 특정 호스트 이름 하나만 처리하려면 DOMAIN을 사용합니다. DOMAIN-KEYWORD는 도메인에 포함된 문자열을 기준으로 일치하므로 범위가 더 넓으며, 기본적으로 도메인 접미사를 대신하는 방식으로 사용하기에는 적합하지 않습니다.

규칙 형식일치 범위적합한 대상
DOMAIN,api.example.com,PROXYapi.example.com만 일치하며 그 하위 도메인은 포함하지 않습니다.특정 API 도메인 하나만 프록시로 연결할 때.
DOMAIN-SUFFIX,example.com,PROXYexample.com과 그 하위 도메인에 일치합니다.사이트 도메인별로 목록을 관리할 때.
DOMAIN-KEYWORD,example,PROXY도메인에 example이 포함된 요청과 일치하므로 관련 없는 도메인까지 포함될 수 있습니다.키워드 범위가 꼭 필요하고 오탐 여부를 확인할 수 있을 때 사용합니다.

규칙의 도메인에는 https://, 포트, 경로 또는 쿼리 매개변수를 포함하지 마세요. 예를 들어 example.com만 입력하고 https://example.com/account은 입력하지 않습니다. 이 도메인 분류 방식으로는 HTTPS 페이지의 경로를 기준으로 같은 호스트의 서로 다른 페이지를 구분할 수 없습니다.

특정 하위 도메인은 직접 연결하고 같은 기본 도메인의 나머지 요청은 프록시로 연결하려면 더 구체적인 예외 규칙을 접미사 규칙보다 앞에 두세요. 아래 순서에서는 status.example.com이 직접 연결되고, 그 밖에 해당 접미사와 일치하는 도메인은 프록시로 연결됩니다.

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

저장 및 활성화: 한 번에 규칙 한 묶음만 수정

먼저 기존 구성의 사본을 보관한 뒤 로컬 구성에서 필요한 부분만 수정하세요. 원격 구성 업데이트로 로컬 편집 내용이 덮어써질 수 있습니다. Home의 연결 구독 업데이트와 Config의 구성 파일 업데이트도 서로 다른 작업입니다. 문제를 확인할 때 현재 연결과 현재 구성을 각각 기록해 두면 연결 목록의 변경을 규칙이 적용된 것으로 착각하지 않습니다.

  1. 구성 백업

    Config로 이동해 현재 구성을 확인하고 사본을 보관하세요. 수정 후 복구할 수 있도록 기존 FINAL 정책과 규칙 세트 참조를 먼저 기록합니다.

  2. 규칙 편집

    Config에서 사용할 로컬 구성을 열고 편집 화면으로 이동해 목록을 [Rule] 섹션에 추가하세요. 해당 섹션에는 유효한 최종 기본 규칙을 하나만 두고, FINAL,DIRECT를 목록 뒤에 배치합니다.

  3. 저장 후 선택 확인

    저장한 뒤 Config로 돌아가 방금 수정한 파일이 선택되어 있는지 확인하세요. 이름이 비슷한 다른 구성이 선택되어 있지 않은지 살펴봅니다. 구문 오류가 표시되면 영문 쉼표, 키워드 철자, 각 줄의 필드 수부터 확인하세요.

  4. 모드 전환

    Home → Global Routing → Config로 돌아가 사용할 수 있는 프록시 연결이 선택되어 있는지 확인하세요. 필요하면 연결을 끊었다가 다시 연결해 현재 설정으로 테스트합니다.

  5. 다시 테스트

    대상 웹 페이지를 닫았다가 다시 열어 새 연결을 만든 다음 데이터 기록에서 도메인, 일치한 규칙, 실제 정책을 확인하세요. 수정 전에 이미 설정된 장시간 연결만 살펴보지 마세요.

다른 구성에서 규칙을 복사할 때는 정책 이름이 정의되어 있는지도 확인하세요. 사용자 지정 그룹 이름은 공통 내장 키워드가 아닙니다. 원본 파일에 있던 그룹 정책이 새 파일에도 정의되어 있다는 보장은 없습니다. 이 글의 목록 방식만 사용하려면 먼저 PROXY와 DIRECT로 확인한 뒤 정책 그룹을 추가하세요.

분류 확인: 웹 페이지가 열리는지만 보지 말고 일치한 규칙 확인

웹 페이지가 정상적으로 열렸다는 사실만으로는 어떤 연결 경로가 사용되었는지 알 수 없습니다. Shadowrocket의 데이터 기록에서 이번 요청의 도메인, 규칙, 출구 정책을 대조하세요. 기록이 활성화되어 있지 않다면 먼저 Settings에서 데이터 기록 설정을 확인한 뒤 요청을 다시 보내세요. 필요한 기록만 남기고 공유하기 전에는 도메인 이외의 민감한 정보를 삭제하세요.

새 요청 보내기 대상 도메인 확인 순서대로 규칙 일치 출구 선택 기록 확인

하나의 웹 페이지가 기본 사이트, 로그인 API, 정적 리소스, 미디어 도메인에 동시에 연결될 수 있습니다. 기본 사이트 요청은 PROXY에 일치하고 이미지 요청은 DIRECT에 일치해도 모순이 아닙니다. 페이지의 텍스트는 표시되지만 이미지나 로그인이 실패한다면 먼저 실패한 요청의 실제 도메인을 확인한 다음 목록에 추가할지 판단하세요. 범위를 넓히려고 짧은 DOMAIN-KEYWORD를 바로 추가하지 마세요.

GEOIP는 대상 IP의 지리 정보를 기준으로 일치하고, IP-CIDR은 IP 대역을 기준으로 일치합니다. 어느 쪽도 웹 사이트의 도메인 소속 여부를 판별하는 규칙은 아닙니다. 하나의 사이트가 여러 주소를 사용할 수도 있고 여러 사이트가 같은 주소를 공유할 수도 있습니다. 목록에 있는 사이트만 연결하는 설정이라면 편의를 위해 범위가 넓은 IP 프록시 규칙을 추가하지 마세요. 목록에 없는 요청까지 프록시로 연결될 수 있습니다. IP 주소로 직접 접속하는 요청은 도메인 규칙에 일치한다고 보장할 수 없습니다.

연결 실패: 규칙 문제와 출구 연결 문제를 먼저 구분

기록에 PROXY 규칙이 일치한 것으로 표시되는데도 요청이 실패한다면 DOMAIN-SUFFIX를 계속 수정해도 대개 해결되지 않습니다. 아래는 연결 진단에 나타날 수 있는 하위 단계 오류 메시지의 일부입니다. 표시 문구는 프로토콜과 실패 단계에 따라 달라지며 매번 똑같은 전체 오류가 나타나는 것은 아닙니다.

오류: connection refused

원인 및 해결: 대상 서버나 중간 장치에서 연결을 거부한 것입니다. 도메인 규칙이 적용되지 않았다는 뜻은 아닙니다. 먼저 기록에서 실제 출구를 확인한 뒤 기존 연결의 주소와 포트, 서버의 수신 대기 상태를 점검하세요. 포트는 본인의 구성에 맞춰야 합니다. 대상 웹 페이지가 HTTPS를 사용한다는 이유만으로 프록시 포트를 443으로 바꾸지 마세요.

오류: i/o timeout

원인 및 해결: 네트워크 읽기 또는 쓰기 단계 중 하나가 제한 시간을 초과한 것입니다. 이 문구만으로 로컬 네트워크 문제인지 프록시 경로 문제인지 판단할 수 없습니다. 규칙은 그대로 두고 Wi-Fi와 셀룰러 네트워크에서 각각 새 요청을 보내 같은 프록시 연결의 테스트 결과를 비교하세요.

오류: certificate has expired

원인 및 해결: TLS 검증에 사용되는 인증서의 유효기간에 문제가 있을 수 있으며 기기 시간이 잘못 설정된 경우에도 발생할 수 있습니다. 먼저 iPhone의 설정 → 일반 → 날짜 및 시간에서 시간을 확인한 다음 본인의 서비스 제공자에게 인증서를 확인하세요. 인증서 검증을 끄는 방식으로 문제를 감추지 마세요.

기록에 DIRECT가 표시되지만 PROXY를 예상했다면 규칙 설정을 확인하세요. 현재 파일이 올바른지, Global Routing이 Config인지, 실제 요청에 다른 도메인이 사용되었는지, 목록 앞에 먼저 일치하는 규칙이 있는지 살펴봅니다. 이런 근거를 바탕으로 수정하면 구성을 통째로 반복해서 다시 작성하는 것보다 원인을 쉽게 찾을 수 있습니다.

자주 묻는 질문: 도메인 추가, 업데이트, 복구

사이트 하나만 프록시로 연결하려면 모든 하위 도메인을 규칙에 추가해야 하나요?

같은 기본 도메인이라면 보통 DOMAIN-SUFFIX 규칙 하나면 충분합니다. 먼저 기본 도메인을 입력하고 리소스 요청을 확인하세요. 사이트가 다른 기본 도메인의 로그인 또는 리소스 서비스를 사용한다면 실제 기록을 확인해 해당 도메인을 각각 추가합니다. URL 전체를 규칙에 입력하지 마세요.

규칙을 추가했는데 모든 사이트가 여전히 프록시로 연결되면 어떻게 확인하나요?

먼저 Home → Global Routing에서 Config를 선택했는지 확인한 다음 Config에서 현재 파일을 확인하세요. 이어서 FINAL,PROXY, 범위가 넓은 다른 프록시 규칙 또는 프록시 규칙 세트가 남아 있는지 살펴봅니다. 목록에 있는 사이트만 프록시로 연결하려면 목록 밖 요청은 최종적으로 FINAL,DIRECT에 일치해야 합니다.

내 연결 구독을 업데이트하면 목록 규칙도 다시 작성해야 하나요?

Home의 연결 목록만 업데이트하는 경우 대체로 Config의 도메인 규칙을 다시 작성할 필요는 없지만 선택된 연결은 다시 확인해야 합니다. 원격 구성 파일을 업데이트했다면 로컬 편집 내용이 교체되었을 수 있습니다. 업데이트 후 현재 구성을 열어 [Rule]을 확인하고 목록 안팎의 도메인을 다시 비교 테스트하세요.

수정 후 접속에 문제가 생기면 이전 설정을 어떻게 복구하나요?

Config에서 미리 보관한 구성을 다시 선택하고 Home으로 돌아가 기존 Global Routing 모드를 확인한 다음 다시 연결하세요. 정상적으로 복구되면 사본에서 한 번에 규칙 하나만 추가합니다. 문제의 단서를 놓치지 않도록 구성 복구, 프록시 연결 변경, DNS 수정을 동시에 하지 마세요.

설정이 완료되면 세 가지만 확인하세요. Config가 적용 중인지, 목록에 있는 요청이 예상한 규칙에 일치하는지, 그 외 요청이 DIRECT로 처리되는지입니다. 구성 구조를 더 알아보려면 이 사이트의 기술 참고 자료를 확인하세요. 라우팅 모드의 차이를 알아보려면 프록시 모드 안내를 참고하세요.

App Store에서 다운로드정품 확인을 위한 세 가지 항목을 먼저 확인하세요