2026-08-06 · 규칙과 라우팅 · 약 8분

Shadowrocket 규칙 우선순위와 FINAL 설정 방법

Shadowrocket 규칙의 위에서 아래로 매칭되는 순서와 첫 일치 시 처리를 설명합니다. FINAL을 마지막에 두는 이유와 PROXY, DIRECT, REJECT의 용도를 확인해 보세요.

이 글의 핵심

이 글은 Shadowrocket에서 연결을 설정하고 라우팅 규칙을 수정하려는 사용자를 위한 안내입니다. 먼저 Global Routing에서 Config를 선택하고, ‘구체적인 예외 → 범위 규칙 → 마지막에 FINAL’ 순서로 규칙을 정리한 뒤 단일 요청 기록으로 실제 매칭 결과를 확인합니다. 연결 정보와 구독은 서비스 제공업체에서 확인하세요. 이 글에서는 규칙 구성, 검증 및 복원 방법만 다룹니다.

먼저 Config 확인: 규칙 순서가 적용되는 조건

규칙을 수정하기 전에 Home → Global Routing에서 현재 라우팅 모드를 확인하세요. 이 글에서는 Config를 선택했을 때 현재 설정의 [Rule] 목록에 적용되는 매칭 순서를 설명합니다. 파일만 수정하고 Global Routing이 Proxy 또는 Direct에 머물러 있다면, 이 규칙들이 예상대로 적용되는지 확인할 수 없습니다.

Global Routing의 모드 이름과 규칙 행의 정책 이름은 서로 다른 설정입니다. 예를 들어 Proxy는 라우팅 모드이고 PROXY는 규칙 행의 대상 정책입니다. 이름이 비슷하지만 ‘Proxy를 선택하면 PROXY 규칙만 적용된다’는 뜻은 아닙니다.

Config

권장

현재 설정에 따라 트래픽을 라우팅합니다. 요청은 특정 규칙에 따라 처리되거나 FINAL로 넘어갈 수 있으며, 실제 경로는 매칭된 정책에 따라 결정됩니다.

적합한 경우: 규칙 편집, 매칭 순서 확인, 설정에 따른 일상적인 라우팅

Proxy

프록시 모드로 트래픽을 처리하며, 이 글에서 다루는 규칙 목록을 하나씩 적용해 라우팅을 결정하지 않습니다. 프록시 연결 자체가 작동하는지 비교할 때는 사용할 수 있지만, 규칙이 올바른지 확인하는 방법은 아닙니다.

적합한 경우: 프록시 연결이 작동하는지 일시적으로 확인해 프록시 문제와 규칙 선택 오류를 구분할 때

Direct

직접 연결 모드로 트래픽을 처리합니다. 이때 접속이 성공하거나 실패해도 방금 수정한 PROXY 또는 REJECT 규칙의 결과라고 단정할 수 없습니다.

적합한 경우: 로컬 네트워크의 직접 연결 상태를 확인한 뒤 Config로 돌아갈 때

판단 기준: 라우팅 모드를 고정하고 규칙을 한 번에 하나씩 수정

Global Routing을 Config로 고정하고 선택한 연결은 그대로 유지하세요. 매번 규칙 하나 또는 위치 하나만 수정해야 요청 경로의 변화를 이번 수정과 연결해 판단할 수 있습니다.

위에서 아래로 매칭: 더 구체적이라고 자동으로 우선하지 않습니다

일반 규칙 목록에서 Shadowrocket은 위에서 아래로 규칙을 확인합니다. 규칙이 매칭되어 처리 정책이 정해지면 아래에 있는 ‘더 정확해 보이는’ 규칙은 더 이상 확인하지 않습니다. 우선순위는 주로 배치 순서로 결정되며, 도메인 길이나 DIRECT, PROXY, REJECT라는 이름으로 정해지지 않습니다.

아래에서는 예약된 예시 도메인으로 규칙 간 충돌을 설명합니다. 실제 접속 가능한 테스트 서비스가 아닙니다. example.com 전체에는 PROXY를 적용하되 api.example.com은 DIRECT로 처리해야 하는 예외라고 가정해 보겠습니다. 예외 규칙은 범위 규칙보다 앞에 두어야 합니다.

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

