Shadowrocket 일부 사이트만 프록시로 연결하기: DOMAIN-SUFFIX 규칙 설정

DOMAIN-SUFFIX와 DOMAIN-KEYWORD로 지정한 사이트만 PROXY로 보내고, 나머지는 FINAL,DIRECT로 처리하는 규칙 설정과 Config 모드 확인 방법을 안내합니다.

이 글의 핵심

이 글은 Shadowrocket에서 직접 구독을 가져온 뒤, 지정한 사이트만 프록시를 사용하도록 설정하려는 사용자를 위한 안내입니다. 현재 적용 중인 Config를 편집하고 프록시가 필요한 도메인 규칙을 앞쪽에 배치한 다음, 마지막에 FINAL,DIRECT를 추가합니다. 이어서 Home → Global Routing에서 Config를 선택합니다. 아래에서 매칭 범위와 규칙 순서, 저장 및 확인 방법을 살펴봅니다. 기존 구독을 어디서 가져왔는지는 변경하지 않습니다.

1. 규칙, 정책, 연결 모드 구분하기

‘일부 사이트만 프록시로 연결’하려면 두 가지 조건을 충족해야 합니다. 대상 사이트는 PROXY를 지정한 규칙과 일치하고, 나머지 요청은 DIRECT로 처리되어야 합니다. 구독은 사용할 서버 정보를 제공하고, Config는 요청을 어떻게 분배할지 결정합니다. 서버를 바꾸거나 구독을 업데이트하는 것만으로는 이러한 분기 규칙이 자동으로 설정되지 않습니다. 시작하기 전에 Home에 사용할 수 있는 서버가 있는지 확인하고 현재 Config를 백업해 두세요.

이 글에서는 기본 정책인 PROXY와 DIRECT를 사용합니다. PROXY는 요청을 현재 선택된 프록시로 보내고, DIRECT는 대상에 직접 연결합니다. 기존 Config에서 사용자 지정 정책 그룹을 사용한다면 규칙 끝에 해당 그룹의 정확한 이름을 지정할 수도 있습니다. 단, 그룹이 정의되어 있고 사용 가능한 항목이 있는지 먼저 확인해야 합니다. 처음 설정할 때는 정책 그룹과 매칭 조건을 동시에 변경하지 말고 아래의 최소 구성부터 적용하세요.

정책 2개
PROXY와 DIRECT로 요청 분배
모드 4가지
Global Routing:Proxy / Direct / Config / Scene
최종 처리 규칙 1개
Rule 목록의 마지막에 FINAL,DIRECT 배치

Home → Global Routing의 Proxy와 Direct는 전체 요청을 프록시 또는 직접 연결로 설정하며, 이 글에서 다루는 규칙별 분기 결과를 확인하는 용도가 아닙니다. 여기서는 Config를 선택해 구성에 정의된 규칙을 적용해야 합니다. Scene은 상황별 모드 전환에 사용됩니다. 처음 확인할 때는 Config로 고정해 Scene 조건으로 인한 변수를 줄이세요. Settings → On Demand는 필요할 때 연결을 시작하는 동작을 설정하는 메뉴이지, 도메인 규칙을 편집하는 곳이 아닙니다.

2. DOMAIN-SUFFIX와 DOMAIN-KEYWORD 선택하기

도메인 규칙은 요청의 호스트명을 기준으로 매칭하며 웹 주소 전체를 대상으로 하지 않습니다. 예를 들어 https://www.example.com/account라면 도메인 필드에는 example.com 또는 www.example.com을 입력합니다. https://, /account 경로, 쿼리 매개변수, 포트는 포함하지 마세요. 규칙은 반각 쉼표로 구분하고 규칙 키워드는 영어 그대로 사용합니다.

규칙 작성 매칭 범위 사용 사례
DOMAIN,www.example.com,PROXY www.example.com 호스트명만 매칭합니다. 특정 사이트 하나만 지정하면 됩니다.
DOMAIN-SUFFIX,example.com,PROXY example.com과 api.example.com 같은 하위 도메인을 매칭합니다. 같은 루트 도메인의 웹페이지와 API를 함께 프록시로 연결합니다.
DOMAIN-KEYWORD,example,PROXY 호스트명에 example 문자열이 포함된 요청을 매칭합니다. 여러 도메인에 걸친 키워드 매칭이 꼭 필요하고, 더 넓은 범위가 허용되는 경우에 사용합니다.
FINAL,DIRECT 앞선 규칙과 일치하지 않은 요청을 처리합니다. ‘그 외 트래픽은 직접 연결’하도록 마지막 규칙으로 사용합니다.

