이 글의 핵심

직접 준비한 서비스 설정을 가져왔고 Shadowrocket의 규칙 분류를 수정하려는 사용자를 위한 안내입니다. 먼저 Home → Global Routing이 Config로 설정되어 있는지 확인한 다음, 현재 설정 파일에서 구체적인 예외 규칙을 위에, 범위가 넓은 규칙을 아래에, FINAL을 맨 마지막에 배치하세요. 규칙 매칭과 연결 가능성을 구분하고, 도메인이 예상과 달리 DIRECT로 연결되는 문제, REJECT가 적용되지 않는 문제, FINAL이 너무 일찍 적용되는 문제를 확인할 수 있습니다.

먼저 확인할 Global Routing: 규칙 적용의 전제 조건

Shadowrocket의 Home에서는 연결 상태와 라우팅 모드를 선택하고, Config에서는 규칙 설정 파일을 관리하며, Settings에서는 실행 설정을 관리합니다. 파일에 규칙을 작성했다고 해서 해당 파일이 실제로 사용되는 것은 아닙니다. 현재 선택된 설정 파일과 Home → Global Routing 상태를 모두 확인해야 합니다. 이 안내는 자체 서비스와 구독을 보유하고 연결 설정을 사용할 수 있는 경우를 전제로 하며, 연결 경로를 구하는 방법은 다루지 않습니다.

Global Routing에서 Config를 선택하면 현재 설정 파일의 규칙에 따라 트래픽을 분류합니다. Proxy와 Direct는 트래픽의 전체 경로를 바꾸며, Scene은 설정된 조건에 따라 동작을 선택합니다. 화면의 Proxy와 규칙의 정책 키워드인 PROXY는 구분해야 합니다. 전자는 라우팅 모드이고, 후자는 규칙이 일치한 뒤 적용되는 처리 방식입니다.

Config

권장

현재 설정 파일의 규칙에 따라 연결을 처리합니다. 이 문서의 규칙 순서 조정과 FINAL 예시도 이 모드에서 확인합니다.

적합한 경우: 도메인, 대상 IP, 지역별 규칙으로 트래픽을 분류할 때

Proxy

모든 트래픽을 프록시로 처리하므로 사용자 지정 DIRECT 또는 REJECT 규칙이 적용되는지 확인하기에 적합하지 않습니다.

적합한 경우: 프록시 경로를 임시로 비교해 규칙 문제의 범위를 좁힐 때

Direct

모든 트래픽을 직접 연결합니다. 이때 특정 웹사이트에 접속할 수 있더라도 설정 파일의 PROXY 규칙이 올바르다는 뜻은 아닙니다.

적합한 경우: 로컬 네트워크의 직접 연결 상태를 비교할 때

Scene

설정한 Scene 조건에 따라 동작을 결정합니다. 규칙 문제를 확인할 때는 현재 Scene에서 실제로 선택된 라우팅 방식을 먼저 확인하세요.

적합한 경우: 네트워크 환경에 따라 전환할 조건을 명확히 설정한 경우

판단 기준: 모드를 고정한 뒤 규칙 조정

테스트하는 동안 Home → Global Routing을 Config로 설정하고 같은 설정 파일을 계속 선택해 두세요. 매번 한 항목만 바꾸면 Scene 전환이나 전체 프록시 모드의 결과를 규칙 우선순위 변화로 오해하지 않을 수 있습니다.

우선순위는 규칙 이름이나 도메인 길이가 아닌 행 순서로 결정

규칙은 위에서 아래로 확인하며, 처음 일치한 규칙의 정책을 적용하고 뒤에 있는 규칙은 더 이상 확인하지 않습니다. 따라서 범위가 넓은 DOMAIN-SUFFIX 규칙이 아래쪽의 더 구체적인 도메인 규칙보다 먼저 일치할 수 있습니다. REJECT도 거부 정책이라는 이유만으로 자동으로 가장 높은 우선순위를 갖지는 않습니다.

1개
처음 일치한 규칙이 해당 요청의 정책을 결정합니다
3가지
이 문서에서 다루는 정책: PROXY / DIRECT / REJECT
4가지
이 문서에서 다루는 규칙: DOMAIN-SUFFIX / IP-CIDR / GEOIP / FINAL