두 번째 줄을 첫 번째 줄보다 앞에 두면 api.example.com이 DOMAIN-SUFFIX에 먼저 매칭되어 이후의 DIRECT 예외가 적용되지 않습니다. 같은 이유로 범위 규칙 뒤에 둔 REJECT도 자동으로 우선 적용되지 않습니다.

도메인 1개
DOMAIN은 지정한 도메인과 정확히 일치하며 모든 하위 도메인을 포함하지 않습니다.
범위 규칙 2개
DOMAIN-SUFFIX는 도메인 자체와 하위 도메인에 적용됩니다.
최종 규칙 1개
이 예시에는 FINAL을 하나만 두며 규칙 목록의 마지막에 배치합니다.

DOMAIN-SUFFIX,example.com,PROXY는 URL의 임의의 문자열을 검색하는 규칙이 아닙니다. 주소의 경로에 example.com이 포함되어 있어도 매칭되지 않습니다. 규칙 매개변수에는 도메인을 입력하고 https://, 페이지 경로 또는 쿼리 매개변수는 넣지 마세요. 특정 호스트 이름 하나만 처리하려면 DOMAIN으로 예외를 지정하는 것이 좋습니다.

FINAL 설정: 매칭되지 않은 요청의 경로 지정

FINAL은 도메인이나 IP 조건이 없는 최종 규칙입니다. 일반적으로 FINAL,DIRECT 또는 FINAL,PROXY로 작성합니다. ‘식별할 수 없는 웹사이트만 매칭’하는 규칙이 아니라, 앞선 규칙에 처리되지 않고 이 줄까지 도달한 모든 요청을 처리합니다.

따라서 FINAL은 전체 설정 파일의 맨 끝이 아니라 [Rule] 목록의 마지막에 두어야 합니다. 설정 파일에는 다른 섹션도 있을 수 있으므로 FINAL을 옮기려고 다른 섹션으로 이동하지 마세요. FINAL이 앞쪽에 있으면 뒤에 있는 일반 규칙은 매칭될 기회를 잃습니다.

설정매칭되지 않은 요청의 처리확인할 사항
FINAL,DIRECT나머지 요청은 직접 연결됩니다.프록시가 필요한 도메인이 앞선 규칙에서 이미 처리되는지 확인하세요.
FINAL,PROXY나머지 요청은 PROXY로 전달됩니다.로컬 네트워크와 직접 연결이 필요한 대상에 명확한 예외 규칙이 있는지 확인하세요.
FINAL,REJECT나머지 요청은 거부됩니다.허용 목록만 사용하는 것이 의도된 설정인지, 누락으로 접속이 실패해도 괜찮은지 확인하세요.

아래는 도메인 규칙, IP 규칙 및 최종 규칙의 위치를 설명하는 독립적인 최소 구성 예시입니다. 일상적으로 사용하는 완성된 설정은 아닙니다. 사설 주소 범위 하나만 포함하며 모든 로컬 네트워크 상황을 다루지는 않습니다. 기존 설정의 사본에 필요한 행을 합쳐 사용하고 [Rule] 섹션을 추가로 만들지 마세요.

[Rule]
DOMAIN,api.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

IP-CIDR은 주소 범위를 확인하고, GEOIP는 IP 지리 데이터베이스를 기준으로 분류합니다. 웹사이트의 언어나 운영 주체를 식별하는 기능은 아닙니다. 예시의 no-resolve는 이 IP 규칙을 위해 도메인을 별도로 해석하지 말라는 뜻입니다. 설정 전체에서 DNS 조회를 하지 않는다는 의미는 아닙니다. IP 규칙이 매칭되는지는 해당 요청에서 사용할 수 있는 대상 주소 정보에도 영향을 받습니다.

PROXY, DIRECT, REJECT: 매칭 조건과 처리 동작을 나누어 확인

규칙의 앞부분은 ‘무엇을 매칭하는지’를, 마지막 정책은 ‘매칭 후 어떻게 처리하는지’를 지정합니다. 같은 DOMAIN-SUFFIX에도 서로 다른 정책을 적용할 수 있습니다. 정책은 매칭 범위를 바꾸거나 규칙의 우선순위를 높이지 않습니다.

