Shadowrocket에서 사용 가능한 연결을 설정했고, 일부 사이트만 프록시를 거치게 하려는 사용자를 위한 안내입니다. Config의 현재 설정에 도메인 규칙을 추가하고, FINAL,DIRECT를 마지막에 배치한 뒤 Home → Global Routing을 Config로 설정하세요. 웹페이지가 열리는지만으로 판단하지 말고 요청 기록에서 도메인, 매칭된 규칙, 실제 적용된 정책을 확인하세요.
1. 규칙 라우팅과 전체 연결 모드 구분하기
‘일부 사이트만 프록시 연결’하려면 두 가지 조건이 충족되어야 합니다. 대상 도메인은 PROXY에 매칭되고, 나머지 요청은 DIRECT로 처리되어야 합니다. 대상 도메인은 도메인 규칙으로 지정하고, 나머지는 마지막 FINAL 규칙이 처리합니다. 현재 연결이 설정된 규칙에 따라 작동해야 두 조건이 적용됩니다. Global Routing이 Proxy 또는 Direct라면 규칙 파일만 수정해도 여기서 설명하는 방식으로 분기되지 않습니다.
| Global Routing 옵션 | 동작 방식 | 이 글에서 할 설정 |
|---|---|---|
| Config | 현재 설정의 규칙에 따라 정책을 결정합니다. | 도메인 규칙을 확인하려면 이 옵션을 선택하세요. |
| Proxy | 프록시 모드로 트래픽을 처리하며, 이 글의 도메인 허용 목록 방식으로 분기하지 않습니다. | FINAL,DIRECT를 확인할 때는 선택하지 마세요. |
| Direct | 직접 연결 모드로 트래픽을 처리합니다. | 직접 연결 결과를 도메인 규칙이 작동하지 않는 것으로 오해하지 마세요. |
| Scene | 설정된 Scene 조건에 따라 작동 방식을 결정합니다. | 처음 문제를 확인할 때는 Config로 전환해 Scene 변경의 영향을 줄이세요. |
여기서 PROXY는 프록시 정책, DIRECT는 대상에 직접 연결하는 정책을 뜻합니다. 시작하기 전에 Home에서 선택한 프록시 연결이 정상적으로 작동하는지 확인하세요. 기존 설정에서 사용자 지정 정책 그룹을 사용한다면 규칙 끝부분에서 참조하는 정책 이름이 실제로 존재하는지 확인하세요. 다른 설정의 그룹 이름을 그대로 붙여 넣지 마세요.
2. DOMAIN-SUFFIX와 FINAL,DIRECT를 사용한 전체 규칙
아래는 문법을 설명하기 위한 전체 [Rule] 섹션입니다. 연결 매개변수나 DNS 설정 등이 포함된 완전한 설정 파일은 아닙니다. example.com과 example.net은 문서용 예시 도메인이므로, 프록시로 연결할 실제 사이트의 도메인으로 바꿔야 합니다. 예시 도메인을 실제로 이용할 수 있는 서비스로 간주하지 마세요.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY는 example.com 자체와 하위 도메인(예: www.example.com, api.example.com)에 매칭됩니다. notexample.com이나 example.com.other.net은 같은 도메인 접미사로 처리되지 않습니다. 여기서 매칭하는 것은 도메인이며, 웹 주소에 포함된 임의의 문자열이 아닙니다.
- 도메인 필드에는
https://, 포트, 경로 또는 쿼리 매개변수를 입력하지 않습니다. https://www.example.com:443/account에 접속할 때 규칙에는 도메인만 입력하고/account는 입력하지 않습니다.- 규칙은 한 줄에 하나씩 입력하고, 필드는 영문 쉼표로 구분합니다.
PROXY,DIRECT같은 키워드는 원문 그대로 사용하세요. FINAL,DIRECT에는 도메인 필드가 없습니다. 앞선 규칙에 매칭되지 않은 요청을 받아 직접 연결합니다.
3. 텍스트 저장으로 끝내지 말고 규칙 적용하기
아래 경로는 Home, Config, Settings의 화면 구성을 기준으로 안내합니다. 플랫폼마다 편집 메뉴는 다를 수 있지만, 파일 편집, 저장, 현재 설정으로 지정, Config 모드로 실행의 네 단계를 모두 완료해야 합니다. 구독에서 연결 정보를 가져오는 것과 규칙 설정이 적용되는지는 별도로 확인해야 합니다.
-
설정 백업
Config로 이동해 먼저 현재 파일의 사본을 만들거나 백업을 내보내세요. 현재 사용 중인 설정 파일을 확인해 두면 다른 파일을 편집한 채 기존 설정으로 계속 연결하는 일을 막을 수 있습니다.
-
규칙 정리
사용할 파일의 편집 메뉴를 열고
[Rule]섹션을 찾으세요. 필요한 DOMAIN-SUFFIX 규칙을 입력하고 기존 규칙을 확인한 뒤FINAL,DIRECT를 마지막에 두세요. -
파일 적용
수정 내용을 저장한 다음 Config에서 해당 파일이 현재 설정으로 선택되었는지 확인하세요. 파일이 원격 업데이트를 받는다면 이후 업데이트가 로컬 수정을 덮어쓸 수 있는지도 확인하세요.
-
연결 모드 전환
Home → Global Routing으로 돌아가 Config를 선택하세요. 그런 다음 Home에서 선택한 프록시 연결이 정상 작동하는지 확인하고 연결을 시작하세요.
-
새 요청 만들기
연결을 끊어도 되는 상황이라면 다시 연결하세요. 기존 웹페이지를 닫았다가 다시 열어 새 네트워크 요청을 생성한 다음, 요청 기록에서 매칭 결과를 확인하세요.
기존 구독 링크는 서비스 제공업체에서 받아야 합니다. 라우팅 규칙을 바꾸려고 구독을 반복해서 삭제하지 마세요. 구독 주소를 DOMAIN-SUFFIX의 도메인 필드에 붙여 넣어서도 안 됩니다. Settings → On Demand는 자동 연결 조건을 설정하며, 특정 도메인이 PROXY 또는 DIRECT 중 어느 쪽으로 연결될지를 결정하지 않습니다. 문제를 확인하는 동안 자동 연결이 다시 시작되는지 살펴보고, 자동 연결 동작을 규칙 변경으로 오해하지 않도록 하세요.
4. DOMAIN과 DOMAIN-SUFFIX 선택 및 예외 규칙 위치
규칙은 위에서 아래 순서로 확인하며, 먼저 매칭된 규칙이 요청에 적용될 정책을 결정합니다. 따라서 ‘사이트 전체는 프록시로 연결하되 특정 하위 도메인은 직접 연결’하려면 더 구체적인 예외를 앞에 배치해야 합니다. 아래 예시는 status.example.com을 직접 연결하고, 그 밖의 example.com 도메인은 프록시로 연결합니다.
[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
| 규칙 키워드 | 매칭 범위 | 이 경우의 참고 사항 |
|---|---|---|
| DOMAIN | 도메인 하나를 정확히 매칭합니다. | 특정 호스트만 프록시로 연결하거나 하위 도메인 하나를 예외로 지정할 때 사용합니다. |
| DOMAIN-SUFFIX | 도메인 자체와 하위 도메인에 매칭합니다. | 사이트의 기본 도메인과 같은 접미사를 사용하는 서비스를 함께 라우팅할 때 적합합니다. |
| IP-CIDR | IPv4 주소 대역에 매칭합니다. | 지정한 주소 범위에 적합하며, 웹사이트 경로는 지정할 수 없습니다. |
| GEOIP | 대상 IP의 지리적 위치를 기준으로 매칭합니다. | 페이지 내용, 도메인 접미사 또는 사용자의 위치로 판단하지 않습니다. |
| FINAL | 앞선 규칙에 매칭되지 않은 요청을 처리합니다. | 이 예시에서는 DIRECT를 사용하며, 마지막에 다른 규칙을 추가하지 않습니다. |
예를 들어 IP-CIDR,192.168.0.0/16,DIRECT,no-resolve는 이 사설 주소 대역에 매칭되는 요청을 직접 연결합니다. no-resolve는 이 IP 규칙에 매칭하기 위해서만 도메인 조회를 수행하지 않도록 합니다. 모든 규칙에 반드시 붙여야 하는 매개변수는 아니며, 사이트에서 빠진 다른 리소스 도메인 문제를 해결해 주지도 않습니다.
정리: 도메인 허용 목록에 지리 기반 라우팅은 필요하지 않습니다
목표가 ‘목록에 있는 도메인만 프록시로 연결’하는 것이라면 구체적인 예외, 도메인 프록시 규칙, FINAL,DIRECT만 두면 됩니다. GEOIP 또는 포괄적인 IP 프록시 규칙을 추가하기 전에는 어떤 요청을 바꾸려는지 먼저 확인하세요. 그렇지 않으면 먼저 매칭되는 규칙이 ‘나머지는 모두 직접 연결’이라는 범위를 바꿀 수 있습니다.
5. 규칙 적용 확인: 도메인, 규칙, 정책 대조하기
웹페이지가 열렸다고 프록시를 거쳤다는 뜻은 아니며, 열리지 않는다고 규칙에 매칭되지 않았다는 뜻도 아닙니다. 규칙 선택이 올바르더라도 프록시 연결, 대상 서비스, DNS 또는 TLS 문제로 실패할 수 있습니다. 확인할 때는 앱의 요청 기록이나 연결 세부 정보를 살펴보고, 새 요청의 대상 도메인, 매칭된 규칙, 최종 정책을 함께 확인하세요. 기록 메뉴 위치와 표시 항목은 현재 플랫폼의 화면을 기준으로 확인해야 합니다.
| 테스트 입력 | 예상 규칙 | 예상 정책 |
|---|---|---|
| www.example.com | DOMAIN-SUFFIX,example.com | PROXY |
| status.example.com | DOMAIN,status.example.com | DIRECT |
| www.example.org | FINAL | DIRECT |
위 표는 규칙 동작을 설명하기 위한 예시이며, 예시 사이트에 실제로 접속해 테스트한 결과가 아닙니다. 실제로 확인할 때는 접근 권한이 있는 도메인으로 바꾸고 새 연결을 하나씩 만드세요. 브라우저는 기존 연결을 재사용하거나 캐시된 내용을 바로 표시할 수 있습니다. 설정을 바꾼 뒤 기존 페이지만 확인하면 새 규칙을 검증할 요청이 생성되지 않을 수 있습니다.
- 먼저 모드 확인: Home → Global Routing이 Config로 설정되어 있어야 하며, 현재 파일은 방금 저장한 파일이어야 합니다.
- 그다음 매칭 확인: 대상 도메인이 FINAL에 매칭된다면 철자, 하위 도메인 관계, 도메인 정보가 정상적으로 확인되는지 살펴보세요.
- 이어서 정책 확인: 지정한 규칙에 매칭됐는데도 연결 경로가 예상과 다르면 정책 참조와 현재 선택한 연결을 확인하세요.
- 마지막으로 응답 확인: 정책이 올바르게 적용된 것을 확인한 뒤 프록시 서버 포트, 대상 서버의 응답, 인증서 오류를 살펴보세요.
6. 페이지가 일부만 표시되거나 연결 오류가 발생할 때
웹사이트는 메인 도메인, 로그인 도메인, 정적 리소스 도메인, 동영상 도메인에 동시에 요청을 보낼 수 있습니다. 메인 도메인이 프록시로 연결되더라도 모든 리소스가 같은 접미사를 사용하는 것은 아닙니다. 페이지에서 assets.example.net에도 접속한다면 DOMAIN-SUFFIX,example.com,PROXY만으로는 해당 도메인을 처리할 수 없습니다. 실패한 요청에서 실제 도메인을 확인한 다음 규칙을 추가할지 결정하세요. 추측만으로 프록시 범위를 넓히지 마세요.
오류: connection refused
원인: 연결 대상 포트가 거부된 상태이며, 프록시 서버 또는 직접 연결 대상에서 발생할 수 있습니다. 해결: 먼저 해당 기록의 정책과 원격 주소를 확인하세요. PROXY로 연결했다면 기존 서비스 정보에서 서버 주소와 포트를 확인하고, 오류를 없애려는 목적으로 모든 도메인을 프록시로 바꾸지는 마세요.
오류: i/o timeout
원인: 제한 시간 안에 네트워크 작업이 완료되지 않은 상태입니다. 이 메시지만으로 규칙, 연결 경로, 대상 중 어느 쪽에 문제가 있는지 판단할 수 없습니다. 해결: 먼저 규칙이 매칭됐는지 확인한 뒤 현재 프록시 연결과 같은 대상에 대한 새 요청을 각각 테스트하세요. 한 번에 조건 하나만 바꾸세요.
오류: no such host
원인: 도메인 조회에서 사용할 수 있는 결과를 얻지 못했습니다. 오타 또는 DNS 조회 실패일 수 있습니다. 해결: 실제 요청 도메인과 기존 DNS 설정을 확인하세요. 도메인 조회 문제를 먼저 해결한 뒤 DOMAIN-SUFFIX 또는 FINAL 중 어디에 매칭되는지 확인하세요.
위 내용은 네트워크 로그에서 흔히 볼 수 있는 오류 문구의 일부입니다. 전체 메시지에는 주소, 포트 등 추가 정보가 포함될 수 있으며, 플랫폼마다 같은 팝업을 표시하지는 않습니다. 문제 해결을 위해 기록을 공유할 때는 시간, 대상 도메인, 규칙, 정책을 남기세요. 공유 전에 구독 토큰, 비밀번호 및 기타 연결 인증 정보를 삭제하세요.
7. 자주 묻는 질문: 경로 라우팅, 업데이트 덮어쓰기, 직접 연결 범위
한 사이트의 /video 경로만 프록시로 연결할 수 있나요?
DOMAIN-SUFFIX로 URL 경로를 기준으로 라우팅할 수는 없습니다. 이 규칙은 도메인에 매칭되며 /video를 매칭 필드로 읽지 않습니다. HTTPS 경로도 일반 도메인 규칙에서 직접 사용할 수 있는 정보가 아닙니다. 먼저 해당 서비스에 별도의 하위 도메인이 있는지 확인하고, 있다면 DOMAIN으로 그 하위 도메인을 정확히 지정할 수 있습니다.
FINAL,DIRECT로 설정했는데 다른 사이트는 왜 여전히 프록시로 연결되나요?
먼저 Home → Global Routing이 Config인지 확인한 다음 FINAL 앞에 있는 규칙을 살펴보세요. 앞쪽의 DOMAIN-SUFFIX, IP-CIDR, GEOIP 또는 규칙 집합이 먼저 매칭되어 정책을 결정할 수 있습니다. FINAL은 나머지 요청만 처리하며 앞서 매칭된 결과를 덮어쓰지 않습니다.
어제까지 됐는데 설정을 업데이트한 뒤 규칙이 사라진 이유는 무엇인가요?
Config에서 현재 파일을 열고 추가한 도메인 규칙이 있는지 확인하세요. 원격 설정 업데이트가 로컬 텍스트를 덮어쓸 수 있습니다. 로컬 설정 사본을 별도로 보관하고 업데이트 전후로 규칙을 대조하세요. 연결 구독 새로고침과 원격 규칙 파일 업데이트는 서로 다른 작업입니다.
나머지가 DIRECT라면 다른 앱도 모두 프록시를 거치지 않는다는 뜻인가요?
현재 규칙 처리 과정에 들어왔지만 앞선 규칙에는 매칭되지 않은 요청이 DIRECT로 연결된다는 뜻입니다. 기기의 모든 트래픽이 반드시 그렇게 처리된다는 보장은 아닙니다. 앱에서 실제로 발생한 요청 기록을 확인하고, 테스트 환경에 영향을 주는 다른 시스템 프록시, VPN 또는 앱 내 프록시 설정도 살펴보세요.
작업을 마친 뒤에는 재현할 수 있는 최소 규칙을 보관하세요. 필요한 프록시 도메인, 필수 예외 규칙, 마지막의 FINAL,DIRECT가 포함되어야 합니다. 사이트를 추가할 때마다 새 요청을 만들고 매칭 결과와 정책을 확인하세요. 다른 규칙 유형을 추가하려면 규칙 참고 자료를 확인하고, 용어는 용어 매뉴얼에서 찾아보세요.