규칙 분기란 무엇인가요?
기존의 네트워크 프록시 도구에서는 보통 "전체 프록시" 또는 "직결" 중 하나만 선택할 수 있었습니다. 하지만 현대의 네트워크 환경은 매우 복잡합니다. Google 접속에는 프록시가 필요하고, 국내 사이트(네이버, 카카오 등)는 속도를 위해 직결해야 하며, 특정 회사의 내부 서비스는 특정 비공개 경로를 거쳐야 할 수도 있습니다. 이렇게 대상 주소, IP, 프로세스 이름 등의 조건에 따라 연결 경로를 자동으로 선택하는 기술이 바로 규칙 분기(Rule Routing)입니다.
Clash의 핵심 가치는 강력하고 유연한 규칙 엔진에 있습니다. 합리적인 규칙 설정을 통해 사용자는 "투명한" 인터넷 경험을 누릴 수 있습니다. 웹페이지는 자동으로 가장 빠른 경로를 선택하고, 대용량 다운로드 트래픽은 대역폭이 넓은 노드로, 스트리밍 미디어 트래픽은 특정 지역의 차단 해제 노드로 자동 할당됩니다.
Clash 규칙의 기본 구성과 매칭 로직
config.yaml 파일의 rules: 블록에서 각 줄은 하나의 규칙을 나타냅니다. 기본 형식은 다음과 같습니다:
- 유형,조건,정책[,옵션]
예: - DOMAIN-SUFFIX,google.com,Proxy. 이 규칙의 의미는 다음과 같습니다: 만약 요청 도메인의 접미사가 google.com이라면, Proxy라는 이름의 프록시 그룹을 사용하여 처리한다는 것입니다.
MATCH 규칙에 지정된 기본 정책을 사용합니다.
핵심 규칙 유형 상세 분석
규칙을 잘 작성하려면 먼저 Clash가 지원하는 규칙 유형을 이해해야 합니다.
1. 도메인 매칭 (Domain Matching)
- DOMAIN: 특정 도메인과 정확히 일치하는 경우. 예:
DOMAIN,www.google.com,Proxy. - DOMAIN-SUFFIX: 도메인 접미사 매칭. 가장 많이 사용되는 유형입니다. 예:
DOMAIN-SUFFIX,google.com,Proxy는www.google.com과mail.google.com모두에 매칭됩니다. - DOMAIN-KEYWORD: 키워드 매칭. 도메인에 해당 키워드가 포함되어 있으면 매칭됩니다. 예:
DOMAIN-KEYWORD,google,Proxy.
2. IP 매칭 (IP Matching)
- IP-CIDR: 특정 IP 대역 매칭. 예:
IP-CIDR,192.168.1.0/24,DIRECT. - GEOIP: 특정 국가/지역의 IP 매칭. 예:
GEOIP,KR,DIRECT는 알려진 모든 한국 IP와 매칭됩니다.
3. 기타 매칭
- SRC-IP-CIDR: 요청 소스 IP 기준 매칭. 주로 로컬 네트워크(LAN) 분기 시 기기별로 다른 정책을 적용할 때 유용합니다.
- PROCESS-NAME: 요청을 보낸 프로세스 이름 기준 매칭 (일부 커널에서만 지원).
- MATCH: 전체 매칭 규칙. 보통 가장 마지막에 위치하여 "나머지 전체"에 대한 정책을 지정합니다. 예:
- MATCH,FinalProxy.
규칙 매칭 순서: 우선순위가 중요한 이유
"첫 번째 매칭 시 중단"되는 특성 때문에 규칙의 배치 순서가 분기 결과를 결정합니다. 흔한 실수 중 하나는 MATCH,Proxy를 첫 번째 줄에 두는 것입니다. 이렇게 하면 모든 트래픽이 프록시를 타게 되어 뒤에 있는 모든 규칙이 무효화됩니다.
권장되는 정렬 로직:
- 로컬 네트워크/직결 블랙리스트: 예:
localhost,127.0.0.1. - 정확한 도메인 매칭: 개별적으로 특수 처리가 필요한 도메인.
- 도메인 접미사 매칭: 대부분의 해외 서비스 처리.
- IP 분기 (GEOIP 포함): 도메인으로 식별할 수 없는 트래픽 처리.
- 최종 규칙 (MATCH): 누락된 모든 트래픽 처리.
고급 팁: Rule Providers를 활용한 효율적 관리
규칙 파일이 수천 줄에 달하면 관리가 불가능해집니다. Clash Meta는 rule-providers 개념을 도입하여 외부 규칙 파일(Rule Sets)을 참조할 수 있게 했습니다.
rule-providers:
google:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/.../google.yaml"
path: ./ruleset/google.yaml
interval: 86400
rules:
- RULE-SET,google,Proxy
- GEOIP,KR,DIRECT
- MATCH,Final
Rule Providers 사용의 장점:
- 자동 업데이트: 커뮤니티에서 유지 관리하는 고품질 규칙 라이브러리를 참조할 수 있으며, Clash가
interval에 따라 자동으로 업데이트를 다운로드합니다. - 설정 파일 간소화: 주 설정 파일에는 몇 개의 큰 정책 그룹과
RULE-SET참조만 남게 되어 가독성이 매우 좋아집니다. - 성능 최적화: 커널은 이러한 규칙 세트에 대해 전용 인덱싱 최적화를 수행합니다.
DNS와 규칙의 미묘한 관계
많은 분들이 의아해합니다: "GEOIP,KR,DIRECT라고 썼는데 왜 국내 사이트 접속이 느리거나 실패하나요?"
이는 주로 DNS 분석과 관련이 있습니다. Fake-IP 모드에서 Clash는 브라우저에 즉시 가짜 IP를 반환하고 내부에서 병렬로 DNS 분석을 진행합니다. 만약 DNS 설정이 부적절하여 국내 도메인에 대해 해외 IP 주소를 반환하게 되면 GEOIP,KR 규칙이 제대로 작동하지 않게 됩니다.
nameserver에 신뢰할 수 있는 국내 DNS(예: 8.8.8.8의 한국 리전 또는 통신사 DNS)를 포함하고 fallback 로직을 올바르게 구성해야 합니다.
자주 묻는 질문과 디버깅 방법
1. 규칙이 매칭되었는데 적용이 안 되나요?
더 앞선 규칙이 해당 요청을 이미 가로채지 않았는지 확인하세요. Clash 제어 패널(Yacd 또는 MetaCubeX 등)의 "연결" 탭에서 각 연결의 구체적인 매칭 과정을 실시간으로 확인할 수 있습니다. 이것이 규칙 디버깅의 "황금 열쇠"입니다.
2. 왜 IP가 아닌 도메인 분기가 필요한가요?
현대의 대형 인터넷 서비스(예: CDN)는 여러 국가에서 동일한 IP 대역을 사용할 수 있습니다. IP에만 의존하면 라우팅이 불안정해질 수 있습니다. 도메인 분기는 애플리케이션 계층에서 판단하므로 훨씬 더 정밀합니다.
3. 규칙 충돌이 발생하면 어떻게 하나요?
"구체적일수록 앞에 배치한다"는 원칙을 따르세요. 예를 들어 DOMAIN,test.google.com,DIRECT는 DOMAIN-SUFFIX,google.com,Proxy보다 앞에 와야 합니다.
실전 사례: 이상적인 규칙 설정 템플릿
다음은 베스트 프랙티스를 기반으로 한 규칙 설정 코드 조각으로, 성능과 정밀도를 모두 고려했습니다:
rules:
# 1. 로컬 네트워크 직결
- DOMAIN-SUFFIX,local,DIRECT
- 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
# 2. 핵심 서비스 특수 분기
- DOMAIN-SUFFIX,apple.com,AppleServices # 애플 서비스 전용 그룹
- DOMAIN-SUFFIX,netflix.com,Streaming # 넷플릭스 전용 그룹
# 3. Rule Sets를 활용한 대규모 분기 관리
- RULE-SET,proxy,Proxy
- RULE-SET,gfw,Proxy
# 4. IP 최종 확인
- GEOIP,KR,DIRECT
# 5. 전역 기본 정책
- MATCH,FinalProxy
이러한 구조를 통해 여러분의 네트워크 요청은 각자의 역할을 수행하게 됩니다: 국내 트래픽은 GEOIP,KR 규칙을 통해 DIRECT(직결)로 처리되어 낮은 지연 시간을 보장하고, 알려진 차단 서비스는 RULE-SET을 통해 Proxy(프록시)로 가며, 모든 알 수 없는 트래픽은 MATCH를 통해 FinalProxy로 전달되어 연결성을 보장합니다.
규칙 분기는 한 번 설정하고 끝나는 것이 아닙니다. 네트워크 환경의 변화에 따라 정기적으로 규칙 라이브러리를 업데이트하고 자신의 정책 그룹을 조정하는 것이 부드러운 인터넷 환경을 유지하는 비결입니다.
이 가이드가 여러분이 완벽한 Clash 구성을 구축하는 데 도움이 되기를 바랍니다. 진정한 자유는 모든 요청을 정밀하게 제어하는 데서 옵니다.
맺음말: 수동 설정에서 지능형 라우팅으로
규칙 분기의 정수를 터득하면 Clash는 단순한 프록시 도구를 넘어 개인용 지능형 네트워크 스케줄러로 진화합니다. 초기 설정에 다소 노력이 필요할 수 있지만, 한 번 구축되면 그 이후의 매끄러운 경험은 기존의 어떤 VPN과도 비교할 수 없습니다.
복잡한 YAML 파일을 직접 수정하는 것이 부담스럽다면, 커널 업데이트가 빠르고 사용자 친화적인 인터페이스를 갖춘 클라이언트를 선택하는 것도 매우 중요합니다.