예를 들어 아래 두 규칙은 모두 ads.example.com에 일치할 수 있습니다. 첫 번째 규칙이 먼저 적용되어 결과는 DIRECT가 됩니다. 두 번째 규칙이 더 구체적이어도 실행되지 않습니다. 이는 순서 문제이지 REJECT가 적용되지 않는 문제가 아닙니다.

DOMAIN-SUFFIX,example.com,DIRECT
DOMAIN-SUFFIX,ads.example.com,REJECT

구체적인 예외 규칙을 위로 옮기면 ads.example.com과 그 하위 도메인에 REJECT가 먼저 적용됩니다. example.com에 속하는 나머지 도메인은 이후 DIRECT 규칙을 확인합니다. DOMAIN-SUFFIX는 대상 도메인 자체와 하위 도메인에 일치하며, 임의의 문자열을 포함 여부로 확인하는 규칙은 아닙니다.

DOMAIN-SUFFIX,ads.example.com,REJECT
DOMAIN-SUFFIX,example.com,DIRECT

‘위에서 아래로’는 현재 실제로 사용 중인 규칙 순서를 기준으로 합니다. 설정 파일에서 외부 규칙 모음을 참조한다면 해당 규칙이 파일 안에서 어디에 배치되어 있는지도 확인하세요. 새로 추가한 두 줄만 확인하고 앞쪽에 있는 다른 일치 규칙을 놓쳐서는 안 됩니다.

DOMAIN-SUFFIX, IP-CIDR, GEOIP의 매칭 기준

규칙마다 확인하는 정보가 다릅니다. 도메인 규칙은 호스트 이름을, IP-CIDR은 대상 IP가 지정된 네트워크 범위에 속하는지를 확인합니다. GEOIP는 IP 지리 데이터베이스를 기준으로 분류합니다. 도메인에 접속할 수 있다고 해서 반드시 도메인 규칙에 일치하는 것은 아니며, IP가 특정 지역으로 분류된다고 해서 웹사이트 운영자나 도메인 접미사가 해당 지역에 속한다는 뜻도 아닙니다.

규칙 예시 매칭 기준 사용 시 참고 사항
DOMAIN-SUFFIX,example.com,DIRECT 대상 호스트 이름 example.com과 하위 도메인에 적용됩니다. 구체적인 예외 규칙은 이 규칙보다 위에 배치하세요.
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve 대상 IPv4 주소가 속한 네트워크 범위 여기서는 사설 IP 주소 범위를 예시로 사용합니다. 해당 네트워크에 접속하려면 로컬 네트워크에 필요한 라우팅이 설정되어 있어야 합니다.
GEOIP,CN,DIRECT 지리 데이터베이스에서 분류한 대상 IP IP 주소를 확인하기 위해 도메인 조회가 필요할 수 있습니다. 분류 결과는 데이터베이스와 실제 조회 결과에 따라 달라집니다.
FINAL,PROXY 앞선 규칙에 일치하지 않은 모든 트래픽 도메인이나 네트워크 범위를 지정하지 않습니다. 규칙 목록의 맨 마지막에 배치하세요.

no-resolve는 이 IP 규칙의 매칭을 위해 추가로 도메인을 조회하지 않는다는 뜻입니다. ‘DNS 사용 안 함’을 의미하지 않으며 일반적인 도메인 조회를 대체하지도 않습니다. 요청에 호스트 이름만 있고 사용할 수 있는 대상 IP가 없다면 이 규칙은 일치하지 않을 수 있으며, 이 경우 다음 규칙으로 넘어갑니다.

FINAL 기본 규칙 작성: 예외를 먼저, 범위 규칙 다음, 기본 규칙은 마지막

FINAL에는 매칭 조건이 없으므로 앞선 규칙에 일치하지 않은 연결을 처리합니다. 유효한 FINAL은 하나만 두고 규칙 목록의 맨 마지막에 배치하는 것이 좋습니다. FINAL 뒤에 규칙을 추가해도 문법이 올바르더라도 정상적으로 매칭되지 않습니다. 전체 설정 파일에서 규칙은 [Rule] 섹션에 작성해야 합니다. 서버 주소, 구독 주소, 프로토콜 매개변수 입력란에 붙여넣지 마세요.

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

