Clash 규칙 분류 실전: 국내 직결, 해외 프록시 설정법과 우선순위 점검
실제 rules 예시로 DOMAIN-SUFFIX, GEOIP, MATCH 매칭 순서를 설명하고, 국내외 분류에 필요한 최소 규칙 세트와 규칙 미작동 시 점검 방법을 다룹니다.
실제 rules 예시로 DOMAIN-SUFFIX, GEOIP, MATCH 매칭 순서를 설명하고, 국내외 분류에 필요한 최소 규칙 세트와 규칙 미작동 시 점검 방법을 다룹니다.
분류 없이 쓰는 설정은 두 가지 극단으로 나뉩니다. 전체 프록시 아니면 전체 직결입니다. 전체 프록시는 국내 사이트(은행, 관공서, 일부 동영상 서비스) 접속을 느리게 만들거나 위험 관리 시스템에 걸릴 수 있고, 전체 직결은 프록시를 켜지 않은 것과 다를 바 없습니다. 규칙 분류는 Clash가 연결을 시도할 때마다 목적지 도메인이나 IP가 어떤 유형인지 판단해 직결, 프록시, 차단 중 하나를 선택하게 해주는 기능입니다. 이 판단은 전적으로 rules 섹션이 담당하며, 규칙을 합리적으로 작성할수록 "갈 곳은 가고, 직결할 곳은 직결하는" 이상적인 경험에 가까워집니다.
Clash 코어(그리고 현재 활발히 유지보수되는 Clash Meta / mihomo 코어)는 규칙을 위에서 아래로 순서대로 매칭합니다. 첫 번째로 일치하는 규칙이 발견되면 즉시 해당 정책을 실행하고, 뒤에 있는 규칙은 더 이상 판단에 참여하지 않습니다. 즉 규칙 순서 자체가 로직이며, 순서를 뒤바꾸면 뒤에 정교하게 작성한 규칙이 무의미해집니다.
일반적인 rules 섹션에는 여러 매칭 유형이 섞여 사용됩니다. 자주 쓰이는 유형과 의미는 다음과 같습니다.
DOMAIN-SUFFIX,google.com은 www.google.com, mail.google.com 등 해당 접미사로 끝나는 모든 도메인에 일치합니다.GEOIP,CN,DIRECT는 목적지 IP가 중국 본토에 속하면 직결한다는 의미입니다. 이 규칙은 내장 또는 외부 GeoIP 데이터베이스에 의존하며, 판단은 도메인 해석 이후에 이루어집니다.핵심은 도메인 계열 규칙(DOMAIN-SUFFIX/DOMAIN-KEYWORD)은 DNS 해석 전에 판단할 수 있어 속도가 빠르고, GEOIP 계열 규칙은 먼저 IP를 해석한 뒤 판단해야 하므로 보통 도메인 규칙 뒤에 배치한다는 점입니다. GEOIP,CN,DIRECT를 맨 앞에 두면 국내 IP 직결을 우선 보장할 수 있지만, 모든 요청이 먼저 해석을 마쳐야 판단이 가능하다는 뜻이므로 속도를 중시하는 상황에는 적합하지 않습니다. 도메인 규칙 뒤, MATCH 앞에 두는 것이 더 균형 잡힌 방식입니다.
아래는 바로 이해하고 필요에 따라 추가할 수 있는 최소 분류 규칙 세트로, "국내 직결, 해외 프록시, 사설망 직결, 기본 프록시" 네 가지 기본 시나리오를 포괄합니다.
rules:
# 사설망 및 내부망 주소 직결
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
# 자주 쓰는 국내 도메인 직결
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,alipay.com,DIRECT
# 프록시가 필요한 대표 도메인
- DOMAIN-SUFFIX,google.com,PROXY
- DOMAIN-SUFFIX,youtube.com,PROXY
- DOMAIN-SUFFIX,github.com,PROXY
# IP 소속지 기준 기본 판단
- GEOIP,CN,DIRECT
# 위 규칙에 하나도 일치하지 않으면 일괄 프록시
- MATCH,PROXY
여기서 PROXY는 정책 그룹 이름으로, proxy-groups 섹션에 미리 정의해두어야 하며 보통 구독 노드나 수동 선택 정책 그룹을 가리킵니다. DIRECT는 코어에 내장된 직결 정책으로 별도 정의가 필요 없습니다. 규칙 순서는 위에 나열한 네 가지 시나리오와 정확히 대응하며, "정확하고 비용이 적은" 것부터 "범위가 넓고 비용이 큰" 순서로 배치하는 것이 규칙 세트 작성의 공통 원칙입니다.
DOMAIN-SUFFIX 수십 줄을 직접 작성해도 개인 사용은 어느 정도 감당할 수 있지만, 국내외 사이트 전체 목록을 다루기는 어렵습니다. 실제 운영 환경에서 더 흔한 방식은 규칙 세트(RULE-SET)를 참조하는 것으로, 대량의 도메인/IP를 외부 파일로 분류해 관리하고 규칙 섹션에는 참조만 작성합니다.
rule-providers:
cn-domains:
type: http
behavior: domain
url: "https://example.com/rules/cn-domains.txt"
path: ./rules/cn-domains.yaml
interval: 86400
rules:
- RULE-SET,cn-domains,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY
규칙 세트는 interval에 지정한 초 단위로 정기 갱신되므로 도메인을 하나씩 수동으로 업데이트할 필요가 없습니다. behavior 필드는 규칙 세트 내용을 해석하는 방식(domain / ipcidr / classical)을 결정하며, 규칙 세트 파일 자체의 형식과 일치해야 합니다. 잘못 지정하면 규칙 세트 로딩이 실패하지만 눈에 띄는 오류가 나타나지 않는 경우도 있어, 규칙 미작동 문제를 점검할 때 자주 놓치는 부분입니다.
규칙을 작성했는데 연결 동작이 예상과 다르다면 보통 다음 순서로 점검합니다.
규칙에서 참조하는 PROXY, DIRECT 등 정책 이름은 proxy-groups에 정의된 name과 대소문자까지 완전히 일치해야 합니다. 이름이 맞지 않으면 클라이언트마다 반응이 달라, 일부는 오류를 표시하고 일부는 조용히 기본 정책으로 되돌아가 "규칙이 작동하지 않는다"고 잘못 판단하기 쉽습니다.
DOMAIN-KEYWORD나 GEOIP 규칙이 앞쪽에 있으면 뒤에 있는 정확한 DOMAIN-SUFFIX 규칙은 영원히 실행 기회를 얻지 못합니다. 의심되는 규칙을 임시로 맨 위로 옮겨 테스트하면 순서 문제인지 빠르게 확인할 수 있습니다.
GEOIP 계열 규칙은 해석된 IP에 의존합니다. 클라이언트가 fake-ip 모드를 쓰거나 해외 DNS를 사용 중이면 해석 결과가 실제 소속지와 다를 수 있어 GEOIP,CN 판단이 무효화됩니다. 클라이언트의 연결 로그나 규칙 매칭 기록에서 실제로 어떤 규칙에 걸렸는지 확인할 수 있습니다.
RULE-SET을 사용할 때 외부 url 접속이 실패하거나 형식 해석 오류가 나면 규칙 세트가 빈 채로 로드되어, 해당 참조가 그대로 무효화되고 이후 트래픽은 결국 기본 MATCH로 넘어갑니다. 클라이언트 시작 로그나 규칙 세트 갱신 상태를 확인하면 이를 파악할 수 있습니다.
일부 클라이언트는 여러 설정 전환을 지원합니다. 수정한 것이 보조 프로파일이고 현재 적용 중인 것은 다른 파일이라면 규칙 변경이 반영되지 않는 것이 당연합니다. 현재 활성화된 설정 파일 경로를 확인하는 것이 가장 자주 놓치지만 흔한 원인입니다.
규칙 세트는 한 번 작성하고 끝나는 것이 아니라 계속 관리해야 합니다. 오래 유지할 만한 습관을 정리하면: 정확한 규칙은 앞에, 범위가 넓은 규칙은 뒤에 두어 오탐을 줄이고; 사설망·내부망 규칙은 항상 맨 앞에 두어 로컬 서비스가 의도치 않게 프록시로 넘어가지 않도록 하며; GEOIP,CN,DIRECT는 보통 도메인 규칙 뒤, MATCH 앞에 두어 국내 IP의 보조 판단 기준으로 삼되 주된 판단 근거로는 삼지 않고; 해외 업무·해외 결제 등 특수 도메인은 GEOIP 분류에만 전적으로 의존하지 말고 직결 또는 프록시로 따로 명시하는 것이 좋습니다. 일부 서비스는 IP 소속지와 실제 서비스 지역이 완전히 일치하지 않기 때문입니다. 규칙 세트의 가치는 사용 기간이 늘어날수록 커지므로, 연결 로그를 주기적으로 살펴보고 MATCH로 자주 처리되는 도메인을 명확한 규칙으로 보완하면 분류가 점점 정교해집니다.
규칙 분류를 설정하기 전에 해당 플랫폼에 클라이언트를 설치하고 구독 가져오기를 완료하세요.