PROXY
요청을 프록시 경로로 전달합니다. 실제 사용할 연결은 현재 선택 상태와 설정된 정책에 따라 달라집니다. PROXY에 매칭되었다고 해서 서버 연결, 인증 또는 대상 사이트 접속이 반드시 성공하는 것은 아닙니다.
DIRECT
로컬 네트워크를 통해 대상에 직접 연결합니다. 직접 연결해야 한다고 확인된 도메인이나 주소 범위에 적합합니다. DIRECT가 DNS 오류, 로컬 네트워크 차단 또는 대상 서비스 장애를 자동으로 해결하지는 않습니다.
REJECT
매칭된 요청을 거부합니다. 명확히 차단해야 하는 개별 도메인이나 주소에 사용하세요. 매칭 범위를 먼저 확인해 로그인, 인증 또는 페이지 리소스까지 함께 차단하지 않도록 주의해야 합니다.

예를 들어 DOMAIN,metrics.example.com,REJECT는 이 예시 호스트 이름에 대한 처리만 지정합니다. 정상 콘텐츠와 차단하려는 요청이 같은 도메인을 사용하면 DOMAIN 또는 DOMAIN-SUFFIX로 웹페이지 경로에 따라 둘을 구분할 수 없습니다. 도메인 전체에 REJECT를 적용하면 이미지가 표시되지 않거나 버튼이 작동하지 않고 페이지 로딩이 중단될 수 있습니다.

규칙은 요청의 경로를 결정하고 프로토콜은 프록시 연결 방식을 결정합니다. PROXY에서 사용하는 연결 프로토콜을 바꾸더라도 DOMAIN-SUFFIX의 매칭 범위는 달라지지 않습니다. 문제를 확인할 때는 먼저 ‘올바른 경로를 선택했는지’를 확인하고 그 다음 해당 경로에서 연결이 정상적으로 완료되는지 살펴보세요.

수정 및 확인: 사본을 저장하고 매칭 규칙을 하나씩 검증

아래 절차는 사용할 수 있는 연결과 설정이 이미 있는 경우를 전제로 합니다. 구독과 설정 파일은 서로 다른 항목입니다. Home에서 구독을 업데이트해도 현재 Config의 규칙이 원하는 순서로 자동 변경되지는 않습니다. 수정하기 전에 실제로 선택된 파일을 편집하는지 확인하고 복구할 수 있는 사본을 보관하세요.

  1. 사본 저장

    Config에서 현재 선택된 파일을 확인하고 원본을 복사하거나 백업 파일로 내보내세요. 원격 업데이트에서 가져온 파일이라면 업데이트로 수정 내용이 덮어쓰이지 않도록 별도의 로컬 사본을 만들어 편집하세요.

  2. 라우팅 모드 고정

    Home → Global Routing → Config로 이동하고 현재 선택된 연결은 그대로 유지하세요. 한 번의 검증 과정에서 라우팅 모드, 연결 및 규칙 파일을 동시에 바꾸지 마세요.

  3. 규칙 편집

    Config → 현재 파일 오른쪽의 ⓘ → Edit Plain Text로 이동해 [Rule] 섹션을 찾습니다. 구체적인 예외를 범위 규칙 앞에 배치하고 FINAL은 목록 마지막에 한 번만 있는지 확인한 후 저장하세요.

  4. 요청 새로 생성

    수정된 설정이 선택되어 있는지 확인하고 연결을 다시 설정한 다음 실제 테스트 페이지를 새로 여세요. 기존 연결을 계속 사용하는 장시간 연결이 있을 수 있으므로, 이전 연결을 재사용하는 페이지를 새로고침하는 것만으로 결론을 내리지 마세요.

  5. 기록 확인

    이번 요청의 연결 기록에서 대상 도메인 또는 IP, 매칭된 규칙 및 처리 정책을 확인하세요. 경로가 잘못되었다면 규칙 순서를 조정합니다. 경로가 맞는데도 접속할 수 없다면 연결 자체와 대상 서비스를 확인하세요.

