Shadowrocket 사용법: 특정 사이트만 프록시로 연결하는 DOMAIN-SUFFIX 규칙과 FINAL 설정

특정 사이트만 프록시로 연결하는 DOMAIN-SUFFIX·DOMAIN-KEYWORD 규칙과 매칭 순서를 설명합니다. FINAL을 DIRECT로 설정하는 방법과 example.com 규칙 예시도 소개합니다.

이 글의 핵심

Shadowrocket에서 일부 사이트만 프록시로 연결하려면 세 가지 조건을 충족해야 합니다. Home → Global Routing에서 Config를 선택하고, 현재 설정에 대상 도메인의 프록시 규칙을 먼저 작성한 다음, 나머지 요청은 FINAL,DIRECT로 처리합니다. 사용할 수 있는 서버 설정이 이미 있는 사용자를 위해 최소 규칙 예시와 매칭 범위, 확인 절차를 안내합니다. 예시 도메인은 문법 설명용이며 실제 연결을 보장하지 않습니다.

1. 먼저 Config 모드와 정책 이름 확인하기

‘특정 사이트만 프록시로 연결’하는 것은 규칙에 따라 트래픽을 분기하는 작업입니다. 연결 스위치만 켠다고 자동으로 설정되지는 않습니다. Home의 Global Routing은 현재 연결에 적용할 라우팅 방식을 정하고, Config 화면에서는 설정 파일을 관리합니다. 이름은 비슷해도 역할은 다릅니다. 전자는 규칙을 적용할지 결정하고, 후자는 사용할 규칙 파일을 선택합니다.

옵션용도이 글에서의 설정 방법
Config현재 설정의 규칙에 따라 정책 결정이 옵션을 선택하고 대상 도메인 확인
Proxy트래픽을 프록시로 처리‘나머지 사이트는 직접 연결’ 규칙을 확인할 때는 사용하지 않음
Direct트래픽을 직접 연결로 처리이 설정만으로 도메인 프록시 규칙의 적용 여부를 확인할 수 없음
SceneScene 설정에 따라 라우팅 방식 결정이번 테스트에서는 Scene의 영향을 줄이기 위해 먼저 Config로 전환

규칙의 세 번째 항목은 프로토콜 이름이 아니라 정책입니다. DIRECT는 직접 연결을 뜻합니다. 여기서는 이미 존재하고 사용할 수 있는 프록시 정책을 PROXY로 표기합니다. 편집하기 전에 현재 설정에서 이 이름이 올바르게 인식되고 예상한 서버를 가리키는지 확인하세요. 사용자 지정 정책 그룹을 사용한다면 예시의 PROXY를 해당 그룹의 정확한 이름으로 바꿔야 합니다. 존재하지 않는 이름을 그대로 복사하면 안 됩니다.

2. DOMAIN-SUFFIX 최소 설정과 매칭 범위

example.com과 하위 도메인은 프록시로 연결하고 나머지는 직접 연결하려면 설정의 [Rule] 섹션에 다음 두 규칙을 사용할 수 있습니다. 아래 내용은 규칙 예시일 뿐, 서버·정책 그룹·기타 설정을 포함한 전체 설정 파일이 아닙니다. 기존 파일 전체를 이 내용으로 덮어쓰거나 파일에 규칙 섹션을 여러 개 만들지 마세요.

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

DOMAIN-SUFFIX는 도메인 접미사 경계를 기준으로 매칭합니다. 도메인만 입력하면 됩니다. https://나 경로, :443을 붙이지 말고 *.example.com 형식으로 쓸 필요도 없습니다. 루트 도메인과 하위 도메인을 모두 포함하지만, 다른 도메인에 같은 문자열이 들어 있다는 이유만으로 매칭되지는 않습니다.

요청 대상매칭 여부위 최소 규칙 적용 결과
example.com예PROXY
www.example.com예PROXY
api.example.com예PROXY
notexample.com아니요DIRECT
example.net아니요DIRECT

www.example.com만 프록시로 연결하고 같은 사이트의 api.example.com은 직접 연결하려면 범위를 루트 도메인 전체로 넓히지 말고 정확한 도메인 규칙인 DOMAIN,www.example.com,PROXY를 사용하세요. 규칙은 실제 요청의 호스트 이름을 기준으로 작성해야 합니다. 사이트 이름이나 페이지 제목을 도메인으로 사용하면 안 됩니다.

