광고를 막고 싶다고 rules에 수백 줄짜리 광고 도메인 목록을 직접 써야 할까요? 그럴 필요 없습니다. 규칙 세트(rule-providers)를 쓰면 노드를 구독하듯 규칙도 구독할 수 있습니다. 커뮤니티가 관리하고 주기적으로 업데이트해 주니, 설정 파일에는 딱 한 줄만 참조로 넣으면 됩니다.

규칙 세트란 무엇인가

일반 규칙은 rules에 직접 적어서 한 줄이 하나의 매칭을 담당합니다. 규칙 세트는 이런 규칙 수백, 수천 개를 하나의 외부 파일로 묶어 놓은 것으로, Clash가 주기적으로 가져와 업데이트합니다. 둘은 함께 씁니다.

  • rule-providers 항목: "어떤 규칙 묶음이 있고, 어디서 내려받고, 얼마나 자주 갱신할지"를 선언합니다.
  • rules 항목: RULE-SET,이름,출구 형태로 한 줄만 써서 묶음 전체를 참조합니다.

규칙 세트 선언하기

rule-providers 예시
rule-providers:
  reject-ads:
    type: http
    behavior: domain
    url: "https://example.com/ruleset/reject.yaml"
    path: ./ruleset/reject.yaml
    interval: 86400       # refresh once a day

  streaming:
    type: http
    behavior: domain
    url: "https://example.com/ruleset/streaming.yaml"
    path: ./ruleset/streaming.yaml
    interval: 86400

  telegram-cidr:
    type: http
    behavior: ipcidr
    url: "https://example.com/ruleset/telegram.yaml"
    path: ./ruleset/telegram.yaml
    interval: 86400

필드를 하나씩 설명하면 다음과 같습니다.

필드설명
typehttp 원격 구독(권장) 또는 file 로컬 파일
behavior규칙 형식: domain(순수 도메인) / ipcidr(순수 IP 대역) / classical(여러 유형이 섞인 완전한 규칙)
url규칙 파일을 내려받을 주소
path로컬 캐시 경로, 네트워크가 끊겨도 캐시로 대응
interval자동 업데이트 간격(초), 86400 = 24시간

rules에서 참조하기

RULE-SET 참조
rules:
  - RULE-SET,reject-ads,REJECT       # thousands of ad domains, one line
  - RULE-SET,streaming,노드 선택
  - RULE-SET,telegram-cidr,노드 선택
  - GEOIP,KR,DIRECT       # resolved IP belongs to Korea → direct connect
  - MATCH,노드 선택

여기서 GEOIP,KR,DIRECT는 "해석된 목적지 IP가 한국 소속이면 프록시를 거치지 않고 바로 연결한다"는 규칙입니다. 국가 코드만 바꾸면 다른 나라에도 똑같이 적용할 수 있는, GEOIP 규칙의 대표적인 활용 예시입니다.

순서는 여전히 중요합니다. 차단성 규칙 세트를 가장 앞에, 직결성 규칙을 그다음에, 마지막 안전망인 MATCH는 항상 맨 뒤에 둡니다.

behavior는 어떻게 고를까

세 가지 형식은 매칭 성능이 서로 다릅니다. 제대로 고르면 매칭 속도가 빨라집니다.

  • domain: 내용이 전부 도메인일 때 사용합니다. 내부적으로 트라이(prefix tree) 구조를 만들어서, 수만 개 규칙이라도 매칭에 걸리는 시간이 마이크로초 단위입니다.
  • ipcidr: 내용이 전부 IP 대역일 때 사용합니다. 내부적으로 효율적인 트라이 구조를 씁니다.
  • classical: DOMAIN, IP-CIDR, PROCESS-NAME 등 여러 유형이 섞여 있을 때만 사용합니다. 유연하지만 매칭 비용이 가장 큽니다.
실전 팁 커뮤니티에서 흔히 쓰는 규칙 세트 조합은 광고 차단 + 국가별 직결 + 스트리밍 서비스 분류 + Telegram IP 대역입니다. 처음 설정할 때는 잘 정리된 템플릿을 그대로 가져와 조금씩 손보는 게 밑바닥부터 새로 짜는 것보다 훨씬 편합니다.

규칙 세트 업데이트가 실패하면

규칙 세트는 결국 외부 다운로드에 의존하는 만큼, 가끔 업데이트가 실패할 수 있습니다. 다음 순서로 점검해 보세요.

  • 먼저 로컬 캐시를 확인하세요: path가 가리키는 파일이 이미 있다면 Clash는 예전 버전으로 우선 대응하기 때문에, 한 번의 업데이트 실패로 규칙 세트 전체가 못 쓰게 되지는 않습니다. 그래서 문제를 전혀 못 느낄 수도 있는데, 이런 이유로 가끔은 업데이트 시각을 직접 확인해 보는 게 좋습니다.
  • 다운로드 주소가 아직 유효한지 확인하세요: 커뮤니티가 관리하는 규칙 세트는 가끔 저장소를 옮기거나 경로를 바꿉니다. 브라우저에서 url을 직접 열어 접속되는지 확인하고, 안 되면 해당 규칙 세트의 프로젝트 홈페이지에서 최신 주소를 찾아 교체하세요.
  • interval을 너무 짧게 잡지 않았는지 확인하세요: interval을 몇십 초로 설정해서 원본 서버의 요청 제한에 걸려 오히려 자주 실패하는 경우도 있습니다. 일반적인 상황에서는 43200~86400초(12~24시간)면 충분합니다.

