이 글의 핵심 내용

원격 룰셋은 사용자가 관리하는 규칙 파일을 불러와 Shadowrocket의 트래픽 분기에 활용하는 방법입니다. 이 글에서는 .conf의 [Rule]에 넣는 RULE-SET 형식, 세부 규칙과 원격 룰셋의 우선순위, 업데이트 뒤 실제 요청에 반영됐는지 확인하는 절차를 설명합니다. 예시 주소는 동작하지 않는 예약 도메인이므로, 실제 적용 시에는 본인이 접근할 수 있고 규칙 내용을 확인한 HTTPS 주소로 바꿔야 합니다.

원격 룰셋의 역할: 규칙을 불러오고 정책을 지정하기

원격 룰셋은 도메인이나 IP에 적용할 규칙을 외부 텍스트 파일에 모아 두고, 설정에서 그 파일의 URL과 적용할 정책을 참조하는 방식입니다. 매번 여러 줄을 .conf에 직접 추가하는 대신, 관리하는 규칙 목록을 분리해 가져올 수 있습니다. 다만 룰셋 파일에 연결 서버 정보가 들어가는 것은 아닙니다. 사용할 연결 항목과 정책은 사용자가 이미 보유한 구성에서 준비되어 있어야 합니다.

[Rule]에서는 RULE-SET 규칙에 원격 파일의 URL과 정책을 지정합니다. 아래 주소는 문법 구조를 보여 주는 예시이며 실제 호스트가 아니므로 그대로 붙여 넣어도 룰셋을 내려받을 수 없습니다. 실제 주소로 교체할 때에는 파일의 출처, 내용, 갱신 방식과 기기에서의 접근 가능 여부를 먼저 확인하세요.

[Rule]
DOMAIN,api.example.com,DIRECT
RULE-SET,https://rules.example.invalid/lists/work.list,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY

이 예시에서 DIRECT, PROXY는 현재 설정에서 사용할 수 있는 정책 이름이어야 합니다. 정책 이름이 구성에 없거나 원격 파일의 규칙 형식이 지원되지 않으면, 주소가 맞더라도 의도한 분기가 이뤄지지 않을 수 있습니다. RULE-SET 뒤에는 URL과 적용 정책을 쉼표로 구분해 적고, 각 필드는 반각 쉼표를 사용합니다.

요청 도메인 확인 규칙 순서 평가 룰셋 항목 비교 정책 적용 직접 또는 프록시 연결

RULE-SET 우선순위: 위에서 아래로 먼저 일치하는 규칙

룰셋을 포함한 [Rule] 규칙은 위에서 아래로 평가됩니다. 앞에 있는 규칙이 요청과 일치하면 뒤에 있는 규칙에 같은 요청이 있더라도 먼저 선택된 정책이 적용됩니다. 따라서 특정 API 도메인만 직접 연결하고 나머지 업무 도메인은 원격 룰셋을 통해 프록시로 보내려면, 좁은 범위의 예외를 룰셋보다 위에 둡니다.

예를 들어 룰셋 안에 DOMAIN-SUFFIX,example.com,PROXY가 있고 .conf의 앞부분에도 같은 도메인을 대상으로 하는 규칙이 있다면, 앞선 규칙의 정책이 우선될 수 있습니다. 반대로 포괄적인 룰셋 규칙을 예외보다 먼저 배치하면 뒤에 둔 예외 규칙이 실행되지 않을 수 있습니다. 규칙 줄이 존재한다는 사실과 해당 줄까지 평가가 도달한다는 사실은 구분해야 합니다.

위에서 아래로
먼저 일치한 규칙의 정책을 확인합니다
예외 먼저
세부 도메인 규칙을 포괄적인 RULE-SET보다 위에 배치합니다
FINAL은 마지막
앞선 규칙에 일치하지 않은 요청을 처리합니다

룰셋의 모든 항목이 같은 정책으로 처리되는 것도 확인해야 합니다. 설정의 RULE-SET 줄에 지정한 정책은 해당 룰셋이 매칭될 때 적용할 정책입니다. 원격 파일의 규칙 내용과 설정 줄의 정책이 어떤 방식으로 해석되는지는 사용 중인 규칙 형식에 따라 달라질 수 있으므로, 제공자가 안내한 파일 형식과 Shadowrocket에서 지원되는 구문을 함께 확인하세요. 서로 다른 문법의 규칙 파일을 URL만 바꿔 재사용하지 마세요.

.conf 편집: 파일 위치와 원격 주소를 함께 점검하기

먼저 Config에서 실제로 활성화된 구성을 확인합니다. 파일을 가져왔거나 편집 화면에서 저장했더라도, Home의 Global Routing이 Config가 아니거나 다른 구성이 선택되어 있으면 기대한 규칙이 현재 요청에 사용되지 않을 수 있습니다. 작업 전 원본을 보관하고, 변경한 파일이 선택 상태인지 확인한 뒤 테스트하는 편이 안전합니다.

설정의 RULE-SET 줄

위치
[Rule]
형식
RULE-SET,URL,정책
URL
접근 가능한 실제 HTTPS 주소로 교체
정책
현재 구성에 존재하는 정책 이름 사용

URL, 쉼표, 정책 이름의 순서를 확인하고 한 줄에 하나의 규칙만 작성하세요.

원격 규칙 파일

