Clash 규칙 분기 실전: 도메인과 GeoIP로 정교한 트래픽 라우팅 구현

중국 본토 사이트는 직접 연결, 그 외 지역 사이트는 프록시로 우회하는 대표적인 시나리오를 예로 들어 DOMAIN-SUFFIX, GEOIP, RULE-SET 등 규칙 유형의 작성법, 매칭 순서, 우선순위를 설명하고 바로 사용할 수 있는 규칙 예시를 제공합니다.

규칙 분기는 Clash를 일반 프록시 도구와 구분 짓는 핵심 기능입니다. 설정 파일의 rules 항목은 각 네트워크 요청이 최종적으로 어떤 프록시 그룹을 거칠지 결정하며, 판단 기준은 도메인, IP 소속 지역, 프로세스명 또는 포트가 될 수 있습니다. 잘 작성된 규칙 세트는 국내 사이트는 직접 연결, 해외 사이트는 프록시 경유, 특정 서비스는 전용 경로로 처리하는 것을 수동 전환 없이 전 과정 자동으로 수행할 수 있게 합니다. 이 글에서는 실전 순서에 따라 규칙 유형, 작성 형식, 우선순위 메커니즘을 하나씩 분석하고, 바로 적용 가능한 규칙 예시를 제공합니다.

DOC-01

규칙 매칭의 기본 구조

Clash 설정 파일의 각 규칙은 다음과 같은 통일된 형식을 따릅니다:

규칙 유형,매칭 내용,대상 정책

예를 들어:

rules:
  - DOMAIN-SUFFIX,google.com,Proxy
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

세 필드는 역할이 명확히 구분됩니다. 첫 번째 항목은 규칙 유형으로 어떤 기준으로 매칭할지 결정하고, 두 번째 항목은 구체적인 매칭 값으로 유형에 따라 도메인, IP 대역, 프로세스명 등으로 달라지며, 세 번째 항목은 매칭되었을 때 어떤 정책 그룹이나 동작으로 넘길지를 지정하는데, 직접 정의한 프록시 그룹명이 될 수도 있고 DIRECT(직접 연결), REJECT(차단)와 같은 내장 동작이 될 수도 있습니다.

규칙은 위에서 아래로 순서대로 비교되며, 첫 번째로 매칭되는 규칙에서 멈추고 이후 규칙은 더 이상 검사하지 않습니다. 즉 순서 자체가 우선순위이며, 순서를 잘못 배치하면 정교하게 설계한 규칙이 무용지물이 될 수 있습니다.

DOC-02

DOMAIN 계열: 도메인 기준 분기

도메인 유형 규칙은 가장 흔히 쓰이는 종류로, 몇 가지 세부 작성법이 있으며 매칭 범위가 점점 넓어집니다:

세 가지의 세밀함 관계는 DOMAIN이 가장 정밀하고, DOMAIN-SUFFIX가 서브도메인까지 포괄하며, DOMAIN-KEYWORD가 가장 광범위합니다. 실제 설정에서는 DOMAIN-SUFFIX가 대부분의 요구를 충족하며, DOMAIN-KEYWORD는 보통 도메인 구조가 불규칙한 서비스를 처리할 때만 사용합니다.

참고

도메인 규칙은 도메인만 인식할 수 있으며 IP로 직접 접속하는 연결은 인식하지 못합니다. 대상 사이트가 도메인 확인 절차를 거치지 않는 경우(예: 클라이언트에 고정 IP가 내장된 경우) IP-CIDR이나 GEOIP 규칙으로 바꿔야 매칭할 수 있습니다.

DOC-03

GEOIP: IP 소속 지역 기준 판단

GEOIP 규칙은 대상 IP가 속한 국가 또는 지역 코드에 따라 매칭되며, "국내는 직접 연결, 해외는 프록시"와 같은 전체적인 전략을 구현하는 핵심 도구입니다. 작성 예시:

rules:
  - GEOIP,CN,DIRECT