흔히 쓰는 규칙 세트는 어디서 찾을까

처음부터 직접 규칙을 모을 필요는 없습니다. GitHub에는 오랫동안 관리되고 스타 수도 많은 규칙 세트 저장소가 여럿 있으며, 광고 차단, 국가별 직결, 스트리밍 서비스 우회, 자주 쓰는 앱 분류 등 다양한 상황을 다룹니다. "clash rule providers"나 "ruleset" 같은 키워드로 검색하면 대부분 찾을 수 있습니다. 고를 때 살펴볼 두 가지는 최근까지 계속 업데이트되고 있는지, behavior 유형이 참조 방식과 맞는지입니다. 규칙 세트와 Clash 클라이언트 자체는 별개의 존재입니다. 규칙 세트는 "어떻게 분기할지"를 정하고, Clash는 "어떻게 연결하고 스케줄링할지"를 담당합니다. 둘이 맞물려야 깔끔하고 쓰기 좋은 설정이 완성됩니다.

광고 차단 규칙 세트를 붙여 넣으면 웹페이지에서 거슬리는 배너 광고가 상당수 근본적으로 사라집니다. 브라우저 확장 프로그램을 설치하는 것보다 오히려 편한데, 네트워크 계층에서 걸러내기 때문에 어떤 기기, 어떤 앱에서든 한 번에 적용됩니다.

직접 쓴 규칙과 규칙 세트, 둘 중 하나만 고를 필요는 없다

규칙 세트를 처음 도입하면서 기존에 손으로 쓴 규칙을 전부 지워버리는 사람이 많은데, 그렇게까지 할 필요는 없습니다. 둘의 역할이 다릅니다. 규칙 세트는 "수가 방대하고 자주 바뀌어서 직접 관리하기 현실적이지 않은" 경우에 적합합니다. 예를 들면 수만 개의 광고 도메인이나 언제든 바뀔 수 있는 스트리밍 서비스 IP 대역 같은 것들입니다. 직접 쓴 규칙은 "수는 적지만 우선순위를 정밀하게 제어하고 싶은" 경우에 더 적합합니다. 회사 내부망 도메인이나 자주 쓰는 특정 사이트 몇 개가 그 예입니다.

추천하는 구성은 다음과 같습니다. 개인화된 직접 작성 규칙을 맨 앞에 둬서 우선 매칭되게 하고, 규칙 세트가 그 뒤를 이어 대량의 일반 분류를 처리하게 하고, 마지막에 GEOIP,KR,DIRECTMATCH로 안전망을 둡니다. 이렇게 하면 유연성을 유지하면서도 수백 줄의 광고 도메인 때문에 설정 파일이 수천 줄로 늘어나는 걸 막을 수 있어, 유지보수 부담이 크게 줄어듭니다.

초보자가 가장 자주 놓치는 부분: 규칙 순서가 결과를 좌우한다

규칙은 위에서 아래로 하나씩 매칭되고, 첫 번째로 매칭된 규칙이 바로 적용됩니다. 뒤에 있는 규칙이 아무리 정확하게 쓰여 있어도 실행되지 않습니다. 그래서 "규칙을 분명히 설정했는데 왜 적용이 안 되지?"라는 상황을 만난다면, 대부분은 규칙을 잘못 쓴 게 아니라 앞쪽에 있는 더 광범위한 규칙(예: 어떤 규칙 세트의 포괄적인 항목)이 먼저 가로챈 경우입니다. 이런 문제를 가장 빠르게 확인하는 방법은 제어판의 연결 페이지를 열어서 해당 연결이 실제로 어떤 규칙에 매칭됐는지 직접 보는 것입니다. 설정 파일만 보고 짐작하는 것보다 훨씬 확실합니다. 이 내용은 제어판을 다룬 글에서도 언급했는데, 두 글을 같이 참고하면 문제 해결이 훨씬 수월해집니다.

정리

규칙 세트는 "규칙을 손으로 관리하는" 귀찮은 일을 커뮤니티와 자동 업데이트에 맡깁니다. 여러분이 할 일은 출처를 선언하고, behavior를 올바르게 고르고, 올바른 순서로 참조하는 것뿐입니다. 핵심 세 가지를 기억하세요. 차단성 규칙은 맨 앞에, 직결성 규칙은 그 뒤에, MATCH는 항상 마지막 안전망으로 둘 것. behavior는 규칙 세트의 내용 형식과 맞아야 하며, 잘못 고르면 매칭이 느려지거나 오류가 날 수 있다는 것. 업데이트가 실패했을 때는 먼저 로컬 캐시가 아직 유효한지 확인하고, 그다음 다운로드 주소와 갱신 간격을 점검할 것. 설정을 한 번 제대로 갖춰두면 이후로는 거의 손댈 일이 없고, 규칙 세트가 커뮤니티 업데이트를 따라 스스로 최신 상태를 유지합니다.

지금 설정 파일에 아직 수백 줄짜리 직접 작성한 도메인 규칙이 쌓여 있다면, 주말에 30분만 시간을 내서 규칙 세트로 바꿀 수 있는 부분을 정리해 보세요. 설정 파일이 한결 깔끔해지고, 이후 유지보수 부담도 크게 줄어들 겁니다.