DOMAIN-SUFFIX는 도메인의 접미사 경계를 기준으로 매칭합니다. example.com 규칙은 img.example.com에는 적용되지만, 문자열이 비슷하다는 이유만으로 notexample.com까지 매칭하지는 않습니다. DOMAIN-KEYWORD에는 이러한 접미사 경계가 없어 example을 키워드로 지정하면 해당 문자열이 포함된 다른 호스트명까지 범위가 넓어집니다. 대상 도메인을 알고 있다면 짧은 키워드로 사이트를 추측하기보다 DOMAIN 또는 DOMAIN-SUFFIX를 우선 사용하세요.

정리: 도메인을 먼저 확인하고 키워드 사용 여부를 결정하세요

먼저 DOMAIN-SUFFIX로 대상 루트 도메인을 지정하세요. 로그에서 필요한 여러 도메인에 동일한 키워드가 안정적으로 포함되는 것이 확인되고, 하나씩 관리하기 어려운 경우에만 DOMAIN-KEYWORD를 추가하세요.

3. 최소 규칙 구성과 위에서 아래로 적용되는 순서

아래 구성에서는 example.com과 example.net 및 각 하위 도메인을 프록시로 연결하고 나머지 요청은 직접 연결합니다. [Rule]은 설정 파일에서 규칙 영역을 나타내는 구분자입니다. 텍스트 편집기에 붙여넣을 때 한 번만 넣으면 됩니다. 규칙 목록에서 항목별로 추가한다면 규칙 유형, 도메인, 정책을 각각 입력하고 구분자는 개별 규칙에 넣지 마세요.

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

규칙은 일반적으로 위에서 아래 순서로 매칭되며, 먼저 일치한 규칙이 요청에 적용됩니다. FINAL을 목록 상단에 놓으면 뒤에 있는 대상 규칙이 적용될 기회가 없습니다. 앞부분에 대상 도메인에 적용되는 DIRECT 규칙이나 범위가 넓은 규칙 세트가 이미 있다면 새 PROXY 규칙을 그 앞에 배치하세요. 마지막 부분만 수정하면 변화가 없을 수 있습니다.

특정 하위 도메인을 직접 연결하려면 범위가 넓은 규칙보다 구체적인 예외 규칙을 앞에 두세요. 아래 예시에서는 status.example.com은 DIRECT로 연결되고 www.example.com을 비롯한 나머지 하위 도메인은 PROXY를 사용합니다. DOMAIN-SUFFIX 뒤에 예외를 배치해 앞서 적용된 결과를 덮어쓰려 하지 마세요.

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

기존 Config에는 DNS, Host, 정책 그룹 및 다른 섹션이 포함되어 있을 수 있습니다. 위 코드는 Rule 부분만 보여 주며 전체 Config를 삭제하고 다시 만들라는 뜻이 아닙니다. 편집 전에 기존 Config를 복사하고 [Rule]이 이미 있는지 확인하세요. 원본 파일 끝에 섹션 전체를 중복해서 추가하지 마세요.

4. Config에 저장하고 규칙 모드로 전환하기

