이 글 미리보기

Shadowrocket에서 일부 사이트만 프록시를 사용하려면 세 가지를 확인해야 합니다. Global Routing을 Config로 설정하고, 대상 도메인 규칙을 기본 규칙보다 앞에 두며, 마지막 규칙을 FINAL,DIRECT로 지정합니다. 이미 직접 가져온 연결 정보를 사용하는 분을 위해 최소 규칙 예시와 설정 절차, 요청 기록을 통한 확인 방법을 소개합니다. 예시 도메인은 문법 설명용이며 연결 서비스 주소가 아닙니다.

1. Global Routing과 규칙 정책 구분하기

특정 사이트만 프록시를 사용하도록 설정하는 것은 Home에서 연결을 선택하는 것만으로 자동 적용되지 않습니다. Home에서 선택하는 연결은 프록시 출구를 결정하고, Global Routing은 요청을 어떻게 분기할지 결정합니다. 규칙을 사용하려면 먼저 Global Routing을 Config로 설정한 다음, Config에서 실제로 사용할 구성이 선택되어 있는지 확인하세요. 활성화되지 않은 파일을 수정해도 현재 연결의 요청 처리 방식은 바뀌지 않습니다.

4가지
Global Routing 모드: Proxy / Direct / Config / Scene
3가지
일반적인 도메인 규칙 필드: 유형, 매칭 값, 정책
마지막 1개
이 예시에서는 매칭되지 않은 요청을 FINAL,DIRECT로 처리합니다.

Proxy는 전체 프록시, Direct는 전체 직결에 사용합니다. Config를 선택해야 현재 구성에 설정된 규칙을 하나씩 확인합니다. Scene은 상황별 설정에 사용하는 기능으로, 이 규칙을 적용하는 데 필수는 아닙니다. 문제를 확인하는 동안에는 Config를 고정해 두면 Scene 전환으로 결과가 바뀌는 것을 방지할 수 있습니다.

2. 최소 규칙 작성법: DOMAIN-SUFFIX 다음에 FINAL

아래 예시는 example.com과 그 하위 도메인은 PROXY로, 나머지 요청은 DIRECT로 연결한다는 뜻입니다. 서버 정보를 포함한 전체 구성 파일이 아니라 구성에 들어가는 규칙 부분입니다. 편집기에 별도의 규칙 목록이 표시된다면 섹션 제목을 규칙으로 추가하지 말고 규칙 두 개를 추가하세요.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
내용기능주의 사항
[Rule]규칙 섹션을 나타내는 텍스트입니다.기존 구성에서 해당 섹션을 찾아 중복으로 만들지 마세요.
DOMAIN-SUFFIX지정한 도메인과 하위 도메인을 매칭합니다.example.com에는 www.example.com도 포함됩니다.
PROXY매칭된 요청을 프록시 정책으로 전달합니다.현재 프록시 출구가 설정되어 있고 연결 가능한 상태여야 합니다.
FINAL,DIRECT앞선 규칙에 매칭되지 않은 요청은 직결합니다.FINAL에는 정책 필드만 있고 도메인 필드는 없습니다.

도메인 필드에 https://, 경로, 쿼리 매개변수 또는 포트를 넣지 마세요. 예를 들어 페이지 주소에 /watch?id=1이 포함되어 있어도 규칙에는 도메인만 입력합니다. DOMAIN-SUFFIX에는 *.example.com을 쓸 필요가 없습니다. 도메인 경계를 기준으로 매칭하므로, 다른 도메인에 같은 문자열이 포함되어 있다는 이유만으로 매칭되지는 않습니다.

도메인 전체와 모든 하위 도메인이 아니라 특정 호스트 이름 하나만 프록시로 연결하려면 DOMAIN,video.example.com,PROXY를 사용할 수 있습니다. DOMAIN-SUFFIX와 매칭 범위가 다르므로 웹사이트 진입 도메인과 다른 하위 서비스를 구분할 때 유용합니다.

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

규칙은 순서대로 매칭됩니다. 앞에서 매칭되어 정책이 결정된 요청은 뒤의 규칙에서 수정되지 않습니다. 구체적인 예외를 앞에 두고 범위가 넓은 규칙은 뒤에 배치한 다음, FINAL을 마지막에 두세요. 아래 예시는 특정 하위 도메인은 직결하고 나머지 example.com 요청은 프록시로 연결합니다.

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

DOMAIN-SUFFIX를 첫 번째 줄로 옮기면 files.example.com이 먼저 매칭되어 뒤에 있는 DOMAIN 직결 예외가 적용되지 않습니다. 마찬가지로 FINAL을 대상 도메인 규칙보다 위에 두면 뒤의 규칙은 해당 요청에 적용되지 않습니다.