테스트는 최소 세 가지 대상을 포함해야 합니다. 구체적인 예외 규칙에 매칭되어야 하는 도메인 하나, 범위 규칙에 매칭되어야 하는 도메인 하나, FINAL로 넘어가야 하는 대상 하나입니다. 실제로 접속 권한이 있고 예상 경로를 알고 있는 대상을 사용하세요. example.com 계열 이름은 문법 설명용이며 연결 테스트 결과를 나타내지 않습니다.

검증: 도메인, 규칙 및 정책을 함께 확인

웹페이지가 열린다는 사실만으로는 한 번의 접속이 완료되었다는 것만 알 수 있으며, 예상한 규칙에 매칭되었는지는 확인할 수 없습니다. ‘실제 대상 → 매칭 규칙 → 처리 정책’ 세 항목을 기록하고 모두 일치하는지 확인한 뒤 수정 범위를 넓히세요.

자주 묻는 질문: 규칙이 적용되지 않을 때 먼저 확인할 곳

DIRECT를 추가했는데 왜 여전히 PROXY로 연결되나요?

먼저 Home → Global Routing이 Config로 설정되어 있는지 확인한 다음 Config에서 실제 선택된 파일을 확인하세요. 이어서 DIRECT 앞에 같은 도메인에 적용되는 DOMAIN-SUFFIX, 다른 범위 규칙 또는 앞쪽에 배치된 FINAL이 있는지 살펴보세요. 구체적인 예외를 처음으로 적용되는 범위 규칙보다 앞에 옮긴 뒤 새 요청으로 확인하세요.

FINAL을 맨 위에 두면 아래 규칙을 모두 확인하나요?

아닙니다. 요청이 FINAL에 도달하면 최종 정책이 적용되며 아래쪽 규칙을 확인한 뒤 돌아오지 않습니다. 설정의 [Rule] 섹션에서 FINAL을 규칙 목록 마지막으로 옮기고 중복된 FINAL을 삭제하세요. 저장한 뒤 현재 파일이 선택되어 있는지도 다시 확인하세요.

PROXY에 매칭되었는데 왜 페이지가 열리지 않나요?

매칭 기록은 라우팅 결정이 끝났다는 뜻일 뿐입니다. 규칙은 그대로 둔 채 Home에서 선택된 연결이 작동하는지 확인하고 같은 대상을 이용해 비교해 보세요. 연결, 인증 또는 대상 서비스에 문제가 있다면 해당 문제를 해결해야 합니다. 동일한 DOMAIN 규칙을 계속 추가해도 이런 문제는 해결되지 않습니다.

업데이트 후 규칙이 원래대로 돌아갔어요. 어떻게 저장해야 하나요?

업데이트한 항목이 Home의 구독인지 Config의 원격 설정 파일인지 확인하세요. 원격 설정 업데이트로 로컬 편집 내용이 덮어쓰였다면 백업을 복원한 뒤 사용자 지정 규칙을 별도의 로컬 사본에 합쳐 해당 파일을 선택하세요. 이후 업데이트할 때는 먼저 차이를 비교하고 수동으로 병합해, 유일한 사용 가능 사본을 바로 덮어쓰지 않도록 합니다.

기록에 표시된 대상이 예상한 도메인과 다르면 페이지 이동, 리소스 도메인 및 이번 연결에서 실제로 사용한 주소를 확인하세요. 한 페이지에서도 여러 요청이 발생할 수 있습니다. 페이지 진입 도메인에 DIRECT를 추가해도 페이지에서 불러오는 모든 리소스가 같은 규칙에 매칭되는 것은 아닙니다. DOMAIN-SUFFIX 범위를 계속 넓히기보다 기록을 하나씩 확인하는 편이 영향을 관리하기 쉽습니다.

App Store 정품 확인 및 사용 안내

Shadowrocket은 Apple 플랫폼용 상용 폐쇄형 앱으로, App Store에서 한 번 구매하면 사용할 수 있습니다. App ID 932747118과 개발자 Shadow Launch Technology Limited를 확인하세요. 가격, 시스템 요구 사항 및 호환성은 App Store 페이지에 표시된 내용을 기준으로 합니다. 앱 구매와 연결 서비스는 별도로 관리되며 구독은 서비스 제공업체에서 확인할 수 있습니다.

정품 확인 페이지로 이동 사용법 보기
App Store 정품 확인