3. DOMAIN-KEYWORD 사용 여부와 규칙 순서

DOMAIN-KEYWORD는 도메인에 지정한 문자열이 포함되어 있는지 확인하므로 접미사 규칙보다 넓은 범위를 매칭합니다. 예를 들어 DOMAIN-KEYWORD,example,PROXY는 example.com뿐 아니라 notexample.com도 매칭할 수 있습니다. 소수의 사이트만 정확하게 지정하려면 DOMAIN 또는 DOMAIN-SUFFIX를 우선 사용하세요. 규칙 줄 수를 줄이려고 매칭 범위를 넓히지 마세요.

3개 항목
도메인 규칙의 기본 필드: 유형, 매칭 값, 정책
2줄
최소 예시: 접미사 규칙 하나와 기본 처리 규칙 하나
마지막 1개
FINAL은 규칙의 맨 끝에 두고 앞에서 매칭되지 않은 요청을 처리합니다

규칙은 일반적으로 위에서 아래 순서로 확인하며, 먼저 매칭된 규칙이 적용됩니다. 더 구체적인 예외 규칙을 범위가 넓은 규칙보다 앞에 배치하세요. 아래 예시에서는 static.example.com을 직접 연결하고, 그 외 example.com 도메인은 프록시로 연결하며, 나머지 요청은 직접 연결합니다.

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

정리: 예외를 먼저, 범위를 다음에, 기본 처리는 마지막에

저장하기 전에 첫 줄부터 확인하세요. 정확한 예외 규칙이 먼저 매칭되는지, 접미사 규칙의 범위가 지나치게 넓지 않은지, FINAL이 실제로 맨 끝에 있는지 점검합니다. 이 순서로 살펴보면 도메인 규칙을 계속 중복 추가하는 것보다 충돌을 쉽게 찾을 수 있습니다.

기존 설정에 GEOIP, IP-CIDR 또는 외부 규칙 세트가 포함되어 있다면 FINAL,DIRECT가 이미 적용된 결정을 덮어쓰지는 않습니다. 지정한 사이트만 프록시로 연결하려면 앞부분에 프록시를 지정하는 다른 규칙이 있는지도 확인해야 합니다. 마지막 줄만 수정하고 기존 설정 전체가 허용 목록 방식으로 바뀌었다고 생각하지 마세요.

4. Home과 Config에서 적용하고 확인하기

아래 절차에서는 규칙과 라우팅 모드만 바꾸고 DNS, 서버 프로토콜, On Demand는 동시에 변경하지 않습니다. 그래야 접속 결과가 달라졌을 때 이번 규칙 수정이 원인인지 판단하기 쉽습니다. Settings → On Demand가 자동으로 연결을 시작하도록 설정되어 있다면 상태를 먼저 기록해 두세요. 자동 재연결을 설정이 저장되지 않은 것으로 오해하지 않도록 주의해야 합니다.

  1. 서버 확인

    Home에서 선택된 서버 또는 정책 그룹을 사용할 수 있는지 확인하세요. 기존 서비스와 구독이 있다면 먼저 원래 설정으로 정상 접속되는지 확인한 다음 규칙을 테스트합니다.

  2. 기존 설정 보관

    Config로 이동해 현재 사용 중인 파일을 확인하고 원본 내용을 보관하세요. [Rule] 섹션을 수정한 뒤 프록시 정책 이름, 영문 쉼표, FINAL의 위치를 확인합니다.

  3. 규칙 모드 선택

    편집한 설정을 저장하고 선택한 뒤 Home → Global Routing → Config로 돌아갑니다. 필요한 경우 연결을 끊었다가 다시 연결해 새 연결에서 확인하세요.

  4. 두 대상 비교

    실제로 규칙에 입력한 도메인 하나와 규칙에 포함되지 않은 도메인 하나에 접속해 보세요. 페이지가 열리는지만 확인하지 말고 요청 기록의 호스트 이름, 매칭된 규칙, 적용된 정책도 함께 살펴보세요.

  5. 관련 요청 확인

    본문은 표시되지만 이미지가 나타나지 않거나 로그인에 실패한다면 실패한 요청의 실제 도메인을 확인하세요. 프록시가 필요한 리소스인지 확인한 뒤 해당 규칙을 추가하고 다시 테스트합니다.