GEOIP와 IP-CIDR은 IP 주소 범위에 적용되는 규칙이므로 도메인 목록을 대신할 수 없습니다. 예를 들어 IP-CIDR,192.0.2.0/24,DIRECT,no-resolve는 IP 대역을 기준으로 매칭합니다. 예시 대역은 문서 설명용이며, no-resolve는 이 IP 규칙 때문에 추가 도메인 조회를 하지 않도록 지정합니다. 기존 구성 앞부분에 GEOIP나 범위가 넓은 IP-CIDR로 정책을 정하는 규칙이 있다면, 뒤의 규칙에서 처리하려던 요청을 먼저 가로채지 않는지 순서를 확인하세요.

4. Config에서 규칙 저장 및 활성화

먼저 현재 정상적으로 작동하는 구성을 따로 보관하세요. 구독은 기존 연결 정보를 업데이트하는 기능이고, Config는 트래픽 분기 방식을 정하는 기능이므로 혼동하지 마세요. 이 글의 설정에는 구독 변경이나 Shadowsocks, VMess, VLESS, Trojan, Hysteria2, WireGuard 서버 매개변수 수정이 필요하지 않습니다.

  1. 연결 확인

    Home에서 직접 가져온 연결이 있는지 확인하고 사용할 수 있는 출구를 선택하세요. 연결 자체가 작동하지 않는다면 규칙을 테스트하기 전에 연결 문제부터 해결하세요.

  2. 구성 백업

    Config에서 현재 사용하는 구성을 찾아 복사본을 보관하거나 원본 파일을 내보내세요. 작동하는 구성을 하나뿐인 상태로 덮어쓰지 마세요.

  3. 규칙 편집

    해당 구성의 편집 화면을 열고 규칙 부분을 찾으세요. 텍스트로 편집하는 경우 [Rule]을 찾아 대상 DOMAIN-SUFFIX를 FINAL 앞에 두고, 기본 규칙을 FINAL,DIRECT로 설정하세요.

  4. 구성 활성화

    수정 내용을 저장한 다음 Config로 돌아와 변경한 구성이 선택되어 있는지 확인하세요. 이어서 Home → Global Routing에서 Config를 선택합니다.

  5. 요청 다시 보내기

    연결을 다시 설정한 후 테스트할 페이지를 닫았다가 다시 여세요. 기존의 장시간 연결은 이전 출구 경로를 계속 사용할 수 있으므로, 한 번 새로고침한 결과만으로 규칙이 작동하지 않는다고 판단하지 마세요.

원격 구성 업데이트로 로컬 변경 사항이 덮어써질 수 있습니다. 구성이 정기적으로 업데이트된다면 수정 기록을 보관하고, 업데이트 후 대상 규칙과 FINAL이 그대로 있는지 확인하세요. Home에서 연결 구독만 업데이트했다고 해서 Config의 규칙 파일이 업데이트되거나 활성화되는 것은 아닙니다.

5. 웹사이트의 출구만 보지 말고 요청 기록 확인하기

규칙은 브라우저 탭 전체가 아니라 요청에 적용됩니다. 하나의 웹사이트도 메인 도메인, 정적 리소스 도메인, 로그인 도메인, 미디어 도메인에서 각각 콘텐츠를 불러올 수 있습니다. 페이지의 메인 도메인만 프록시로 연결한 뒤 텍스트는 보이지만 이미지가 로드되지 않는다면, 모든 요청을 바로 Proxy로 바꾸기 전에 실패한 리소스의 도메인부터 확인하세요.

앱 요청 도메인 확인 순서대로 매칭 정책 선택 외부 연결

출구 IP를 조회하는 페이지에서 테스트하면 그 페이지 자체의 요청이 어떤 경로로 나가는지만 확인할 수 있으며, 모든 웹사이트에 같은 정책이 적용된다는 뜻은 아닙니다. 브라우저 캐시, 연결 재사용, 앱 자체의 DNS 동작도 확인 결과에 영향을 줄 수 있습니다. 기록에 예상한 도메인 대신 IP만 표시된다면 요청이 IP를 직접 사용하는지, 앱이 별도로 DNS 조회를 하는지, 현재 DNS 설정이 도메인 인식에 영향을 주는지 먼저 확인하세요. 곧바로 규칙을 전체 IP 대역으로 넓히지 않는 것이 좋습니다.

6. 연결 오류와 규칙 오류를 나누어 확인하기

