Shadowrocket에서 특정 사이트만 프록시로 연결하려면 세 가지 조건을 충족해야 합니다. 대상 도메인의 규칙은 PROXY를 가리키고, 규칙 끝에는 FINAL,DIRECT를 두며, Home → Global Routing에서 Config를 선택해야 합니다. 사용할 서버와 구독을 이미 보유하고 작동하는 서버를 가져온 상태를 전제로, 최소 규칙과 설정 순서, 단계별 확인 방법을 설명합니다. 연결 스위치가 켜져 있다는 사실만으로 규칙이 올바르게 적용됐다고 판단하지 않습니다.
1. 먼저 Config를 선택한 다음 도메인 규칙을 설정하세요
Global Routing은 연결에 사용할 라우팅 방식을 결정합니다. 일부 사이트만 프록시로 연결하려면 구성 파일에 따른 라우팅이 필요하므로, 먼저 Home → Global Routing에서 Config를 선택하세요. 규칙만 수정하고 Proxy 또는 Direct를 그대로 선택하면 이 글의 규칙 목록대로 동작하는지 확인할 수 없습니다.
Config
권장현재 활성화된 구성의 규칙에 따라 정책을 선택합니다. 대상 도메인은 PROXY로 보내고, 앞선 규칙에 일치하지 않은 요청은 FINAL,DIRECT로 처리합니다.
적합한 경우: 지정한 사이트만 프록시로 연결하고 나머지 요청은 직접 연결할 때.
Proxy
프록시 라우팅을 사용하므로 이 글의 도메인 목록에 따라 요청별로 직접 연결 여부를 결정하지 않습니다. 서버 작동 여부를 임시로 확인하는 비교 방법으로 쓸 수 있지만, 도메인 규칙이 올바르다는 증거는 되지 않습니다.
적합한 경우: 프록시 연결을 잠시 확인한 뒤 Config로 돌아와 라우팅 규칙을 검증할 때.
Direct
직접 연결 라우팅을 사용합니다. 이 글에 PROXY 규칙을 작성했다고 해서 규칙 기반 라우팅으로 자동 전환되지는 않습니다.
적합한 경우: 현재 네트워크에서 직접 연결이 되는지 확인할 때.
Scene
시나리오 라우팅을 사용하며 결과는 실제 시나리오 설정에 따라 달라집니다. 이 글에서 사용하는 고정 도메인 목록을 확인하는 방식이 아니므로, 시나리오를 설정했다면 별도로 확인해야 합니다.
적합한 경우: 시나리오 조건을 명확히 설정해 사용 중일 때.
결론: 라우팅 방식을 먼저 고정하세요
문제를 확인하는 동안 Global Routing을 Config로 고정하고, 도메인 규칙은 한 번에 하나씩만 수정하세요. 그래야 규칙이 일치하지 않는 문제인지 프록시 연결 자체가 작동하지 않는 문제인지 구분할 수 있습니다.
여기서 PROXY는 규칙에 지정하는 프록시 정책이며, Global Routing을 Proxy로 바꾸라는 뜻이 아닙니다. 전자는 규칙에 일치한 요청의 목적지를 결정하고, 후자는 전체 라우팅 방식을 결정합니다. 두 설정은 적용되는 단계가 다릅니다.
2. 최소 규칙: 대상 규칙을 앞에, FINAL,DIRECT를 맨 뒤에
다음은 규칙 부분만 보여 주는 최소 예시입니다. 예약된 예시 도메인을 사용하므로 실제 서비스에 연결되지는 않습니다. 직접 편집할 때는 도메인을 프록시로 연결할 사이트의 호스트명으로 바꾸세요. 기존 구성에 필요한 다른 부분은 그대로 두고, 아래 몇 줄로 구성 파일 전체를 덮어쓰지 마세요.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN,api.example.net,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY는 example.com과 하위 도메인(예: www.example.com)에 일치합니다. DOMAIN,api.example.net,PROXY는 해당 호스트명만 정확히 일치하며, www.example.net이나 그 아래 하위 도메인에는 일치하지 않습니다.
규칙은 위에서 아래로 확인하며, 일치하는 규칙이 발견되면 해당 정책을 적용합니다. FINAL,DIRECT에는 도메인 매개변수가 없으며, 앞선 규칙에 일치하지 않은 요청을 DIRECT로 처리한다는 뜻입니다. 대상 도메인 규칙보다 앞에 두면 뒤에 있는 규칙이 예상대로 작동하지 않습니다.
3. Config 편집부터 Home에서 활성화까지
서버 정보와 라우팅 설정은 별개의 항목입니다. Home에 사용할 수 있는 서버가 있어도 Config의 도메인 규칙이 활성화됐다는 뜻은 아닙니다. 기존 구독을 업데이트해도 이 글의 라우팅 목록이 자동으로 작성되는 것은 아닙니다. 시작하기 전에 현재 구성을 복사해 두면 필요할 때 복원할 수 있습니다.
-
구성 백업
Config로 이동해 현재 사용 중인 구성 파일을 확인하고 복사본을 보관하세요. 원격 업데이트를 사용하는 구성이라면 수동 편집 내용이 다음 업데이트에서 덮어써지지 않도록 편집 가능한 로컬 사본도 따로 저장하세요.
-
규칙 편집
Config에서 대상 구성의 편집 화면을 열고 [Rule]을 확인하세요. 프록시로 연결할 DOMAIN 또는 DOMAIN-SUFFIX 규칙을 기본 처리 규칙보다 앞에 두고, 마지막 규칙은 FINAL,DIRECT로 설정합니다. 텍스트 편집이나 규칙별 편집을 여는 방법은 앱에 현재 표시되는 화면을 따르세요.
-
구성 활성화
저장한 뒤 Config로 돌아가 방금 편집한 파일이 선택되어 있는지 확인하세요. 편집 화면에 머무르거나 파일명만 보고 판단하지 마세요. 이름이 비슷한 파일이 여러 개라면 선택한 파일을 다시 열어 내용을 확인하세요.
-
모드 선택
Home → Global Routing → Config로 이동한 뒤 Home으로 돌아와 사용할 수 있는 서버를 선택하세요. 이 글의 PROXY 규칙을 사용하려면 실제로 작동하는 프록시 출구가 필요합니다. 구성에 같은 이름의 정책 그룹이 있다면 해당 그룹에서 선택한 항목도 확인하세요.
-
새 요청 보내기
연결 스위치를 켜고 대상 사이트와 목록에 없는 사이트에 새 요청을 보내세요. 필요하다면 기존 연결을 끊은 뒤 다시 테스트하세요. 이미 연결된 세션은 방금 수정한 규칙의 적용 여부를 확인하는 데 적합하지 않습니다.
기존 구성에 추가 정책 그룹이나 복잡한 규칙 세트가 있다면 용도를 먼저 파악한 뒤 조정하세요. 이번 설정의 핵심은 규칙을 더 많이 추가하는 것이 아니라, 대상 도메인은 PROXY에 먼저 일치하고 나머지 요청은 최종적으로 DIRECT에 도달하게 하는 것입니다. 서버를 바꾸면서 DNS와 여러 규칙까지 동시에 수정하면 결과가 달라져도 원인을 파악하기 어렵습니다.
4. 도메인 입력 방법: 경로와 포트는 제외
DOMAIN과 DOMAIN-SUFFIX는 호스트명을 기준으로 일치하며 브라우저 주소창의 전체 주소를 사용하지 않습니다. HTTPS 사이트의 일반적인 대상 포트는 443이지만, 도메인 입력란에 :443을 붙이면 안 됩니다. 요청 경로와 쿼리 매개변수도 해당 입력란에 포함하지 않습니다.
| 입력 예시 | 일치 범위 또는 문제 | 사용 기준 |
|---|---|---|
DOMAIN,example.com,PROXY | example.com만 일치 | 해당 호스트명만 정확히 일치시킬 때 사용 |
DOMAIN-SUFFIX,example.com,PROXY | 루트 도메인과 하위 도메인에 일치 | www, api 등 하위 도메인까지 함께 포함해야 할 때 사용 |
DOMAIN-SUFFIX,notexample.com,PROXY | example.com과는 다른 도메인 | 도메인 접미사 일치는 임의의 문자열 포함과 다릅니다 |
https://example.com/path | 프로토콜과 경로가 포함되어 있어 도메인 입력값으로 사용할 수 없습니다 | example.com만 추출해 규칙에 입력 |
example.com:443 | 포트가 포함된 형식은 여기서 사용하는 호스트명 형식이 아닙니다 | 포트를 제거한 뒤 입력 |
웹페이지 하나가 여러 호스트명에 요청을 보내는 경우가 많습니다. 기본 문서, 이미지, 로그인 확인, 동영상, 정적 리소스가 각각 다른 도메인을 사용할 수 있습니다. 루트 도메인에 DOMAIN-SUFFIX를 추가해도 그 하위 도메인만 포함되며, 사이트가 사용하는 모든 외부 리소스 도메인까지 포함되지는 않습니다. 따라서 메인 페이지는 열리는데 이미지가 표시되지 않는다고 해서 반드시 규칙이 적용되지 않은 것은 아닙니다. 리소스 요청이 목록에 없는 도메인으로 전송됐을 수도 있습니다.
- 프록시로 연결할 사이트의 기본 도메인을 먼저 추가한 다음, 실제 요청 기록을 확인해 필요한 리소스 도메인을 추가하세요.
- 호스트명 하나만 지정할 때는 DOMAIN을 우선 사용하세요. 같은 도메인의 관련 없는 서비스까지 함께 포함되는 것을 막을 수 있습니다.
com처럼 범위가 지나치게 넓은 접미사를 대상으로 지정하면 관계없는 사이트까지 PROXY 규칙에 일치합니다.- IP-CIDR은 IP 대역을 기준으로 일치하고, GEOIP는 IP 지리 데이터베이스를 기준으로 일치합니다. 둘 다 정확한 웹사이트 도메인 목록을 대신할 수는 없습니다.
요청이 IP 주소로 직접 전송되거나 일치 여부를 확인할 때 도메인 정보를 사용할 수 없다면 도메인 규칙이 적용되지 않고 마지막의 FINAL로 넘어갈 수 있습니다. 같은 IP를 대상 사이트가 사용한다는 이유만으로 주소 대역 전체를 PROXY에 추가하지 마세요. 하나의 IP를 여러 웹사이트가 공유할 수 있습니다.
5. 확인 방법: 대상, 비교 사이트, 리소스 요청 점검
라우팅 적용 여부는 페이지가 열리는지 또는 시스템에 연결 표시가 나타나는지만 보지 말고 새 요청이 실제로 어디로 전송되는지 확인해야 합니다. 페이지가 열렸다는 사실은 해당 접속이 성공했다는 뜻일 뿐입니다. 캐시, 직접 연결 가능 여부, 이미 연결된 세션 때문에 잘못 설정한 라우팅도 정상처럼 보일 수 있습니다.
- 대상 사이트: 규칙에 추가한 도메인을 선택하고 새 요청을 보냅니다. 앱의 요청 기록에서 호스트명, 일치한 규칙, 적용된 정책을 확인하세요. 대상 요청은 PROXY에 일치해야 합니다.
- 비교 사이트: 대상 목록에 없고 현재 네트워크에서 직접 연결할 수 있는 사이트에 접속합니다. 다른 앞선 규칙에 일치하지 않는다면 FINAL,DIRECT로 처리되어야 합니다.
- 리소스 요청: 대상 페이지의 일부가 로드되지 않으면 실패한 요청의 실제 호스트명을 찾으세요. 주소창의 도메인과 다를 수 있습니다. 프록시 연결이 실제로 필요한지 확인한 뒤 별도로 추가하세요.
- 재검사: 규칙을 하나 수정할 때마다 대상 사이트와 비교 사이트에 새 요청을 보내세요. 이전에 만들어진 장시간 연결을 이번 수정의 확인 결과로 간주하지 마세요.
대상 요청이 PROXY에 일치했는데도 시간 초과가 발생한다면 먼저 Home에서 선택한 서버가 작동하는지, 기존 서버 정보의 주소와 포트, 인증 정보가 올바른지 확인하세요. 기록에 DIRECT로 표시된다면 규칙 순서, 실제 요청 호스트명, 활성화된 구성을 점검하세요. 이렇게 하면 연결 문제를 규칙 문법 문제로 오해하지 않을 수 있습니다.
6. 자주 묻는 질문: 왜 전부 프록시로 연결되거나 직접 연결되나요?
FINAL,DIRECT를 추가했는데 다른 사이트도 계속 프록시로 연결되는 이유는 무엇인가요?
먼저 Home → Global Routing이 Config로 설정되어 있는지 확인하세요. 그런 다음 [Rule]에서 FINAL보다 앞에 범위가 더 넓은 PROXY 규칙이나 규칙 세트가 있는지 살펴보세요. 규칙은 일치하는 항목을 찾으면 처리를 멈춥니다. 마지막에 있는 DIRECT가 앞에서 이미 결정된 일치 결과를 바꾸지는 않습니다.
지정한 사이트도 DIRECT로 연결됩니다. 도메인을 잘못 입력한 건가요?
먼저 Config에서 어떤 파일이 선택되어 있는지 확인한 다음 대상 규칙이 FINAL보다 앞에 있는지 살펴보세요. 이어서 실제 요청의 호스트명을 확인합니다. 사이트가 다른 도메인으로 리디렉션될 수 있습니다. DOMAIN은 정확한 호스트명만 포함합니다. 루트 도메인과 하위 도메인을 함께 일치시키려면 DOMAIN-SUFFIX를 사용하세요.
메인 페이지는 열리는데 로그인이나 이미지가 계속 실패하나요?
로그인이나 이미지 요청을 다시 보내고 기록에서 실패한 호스트명을 찾으세요. 먼저 현재 DIRECT와 PROXY 중 어디로 연결되는지 확인합니다. 목록에서 도메인이 누락된 것이 확실한 경우에만 해당 도메인을 추가하세요. 리소스 하나 때문에 공용 접미사 전체로 규칙 범위를 넓히지 마세요.
구독을 업데이트하면 직접 입력한 규칙도 바뀌나요?
서버 구독 업데이트와 구성 파일 업데이트는 구분해서 확인해야 합니다. 서버 목록만 업데이트한다고 로컬 [Rule]이 다시 작성되지는 않습니다. 규칙이 포함된 원격 구성을 업데이트하면 직접 수정한 내용이 바뀔 수 있습니다. Config에서 현재 파일을 다시 열어 확인하고 별도의 로컬 사본도 보관하세요.
몇몇 사이트만 프록시로 연결하려면 On Demand를 켜야 하나요?
아니요. Settings → On Demand는 필요할 때 연결을 관리하며, 어떤 도메인을 PROXY로 보낼지 지정하지 않습니다. 연결이 성립된 상태에서 먼저 Config로 규칙을 확인한 뒤, 연결 방식에 따라 On Demand를 별도로 설정하세요. 두 설정을 동시에 바꾸지 않는 것이 좋습니다.
대상 사이트와 비교 사이트 테스트를 통과한 구성을 보관하세요. 나중에 사이트를 추가할 때는 실제로 필요한 도메인만 추가하고 FINAL,DIRECT를 규칙 끝에 유지합니다. 대상 사이트를 삭제한 뒤에는 해당 도메인이 직접 연결로 돌아왔는지 다시 확인하세요. 규칙 목록은 사이트에 표시된 이름이 아니라 실제 요청을 기준으로 관리해야 합니다.