내용
지원되는 규칙 형식의 텍스트
확인
빈 파일, HTML 오류 페이지 여부
접근
기기에서 해당 URL에 연결 가능한지 확인
변경
파일 내용과 적용 정책을 함께 검토

로그인 화면이나 오류 문서가 규칙 파일 대신 반환되면 갱신이 정상 완료되지 않을 수 있습니다.

원격 파일을 제공하는 쪽에서 안내한 갱신 절차가 있다면 이를 따르고, Shadowrocket에서 해당 구성이나 룰셋의 갱신 동작을 실행한 뒤 완료 여부를 확인하세요. 화면의 항목 이름과 갱신 방식은 가져온 구성 유형에 따라 다를 수 있으므로, 임의의 메뉴 이름을 전제로 하지 말고 현재 Config 화면에서 대상 항목을 확인합니다. 파일이 갱신된 것처럼 보여도 활성 구성과 Global Routing 상태까지 자동으로 바뀌었다고 단정하지 마세요.

적용 여부 확인: 원격 파일, 활성 구성, 요청 기록을 나눠 보기

룰셋이 적용되지 않는 것처럼 보일 때는 한 번에 여러 설정을 바꾸지 말고 점검 순서를 정합니다. 우선 URL에 오타나 공백이 없는지, 기기에서 URL에 접근할 수 있는지 확인합니다. 다음으로 받은 응답이 규칙 텍스트인지 확인하고, 실제 규칙 파일에 테스트할 도메인과 일치하는 항목이 있는지 살펴봅니다. 마지막으로 Config의 선택 상태와 Home의 Global Routing을 확인한 다음 새 요청으로 결과를 시험합니다.

  1. 대상 주소를 확인합니다. 예시용 예약 주소가 아닌 실제 룰셋 URL인지, HTTPS 주소와 파일 경로가 정확한지 확인하세요.
  2. 응답 내용을 확인합니다. 룰셋 제공자가 안내한 방식으로 파일을 열어 규칙 텍스트가 표시되는지 확인하세요. HTML 오류 페이지나 인증 안내가 나오면 주소 접근부터 해결해야 합니다.
  3. 구성과 모드를 확인합니다. Config에서 수정한 파일이 선택되어 있는지 확인하고, Home → Global Routing이 규칙을 사용하는 Config인지 살펴보세요.
  4. 새 요청으로 시험합니다. 테스트 대상 앱이나 페이지에서 새 연결을 만들고 Data의 연결 기록 등 확인 가능한 정보를 살펴보세요. 기존 연결이 바로 새 경로로 바뀐다고 가정하지 마세요.

시험할 도메인은 룰셋에 정확히 포함되거나 적용 범위에 들어가는 것으로 고릅니다. 예를 들어 DOMAIN은 특정 도메인을 대상으로 하고 DOMAIN-SUFFIX는 해당 접미 범위를 대상으로 하므로, 비슷해 보이는 도메인이라도 규칙에 일치하지 않을 수 있습니다. 앱이 실제로 요청한 호스트가 예상과 다를 수도 있습니다. URL을 브라우저에서 열 수 있다는 사실만으로 앱의 요청이 룰셋에 매칭됐다고 볼 수는 없습니다.

자주 놓치는 점: 갱신 실패와 우선순위 문제 구분

룰셋의 결과가 예상과 다를 때 원인은 크게 다운로드·응답 문제, 규칙 매칭 문제, 정책 선택 문제로 나눠 볼 수 있습니다. 다운로드가 실패했다면 원격 주소와 네트워크 접근을 먼저 확인합니다. 응답을 받았지만 특정 도메인만 다르게 처리된다면 룰셋 내용, 도메인 매칭 범위, 앞에 놓인 규칙을 확인합니다. 정책 이름이나 연결 상태에 문제가 있다면 설정의 정책이 현재 구성에 존재하는지와 해당 경로로 새 요청을 보낼 수 있는지 확인하세요.

RULE-SET을 넣었는데 전부 DIRECT로 나와요

먼저 Home → Global Routing이 Config인지 확인하세요. 이어 Config에서 수정한 파일이 선택되어 있는지, RULE-SET 줄보다 위에 더 넓은 범위의 DIRECT 규칙이 있는지 살펴봅니다.

주소는 열리는데 룰셋이 반영되지 않아요

열리는 페이지가 규칙 텍스트인지 확인하세요. 오류 화면이나 로그인 페이지도 주소 자체는 열릴 수 있습니다. 파일 형식과 실제 규칙 내용을 확인한 뒤 대상 도메인이 그 규칙에 매칭되는지 시험합니다.

규칙을 바꿨는데 기존 연결은 그대로예요

기존 연결의 상태만으로 새 규칙의 결과를 판단하지 마세요. 구성과 Global Routing을 확인한 다음 대상 앱에서 새 요청을 만들고, 확인 가능한 연결 기록과 비교하세요.

최종적으로는 원격 파일을 가져올 수 있는지와 개별 요청이 원하는 정책을 따르는지 각각 확인해야 합니다. 룰셋 갱신 성공은 모든 도메인이 의도대로 분기됐다는 보증이 아니며, 한 도메인의 테스트 결과도 전체 파일의 정확성을 입증하지 않습니다. 변경 전후의 .conf, 룰셋 URL, 테스트 도메인, Global Routing 상태를 기록해 두면 다음 점검에서 원인을 좁히기 쉽습니다.