Clash 분할 라우팅(Split Routing)이란?
Clash를 처음 쓰는 분들이 많이 겪는 현상이 있습니다. 전역 프록시를 켠 뒤 바이두(Baidu), 타오바오(Taobao), 빌리빌리(Bilibili) 같은 중국 본토 서비스에 접속하면 페이지가 느려지고, 동영상이 끊기거나 로딩이 지연되는 경우입니다. 이유는 단순합니다. 전역 프록시는 모든 트래픽을 해외 서버로 돌려 보내기 때문에 왕복 지연이 보통 100ms 이상 늘어나고, 본래 수 ms면 끝날 직접 연결이 “지구 반 바퀴”를 도는 셈이 되기 때문입니다.
분할 라우팅 규칙은 바로 이 문제를 푸는 핵심 메커니즘입니다. 규칙을 잘 쌓아 두면 Clash가 도메인·IP마다 목적지를 스스로 판단합니다. 중국 본토 사이트는 직접 연결(DIRECT), 해외 사이트는 프록시로 보내고, 모드를 수시로 바꿀 필요 없이 중국 본토와 해외 사이트를 동시에 쾌적하게 쓸 수 있습니다.
이 글에서는 규칙 엔진의 동작부터 각종 문법, GEOIP,CN을 활용한 중국 본토 직접 연결, Rule Provider(규칙 제공자) 활용법, 그리고 복사해 쓸 수 있는 YAML 예시까지 정리했습니다. 어느 정도 기초가 있고 분할을 더 세밀하게 하고 싶은 분께 권합니다.
규칙 엔진 작동 원리
좋은 분할 설정을 만들려면 Clash가 규칙을 어떤 순서로 적용하는지 알아야 합니다.
매칭 순서: 위에서 아래로, 첫 매칭이 최종 결정
새 연결마다 Clash는 설정 파일의 rules: 목록을 위에서 아래로 순서대로 검사합니다. 한 줄이 걸리면 즉시 그 줄의 정책(DIRECT 또는 특정 프록시 그룹)을 적용하고, 아래 줄은 더 이상 보지 않습니다. 그래서 순서가 성능과 정확도를 좌우합니다.
- 더 구체적인 규칙을 위에: 특정 도메인용
DOMAIN은 넓은DOMAIN-SUFFIX보다 앞에 두는 것이 일반적입니다. - 포괄 규칙은 맨 아래:
MATCH,Proxy또는MATCH,DIRECT는 목록 끝에서 “나머지 전부”를 처리합니다. - 예외 허용이 차단보다 앞에: 상위 도메인은 막되 특정 하위 도메인만 허용하려면, 허용 규칙을 차단 규칙보다 위에 둡니다.
규칙 한 줄의 구조
규칙은 쉼표로 구분된 세 부분으로 이루어집니다.
규칙 유형,일치 인자,대상 정책
예:
DOMAIN-SUFFIX,google.com,Proxy
GEOIP,CN,DIRECT
MATCH,Proxy
대상 정책은 내장값(DIRECT, REJECT 등)이거나, proxy-groups:에 정의한 그룹 이름(Proxy, Auto 등)입니다.
자주 쓰는 여섯 가지 규칙 유형
Clash(Mihomo 계열 코어)는 다양한 규칙을 지원합니다. 여기서는 실무에서 가장 많이 쓰는 유형만 압축해 설명합니다.
도메인 계열
| 유형 | 설명 | 예시 |
|---|---|---|
DOMAIN |
도메인 전체 문자열 일치 | DOMAIN,www.google.com,Proxy |
DOMAIN-SUFFIX |
해당 접미사 및 모든 하위 도메인 | DOMAIN-SUFFIX,google.com,Proxy |
DOMAIN-KEYWORD |
도메인에 키워드가 포함되면 일치 | DOMAIN-KEYWORD,google,Proxy |
기본적으로는 DOMAIN-SUFFIX 권장: DOMAIN-SUFFIX,google.com,Proxy 한 줄로 google.com과 mail.google.com, accounts.google.com 등 하위 도메인까지 포괄하기 쉽습니다. DOMAIN-KEYWORD는 짧을수록 엉뚱한 도메인까지 잡을 수 있어 주의하세요.
IP 계열
| 유형 | 설명 | 예시 |
|---|---|---|
IP-CIDR |
IPv4 CIDR 대역 | IP-CIDR,192.168.0.0/16,DIRECT |
IP-CIDR6 |
IPv6 CIDR 대역 | IP-CIDR6,2001:db8::/32,DIRECT |
IP 규칙은 LAN 직접 연결·특정 대역 처리에 씁니다. 도메인이 IP로 풀린 뒤 비교되는 경로가 있으므로, 이미 도메인 규칙에 걸린 경우와 역할이 겹치지 않도록 배치하는 것이 좋습니다. “처음부터 IP 주소로 접속하는 트래픽”을 다룰 때 특히 유용합니다.
GEOIP 국가 코드
GEOIP,CN,DIRECT는 중국 본토 IP 대역을 직접 연결로 보내는 대표적인 한 줄입니다. Clash가 목적 IP를 알고 있으면 내장 GeoIP DB로 CN(중국 본토) 여부를 판단하고, 해당이면 DIRECT, 아니면 다음 규칙으로 넘깁니다.
# 중국 본토 IP는 직접 연결
GEOIP,CN,DIRECT,no-resolve
no-resolve를 붙이면 불필요한 DNS 조회를 줄이는 데 도움이 되는 경우가 많습니다. (실제 동작·버전에 따라 세부는 다를 수 있으니, 사용 중인 코어 문서를 함께 확인하세요.)
GeoIP 데이터는 주기적 갱신이 필요합니다. DB가 오래되면 IP 소유 국가 판정이 어긋날 수 있습니다. geodata-mode: true와 GEO 데이터 업데이트를 습관화하고, Clash Verge Rev처럼 자동 갱신을 지원하는 클라이언트를 쓰면 관리가 수월합니다.
MATCH 포괄 규칙
MATCH는 반드시 규칙 목록의 맨 마지막에 둡니다. 위에서 하나도 안 걸린 “나머지 모든 연결”을 한 번에 처리합니다.
# 포괄: 남은 트래픽은 프록시 그룹으로
MATCH,Proxy
이렇게 해 두면 규칙에 없는 해외 사이트도 기본적으로 Proxy 그룹으로 나가므로, 도메인을 일일이 추가하지 않아도 됩니다.
중국 본토 직접 연결 — 실무 레이어링
GEOIP,CN,DIRECT만으로는 부족할 때가 있습니다. 해외 CDN을 쓰는 중국 서비스·글로벌 회선을 탄 기업 사이트 등은 IP만 보고는 오판하기 쉽습니다. 아래는 흔히 쓰는 “3단 쌓기”입니다.
1단: LAN·루프백·예약 대역 직접 연결
# LAN 및 예약 대역 직접 연결
IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
2단: 자주 쓰는 중국 본토 도메인을 DOMAIN-SUFFIX로 직접 연결
바이두·텐센트 QQ·타오바오·징둥·빌리빌리 등 접속 빈도가 높은 1차 도메인을 먼저 DIRECT로 박아 두면 GeoIP보다 빠르게 결정되는 경우가 많습니다(도메인 규칙이 IP 변환 없이 먼저 걸리기 때문입니다).
DOMAIN-SUFFIX,baidu.com,DIRECT
DOMAIN-SUFFIX,qq.com,DIRECT
DOMAIN-SUFFIX,weixin.qq.com,DIRECT
DOMAIN-SUFFIX,taobao.com,DIRECT
DOMAIN-SUFFIX,tmall.com,DIRECT
DOMAIN-SUFFIX,jd.com,DIRECT
DOMAIN-SUFFIX,bilibili.com,DIRECT
DOMAIN-SUFFIX,zhihu.com,DIRECT
DOMAIN-SUFFIX,weibo.com,DIRECT
DOMAIN-SUFFIX,bytedance.com,DIRECT
DOMAIN-SUFFIX,douyin.com,DIRECT
3단: GEOIP CN으로 본토 IP 나머지 직접 연결
GEOIP,CN,DIRECT,no-resolve
위 순서를 지키면 대부분의 중국 본토 웹·앱은 프록시를 타지 않고도 안정적으로 열리고, 해외만 프록시 대역으로 보낼 수 있습니다.
Rule Provider(규칙 제공자) 고급 설정
수천 줄을 YAML에 직접 쓰는 것은 유지보수가 어렵습니다. Mihomo 계열의 Rule Provider는 원격 URL이나 로컬 파일에서 규칙 묶음을 불러와 RULE-SET으로 한 번에 참조하게 해 줍니다.
behavior 세 가지
| behavior | 내용 형식 | 용도 |
|---|---|---|
domain |
줄마다 도메인 또는 +. 와일드 |
도메인 화이트/블랙리스트, 성능에 유리 |
ipcidr |
줄마다 CIDR | IP 대역 직접 연결·프록시 목록 |
classical |
Clash 규칙과 같은 TYPE,ARG 형태(정책 제외) | 여러 유형을 섞은 복잡한 세트 |
원격 규칙 세트 예시
커뮤니티에서 유지하는 blackmatrix7 규칙 저장소를 예로 들면, 설정에 다음과 같이 선언할 수 있습니다.
rule-providers:
# 중국 본토 도메인 직접 연결용
ChinaDomain:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt"
path: ./ruleset/ChinaDomain.txt
interval: 86400 # 24시간마다 갱신
# 일반적인 프록시 대상 도메인
ProxyGFW:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.txt"
path: ./ruleset/ProxyGFW.txt
interval: 86400
이후 rules:에서 RULE-SET으로 연결합니다.
rules:
# LAN 직접
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
# 중국 도메인 세트 → 직접
- RULE-SET,ChinaDomain,DIRECT
# 프록시 대상 세트 → 프록시 그룹
- RULE-SET,ProxyGFW,Proxy
# 중국 본토 IP 직접
- GEOIP,CN,DIRECT,no-resolve
# 포괄
- MATCH,Proxy
오프라인 팁: path:로 로컬 경로를 지정해 두면 최초 한 번 다운로드한 뒤 디스크에 캐시됩니다. 이후 GitHub 등 원본 URL에 잠시 접속하지 못해도 캐시된 Rule Provider는 계속 쓸 수 있어, 일상적인 분할에는 보통 지장이 없습니다.
전체 분할 설정 예시(요약 YAML)
프록시 그룹·Rule Provider·rules를 한 번에 본 뼈대입니다. 구독에서 받은 노드 이름만 맞추면 됩니다.
# ── Proxy Groups ──────────────────────────────────────
proxy-groups:
- name: "Proxy"
type: select
proxies:
- Auto
- HK-01
- JP-01
- US-01
- name: "Auto"
type: url-test
url: "https://www.gstatic.com/generate_204"
interval: 300
proxies:
- HK-01
- JP-01
- US-01
# ── Rule Providers ─────────────────────────────────────
rule-providers:
ChinaDomain:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/ChinaMax/ChinaMax_Domain.txt"
path: ./ruleset/ChinaDomain.txt
interval: 86400
ProxyGFW:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Global/Global_Domain.txt"
path: ./ruleset/ProxyGFW.txt
interval: 86400
# ── Rules ──────────────────────────────────────────────
rules:
# LAN·루프백 직접
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
# 자주 쓰는 중국 본토 도메인(GeoIP보다 빠른 경우가 많음)
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
- DOMAIN-SUFFIX,jd.com,DIRECT
- DOMAIN-SUFFIX,bilibili.com,DIRECT
- DOMAIN-SUFFIX,zhihu.com,DIRECT
- RULE-SET,ChinaDomain,DIRECT
- RULE-SET,ProxyGFW,Proxy
- GEOIP,CN,DIRECT,no-resolve
# 나머지 → 프록시
- MATCH,Proxy
HK-01, JP-01, US-01는 예시 이름이니, 실제 구독에 있는 노드 이름으로 바꾸세요.
자주 생기는 문제와 점검 방법
증상 1: 중국 사이트가 프록시로 나간다
DNS가 해외 CDN IP를 돌려주면 GeoIP가 “해외”로 보일 수 있습니다. 대응:
- 해당 도메인을
DOMAIN-SUFFIX,example.com,DIRECT로 명시하고 GEOIP보다 위에 둡니다. dns:의enhanced-mode: fake-ip와fake-ip-filter로 알려진 중국 도메인을 정리합니다.- Rule Provider 세트에 빠진 도메인이 없는지 확인하고, 없으면 수동으로 앞쪽에 추가합니다.
증상 2: 해외 사이트가 직접 연결로 나가 차단된다
MATCH 이전 어딘가에서 DIRECT로 잡히고 있을 가능성이 큽니다.
- 클라이언트의 연결(Connections) 화면에서 해당 요청이 어떤 규칙에 걸렸는지 확인합니다.
- 중국 도메인 세트에 잘못 포함된 경우, 해당 도메인을 프록시 쪽 규칙 더 앞에 둡니다.
MATCH가 실수로DIRECT를 가리키지 않았는지 확인합니다.
디버그 로그
설정 상단에 log-level: debug를 넣으면 연결별 규칙 매칭 흐름을 로그로 볼 수 있습니다.
log-level: debug # silent / error / warning / info / debug
원인을 찾은 뒤에는 info나 warning으로 되돌리세요. debug는 로그가 많아 장시간 켜 두면 부담입니다.
분할 품질은 클라이언트 선택까지 포함
규칙 YAML이 아무리 좋아도, 클라이언트가 코어 기능을 덜 지원하거나 Rule Provider 갱신이 불편하면 체감이 떨어집니다. 예를 들어:
- Clash for Windows(CFW): 원 개발 저장소가 비공개되며 업데이트가 멈춘 상태이고, Mihomo의 최신 Rule Provider·
behavior: domain최적화를 제대로 못 쓰는 빌드가 많습니다. - ClashX(구버전 계열): 유지가 둔해진 포크가 있어 Hysteria 2, VLESS Reality 등 최신 프로토콜·규칙 워크플로와 안 맞을 수 있습니다.
- 일부 Android 앱: UI가 단순하거나 TUN 설정이 깊숙해 분할·디버깅이 불편합니다.
반대로 활발히 관리되는 클라이언트는 다음을 제공하는 경우가 많습니다.
- 연결별로 어떤 규칙에 매칭됐는지 보여 주는 디버그 UX
- Rule Provider 수동·자동 갱신
- Hysteria 2, VLESS Reality, TUN 등 Mihomo 계열 기능 정식 지원
- 직관적인 프록시 그룹 전환·지연 측정
설정을 맞췄는데도 이상하면 최신 유지되는 Clash/Mihomo 계열 클라이언트로 갈아타 보는 것만으로도 분할 정확도와 안정성이 눈에 띄게 나아지는 경우가 많습니다. 아래에서 플랫폼별 설치 파일을 바로 받을 수 있습니다(GitHub를 거치지 않아도 됩니다).