2026년 7월 29일 · 규칙 · 약 8분

Shadowrocket 규칙 우선순위 설정: 규칙 순서와 FINAL 기본 규칙

Shadowrocket 규칙은 위에서부터 확인하며, 먼저 일치한 규칙이 적용됩니다. PROXY·DIRECT·REJECT 사용법과 FINAL 기본 규칙의 위치를 알아보세요.

이 글의 핵심 내용

Shadowrocket 규칙은 정확도가 높다고 자동으로 우선 적용되는 것이 아니라, 현재 활성화된 Config의 순서대로 확인되며 먼저 일치한 규칙의 정책이 적용됩니다. 자체 서비스와 구독을 이용하면서 트래픽 분기 방식을 조정하려는 사용자를 위해 Global Routing, 규칙 순서, 세 가지 정책, FINAL을 차례로 설명하고, 확인 가능한 설정 예시와 검증 절차를 소개합니다.

먼저 Global Routing이 Config인지 확인하세요

사용자 규칙을 트래픽 분기에 적용하려면 먼저 Home → Global Routing → Config에서 Config를 선택해야 합니다. Config의 규칙만 수정하고 Global Routing을 Proxy 또는 Direct로 설정해 두면 규칙이 적용되는지 확인할 수 없습니다. 규칙은 연결 경로를 결정하고, 기존 서비스 정보는 해당 경로로 연결할 수 있는지를 결정하므로 각각 확인해야 합니다.

Config

추천

현재 활성화된 Config의 규칙에 따라 정책을 선택합니다. 직접 연결, 프록시 또는 거부 여부는 실제로 일치한 규칙에 따라 결정되며 지역에 따라 고정되지 않습니다.

적합한 경우: 일상적인 규칙 분기, 사용자 규칙 검증

Proxy

Shadowrocket이 처리하는 연결을 현재 프록시 경로로 보내며, Config의 분기 규칙을 하나씩 적용해 정책을 선택하지 않습니다.

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

Direct

Shadowrocket이 처리하는 연결을 설정에 따른 프록시 분기 없이 대상에 직접 보냅니다.

적합한 경우: 현재 네트워크에서 대상에 직접 연결되는지 비교

Global Routing의 Scene은 상황별 설정에 따라 동작을 결정하므로 Config와 같은 의미로 보면 안 됩니다. 문제 해결 시 변수를 줄이기 위해 이 글에서는 Config를 사용합니다. Settings → On Demand는 연결을 요청할 조건을 관리하며, 규칙 목록의 우선순위와는 관계가 없습니다. 규칙 순서를 확인할 때는 연결 상태와 현재 네트워크를 먼저 그대로 유지하세요.

위에서부터 순서대로 적용: 구체적인 예외 규칙을 포괄적인 규칙보다 앞에

일반 규칙 목록은 첫 번째 규칙부터 확인하며, 규칙이 일치하면 해당 정책을 적용하고 더 구체적인 후속 규칙을 찾지 않습니다. 따라서 특정 DOMAIN 규칙이 이미 해당 도메인을 포함하는 DOMAIN-SUFFIX 규칙 뒤에 있으면 적용되지 않을 수 있습니다. 우선순위를 결정하는 기준은 문자열 길이가 아니라 실행 순서입니다.

[Rule]
DOMAIN,metrics.example.com,REJECT
DOMAIN,login.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY

아래는 문법 설명용 예시입니다. example.com과 하위 도메인은 일치 방식을 설명하기 위한 것으로, 연결 서비스나 접속 테스트 주소가 아닙니다. 첫 번째 규칙은 metrics.example.com만 처리하고, 두 번째 규칙은 login.example.com에 직접 연결 예외를 적용합니다. 세 번째 규칙은 example.com 자체와 하위 도메인에 적용되며, 앞선 규칙과 일치하지 않은 요청은 GEOIP를 확인한 뒤 마지막으로 FINAL에 전달됩니다.

요청 도메인처음 일치한 규칙정책
metrics.example.com첫 번째 DOMAIN 규칙REJECT
login.example.com두 번째 DOMAIN 규칙DIRECT
docs.example.com세 번째 DOMAIN-SUFFIX 규칙PROXY

DOMAIN-SUFFIX,example.com,PROXY를 목록 맨 위로 옮기면 표의 세 도메인이 모두 이 규칙에 먼저 일치해 아래의 거부 및 직접 연결 예외가 적용되지 않습니다. 차단하거나 허용할 특정 대상은 앞에 두고, 더 넓은 범위의 접미사·주소 범위·지역 규칙은 그 뒤에 배치하며, 기본 규칙은 마지막에 둡니다.

PROXY·DIRECT·REJECT와 규칙 키워드의 차이