아래 안내는 Home, Config, Settings의 메뉴 구성을 기준으로 합니다. 실제로 활성화된 Config를 편집해야 하며, 이름만 같은 원격 Config 사본을 편집해서는 안 됩니다. 원격 Config를 업데이트하면 로컬 변경 사항이 덮어써질 수 있습니다. 장기간 유지할 규칙은 별도로 저장한 로컬 사본에 작성하고, 전환할 때마다 현재 선택된 Config를 확인하세요.

  1. Config 백업

    Config에서 현재 사용 중인 설정을 찾아 사본을 먼저 보관하세요. 기존 설정의 이름도 기록해 두면 확인에 실패했을 때 다시 전환하기 쉽습니다. 유일한 파일을 바로 덮어쓰지 마세요.

  2. 규칙 편집

    Config에서 해당 로컬 설정의 편집 메뉴를 열고 Rule로 이동합니다. 규칙 목록에서 DOMAIN-SUFFIX를 추가하고 도메인에 example.com 대신 실제 대상 도메인을 입력한 다음 정책으로 PROXY를 선택하세요. 또는 텍스트 편집기에서 기존 [Rule] 영역을 수정합니다.

  3. 규칙 순서 정리

    지정한 사이트의 PROXY 규칙을 충돌할 수 있는 범위가 넓은 규칙보다 앞에 배치하고, 마지막 규칙이 FINAL,DIRECT인지 확인하세요. 변경 내용을 저장한 뒤 Config 목록에서 이 설정을 현재 Config로 선택합니다.

  4. 모드 선택

    Home → Global Routing → Config로 돌아가 현재 프록시 선택이 유효한지 확인하세요. 이 메뉴가 Proxy 또는 Direct로 설정되어 있다면 방문 결과만으로 방금 편집한 도메인 규칙의 적용 여부를 판단할 수 없습니다.

  5. 다시 테스트

    연결을 활성화한 뒤 대상 웹페이지를 다시 여세요. 변경 전에 이미 연결된 세션은 기존 경로를 계속 사용할 수 있습니다. 필요하면 웹페이지를 닫고 연결을 새로 설정한 다음 대상 도메인 하나와 목록에 없는 도메인 하나를 각각 테스트하세요.

구독 업데이트는 서버 목록과 매개변수를 갱신하고, Config 편집은 요청 경로를 설정합니다. 두 작업을 혼동하지 마세요. 프록시가 필요한 사이트를 하나 추가하는 경우 일반적으로 구독을 다시 가져오거나 서버의 포트, 비밀번호, SNI, TLS 매개변수를 변경할 필요가 없습니다. 처음 가져오기와 연결 방법은 빠른 시작을, 모드 차이는 프록시 모드 안내를 참고하세요.

5. 웹페이지가 열리는지만 보지 말고 연결 기록으로 확인하기

페이지가 열렸다고 해서 프록시를 거쳤다고 단정할 수는 없습니다. 일부 사이트는 직접 연결해도 접속할 수 있습니다. 페이지가 열리지 않는다고 규칙이 적용되지 않았다고 단정할 수도 없습니다. 서버 연결, DNS 확인, 웹사이트 상태가 원인일 수 있습니다. 연결 기록이나 로그에서 대상 호스트명, 일치한 규칙, 최종 정책을 확인하세요. 기록 메뉴의 위치와 표시 방식은 플랫폼마다 다를 수 있지만 확인할 정보는 같습니다.

테스트 요청 예상 매칭 예상 정책
example.com 및 www.example.com DOMAIN-SUFFIX,example.com PROXY
앞서 예외 규칙을 추가한 status.example.com DOMAIN,status.example.com DIRECT
대상 목록에 없고 다른 규칙과도 일치하지 않는 도메인 FINAL DIRECT

표의 내용은 앞서 제시한 규칙을 적용했을 때 예상되는 결과이며, 예시 사이트의 연결 상태를 측정한 결과가 아닙니다. 실제 테스트에서는 필요한 도메인을 사용하고 한 번에 조건 하나만 바꾸세요. 기록에서 대상 요청이 PROXY와 일치했는데도 연결되지 않는다면 DOMAIN-KEYWORD 범위를 계속 넓히지 말고 현재 서버와 서비스 제공업체가 안내한 설정을 확인하세요.

웹페이지 하나가 별도의 이미지, 로그인, 인증 코드, API 도메인에 요청을 보내는 경우가 많습니다. 메인 페이지가 PROXY와 일치해도 이러한 요청이 자동으로 같은 경로를 따르는 것은 아닙니다. ‘텍스트는 보이지만 이미지가 안 뜨는’ 경우나 ‘홈페이지는 열리지만 로그인 화면이 계속 로딩되는’ 경우에는 해당 동작을 다시 실행하고, 실패한 요청의 호스트명을 확인한 뒤 필요한 도메인만 목록에 추가하세요.

6. 시간 초과, DNS 확인 실패 및 자주 묻는 질문

문제를 확인할 때는 ‘규칙에 따라 라우팅되지 않음’과 ‘규칙에 따라 라우팅됐지만 연결에 실패함’을 먼저 구분하세요. 아래 두 항목은 브라우저에서 표시될 수 있는 실제 오류 코드이며 Shadowrocket의 고정 안내 문구가 아닙니다. 브라우저에 따라 표시 방식이 다를 수 있으니 연결 기록을 함께 확인하세요. 오류 코드 하나만으로 서버나 규칙에 문제가 있다고 단정해서는 안 됩니다.

