코어 아키텍처
Clash (Mihomo)는 Go 언어 기반으로 개발된 고성능 규칙 분산 프록시 코어 엔진으로, 그 아키텍처를 이해하면 더욱 정밀하고 효율적인 설정을 작성할 수 있습니다.
아키텍처 개요
Mihomo (구 Clash.Meta) 코어는 다음과 같은 몇 가지 핵심 하위 시스템이 협력하여 작동합니다:
mixed-portHTTP+SOCKS5 혼합 포트를 동시에 제공할 수 있습니다.rules각 연결에 대해 프록시를 사용할지 직접 연결할지 결정합니다. DOMAIN, IP-CIDR, GeoIP, PROCESS-NAME 등 20가지 이상의 매칭 조건을 지원하며, 일치하면 매칭을 중단합니다.external-controllerRESTful API를 노출하여 프록시 노드를 실시간으로 전환하고 트래픽 통계를 확인하며 설정을 새로 고칠 수 있습니다. Clash Dashboard, Yacd, MetaCubeXD 등 웹 제어 패널과 호환됩니다.트래픽 처리 흐름
애플리케이션에서 발생한 네트워크 요청이 최종적으로 Clash에 의해 전달되기까지 다음과 같은 처리 체인을 거칩니다:
198.18.x.x)를 할당하고, 애플리케이션이 이 가짜 IP로 연결을 시도하면 Clash 인바운드가 이를 식별하여 도메인을 복원한 후 규칙 엔진과 매칭합니다. 이를 통해 실제 IP가 로컬 애플리케이션에 노출되는 것을 방지하고 근본적으로 DNS 유출을 차단합니다.프록시 모드
Clash는 네 가지 작업 모드를 지원하며 설정 파일의 mode 필드 또는 클라이언트 인터페이스에서 전환할 수 있습니다:
에 따라 rules목록을 하나씩 매칭하여 각 연결에 대해 프록시를 사용할지 직접 연결할지 결정합니다.국내 웹사이트는 직접 연결하여 속도를 보장하고, 해외 웹사이트는 자동으로 프록시를 사용하여 속도와 개인정보 보호를 모두 고려하며, 대다수 사용자에게 가장 좋은 선택입니다.
mode: rule국내 트래픽을 포함한 모든 트래픽이 프록시 서버를 통해 전달됩니다. 일관된 출구 IP가 필요한 상황(예: 해외 계정 운영)에 적합하지만, 국내 접속 속도가 저하될 수 있습니다.
mode: global모든 트래픽이 프록시를 거치지 않고 직접 발신되며, 이는 프록시 기능을 끄는 것과 같습니다. 주로 프록시 자체가 연결에 영향을 주는지 확인하거나, 클라이언트를 종료하지 않고 일시적으로 프록시를 끌 때 사용합니다.
mode: directJavaScript를 사용하여 완전히 사용자 정의된 라우팅 로직을 작성합니다. 요청된 도메인, IP, 포트, 프로세스 이름 등 모든 속성에 접근하여 규칙 목록보다 훨씬 유연한 제어를 구현할 수 있습니다.
mode: script| 특성 | 시스템 프록시 (System Proxy) | TUN 모드 |
|---|---|---|
| 작동 계층 | 애플리케이션 계층 (Layer 7) | 네트워크 계층 (Layer 3) |
| 커버리지 범위 | 프록시를 지원하는 앱만 (브라우저 등) | 전체 트래픽 (게임, 명령줄, 모든 앱) |
| 필요한 권한 | 일반 사용자 권한 | 관리자 / root 권한 필요 |
| 설정 복잡도 | 간단함, 클라이언트에서 원클릭 활성화 | 네트워크 드라이버 설치 필요 (자동) |
| 권장 시나리오 | 일상적인 브라우저 웹 서핑 | 게임 가속, Steam, 전역 프록시 |
DNS 메커니즘
Clash는 DNS 쿼리를 정밀하게 제어하여 유출을 방지하고 더 정확한 분산을 구현하는 DNS 해석기가 내장되어 있습니다.
dns: enable: true enhanced-mode: fake-ip # fake-ip | redir-host fake-ip-range: 198.18.0.1/16 listen: 0.0.0.0:1053 nameserver: - https://doh.pub/dns-query # DoH 국내 - https://dns.alidns.com/dns-query fallback: - https://1.1.1.1/dns-query # DoH 해외 예비 - tls://8.8.8.8:853 fallback-filter: geoip: true geoip-code: CN
규칙 구문
Clash 규칙 시스템은 가장 강력한 기능 중 하나로, YAML 형식을 통해 각 트래픽의 흐름을 정밀하게 제어합니다.
규칙 형식
각 규칙은 세 부분으로 구성되며, 중간은 영문 쉼표,로 구분됩니다.
규칙은 위에서 아래 순서로하나씩 매칭되며, 첫 번째로 일치하는 항목에서 중단됩니다.어떠한 규칙도 일치하지 않으면 마지막 항목을MATCH 기본 정책으로 사용합니다.
규칙 유형 상세 설명
DOMAIN,www.google.com,PROXYDOMAIN-SUFFIX,google.com,PROXYDOMAIN-KEYWORD,googleapis,PROXYDOMAIN-REGEX,^(www\.)?google\.com$,PROXYno-resolve 매개변수를 추가하면 DNS 해석을 건너뛸 수 있습니다.IP-CIDR,192.168.0.0/16,DIRECT,no-resolveIP-CIDR6,2400:3200::/32,DIRECTGEOIP,CN,DIRECTGEOSITE,cn,DIRECTPROCESS-NAME,steam.exe,DIRECTPROCESS-PATH,/usr/bin/curl,PROXYtcphttp://udp。NETWORK,udp,REJECTDST-PORT,443,PROXYRULE-SET,gfw,PROXYMATCH,🚀 노드 선택🚀 노드 선택) 외에도 세 가지 기본 키워드가 있습니다:DIRECT— 프록시를 거치지 않고 직접 연결PROXY— 기본 프록시 사용(proxies의 첫 번째 노드를 사용하는 것과 동일)REJECT— 연결 거부 (광고 필터링에 자주 사용)
정책 그룹 (proxy-groups)
정책 그룹은 Clash 규칙 시스템의 핵심으로, 여러 노드를 서로 다른 경로 선택 동작을 가진 논리적 그룹으로 결합합니다.
type: selectinterval속도 측정 간격(초) 설정, tolerance전환 허용 오차(ms) 설정.type: url-testtype: fallbackconsistent-hashing(동일 도메인 고정 노드)와 round-robin(라운드 로빈)의 두 가지 전략이 있습니다.type: load-balancetype: relay전체 설정 예시
다음은 핵심 설정, 프록시 노드, 정책 그룹 및 규칙 목록을 포함한 전체 config.yaml 예시입니다.
# ── 기본 설정 ────────────────────────────────────── mixed-port: 7890 # HTTP + SOCKS5 혼합 포트 allow-lan: false mode: rule log-level: info external-controller: 127.0.0.1:9090 # ── DNS ────────────────────────────────────────── dns: enable: true enhanced-mode: fake-ip nameserver: - https://doh.pub/dns-query # ── 프록시 노드 ──────────────────────────────────── proxies: - name: 홍콩 01 type: vmess server: hk1.example.com port: 443 uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx alterId: 0 cipher: auto tls: true network: ws ws-opts: path: /ws headers: Host: hk1.example.com # ── 정책 그룹 ────────────────────────────────────── proxy-groups: - name: 🚀 노드 선택 type: select proxies: - ♻️ 자동 선택 - 홍콩 01 - DIRECT - name: ♻️ 자동 선택 type: url-test url: https://www.gstatic.com/generate_204 interval: 300 tolerance: 50 proxies: - 홍콩 01 # ── 규칙 목록 ──────────────────────────────────── rules: - GEOSITE,cn,DIRECT # 국내 도메인 직접 연결 - GEOIP,CN,DIRECT # 국내 IP 직접 연결 - DOMAIN-SUFFIX,local,DIRECT # 로컬 네트워크 직접 연결 - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve - MATCH,🚀 노드 선택 # 나머지 트래픽은 프록시 사용
프로토콜 지원 목록
Clash (Mihomo)는 20가지 이상의 주요 프록시 프로토콜을 기본적으로 지원하며, 대부분의 공항 구독 및 자체 구축 노드 솔루션과 호환됩니다.
지원 프로토콜 개요
전송 계층 옵션 (Transport)
VMess, VLESS, Trojan 등의 프로토콜은 하위 프로토콜 위에 다양한 전송 방식을 중첩하여 트래픽 위장 능력을 더욱 강화할 수 있습니다.
주요 프로토콜 비교
속도, 차단 저항 능력 및 설정 복잡도를 종합적으로 비교하여 귀하에게 가장 적합한 프로토콜을 선택하는 데 도움을 드립니다.
| 프로토콜 | 속도 | 차단 저항 | 설정 난이도 | 적합한 시나리오 | 추천도 |
|---|---|---|---|---|---|
| VLESS + Reality | 보통 | 자체 구축 노드 우선 순위 | 강력 추천 | ||
| Hysteria2 | 간단 | 취약 네트워크 / 고지연 환경 | 강력 추천 | ||
| Trojan | 간단 | 일상적인 인터넷 우회 주력 | 추천 | ||
| VMess + WS + TLS | 보통 | CDN 중계 시나리오 | 추천 | ||
| TUIC v5 | 보통 | 저지연 소형 패킷 시나리오 | 추천 | ||
| Shadowsocks | 초간단 | 공항 구독 / 입문 | 일반적 | ||
| WireGuard | 약간 어려움 | 기업용 VPN / Warp | 특정 시나리오 적용 |