일반적으로 규칙 한 줄에는 일치 조건과 처리 정책이 함께 들어갑니다. 예를 들어 DOMAIN-SUFFIX,example.com,PROXY에서 DOMAIN-SUFFIX는 규칙 유형, example.com은 일치 대상, PROXY는 규칙이 일치했을 때의 처리 방식입니다. 프로토콜 이름과 정책은 서로 다른 개념입니다. 기존 연결에서 Shadowsocks나 VLESS를 사용하더라도 DOMAIN-SUFFIX 규칙의 적용 순서는 달라지지 않습니다.

정책 3가지
이 글에서 사용하는 정책: PROXY / DIRECT / REJECT
주요 키워드 4개
DOMAIN-SUFFIX / GEOIP / IP-CIDR / FINAL 확인
FINAL 1개
예시에서는 목록 끝에 기본 규칙 하나만 둡니다

확인 방법: 조건과 연결 경로를 따로 점검하세요

먼저 요청이 예상한 규칙과 일치하는지 확인한 다음, 해당 정책이 지정한 경로를 사용할 수 있는지 확인하세요. 프록시 연결 성공을 규칙이 올바르게 일치했다는 증거로 간주하면 안 됩니다.

정책의미확인할 사항
PROXY프록시 경로를 사용합니다.현재 선택된 프록시를 확인하세요. 정책 그룹을 사용하는 경우 그룹 내 선택 항목도 확인해야 합니다.
DIRECT대상에 직접 연결합니다.현재 네트워크에서 대상에 직접 연결할 수 있는지 확인하세요.
REJECT일치하는 연결을 거부합니다.차단해야 하는 대상이 맞는지, 필요한 요청까지 차단하지는 않았는지 확인하세요.

Config에 직접 이름을 지정한 정책 그룹이 있다면 실제 설정을 확인해 그룹 이름과 그룹 내 선택 항목을 확인하세요. 알 수 없는 이름을 내장 정책으로 간주하면 안 됩니다. REJECT는 연결 실패 시 자동으로 재시도하는 정책도 아닙니다. REJECT에 일치한 요청은 실패하더라도 아래의 PROXY 규칙을 계속 시도하지 않습니다.

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

IP-CIDR은 대상 IP가 속한 주소 범위를 기준으로 일치합니다. 192.0.2.0/24는 문서 예시용 주소 범위입니다. no-resolve는 이 IP 규칙만을 위해 추가 도메인 조회를 하지 않도록 하는 옵션이지, 모든 DNS를 끄는 설정은 아닙니다. 대상 IP 정보가 이미 있다면 일치 판단에 사용될 수 있습니다. GEOIP,CN,DIRECT는 IP 지리 데이터베이스를 기준으로 판단하며 도메인 접미사 또는 운영 주체를 기준으로 하지 않습니다. 따라서 직접 연결하려는 모든 웹사이트에 적용된다고 보장할 수 없습니다.

FINAL 기본 규칙: 앞선 규칙에 일치하지 않은 요청만 처리

FINAL에는 도메인이나 주소 인수가 필요하지 않으며, 일반적으로 FINAL,PROXY 또는 FINAL,DIRECT로 작성합니다. 조건 없이 적용되는 기본 규칙이므로 일반 규칙 목록 맨 끝에 배치해야 합니다. 앞에 두면 나머지 규칙이 요청을 처리할 기회가 없어집니다. FINAL을 두 개 배치해도 첫 번째 규칙이 실패한 뒤 두 번째 규칙을 시도하는 대체 경로가 만들어지지는 않습니다.

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

FINAL은 앞선 규칙 중 어느 것도 일치하지 않았을 때 어떻게 처리할지를 정하는 규칙이지, 앞선 규칙에 일치한 후 연결에 실패했을 때의 처리 방법이 아닙니다. 요청이 DIRECT 규칙에 이미 일치했다면 직접 연결이 시간 초과되어도 마지막의 FINAL,PROXY가 자동으로 대신 처리하지 않습니다. 이때는 앞선 일치 조건의 범위가 너무 넓은지 확인한 뒤 규칙 순서를 조정할지 정책을 변경할지 결정하세요.

규칙 수정 및 검증: 한 번에 하나씩 변경하세요

