Clash 규칙 분할 설정 완전 가이드: 커스텀 규칙으로 국내·해외 트래픽 정밀 분류
규칙 분할이란 무엇인가요?
규칙 분할(rule-based routing)은 Clash 계열 커널(오픈 소스 Clash, Mihomo·구 Clash Meta 등)이 연결 요청을 받을 때마다, 설정에 적어 둔 규칙 목록을 위에서 아래로 훑으며 처음 일치하는 한 줄에 적힌 정책을 적용하는 방식을 말합니다. mode: rule일 때 이 엔진이 켜지며, DIRECT(직접 연결)인지 특정 프록시 그룹으로 넘길지가 여기서 결정됩니다.
사용자 입장에서 가장 실용적인 목표는 보통 두 가지입니다. 하나는 국내·근거리 트래픽(한국 사이트, 은행·공공 앱, 사무실 LAN 등)은 지연을 줄이기 위해 직결로 두는 것이고, 다른 하나는 해외 서비스만 선택한 노드로 우회하는 것입니다. 이 둘을 섞으려면 규칙의 순서와 표현 방식(도메인인지 IP인지, GEOIP인지)을 이해하는 것이 중요합니다.
참고: 네트워크 정책·서비스 약관·현지 법규를 준수하는 범위에서만 프록시를 사용해야 합니다. 회사망·학교망 등에서 우회가 금지된 경우에는 규칙을 켜도 안 됩니다.
첫 일치 원칙: 순서가 곧 정책입니다
규칙 배열은 파이프라인과 같습니다. 한 줄이 참이면 그 줄에서 멈추고, 거짓이면 다음 줄로 넘어갑니다. 그래서 GEOIP,KR,DIRECT를 너무 위에 두면 그 아래에 써 둔 “특정 해외 도메인만 프록시” 같은 세밀한 규칙이 영원히 실행되지 않을 수 있습니다. 반대로 특정 예외를 먼저 두고, 마지막에 넓은 GEOIP나 MATCH로 마무리하는 패턴이 일반적입니다.
MATCH는 “여기까지 왔다면 무조건 이 정책”이라는 뜻의 최종 폴백입니다. 목록 맨 아래에 한 줄 두는 것이 관례입니다. MATCH가 없으면 커널 버전에 따라 기본 동작이 달라질 수 있어, 항상 명시해 두는 편이 안전합니다.
자주 쓰는 규칙 타입
이름은 대문자로 쓰는 것이 일반적이며, Mihomo 문서와 구독 템플릿과 호환됩니다.
DOMAIN: 호스트명이 정확히 일치할 때 (예:DOMAIN,www.example.com,Proxy)DOMAIN-SUFFIX: 접미 도메인 일치 (예:DOMAIN-SUFFIX,google.com,Proxy는mail.google.com에도 적용)DOMAIN-KEYWORD: 호스트에 키워드가 포함될 때 — 과매칭이 잘 나므로 신중히 사용IP-CIDR/IP-CIDR6: 목적지 IP가 대역에 속할 때 (DNS가 이미 풀린 뒤의 IP 기준)GEOIP: GeoIP 데이터베이스로 국가 코드 판별 (예:GEOIP,KR,DIRECT)SRC-IP-CIDR: LAN 세그먼트별 정책이 필요할 때
Premium 커널·일부 포크에서는 PROCESS-NAME, AND 결합 규칙 등 확장이 있을 수 있습니다. 구독 제공자가 배포하는 프로필 주석을 함께 읽으면 버전별 차이를 빨리 파악할 수 있습니다.
국내·사설망 직결과 해외 프록시 나누기
한국 사용자라면 GEOIP,KR,DIRECT로 한국에 할당된 IP 대역을 직결로 보내는 구성이 흔합니다. 다만 CDN·다국적 호스팅 때문에 “한국 서비스인데 IP는 해외”인 경우가 있어, 은행·결제·OTT처럼 민감한 서비스는 DOMAIN-SUFFIX로 명시하는 편이 안정적입니다.
사설 주소는 보통 규칙 상단에 모아 둡니다. 예를 들어 IP-CIDR,127.0.0.0/8,DIRECT, IP-CIDR,10.0.0.0/8,DIRECT, IP-CIDR,172.16.0.0/12,DIRECT, IP-CIDR,192.168.0.0/16,DIRECT 식입니다. 이렇게 해 두면 TUN 모드를 켰을 때도 로컬·NAS·프린터 통신이 프록시로 잘못 빨려 가는 일을 줄일 수 있습니다.
해외 일반 웹은 DOMAIN-SUFFIX나 구독에 포함된 글로벌 사이트 목록, 혹은 GEOIP,!KR 같은 반전 패턴(지원 여부는 커널·데이터에 따름)으로 프록시 그룹에 붙입니다. 실무에서는 “차단 목록·광고 필터·스트리밍 예외” 등을 rule-providers로 외부 파일에서 끌어와 본문 rules:에 끼워 넣는 방식이 많습니다.
rule-providers로 규칙 세트 관리하기
YAML 안에 수백 줄을 직접 쓰기보다, 원격 또는 로컬의 규칙 파일을 rule-providers로 등록한 뒤 RULE-SET 한 줄로 끌어오는 패턴이 유지 보수에 유리합니다. 갱신 주기(interval)를 두면 커널이 주기적으로 다운로드합니다.
이때도 순서는 동일합니다. RULE-SET이 가리키는 세트 안의 규칙들이 펼쳐진 위치에서 매칭되므로, “광고 차단 세트를 너무 아래에 두면 이미 MATCH로 끝나 버린다” 같은 실수를 피해야 합니다.
DNS와 규칙: fake-ip를 쓸 때
enhanced-mode: fake-ip를 쓰면 도메인 규칙 매칭은 대개 호스트명 단계에서 이루어지고, IP 규칙은 실제 연결 IP와 비교됩니다. fake-ip-filter에 넣은 도메인은 fake-ip를 쓰지 않아, 일부 사이트에서만 규칙이 어긋나는 현상을 줄일 수 있습니다.
DNS를 클라이언트 밖에서만 해석하면 Clash가 도메인을 보기 전에 IP로만 연결 요청이 들어올 수 있어, 도메인 기반 규칙이 기대대로 동작하지 않을 수 있습니다. TUN과 DNS 히재킹을 함께 쓰는 구성은 TUN 가이드와 맞춰 읽는 것이 좋습니다.
실전에 가까운 rules: 예시
아래는 개념을 잡기 위한 축약 예시입니다. 프록시 그룹 이름·노드는 본인 구독에 맞게 바꿔야 합니다.
YAMLproxy-groups:
- name: "Proxy"
type: select
proxies:
- DIRECT
# ... 구독에서 가져온 노드들 ...
rule-providers:
reject:
type: http
behavior: classical
url: "https://example.com/rules/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
rules:
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- RULE-SET,reject,REJECT
- DOMAIN-SUFFIX,naver.com,DIRECT
- DOMAIN-SUFFIX,kakao.com,DIRECT
- GEOIP,KR,DIRECT
- GEOIP,private,DIRECT,no-resolve
- MATCH,Proxy
GEOIP,private,...,no-resolve는 DNS가 아직 없는 단계에서의 오판을 줄이기 위한 옵션으로 자주 등장합니다. 구독 템플릿이 이미 비슷한 블록을 넣어 두었다면 중복되지 않게 정리하세요.
프록시 그룹과 규칙 연결
규칙의 마지막 인자는 DIRECT, REJECT, REJECT-DROP 같은 키워드이거나, proxy-groups에 정의한 이름입니다. select 그룹은 사용자가 GUI에서 노드를 고르고, url-test는 지연 측정으로 자동 선택합니다. 규칙은 “이 연결을 어느 그룹으로 보낼지”만 정하고, 실제 아웃바운드 프로토콜은 그룹 안의 노드가 담당합니다.
클라이언트 설치·구독 반영 절차는 문서·튜토리얼과 구독 가져오기 가이드를 참고하면 전체 흐름이 연결됩니다.
흔한 실수와 점검 순서
규칙 순서가 뒤바뀜
가장 많습니다. 대시보드나 로그에서 “어떤 규칙에 매칭됐는지”를 확인한 뒤, 위아래를 바꿔 재시험하세요.
GEOIP 데이터가 없거나 오래됨
커널·클라이언트가 GeoIP DB를 번들하거나 다운로드합니다. KR이 인식되지 않으면 모든 트래픽이 아래쪽 MATCH로 떨어져 전부 프록시로 갈 수 있습니다.
문법·들여쓰기 오류
YAML은 쉼표와 공백에 민감합니다. 프로필 검증 기능이 있는 GUI에서는 저장 전 검사를 한 번 돌리세요.
주의: 출처가 불분명한 rule-set URL은 악성 규칙이 섞일 수 있습니다. 신뢰할 수 있는 저장소·커뮤니티 검증된 링크만 사용하세요.
마무리
Clash 규칙 분할은 복잡해 보이지만, 핵심은 “위에서 아래로, 첫 매칭 한 줄”이라는 단순한 엔진 위에 도메인·IP·국가·외부 세트를 얹는 구조라는 점입니다. 국내·LAN은 상단에서 빠르게 직결로 보내고, 나머지는 신뢰하는 프록시 그룹으로 넘기면 체감 속도와 안정성을 동시에 잡기 쉽습니다.
비슷한 범주의 상용 클라이언트와 비교해 보면, Clash·Mihomo 생태계는 규칙 표현과 rule-providers 연동이 유연한 편이라, 한 번 구조를 잡아 두면 이후에는 작은 DOMAIN 한 줄 추가로 예외만 다듬어도 됩니다.
규칙을 적용할 클라이언트가 아직 없다면 Clash를 무료로 다운로드해 설치한 뒤, 구독 기본 프로필을 불러온 다음 본문 예시 순서를 참고해 rules: 블록만 조정해 보시길 권합니다. 정밀한 국내외 분리는 설정이 맞을 때 비로소 체감됩니다.