설정 파일 개요
Clash의 설정 파일은 YAML 형식의 텍스트이며 기본 이름은 config.yaml입니다. 구독을 사용할 경우 서비스 제공업체가 이미 작성해 두었으므로 보통 직접 편집할 필요가 없습니다. 라우팅이나 DNS 동작을 커스터마이징하고 싶을 때만 구조를 이해하면 됩니다. 설정은 위에서부터 크게 4개 블록으로 나뉩니다:
# 1. Basic settings: ports, mode, log level mixed-port: 7890 mode: rule # 2. Proxy nodes: where traffic can go proxies: [...] # 3. Proxy groups: how to pick a node proxy-groups: [...] # 4. Rules: which traffic goes where rules: [...]
한 문장만 기억하면 됩니다: proxies는 "어떤 경로가 있는지"를 정의하고, proxy-groups는 "경로를 어떻게 고를지"를 정의하며, rules는 "어떤 트래픽이 어느 경로로 갈지"를 정의합니다.
프록시 노드(proxies)
각 노드는 하나의 리스트 항목이며, type이 프로토콜을 결정합니다. 프로토콜마다 필드가 약간 다릅니다. Shadowsocks, VMess, VLESS, Trojan, WireGuard 등 주요 프로토콜을 지원하며, 아래는 가장 흔한 두 가지 작성법입니다:
proxies: - name: "홍콩 01" type: ss server: hk01.example.com port: 8388 cipher: aes-256-gcm password: "your-password" - name: "도쿄 02" type: vmess server: jp02.example.com port: 443 uuid: 23ad6b10-8d1a-40f7-8ad0-e3e35cd38297 alterId: 0 cipher: auto tls: true
구독을 사용한다면 이 부분은 신경 쓰지 않아도 됩니다. 노드 목록이 구독에 따라 자동으로 업데이트됩니다.
프록시 그룹(proxy-groups)
프록시 그룹은 노드들을 "하나의 선택 항목"으로 묶는 것으로, 규칙에서는 개별 노드가 아닌 그룹 이름을 참조합니다. 자주 쓰이는 4가지 유형:
| 유형 | 동작 | 적합한 상황 |
|---|---|---|
select | 수동 선택, 클릭한 노드가 바로 사용됨 | 일상적으로 주로 사용, 직접 제어 |
url-test | 주기적으로 속도 테스트해 가장 빠른 노드를 자동 선택 | 자동으로 최적 노드를 고르고 싶다면, 한 번 설정하면 끝 |
fallback | 순서대로 확인해 처음으로 사용 가능한 노드 사용 | 메인/백업 라인, 장애 시 즉시 전환 |
load-balance | 여러 노드에 요청을 분산 | 고동시성 다운로드, 다중 연결 |
proxy-groups: - name: "노드 선택" type: select proxies: [자동 선택, 홍콩 01, 도쿄 02] - name: "자동 선택" type: url-test proxies: [홍콩 01, 도쿄 02] url: "http://www.gstatic.com/generate_204" interval: 300
interval: 300은 300초마다 속도를 다시 테스트한다는 의미입니다. 테스트 주소는 gstatic의 204 페이지가 가장 안정적입니다.
라우팅 규칙(rules)
규칙은 위에서부터 하나씩 매칭되며 가장 먼저 일치한 규칙이 적용됩니다. 그러므로 더 구체적인 규칙을 앞에 배치하고, 마지막에 MATCH로 나머지를 처리합니다. 각 규칙의 형식은 "유형,매칭 내용,출구"입니다:
| 규칙 유형 | 의미 | 예시 |
|---|---|---|
DOMAIN | 전체 도메인 이름 정확히 일치 | DOMAIN,www.google.com,노드 선택 |
DOMAIN-SUFFIX | 도메인과 모든 하위 도메인에 일치 | DOMAIN-SUFFIX,youtube.com,노드 선택 |
DOMAIN-KEYWORD | 도메인에 키워드가 포함되면 일치 | DOMAIN-KEYWORD,github,노드 선택 |
IP-CIDR | 대상 IP가 지정 범위에 속하면 일치 | IP-CIDR,8.8.8.8/32,노드 선택 |
GEOIP | IP 소속 국가로 일치 | GEOIP,KR,DIRECT |
MATCH | 나머지 모든 트래픽을 처리하는 최종 규칙 | MATCH,노드 선택 |
출구에는 프록시 그룹 이름 외에도 2가지 내장 값이 있습니다: DIRECT(프록시를 거치지 않고 직접 연결)와 REJECT(요청 거부, 광고 차단에 자주 사용).
rules: # Ads: reject outright - DOMAIN-KEYWORD,adservice,REJECT # Overseas services: via proxy group - DOMAIN-SUFFIX,youtube.com,노드 선택 - DOMAIN-SUFFIX,github.com,노드 선택 # Local/trusted traffic: direct connection - DOMAIN-SUFFIX,kr,DIRECT - GEOIP,KR,DIRECT # Everything else: via proxy group - MATCH,노드 선택
DNS 설정
DNS는 "도메인이 어떻게 IP로 변환되는지"를 결정합니다. 설정이 잘못되면 오염이나 규칙 오작동이 발생할 수 있으므로, 다음의 검증된 설정을 그대로 사용하는 것을 추천합니다:
dns: enable: true enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 nameserver: - 1.1.1.1 # Cloudflare - 8.8.8.8 # Google fallback: - https://1.1.1.1/dns-query - https://8.8.8.8/dns-query
핵심: fake-ip 모드는 응답이 빠르고 호환성이 좋습니다. nameserver는 일반 도메인 해석을 담당하고, fallback은 암호화된 DNS로 해외 도메인의 오염을 방지합니다.
포트 및 자주 쓰는 설정
| 필드 | 설명 | 추천 값 |
|---|---|---|
mixed-port | HTTP와 SOCKS5가 공유하는 혼합 포트 | 7890 |
mode | 프록시 모드: rule / global / direct | rule |
allow-lan | 같은 네트워크의 다른 기기가 이 클라이언트를 통해 인터넷을 사용할 수 있도록 허용 | false(필요 시 활성화) |
log-level | 로그 레벨, 문제 해결 시 높게 설정 | info |
external-controller | 제어판 API 주소 | 127.0.0.1:9090 |
allow-lan을 활성화하면 같은 Wi-Fi에 있는 스마트폰이나 TV도 프록시 주소를 "컴퓨터 IP:7890"으로 지정하면 Clash를 경유해 인터넷을 사용할 수 있습니다. 각 기기에 따로 설치할 필요가 없습니다.
전체 예시
위의 모든 조각을 합치면 바로 실행 가능한 최소 설정이 완성됩니다. 노드 정보만 교체하면 사용할 수 있습니다:
mixed-port: 7890 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] fallback: [https://1.1.1.1/dns-query] proxies: - name: "홍콩 01" type: ss server: hk01.example.com port: 8388 cipher: aes-256-gcm password: "your-password" proxy-groups: - name: "노드 선택" type: select proxies: [홍콩 01] rules: - DOMAIN-KEYWORD,adservice,REJECT - GEOIP,KR,DIRECT - MATCH,노드 선택
systemctl restart mihomo를 실행하세요. YAML은 들여쓰기에 민감하므로 오류가 발생하면 먼저 Tab과 스페이스가 혼용되었는지 확인하세요.