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.commail.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-ipfake-ip-filter로 알려진 중국 도메인을 정리합니다.
  • Rule Provider 세트에 빠진 도메인이 없는지 확인하고, 없으면 수동으로 앞쪽에 추가합니다.

증상 2: 해외 사이트가 직접 연결로 나가 차단된다

MATCH 이전 어딘가에서 DIRECT로 잡히고 있을 가능성이 큽니다.

  1. 클라이언트의 연결(Connections) 화면에서 해당 요청이 어떤 규칙에 걸렸는지 확인합니다.
  2. 중국 도메인 세트에 잘못 포함된 경우, 해당 도메인을 프록시 쪽 규칙 더 앞에 둡니다.
  3. MATCH가 실수로 DIRECT를 가리키지 않았는지 확인합니다.

디버그 로그

설정 상단에 log-level: debug를 넣으면 연결별 규칙 매칭 흐름을 로그로 볼 수 있습니다.

log-level: debug  # silent / error / warning / info / debug

원인을 찾은 뒤에는 infowarning으로 되돌리세요. 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를 거치지 않아도 됩니다).

Clash 클라이언트 무료 다운로드