이 예시는 지정된 도메인을 먼저 차단하고, 명시한 도메인과 사설 네트워크 대역은 허용한 다음 CN 주소는 GEOIP로 처리하며, 나머지 트래픽은 PROXY로 보냅니다. example.com은 문법을 설명하기 위한 예시 도메인일 뿐, 서비스 주소나 사용할 수 있는 연결 경로가 아닙니다. 실제로 적용하기 전에 규칙을 자신의 대상에 맞게 바꾸고 필요한 서비스에 영향을 주지 않는지 확인하세요.

  1. ads.example.com에 접속하면 첫 번째 도메인 규칙이 일치해 REJECT가 적용되고, 뒤에 있는 DIRECT 규칙은 확인하지 않습니다.
  2. www.example.com에 접속하면 첫 번째 규칙에는 일치하지 않고 두 번째 규칙에 일치해 DIRECT가 적용됩니다.
  3. 192.168.1.10에 직접 접속하면 앞의 두 도메인 규칙에는 일치하지 않으며, 사설 네트워크 규칙에 일치해 DIRECT가 적용될 수 있습니다.
  4. 다른 대상이 GEOIP에서 CN으로 분류되면 DIRECT가 적용됩니다. 그래도 일치하는 규칙이 없으면 FINAL에 따라 PROXY가 적용됩니다.

FINAL,DIRECT도 유효한 기본 규칙이며, ‘명시적으로 일치한 프록시 규칙에만 프록시를 사용하고 나머지는 직접 연결한다’는 뜻입니다. FINAL,PROXY와 비교해 사용 목적과 관계없이 어느 한쪽이 항상 더 낫다고 할 수는 없습니다. 여기서 PROXY는 프록시 경로로 전달한다는 뜻이지 서버를 자동으로 만드는 것은 아닙니다. 현재 선택된 프록시를 사용할 수 있어야 하며, 설정 파일에서 참조하는 정책도 존재해야 합니다.

기존 설정 파일의 규칙을 전부 덮어쓰지 마세요. 원본 파일과 정책 그룹 정의를 보존한 다음 사본에서 규칙 섹션을 수정하세요. 기존 규칙에서 사용자 지정 정책 그룹 이름을 사용한다면 의미를 유지하고 모두 PROXY로 바꾸지 마세요.

Config에서 수정한 뒤 새 연결로 확인

아래 안내는 Home, Config, Settings 화면 구성을 기준으로 합니다. 플랫폼에 따라 편집 메뉴의 버튼 위치는 다를 수 있지만, 수정 대상은 Config에서 현재 활성화된 설정 파일입니다. 서버 구독 업데이트와 규칙 파일 편집은 별개의 작업입니다. 서버 목록을 업데이트해도 규칙 설정을 저장하고 선택하는 작업을 대신할 수 없습니다.

  1. 라우팅 모드 확인

    Home → Global Routing → Config로 이동합니다. 현재 선택된 서버 또는 정책 그룹을 기록해 두고, 테스트하는 동안 프록시 경로를 함께 전환하지 마세요.

  2. 사본 보관

    Config에서 현재 선택된 설정 파일을 찾습니다. 먼저 사본을 보관하거나 백업을 내보낸 다음 해당 파일의 편집 메뉴를 여세요. 활성화되지 않은 다른 파일을 편집하고 있지 않은지 확인합니다.

  3. 규칙 정리

    규칙 목록을 확인합니다. 텍스트 편집기를 사용한다면 [Rule] 섹션을 찾으세요. 구체적인 예외 규칙을 범위가 넓은 규칙보다 앞에 두고, 새 규칙은 FINAL 위에 배치하며, 참조 중인 정책 정의는 그대로 유지하세요.

  4. 저장 후 활성화

    저장한 뒤 Config로 돌아와 수정한 설정 파일이 선택되어 있는지 확인합니다. Home으로 돌아가 연결을 다시 설정하고 설정 파일 파싱 오류가 있는지 확인하세요. 오류가 발생하면 먼저 사본으로 복원합니다.

  5. 새 요청으로 테스트

    대상 페이지에 이미 연결되어 있는 요청을 닫고 페이지를 다시 여세요. 연결 기록에 표시된 대상, 일치한 규칙, 적용된 정책을 확인합니다. 기존 연결을 계속 재사용하는 페이지를 새로고침하는 것만으로는 충분하지 않습니다.

테스트할 때는 예외 규칙에 일치해야 하는 대상, 범위 규칙에 일치해야 하는 대상, FINAL까지 도달해야 하는 대상을 각각 선택하세요. 실제로 어떤 규칙이 일치했는지 먼저 확인한 다음 연결 성공 여부를 살펴봅니다. PROXY에 일치했는데 연결되지 않는다면 프록시 연결이나 원격 서비스 문제일 수 있습니다. DIRECT에 일치했는데 연결되지 않는다면 로컬 네트워크, DNS 또는 대상 서비스 문제일 수 있습니다. 웹페이지가 열리지 않는다는 이유만으로 우선순위 오류라고 단정하지 마세요.