이 규칙의 의미는 다음과 같습니다: 해석 결과가 중국 본토 IP 대역에 속하는 연결은 모두 프록시를 거치지 않고 직접 연결됩니다. GEOIP 규칙은 보통 전체 규칙 목록의 뒤쪽에 배치되어 도메인 규칙이 다루지 못한 부분을 보완하는 역할을 합니다. 즉 DOMAIN-SUFFIX로 이미 알려진 사이트를 먼저 정확히 처리한 뒤, GEOIP로 나머지 IP 소속 지역만으로도 정확히 분류할 수 있는 트래픽을 마무리 처리하는 방식입니다.

GEOIP 규칙은 내장되거나 외부에서 불러온 IP 지역 데이터베이스에 의존하며, mihomo 코어는 이 데이터베이스의 갱신 방식과 매칭 성능을 최적화하여 이전 버전보다 판단 속도가 빠릅니다. 사용할 때는 IP 데이터베이스를 계속 최신 상태로 유지해야 하며, 그렇지 않으면 특히 새로 할당된 IP 대역에서 지역 판단이 지연되는 상황이 발생할 수 있습니다.

DOC-04

IP-CIDR과 RULE-SET: 더 세밀하거나 더 일괄적인 매칭

IP-CIDR은 특정 IP 대역을 매칭하는 데 사용되며, CIDR 표기법 형식을 따릅니다:

rules:
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT

이런 유형의 규칙은 내부망 주소 대역을 직접 연결로 처리하여 로컬 네트워크 접속이 잘못 프록시 터널로 보내지는 것을 방지하는 데 자주 쓰입니다. IPv6 환경에서는 IP-CIDR6으로 작성합니다.

RULE-SET은 외부 규칙 세트 파일을 참조하는 방식으로, 대량의 도메인이나 IP 규칙을 하나의 파일로 묶어 설정에서는 한 줄만 참조하면 됩니다:

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://example.com/reject-list.yaml"
    path: ./rules/reject.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,direct,DIRECT
  - RULE-SET,proxy,Proxy

RULE-SET의 장점은 수백~수천 개의 도메인 규칙을 수동으로 관리하는 작업을 없애준다는 데 있습니다. 규칙 세트 작성자가 상위 목록을 갱신하면 클라이언트는 interval에 설정된 주기에 따라 자동으로 최신 내용을 가져옵니다. behavior 필드는 규칙 세트 내용의 유형을 나타내며, domain은 도메인 목록, ipcidr은 IP 대역 목록, classical은 완전한 규칙 형식이 섞인 목록을 의미합니다. 세 가지 behavior는 규칙 세트 파일 내부 형식이 서로 다르므로 참조할 때 실제 파일 유형과 일치해야 하며, 그렇지 않으면 해석에 실패합니다.

DOC-05

완전한 규칙 예시: 본토 직접 연결 + 해외 프록시 시나리오

다음은 "중국 본토 사이트는 직접 연결, 그 외 지역 사이트는 프록시로 우회"라는 대표적인 시나리오에 맞춘 규칙 예시입니다. 규칙 순서는 이미 매칭 우선순위에 따라 배열되어 있으므로 바로 적용하고 필요에 따라 추가·삭제할 수 있습니다:

rules:
  # 로컬 네트워크 및 내부망 주소, 항상 직접 연결
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT

  # 광고 및 추적 도메인, 즉시 차단
  - RULE-SET,reject,REJECT

  # 국내 자주 쓰는 사이트, 정확히 직접 연결
  - 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,google.com,Proxy
  - DOMAIN-SUFFIX,youtube.com,Proxy
  - DOMAIN-SUFFIX,github.com,Proxy
  - DOMAIN-SUFFIX,twitter.com,Proxy

  # 외부에서 관리하는 국내 도메인 규칙 세트 참조, 일괄 직접 연결
  - RULE-SET,direct,DIRECT

  # 외부에서 관리하는 프록시 도메인 규칙 세트 참조
  - RULE-SET,proxy,Proxy

  # IP 소속 지역 기준 보완 처리: 중국 본토는 직접 연결
  - GEOIP,CN,DIRECT

  # 위 규칙에 모두 매칭되지 않은 경우, 일괄적으로 프록시 그룹으로
  - MATCH,Proxy

