사용 가능한 서버가 있고 특정 사이트만 PROXY로 보내려는 사용자를 위한 안내입니다. 먼저 Global Routing을 Config로 설정한 다음, 현재 활성화된 설정의 [Rule]에 도메인 규칙을 추가하고 나머지 요청은 FINAL,DIRECT로 처리합니다. 아래에서 규칙 일치 결과와 적용 순서, 확인 방법을 살펴봅니다. 예시 도메인은 문법 설명용이며 서비스를 추천하는 의미가 아닙니다.
1. 먼저 Global Routing을 Config로 설정
Shadowrocket은 App Store에서 구입하는 Apple 플랫폼용 유료 클라이언트입니다. 주로 iPhone과 iPad에서 사용하며, 개발자는 Shadow Launch Technology Limited입니다. 시스템 요구 사항은 App Store 페이지를 기준으로 확인하세요. 이 글은 사용자가 이용 중인 서비스와 연결 정보를 갖추고 있다는 전제하에 작성했으며, 서비스 선택은 다루지 않습니다. 클라이언트 구입과 연결 서비스는 별개입니다.
규칙을 올바르게 작성해도 라우팅 모드가 맞지 않으면 ‘지정한 사이트는 프록시로, 나머지는 직접 연결’되지 않습니다. Home → Global Routing을 열고 현재 Config가 선택되어 있는지 확인하세요. 여기서 Config는 설정 파일의 규칙에 따라 요청을 처리한다는 뜻입니다. 화면 하단의 파일 관리용 Config 페이지와 혼동하지 마세요.
Config
권장현재 활성화된 설정의 규칙에 따라 정책을 선택합니다. 이 모드에서 이 글의 도메인 규칙과 FINAL,DIRECT가 적용됩니다.
적합한 경우: 지정한 사이트만 PROXY로 보내고 나머지 요청은 직접 연결할 때.
Proxy
인계된 트래픽을 프록시로 처리하며, 이 글의 규칙에 따라 요청별로 분류하지 않습니다. 일시적으로 전환하면 문제가 규칙 일치에서 비롯됐는지 확인하는 데 도움이 되지만, 분류 결과를 검증하는 용도로는 사용할 수 없습니다.
적합한 경우: 선택한 서버가 대상에 연결되는지 잠시 확인할 때.
Direct
인계된 트래픽을 직접 연결합니다. 설정에 PROXY가 있어도 프록시를 사용하지 않습니다.
적합한 경우: 기기가 현재 네트워크에 직접 연결될 때의 상태를 비교할 때.
Global Routing의 Scene은 상황에 따라 모드를 전환하는 기능이며, 이 글에서 고정해 사용하는 Config와는 다릅니다. 처음 확인할 때는 모드를 고정해 Scene 전환으로 라우팅 결과가 바뀌지 않도록 하세요. Settings → On Demand는 조건에 따라 연결을 설정하거나 해제하는 기능이며, 특정 도메인을 PROXY로 판정하지는 않습니다.
2. 최소 규칙 구성: 도메인을 먼저, FINAL은 마지막에
다음은 규칙 부분만 보여 주는 예시이며, 설정 전체가 포함된 완전한 파일은 아닙니다. 기존 설정의 [Rule]에 합쳐 넣으세요. 파일에 해당 섹션이 이미 있다면 섹션 제목을 중복해서 추가하지 마세요. 변경 전에 기존 설정을 따로 보관하고, 특히 DNS나 다른 설정까지 함께 덮어쓰지 않도록 주의하세요.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT
첫 번째 도메인 규칙은 example.com과 하위 도메인인 www.example.com, static.example.com 등을 일치시킵니다. 두 번째 규칙은 다른 도메인 계열을 처리합니다. 두 조건에 모두 해당하지 않는 요청은 FINAL,DIRECT로 처리됩니다. 실제로 사용할 때는 예시 도메인을 대상 도메인으로 바꾸고 영문 쉼표와 정책 키워드는 그대로 두세요.
3. DOMAIN-SUFFIX와 DOMAIN-KEYWORD의 적용 범위
사이트별로 트래픽을 분류할 때는 경계가 명확한 DOMAIN-SUFFIX를 우선 고려하세요. 호스트 이름 하나만 정확히 지정하려면 DOMAIN을 사용하고, 문자열 포함 여부로 일치시켜야 하는 경우에만 DOMAIN-KEYWORD를 사용하세요. 키워드 일치는 해당 사이트의 도메인인지 판단하지 않으므로 이름이 비슷한 무관한 도메인도 일치할 수 있습니다.
도메인 경계로 일치
- DOMAIN
- www.example.com,PROXY
- DOMAIN-SUFFIX
- example.com,PROXY
- FINAL
- DIRECT
DOMAIN은 지정한 호스트 이름만 일치시키고, DOMAIN-SUFFIX는 루트 도메인과 하위 도메인을 함께 포함합니다.
문자열 포함 여부로 일치
- DOMAIN-KEYWORD
- example,PROXY
- 일치함
- myexample.org
- FINAL
- DIRECT
키워드는 더 넓은 범위에 적용됩니다. 위의 myexample.org에도 example이 포함되어 있지만 example.com에는 속하지 않습니다.
규칙의 일치 값에는 도메인이나 키워드만 입력하고 전체 웹 주소는 넣지 마세요. 예를 들어 example.com은 도메인이지만 example.com/account에는 경로가 포함되어 있으므로 DOMAIN-SUFFIX에 사용할 수 없습니다. 또한 도메인 규칙만으로 ‘같은 사이트에서 로그인 페이지만 PROXY로 보내고 나머지 페이지는 직접 연결’하도록 설정할 수는 없습니다.
- 프로토콜 접두사는 쓰지 마세요. 도메인 필드에
https://를 넣으면 안 됩니다. *.example.com처럼 별표를 붙이지 마세요. DOMAIN-SUFFIX에는 이미 하위 도메인 일치 기능이 포함되어 있습니다.- 포트를 도메인에 포함하지 마세요. 웹페이지가 443 포트를 사용하더라도 일치 값은
example.com입니다. - 한 사이트에서 이미지, 로그인, API에 별도의 도메인을 사용할 수 있습니다. 규칙을 추가할지는 실제 요청을 확인해 결정하고, 키워드 범위만 계속 넓히지 마세요.
4. 위에서 아래로 규칙 적용: 예외를 포괄 규칙보다 앞에 배치
규칙은 ‘더 구체적이면 자동으로 우선 적용’되는 방식이 아닙니다. 같은 요청에 대해 먼저 일치한 규칙이 정책을 결정하며, 뒤에 있는 규칙은 이를 덮어쓰지 않습니다. example.com의 대부분 요청은 PROXY로 보내되 status.example.com은 직접 연결하려면 해당 호스트 이름에 대한 예외 규칙을 먼저 작성해야 합니다.
[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-KEYWORD,example,PROXY
FINAL,DIRECT
| 확인할 도메인 | 처음 일치하는 규칙 | 결과 |
|---|---|---|
status.example.com | DOMAIN 정확 일치 예외 | DIRECT |
www.example.com | DOMAIN-SUFFIX | PROXY |
myexample.org | DOMAIN-KEYWORD | PROXY |
example.org | DOMAIN-KEYWORD | PROXY |
example.net | FINAL | DIRECT |
이 표는 위 규칙을 기준으로 예상 결과를 정리한 것이며 네트워크 속도 측정 결과가 아닙니다. 또한 키워드가 예상보다 쉽게 넓은 범위에 적용될 수 있음을 보여 줍니다. example.org에도 example이 포함되어 있습니다. example.com 도메인 계열만 필요하다면 DOMAIN-KEYWORD를 삭제하세요. 규칙 유형을 보여 주기 위해 남겨 둘 필요는 없습니다.
5. Config에서 저장하고 활성화한 뒤 확인
파일을 편집했다고 해서 현재 연결에 바로 적용되는 것은 아닙니다. 아래 순서대로 진행하고 한 번에 한 종류의 규칙만 변경하세요. 단순한 도메인부터 확인한 다음 예외와 키워드를 추가합니다. 구독을 업데이트해도 로컬 Config 규칙이 저장되거나 활성화되는 것은 아니므로 서버 목록과 설정 파일을 각각 확인해야 합니다.
-
원본 파일 백업
Config로 이동해 현재 사용 중인 설정을 찾아 복사본을 보관하세요. 이후 편집할 파일을 직접 관리할 수 있는 로컬 파일로 선택했는지 확인해 원격 설정 새로고침으로 변경 내용이 덮어쓰이지 않도록 합니다.
-
규칙 부분 편집
Config에서 대상 파일의 편집 화면을 열고 [Rule]을 찾으세요. 도메인 규칙을 추가하고 예외는 앞에 배치한 뒤 FINAL,DIRECT를 마지막에 둡니다. 그런 다음 저장하세요.
-
대상 설정 활성화
Config 파일 목록으로 돌아가 방금 저장한 파일이 현재 선택되어 있는지 확인하세요. Home → Global Routing으로 이동해 Proxy나 Direct가 아닌 Config를 선택합니다.
-
서버 확인
Home에서 현재 선택한 서버를 확인하고 연결하세요. 기존 연결이 계속 유지되고 있었다면 다시 연결한 다음 테스트를 시작해 이전 연결이 판단에 영향을 주지 않도록 합니다.
-
새 요청으로 확인
규칙에 일치하는 도메인과 일치하지 않는 도메인에 각각 접속하세요. 요청 기록에서 대상 호스트, 일치한 규칙, 연결 정책을 확인합니다. 예상 결과는 각각 PROXY와 DIRECT입니다.
확인할 때 ‘웹페이지가 열리는지’만 보지 마세요. 같은 페이지라도 직접 연결과 프록시 연결 모두 정상 표시될 수 있으며, 서버 지연 시간만으로 해당 페이지에 적용된 규칙을 판단할 수 없습니다. 실제 새 요청의 일치 정보를 확인하세요. 요청이 기존 연결을 재사용하고 있다면 해당 페이지를 닫고 다시 접속하세요. 필요하면 앱 연결을 다시 설정한 뒤 확인합니다.
6. GEOIP, IP-CIDR, DNS: 문제를 확인해야 하는 경우
‘지정한 사이트만 PROXY로 연결’하는 최소 설정에는 보통 GEOIP를 추가할 필요가 없습니다. GEOIP,CN,DIRECT는 대상 IP의 지역 정보를 기준으로 판단하는 규칙이지 ‘중국어 사이트는 직접 연결’한다는 뜻이 아닙니다. 특정 도메인의 모든 서비스가 같은 지역에 있다는 의미도 아닙니다. 포괄적인 IP 규칙을 도메인 규칙보다 앞에 두면 요청 정책이 먼저 결정될 수 있습니다.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
FINAL,DIRECT
이 추가 예시는 192.168.0.0/16에 해당하는 대상 요청을 직접 연결하도록 명시합니다. no-resolve는 이 IP 규칙과 일치시키려고 도메인을 능동적으로 조회하지 않는다는 뜻이며, DNS를 전역으로 비활성화한다는 의미는 아닙니다. 이 예시에는 이미 FINAL,DIRECT가 있으므로 IP-CIDR은 최종 정책을 정하는 데 대개 중복됩니다. IP 규칙의 문법과 적용 범위를 보여 주기 위해서만 남겨 둔 예시입니다.
- 요청에 도메인이 있는 경우: 페이지 제목으로 도메인을 추측하지 말고, DOMAIN 또는 DOMAIN-SUFFIX가 요청 기록의 호스트 이름과 일치하는지 먼저 확인하세요.
- 요청에 IP만 표시되는 경우: 도메인 규칙에 필요한 정보가 없을 수 있으므로 DOMAIN-SUFFIX가 반드시 일치한다고 가정할 수 없습니다. 요청 기록과 이름 확인 결과를 점검하세요.
- 페이지가 일부만 로드되는 경우: 별도로 사용되는 리소스 도메인을 확인하세요. 기본 페이지가 PROXY 규칙에 일치해도 다른 도메인에서 제공하는 이미지나 로그인 API까지 같은 규칙에 일치하는 것은 아닙니다.
- IP 주소로 직접 접속하는 경우: 도메인 규칙은 사이트와의 연관성만으로 이를 인식하지 않습니다. IP 규칙이 꼭 필요할 때만 IP-CIDR을 사용하고, 공인 IP 주소 대역 전체를 무심코 PROXY로 보내지 마세요.
7. 자주 하는 규칙 입력 실수와 복구 방법
문제를 확인할 때는 ‘활성화 여부 → 규칙 일치 여부 → 정책 사용 가능 여부’ 순서로 살펴보세요. DNS, 서버, 규칙, On Demand를 한꺼번에 바꾸면 비교할 기준이 사라집니다. 우선 원인을 파악하기 쉬운 최소 규칙 세 줄로 되돌린 뒤 조건을 하나씩 추가하는 편이 규칙을 계속 덧붙이는 것보다 문제를 찾기 쉽습니다.
| 증상 | 먼저 확인할 항목 | 조치 방법 |
|---|---|---|
| 새 요청이 모두 PROXY로 연결됨 | Global Routing이 Proxy인지, 앞부분에 포괄적인 프록시 규칙이 있는지 | Config로 전환한 뒤 [Rule] 전체의 앞부분 규칙과 마지막 FINAL을 확인하세요. |
| 대상 도메인이 여전히 DIRECT로 연결됨 | 현재 설정, 규칙 위치, 실제 요청 도메인 | 활성화된 파일을 확인하고 대상 규칙을 먼저 일치할 수 있는 규칙보다 앞에 배치하세요. |
| 규칙 저장 후 정상적으로 불러오지 못함 | 쉼표, 필드 개수, 섹션 제목 | 영문 쉼표를 사용하세요. 도메인 규칙은 필드 3개, FINAL은 필드 2개입니다. |
| PROXY 규칙에 일치하지만 연결에 실패함 | 선택한 서버와 연결 정보 | 먼저 프록시 연결이 가능한지 확인하세요. 규칙에 일치했다고 원격 연결까지 성공한 것은 아닙니다. |
| 나중에 변경 사항이 사라짐 | 원격 업데이트로 덮어쓸 수 있는 설정을 편집했는지 여부 | 로컬 백업을 복원하고 별도의 로컬 설정에서 사용자 규칙을 관리하세요. |
FINAL,DIRECT를 사용하면 프록시 연결이 끊기나요?
아니요. 일치하지 않는 요청을 DIRECT로 처리하도록 정할 뿐, 앱 연결을 끊는 규칙은 아닙니다. 연결을 설정하는 것과 요청을 분류하는 것은 서로 다른 단계입니다. On Demand는 전자의 조건에 따른 실행을 처리하고, 규칙은 후자의 정책 선택을 처리합니다.
Shadowsocks와 VLESS에 각각 도메인 규칙을 작성해야 하나요?
아니요. 도메인 규칙은 일치 조건과 대상 정책을 지정하므로 서버 프로토콜마다 따로 작성할 필요가 없습니다. 실제 연결 프로토콜은 선택한 서버 설정에 따라 결정됩니다. 서버를 바꾼 뒤에도 연결이 가능한지 확인한 다음 같은 규칙의 결과를 다시 점검하세요.
이번 규칙 변경을 취소하려면 어떻게 하나요?
Config에서 변경 전에 저장한 설정 복사본을 다시 선택하고 Home → Global Routing이 원하는 모드인지 확인한 뒤 연결을 다시 설정하세요. FINAL만 삭제하지 마세요. 명확한 기본 처리 규칙이 없어지면 이후 결과를 확인하기 더 어려워집니다.