자주 묻는 질문: 규칙을 작성했는데 연결 경로가 예상과 다른 이유

REJECT 규칙이 아래에 있는데 왜 직접 연결되나요?

먼저 위쪽에 더 넓은 범위에 일치하는 DIRECT 규칙이 있는지 확인하세요. 예를 들어 example.com의 DOMAIN-SUFFIX는 모든 하위 도메인에 먼저 일치합니다. 차단하려는 특정 도메인을 해당 범위 규칙 위로 옮기고 저장한 뒤 연결을 다시 설정해 실제로 일치한 규칙을 확인하세요.

FINAL 뒤에 규칙을 추가했는데 왜 적용되지 않나요?

FINAL에 도달하면 기본 규칙이 적용되므로 뒤에 있는 규칙은 더 이상 확인되지 않습니다. 새 규칙을 FINAL 앞에 옮기고, 그보다 앞에 두 번째 FINAL이 있는지도 확인하세요. 마지막 줄의 정책만 바꾸고 앞에 있는 조기 기본 규칙을 그대로 두지 마세요.

Proxy로 바꾸면 열리는데 Config에서는 열리지 않을 때는 어떻게 확인하나요?

Home → Global Routing → Config로 돌아가 같은 대상에 다시 요청을 보내고 DIRECT 또는 REJECT 규칙에 일치했는지 확인하세요. 연결 경로가 설정대로지만 원하는 결과와 다르다면 해당 규칙을 수정하거나 더 구체적인 예외를 추가합니다. 이미 PROXY에 일치했다면 정책 그룹에서 실제로 선택된 연결 경로를 확인하세요.

사용 중인 구독을 업데이트한 뒤 규칙을 다시 작성해야 하나요?

먼저 업데이트 대상이 무엇인지 확인하세요. 서버 구독을 업데이트하면 보통 연결 항목이 갱신됩니다. 원격 규칙 설정을 업데이트하면 로컬 파일 내용이 교체될 수 있습니다. 업데이트 전에 직접 수정한 내용을 보관하고, 업데이트 후 현재 설정 파일과 사용자 지정 규칙이 유지됐는지 확인하세요. 규칙이 사라졌거나 참조하는 정책이 바뀐 경우에만 해당 부분을 조정합니다.

웹페이지의 일부 콘텐츠가 로드되지 않을 때 도메인 그룹 전체를 허용해야 하나요?

먼저 실패한 요청의 실제 호스트 이름을 확인하세요. 한 페이지에서 여러 도메인을 사용할 수 있으므로 기본 문서가 DIRECT에 일치해도 이미지나 API 요청이 같은 규칙에 일치한다는 보장은 없습니다. 필요한 것으로 확인된 대상에만 예외를 추가하고, 범위가 넓은 REJECT 규칙이나 다른 범위 규칙보다 앞에 배치하세요.

결론: 페이지가 어떻게 보이는지 추측하지 말고 매칭 기록으로 원인을 찾으세요

실패한 요청의 대상, 일치한 규칙, 최종 적용 정책을 기록하고 매번 해당 규칙의 위치나 조건만 조정하세요. 규칙이 올바르게 적용됐다면 순서를 더 바꾸지 말고 DNS, 선택된 프록시, 대상 서비스를 확인합니다.

Shadowrocket 다운로드 및 설정 안내

iPhone / iPad 버전은 App Store에서 다운로드할 수 있으며, $2.99 일회성 결제입니다. 개발자는 Shadow Launch Technology Limited이며, 시스템 요구 사항은 App Store 페이지를 확인하세요. Mac(Apple 칩 / Intel), Windows, Android, Linux 버전은 무료입니다. 기기에 맞는 설치 안내를 확인한 다음 빠른 시작 가이드에 따라 직접 준비한 설정을 가져오세요.

앱의 일회성 구매와 연결 서비스 요금제는 별개입니다. 이 사이트에서는 노드나 구독을 제공·판매·추천하지 않습니다. 규칙 편집 안내는 사용자가 직접 준비한 서비스 설정을 보유하고 있다는 전제에서 작성되었습니다.