Clash YAML 설정 파일은 전체 프록시 시스템의 핵심으로, 그 구조와 필드 규범을 이해하는 것은 고급 사용의 필수 과정입니다. 구독 링크가 제공하는 설정은 보통 일반적인 템플릿으로, 특정 시나리오에 최적화되어 있지 않습니다. 이 글은 Clash 공식 설정 파일 완전 설명서로, 각 핵심 필드의 정의와 공식 권장 모범 사례 작성법을 체계적으로 설명합니다.
설정 파일 전체 구조
완전한 Clash 설정 파일은 여섯 가지 주요 부분으로 구성됩니다: 전역 파라미터, DNS 설정, 프록시 노드(proxies), 전략 그룹(proxy-groups), 규칙(rules), 그리고 선택적인 TUN 설정. 이 여섯 부분이 함께 Clash가 각 네트워크 요청을 처리하는 방법을 결정합니다.
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
dns:
enable: true
enhanced-mode: fake-ip
nameserver: [1.1.1.1, 8.8.8.8]
proxies: [ ... ]
proxy-groups: [ ... ]
rules: [ ... ]
전역 파라미터 상세 해설
전역 파라미터는 Clash의 기본 실행 동작을 제어합니다. 다음은 가장 자주 사용되는 필드들입니다:
port와socks-port: 각각 HTTP 프록시와 SOCKS5 프록시의 수신 포트로, 기본값은 7890/7891입니다.mixed-port: 7890으로 두 프로토콜을 하나의 포트로 통합할 수도 있습니다.allow-lan:true로 설정하면 로컬 네트워크의 다른 기기도 Clash를 프록시 서버로 사용할 수 있어, 라우터 수준의 공유 프록시 시나리오에 적합합니다.mode: 전역 프록시 모드로,rule(스마트 트래픽 분류),global(전체 프록시 통과),direct(전체 직접 연결)중 선택 가능합니다.external-controller: RESTful API의 주소와 포트로, 각종 대시보드(예: Yacd, MetaCubeXD)가 이 인터페이스를 통해 Clash와 통신하여 그래픽 제어를 구현합니다.
proxies: 프록시 노드 설정
proxies 배열의 각 객체는 하나의 프록시 서버 노드를 나타냅니다. 프로토콜마다 필수 필드가 다르지만, name, type, server, port는 모든 프로토콜에 공통적인 필수 항목입니다.
Clash(Mihomo 코어)는 Shadowsocks, VMess, VLESS, Trojan, Hysteria2, TUIC 등 20여 가지 프로토콜을 지원합니다. 다음은 세 가지 가장 일반적인 프로토콜의 예시 설정입니다:
proxies:
- name: "🇰🇷 한국-01"
type: ss
server: kr.example.com
port: 8388
cipher: chacha20-ietf-poly1305
password: "your-password"
udp: true
- name: "🇺🇸 미국-01"
type: vmess
server: us.example.com
port: 443
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
alterId: 0
cipher: auto
tls: true
network: ws
ws-opts:
path: /ray
headers:
Host: us.example.com
- name: "🇯🇵 일본-01"
type: trojan
server: jp.example.com
port: 443
password: "your-password"
sni: jp.example.com
udp: true
proxy-groups: 전략 그룹
전략 그룹은 Clash가 다른 프록시 도구와 차별화되는 핵심 장점입니다. 여러 노드를 하나의 논리적 프록시 단위로 결합하여 수동 선택, 자동 속도 테스트, 페일오버, 로드 밸런싱 네 가지 작동 방식을 지원하며, 전략 그룹 간에 중첩 참조가 가능하여 유연한 계층 프록시 아키텍처를 구축할 수 있습니다.
proxy-groups:
- name: "🚀 노드 선택"
type: select
proxies: ["♻️ 자동 선택", "🇰🇷 한국-01", "🇺🇸 미국-01", DIRECT]
- name: "♻️ 자동 선택"
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
proxies: ["🇰🇷 한국-01", "🇯🇵 일본-01", "🇺🇸 미국-01"]
- name: "🎬 스트리밍"
type: select
proxies: ["🇺🇸 미국-01", "🇯🇵 일본-01"]
위의 설정은 두 계층 구조를 구성합니다: 「노드 선택」 전략 그룹이 외부에 노출되는 진입점으로, 사용자는 여기서 구체적인 노드나 「자동 선택」 전략 그룹을 수동으로 선택할 수 있습니다; 「자동 선택」 전략 그룹은 백그라운드에서 지속적으로 속도를 테스트하여 자동으로 지연 시간이 가장 낮은 노드로 전환합니다.
rules: 트래픽 분류 규칙
규칙 목록은 위에서 아래 순서로 순차적으로 매칭되며, 어떤 규칙이 적중되면 즉시 해당 동작을 실행하고 매칭을 중지합니다. 규칙 형식은 유형,매칭값,정책이며, 마지막 규칙은 반드시 MATCH 기본 규칙이어야 합니다.
rules:
- DOMAIN,google.com,🚀 노드 선택
- DOMAIN-SUFFIX,youtube.com,🎬 스트리밍
- DOMAIN-KEYWORD,facebook,🚀 노드 선택
- GEOIP,KR,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,🚀 노드 선택
RULE-SET을 사용하여 커뮤니티에서 관리하는 규칙 집합(예: Loyalsoldier/clash-rules)을 참조하는 것을 권장합니다. 정성껏 정리된 로컬 직접 연결 도메인과 프록시 도메인 목록이 포함되어 있어 바로 사용 가능하고 정기적으로 업데이트됩니다.
설정 모범 사례
실제 사용에서 몇 가지 설정 권장 사항이 경험을 크게 향상시킬 수 있습니다: 첫째, 자주 사용하는 스트리밍 플랫폼(Netflix, Disney+, YouTube)을 별도의 전략 그룹으로 설정하여 필요에 따라 다른 지역의 콘텐츠를 편리하게 이용할 수 있도록 합니다; 둘째, url-test 전략 그룹에 합리적인 tolerance(허용 오차)를 설정하여 지연 시간 차이가 작을 때 노드가 자주 전환되는 것을 방지합니다; 셋째, external-controller와 Yacd 또는 MetaCubeXD 등의 대시보드를 함께 사용하면 브라우저에서 실시간으로 연결 상태와 트래픽을 모니터링할 수 있어 문제 진단에 매우 편리합니다.