이 예시는 규칙 설계의 일반적인 사고 흐름을 보여줍니다. 먼저 예외 상황(내부망, 광고 차단)을 처리하고, 그다음 이미 알려진 고빈도 도메인을 처리한 뒤, 규칙 세트를 통해 롱테일 도메인을 일괄 처리하고, 마지막으로 GEOIP와 MATCH로 마무리하여 앞선 규칙에 매칭되지 않은 모든 트래픽에도 명확한 처리 방향이 있도록 보장함으로써, 규칙 목록이 불완전해 연결 실패가 발생하는 상황을 막습니다.

DOC-06

우선순위 메커니즘과 흔한 오해

우선순위를 이해하려면 두 가지를 반드시 기억해야 합니다:

  1. 규칙은 작성 순서대로 위에서 아래로 하나씩 비교되며, 첫 번째로 매칭된 규칙이 적용되고 이후 규칙은 더 이상 판단에 참여하지 않습니다.
  2. 범위가 넓은 규칙 유형을 앞쪽에 배치할수록 원래 뒤쪽의 정밀한 규칙이 처리해야 할 트래픽을 "선점"하여 매칭해버리기 쉬워 분기 결과가 예상과 달라지는 문제가 생깁니다.

흔히 발생하는 순서 오류로는 DOMAIN-KEYWORD를 규칙 목록 맨 앞에 배치해 대상이 아닌 수많은 도메인이 오탐으로 처리되는 경우, GEOIP,CN,DIRECT를 해외 도메인 규칙보다 앞에 배치해 CDN으로 배포되어 IP 대역이 중국 본토에 있지만 실제로는 프록시 접속이 필요한 일부 도메인이 잘못 직접 연결되는 경우, 또는 마지막에 MATCH 보완 규칙을 잊어버려 어떤 규칙에도 매칭되지 않은 연결의 동작이 불확실해지는 경우 등이 있습니다.

규칙을 디버깅할 때는 클라이언트에 내장된 연결 로그나 규칙 매칭 조회 기능을 활용해, 특정 도메인이 실제로 어느 규칙에 매칭되는지 하나씩 확인한 뒤 그에 맞춰 순서를 조정하는 것이 경험에만 의존해 반복적으로 추측하는 것보다 훨씬 효율적입니다.

주의

규칙 세트의 behavior 유형(domain/ipcidr/classical)은 규칙 세트 파일의 실제 내용 형식과 반드시 일치해야 합니다. 서로 다르게 섞어 쓰면 해당 규칙 세트 전체가 해석에 실패하고, 그 규칙 세트에 의존하는 모든 도메인 판단이 무효화됩니다. 규칙 세트 출처를 변경할 때는 먼저 문서에 명시된 behavior 유형을 확인하는 것이 좋습니다.

DOC-07

프록시 그룹과의 연계 사용

규칙이 최종적으로 가리키는 대상은 단일 노드가 아니라 프록시 그룹명이어도 됩니다. select(수동 선택), url-test(자동 속도 측정 후 전환), fallback(장애 시 전환) 등 프록시 그룹 유형과 결합하면 규칙 분기와 노드 선택 전략을 완전히 분리할 수 있습니다. 규칙은 "이 트래픽이 프록시를 타야 하는지 직접 연결해야 하는지"만 책임지고, 구체적으로 어떤 노드를 탈지는 프록시 그룹이 자체적으로 결정합니다. 이런 계층화 설계는 Clash 설정이 유연성과 유지 관리성을 동시에 갖출 수 있는 핵심입니다.

proxy-groups:
  - name: Proxy
    type: url-test
    proxies:
      - 노드A
      - 노드B
    url: "http://www.gstatic.com/generate_204"
    interval: 300

위 예시처럼 규칙에 쓰인 Proxy는 여기에 정의된 프록시 그룹에 대응하며, 그룹 내 노드는 url-test 유형에 따라 자동으로 속도를 측정해 지연이 가장 낮은 노드를 선택합니다. 규칙 파일 자체는 구체적인 노드 정보를 알 필요가 없으며, 이후 구독을 교체하거나 노드를 추가·삭제해도 규칙 항목을 수정할 필요가 없습니다.

Clash 클라이언트 받기

규칙 분기는 완전한 규칙 문법과 RULE-SET을 지원하는 클라이언트와 함께 사용해야 제대로 작동하므로, 다운로드 페이지에서 최신 버전을 받고 가이드에 따라 기본 설정을 완료하는 것을 권장합니다.

Clash 다운로드