아래는 네트워크 오류에 자주 표시되는 원문 예시이며, 규칙 편집기에 항상 나타나는 안내 문구는 아닙니다. 오류가 발생하면 먼저 해당 요청이 PROXY와 DIRECT 중 어느 쪽에 매칭되었는지 확인한 뒤 해당 경로를 점검하세요. 한 번 시간 초과가 발생했다고 도메인 규칙, DNS, 서버 포트를 한꺼번에 바꾸면 어떤 변경이 영향을 주었는지 파악하기 어렵습니다.

오류: Connection timed out

원인과 해결 방법: 제한 시간 내에 연결이 이루어지지 않은 상태로, 프록시 출구나 대상 사이트의 연결 가능성이 원인일 수 있습니다. 요청의 최종 정책을 먼저 확인하세요. PROXY라면 현재 사용하는 연결을 테스트하고, DIRECT라면 로컬 네트워크에서 대상 사이트에 직접 연결할 수 있는지 확인하세요.

오류: Connection refused

원인과 해결 방법: 대상 주소에서 연결을 거부한 상태로, 해당 포트가 수신 대기 중이 아니거나 연결 매개변수가 일치하지 않을 때 발생할 수 있습니다. 직접 사용하는 서버 주소와 포트를 확인하세요. 프록시 연결은 정상인데 특정 사이트에서만 오류가 난다면 해당 사이트를 점검하세요. 포트 번호를 DOMAIN-SUFFIX에 입력하지 마세요.

오류: no such host

원인과 해결 방법: 도메인 조회에서 사용할 수 있는 결과를 얻지 못한 상태입니다. 도메인 철자와 현재 DNS 설정을 확인하고, 도메인 필드에 전체 URL을 입력하지 않았는지 살펴보세요. 도메인 조회가 정상화된 후 정책 매칭을 다시 확인합니다.

네트워크 오류가 없는데 모든 요청이 PROXY로 표시된다면 Global Routing이 Proxy로 설정되어 있는지, 앞쪽에 범위가 지나치게 넓은 규칙이 있는지 확인하세요. 모든 요청이 DIRECT로 표시된다면 Direct가 선택되어 있는지, 올바른 Config가 활성화되어 있는지, 실제 요청 도메인이 입력한 값과 일치하는지 확인하세요.

7. 일부 사이트만 프록시로 연결할 때 자주 묻는 질문

페이지 하나만 프록시로 연결하려면 전체 URL을 입력하면 되나요?

DOMAIN-SUFFIX로 같은 도메인 아래의 페이지 경로를 구분할 수는 없습니다. 이 규칙은 도메인에 적용되며 /news나 /video 같은 경로에는 적용되지 않습니다. 먼저 대상 페이지를 별도의 하위 도메인으로 구분할 수 있는지 확인하세요. 같은 호스트 이름을 공유한다면 이 예시에서는 해당 호스트 이름의 모든 요청에 같은 정책이 적용됩니다.

사이트는 열리는데 동영상이 계속 로딩되는 이유는 무엇인가요?

재생을 다시 시도하면서 요청 기록을 확인하세요. 동영상은 다른 미디어 도메인에서 제공되어 메인 사이트의 DOMAIN-SUFFIX 규칙에 포함되지 않을 수 있습니다. 리소스 도메인과 최종 정책을 확인한 후 FINAL 앞에 해당 규칙을 추가하세요. 현재 연결이 미디어 요청을 처리할 수 없는 상황인지도 확인합니다.

On Demand를 켜도 규칙을 작성해야 하나요?

네. Settings → On Demand는 필요할 때 연결을 설정하는 조건을 처리하고, Config의 규칙은 연결이 이루어진 후 요청을 분기합니다. 이 글의 규칙을 테스트할 때는 먼저 연결을 수동으로 유지하고 분기가 올바른지 확인한 다음, On Demand의 자동 연결 동작을 별도로 점검하세요.

규칙을 수십 개 추가한 뒤 충돌 여부를 확인하려면 어떻게 하나요?

먼저 구체적인 DOMAIN 예외를 유지하고, DOMAIN-SUFFIX와 DOMAIN-KEYWORD의 매칭 범위를 확인한 다음, 유효한 기본 규칙이 하나뿐인지 확인하세요. 한 번에 도메인 한 그룹만 수정하고 프록시 대상 하나와 직결 대상 하나를 비교 테스트하세요. 매칭 결과를 기록한 후 다음 규칙을 추가합니다.

마지막으로 네 가지를 확인하세요. Config가 활성화되어 있는지, 대상 도메인이 정확한지, 규칙이 구체적인 것부터 넓은 범위 순으로 정렬되어 있는지, FINAL이 DIRECT인지 확인합니다. 최소 규칙부터 안정적으로 적용한 다음 웹사이트에 필요한 도메인을 하나씩 추가하는 편이 용도를 알 수 없는 규칙을 대량으로 가져오는 것보다 관리하기 쉽습니다.