오류: ERR_CONNECTION_TIMED_OUT

원인 및 해결: 브라우저가 연결 또는 응답을 기다리다 시간 초과된 상태입니다. 대상 서비스, 현재 네트워크, 프록시 경로가 원인일 수 있습니다. 먼저 요청이 PROXY와 DIRECT 중 어느 쪽으로 처리됐는지 확인하세요. PROXY와 일치했다면 현재 서버 연결을 테스트하고, 일치하지 않았다면 적용 중인 Config와 규칙 순서를 확인하세요.

오류: ERR_NAME_NOT_RESOLVED

원인 및 해결: 브라우저에서 사용할 수 있는 도메인 확인 결과를 얻지 못한 상태입니다. 먼저 도메인 철자와 Config의 DNS 설정을 확인하고 브라우저에서 별도의 DNS를 설정했는지도 살펴보세요. DOMAIN-SUFFIX 규칙을 반복해서 추가하는 것으로 DNS 문제를 대신 해결하려 하지 마세요.

규칙을 추가했는데 왜 모든 사이트가 여전히 프록시로 연결되나요?

먼저 Home → Global Routing이 Proxy로 설정되어 있는지 확인하고 Config로 전환하세요. 그런 다음 현재 적용 중인 Config의 마지막 규칙이 FINAL,PROXY인지, 앞부분에 범위가 지나치게 넓은 PROXY 규칙이 있는지 살펴보세요. 저장한 뒤 연결을 새로 설정하고 대상 목록에 없는 도메인의 최종 정책을 확인하세요.

루트 도메인을 추가했는데 로그인에 실패하는 이유는 무엇인가요?

로그인 과정에서 다른 루트 도메인으로 이동할 수 있습니다. DOMAIN-SUFFIX,example.com은 example.net과 일치하지 않습니다. 로그인을 다시 시도한 뒤 연결 기록을 확인하고, 필요한 로그인 또는 API 도메인을 FINAL 앞에 개별적으로 추가하세요. 장기 해결책으로 전체 Proxy 모드로 바꾸지는 마세요.

특정 웹페이지 경로만 프록시로 연결할 수 있나요?

DOMAIN과 DOMAIN-SUFFIX는 호스트명을 기준으로 매칭하며 /news와 /account 같은 경로는 구분하지 않습니다. 동일한 호스트명의 HTTPS 페이지를 이 두 규칙으로 경로별 분기할 수는 없습니다. 서비스에서 서로 다른 하위 도메인을 사용한다면 DOMAIN으로 각각 지정할 수 있습니다.

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

서버 구독만 업데이트했다고 해서 일반적으로 Config까지 교체되는 것은 아닙니다. 먼저 Config에서 현재 설정과 Rule이 그대로 있는지 확인하세요. 원격 Config를 업데이트한 경우 내용이 교체될 수 있으므로 사용자 지정 규칙을 보존한 로컬 사본을 사용하고, Home → Global Routing → Config로 돌아가 적용 여부를 확인하세요.

반복해서 확인할 순서를 정리하면 다음과 같습니다. 올바른 Config가 선택되었는지, Global Routing이 Config인지, 지정 도메인 규칙이 앞에 있는지, FINAL,DIRECT가 뒤에 있는지, 현재 서버가 유효한지 확인한 뒤 새 연결의 로그를 살펴보세요. 규칙 유형을 더 알아보려면 Config 필드 참고를 확인하세요. 표시 오류가 발생한 사이트마다 IP 대역 전체를 추가할 필요는 없습니다.

Shadowrocket 다운로드 및 첫 설정

iPhone/iPad 버전은 App Store에서 $2.99에 한 번 구매하면 됩니다. Mac(Apple 실리콘/Intel), Windows, Android, Linux 버전은 무료입니다. iPhone/iPad 시스템 요구 사항은 App Store 페이지를 확인하세요. 다운로드 페이지에서 플랫폼을 선택하세요. 앱을 이미 설치했다면 안내에 따라 직접 구독을 가져온 뒤 Config 규칙을 설정할 수 있습니다.

Shadowrocket 다운로드