브라우저가 기존 연결을 재사용할 수 있으므로 페이지를 새로 고치는 것만으로는 새 연결이 만들어지지 않을 수 있습니다. 규칙을 수정한 후에는 기존 요청을 종료하고 테스트를 다시 시작하세요. 계속 재생 중인 장기 연결로 새 규칙의 적용 여부를 판단하지 마세요. example.com은 문법 설명용으로 예약된 도메인입니다. 실제로 테스트할 때는 접근이 필요하고 사용할 권한이 있는 도메인으로 바꾸세요.

5. FINAL이 DIRECT인데도 결과가 예상과 다른 이유

먼저 ‘정책이 예상과 다르게 적용된 경우’와 ‘정책은 맞지만 요청이 실패한 경우’를 구분하세요. PROXY에 매칭되었는데 연결할 수 없다면 서버나 대상 연결에 문제가 있을 수 있습니다. DIRECT에 매칭되었는데 열리지 않는다면 현재 네트워크에서 대상에 직접 연결할 수 없는 경우일 수 있습니다. 도메인 규칙을 더 추가한다고 모든 연결 오류가 해결되지는 않습니다.

오류: The request timed out.

원인과 해결 방법: 요청 시간이 초과된 것입니다. 이 문구만으로 규칙을 잘못 작성했다고 판단할 수는 없습니다. 먼저 실패한 요청에 적용된 정책을 확인하세요. 예상한 PROXY에 실제로 매칭되었다면 사용 가능한 기존 서버로 비교 테스트하고, 곧바로 FINAL을 수정하지 마세요.

오류: A server with the specified hostname could not be found.

원인과 해결 방법: 호스트 이름을 확인하지 못했습니다. 주소 표기와 요청 호스트 이름을 먼저 확인한 뒤 현재 설정의 DNS 설정을 점검하세요. 호스트 이름 확인 실패를 DOMAIN-SUFFIX가 하위 도메인을 포함하지 못한 문제로 오해하지 마세요.

위 문구는 시스템 네트워크 요청에서 반환될 수 있는 영어 오류 메시지입니다. 실제 표시는 호출한 앱과 시스템 언어에 따라 다를 수 있습니다. 문제를 진단할 때는 ‘열리지 않음’이라고만 기록하지 말고 원문과 실패한 도메인, 실제 적용된 정책을 함께 기록하세요.

6. 특정 사이트 라우팅 관련 자주 묻는 질문

example.com만 입력하면 www도 프록시로 연결되나요?

DOMAIN-SUFFIX,example.com,PROXY를 사용하면 www.example.com도 매칭됩니다. DOMAIN,example.com,PROXY를 사용하면 루트 도메인만 매칭되므로 필요에 따라 정확한 도메인을 추가하거나 접미사 규칙을 사용하세요.

특정 웹 주소의 경로 하나만 프록시로 연결할 수 있나요?

example.com/account를 DOMAIN-SUFFIX에 입력할 수는 없습니다. 도메인 라우팅은 URL 경로에 따라 구분하지 않으므로 같은 호스트 이름 아래의 경로마다 다른 정책을 적용할 수 없습니다. 먼저 필요한 구분이 서로 다른 하위 도메인으로 가능한지 확인하세요.

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

먼저 업데이트한 항목이 Home의 서버 구독인지 Config의 원격 설정인지 확인하세요. 전자는 주로 서버 정보를 갱신하고, 후자는 로컬에서 편집한 내용을 덮어쓸 수 있습니다. 업데이트한 뒤 현재 설정에서 규칙을 확인하고 직접 수정한 내용은 사본으로 보관하세요.

FINAL,DIRECT는 연결을 끈다는 뜻인가요?

아닙니다. 매칭되지 않은 요청을 처리할 정책을 지정하는 것이며 Home의 연결 스위치를 끄지는 않습니다. 연결을 유지하고 Config를 사용하면 지정한 도메인에 프록시 규칙을 계속 적용할 수 있습니다.

최종 확인에서는 세 가지를 모두 충족해야 합니다. 대상 도메인이 예상한 프록시 정책에 매칭되고, 규칙에 없는 테스트 도메인은 DIRECT에 매칭되며, 저장 후 다시 연결해도 결과가 같아야 합니다. 사이트를 추가할 때는 한 번에 도메인 한 묶음씩 추가하고 반복해서 확인하세요. 수정 내역을 명확히 기록해 허용 목록이 설명하기 어려운 광범위한 매칭으로 바뀌지 않도록 합니다.

App Store 정식 앱다운로드 및 확인