시작하기 전에 현재 Config를 복사해 저장하고 사용 중인 Config 이름을 기록하세요. Home의 구독은 기존 서비스 정보를 관리하고 Config의 규칙은 트래픽을 분기합니다. Subscribe를 새로 고쳐도 규칙이 수정되는 것은 아닙니다. 원격 Config를 업데이트하면 편집한 내용이 바뀔 수도 있으므로 기존 구독 업데이트와 규칙 Config 업데이트를 구분하고, 작업 후에는 실제 적용 중인 파일을 다시 확인하세요.

  1. 라우팅 설정 확인

    Home → Global Routing → Config로 이동합니다. 기존 연결이 작동하는지 확인하고 현재 선택한 프록시 또는 정책 그룹 항목을 기록해 테스트 중 연결 경로가 바뀌지 않도록 하세요.

  2. 현재 Config 백업

    Config로 이동해 현재 사용 중인 Config를 확인하고, 사본을 저장한 다음 해당 Config의 편집 화면을 여세요. 텍스트 편집을 사용하는 경우 [Rule] 섹션을 찾습니다.

  3. 구체적인 규칙 추가

    확인할 DOMAIN 또는 DOMAIN-SUFFIX 규칙을 해당 도메인을 포함하는 포괄적인 규칙보다 앞에 배치하세요. 맨 끝에는 FINAL 규칙 하나만 남기고 저장한 뒤, 수정한 Config가 현재 사용 중인지 확인하세요.

  4. 새 테스트 요청 보내기

    대상 앱의 기존 요청을 종료한 다음 다시 접속을 시도하세요. 필요한 경우 Config를 저장한 뒤 Shadowrocket을 다시 연결해, 수정 전에 이미 생성된 장시간 연결을 새 규칙의 테스트 결과로 잘못 판단하지 않도록 하세요.

  5. 일치 결과 확인

    요청 기록에 표시되는 대상 도메인, 대상 IP, 정책 정보를 함께 확인하세요. 한 번에 하나씩 변경하고 변경 전후 결과를 기록하세요. 예상한 규칙에 일치하지 않으면 프로토콜을 바로 바꾸지 말고 먼저 규칙 순서를 확인하세요.

웹페이지는 보통 메인 페이지뿐 아니라 로그인, 이미지, API 등 여러 도메인에 요청을 보냅니다. 메인 페이지가 PROXY에 일치해도 모든 리소스가 같은 규칙에 일치한다는 뜻은 아닙니다. 메인 페이지는 열리지만 로그인이 실패한다면 브라우저 주소창의 도메인만 예외 처리하지 말고 실패한 요청의 실제 도메인을 확인하세요.

규칙 적용 여부는 새 요청이 어떤 규칙에 일치했고 어떤 정책을 사용했는지 확인해야 합니다. 지연 시간 테스트는 특정 테스트 경로의 응답 상태만 보여 줄 뿐, 특정 웹페이지 요청이 지정한 규칙에 일치했음을 증명하지 않습니다.

자주 묻는 문제: 규칙이 적용되지 않을 때 증상별 확인 방법

DIRECT로 설정했는데 왜 프록시를 사용하나요?

먼저 Home → Global Routing에서 Config가 선택되어 있는지 확인한 다음, DIRECT 규칙 위에 같은 도메인을 포함하는 DOMAIN-SUFFIX 또는 다른 포괄적인 규칙이 있는지 살펴보세요. 명시적인 예외를 해당 규칙보다 앞에 옮기고 저장한 뒤 새 요청을 보내세요.

FINAL을 변경했는데도 대상에 접속할 수 없나요?

먼저 요청이 실제로 FINAL 규칙까지 도달했는지 확인하세요. 앞선 REJECT 또는 DIRECT 규칙에 이미 일치했다면 FINAL을 수정해도 영향을 주지 않습니다. 실제로 FINAL,PROXY에 일치했다면 사용 중인 프록시 경로, 대상 서비스, DNS 조회 결과를 확인하세요.

규칙에 도메인을 넣었는데 IP로 접속하면 일치하지 않나요?

DOMAIN과 DOMAIN-SUFFIX는 사용할 수 있는 도메인 정보가 있어야 적용됩니다. IP 주소로 직접 접속하는 것은 같은 도메인에 접속하는 것과 다릅니다. 주소 기준으로 일치시켜야 한다면 적절한 범위의 IP-CIDR을 추가하세요. 한 대상을 처리하기 위해 지나치게 넓은 주소 범위를 추가하지 마세요.

업데이트 후 추가한 규칙이 사라졌나요?

Config에서 현재 파일과 내용을 확인해 다른 Config로 전환했거나 원격 Config가 업데이트되었는지 살펴보세요. 백업 파일과 [Rule] 섹션을 비교해 필요한 예외 규칙을 복원하고 FINAL의 위치를 확인하세요. Home에서 기존 구독을 새로 고친 결과를 규칙이 저장되었다는 증거로 간주하지 마세요.

마지막에는 설명하기 쉬운 최소한의 규칙 목록을 유지하세요. 구체적인 예외는 앞에, 범위 규칙은 중간에, FINAL은 맨 끝에 둡니다. 문제가 생기면 먼저 Global Routing과 현재 Config를 확인하고 구체적인 요청을 추적하세요. 이렇게 하면 규칙 순서 오류, 연결 경로 문제, DNS 문제를 나눠 확인할 수 있어 규칙을 반복해서 추가하다가 원인을 찾기 더 어려워지는 일을 줄일 수 있습니다.

App Store 정품 확인