핵심 원리 · 심층 분석

Clash는 어떻게 작동하나요?

트래픽 유입부터 규칙 일치, 프로토콜 아웃바운드까지의 전체 프록시 링크를 분해하여 설명합니다. 단순히 구성을 붙여넣는 것이 아니라 규칙 분할, TUN 투명 프록시, DNS 유출 방지 뒤에 숨겨진 메커니즘을 진정으로 이해하도록 도와줍니다.

Clash에서 요청은 어떻게 처리되나요?

브라우저에서 URL을 열 때 트래픽이 직접 전송되지 않습니다. Clash는 로컬에서 하나 이상의 포트를 수신하고 모든 아웃바운드 연결을 가로채며 규칙 엔진의 판단에 따라 「직접 연결」 또는 「프록시 아웃바운드」를 결정합니다.

전체 링크는 5단계로 나뉘며 각 단계마다 Clash의 명확한 개입 지점이 있습니다.

  1. 트래픽 가로채기—응용 프로그램이 연결을 시작하면 시스템 프록시 또는 TUN 가상 네트워크 카드가 트래픽을 Clash 프로세스로 전달합니다.
  2. DNS 파싱—Clash 내장 DNS 모듈이 개입하여 구성에 따라 Fake-IP 또는 실제 IP 파싱을 결정합니다.
  3. 규칙 일치rules 목록에 따라 도메인, IP, 프로세스 이름 등의 조건을 위에서 아래로 하나씩 비교합니다.
  4. 정책 그룹 스케줄링—규칙에 일치하면 해당 정책 그룹(Proxy / DIRECT / REJECT)에 전달하여 처리합니다.
  5. 프로토콜 아웃바운드—선택한 노드의 프로토콜(SS / VMess / Trojan...)을 사용하여 암호화된 전송을 완료합니다.

Clash 규칙 엔진: 우선순위, 일치 유형 및 실행 순서

규칙 엔진은 Clash의 가장 핵심적인 기능입니다. rules 목록의 첫 번째 항목부터 마지막까지 한 줄씩 비교합니다. 가장 먼저 일치하는 규칙이 즉시 적용되며 후속 규칙은 더 이상 실행되지 않습니다. 순서가 모든 것을 결정합니다.

도메인 규칙

가장 흔히 사용되는 유형으로 도메인 또는 접미사 수준까지 정확하여 특정 웹사이트의 분할에 적합합니다.

DOMAINgoogle.comProxy
DOMAIN-SUFFIXgithub.comProxy
DOMAIN-KEYWORDyoutubeProxy
  • DOMAIN: 정확히 일치, 전체 도메인 이름이 일치하는 경우에만 적용됩니다.
  • DOMAIN-SUFFIX: 접미사 일치, 모든 서브도메인에 동시에 적용됩니다.
  • DOMAIN-KEYWORD: 키워드 일치, 도메인 이름에 해당 단어가 포함된 경우 적용됩니다.

IP / 지리적 규칙

대상 IP 주소 또는 GeoIP 데이터베이스 판단을 기반으로 하며 「국내 직접 연결, 해외 프록시」의 핵심 규칙입니다.

IP-CIDR192.168.0.0/16DIRECT
IP-CIDR6fe80::/10DIRECT
GEOIPCNDIRECT
  • IP-CIDR: IPv4 서브넷 정확히 일치.
  • IP-CIDR6: IPv6 서브넷 정확히 일치.
  • GEOIP: Country.mmdb 라이브러리를 호출하여 귀속지를 조회합니다.

프로세스 / 포트 규칙

응용 프로그램 프로세스 이름이나 포트 번호에 따라 트래픽을 라우팅하며 특정 소프트웨어(예: 개발 도구, 게임 클라이언트)의 출구를 별도로 구성하는 데 적합합니다.

PROCESS-NAMEchromeProxy
SRC-PORT7890DIRECT
DST-PORT443Proxy
  • PROCESS-NAME: 프로세스 이름으로 일치(macOS / Windows에서 더 잘 지원됨).
  • DST-PORT: 대상 포트로 일치, 일반적으로 80 / 443에 사용됩니다.

규칙 세트 (RULE-SET)

수백 또는 수천 개의 규칙을 원격 구독 파일로 패키징하고 클라이언트가 정기적으로 업데이트를 가져오는 대규모 라우팅 솔루션의 표준 관행입니다.

# rule-providers가 규칙 세트 정의
RULE-SETgfwProxy
RULE-SETcn_domainDIRECT
  • 규칙 세트는 YAML / 텍스트 형식을 지원합니다.
  • interval을 설정하여 정기적인 자동 업데이트가 가능합니다.
  • 커뮤니티에서 흔히 사용됨: Loyalsoldier / blackmatrix7 등에 의해 유지 관리되는 규칙 세트.

규칙 순서가 라우팅 결과를 결정함

규칙은 위에서 아래로 순차적으로 일치시킵니다. 첫 번째 일치가 적용되고 후속 규칙은 실행되지 않습니다. 흔한 실수: GEOIP 앞에 MATCH,DIRECT를 두면 모든 트래픽이 직접 연결됩니다. 권장 순서:

  1. 로컬 / 사설 주소(IP-CIDR 192.168.0.0/16) → DIRECT
  2. 프록시가 명확히 필요한 도메인 / RULE-SET → Proxy 정책 그룹
  3. 직접 연결이 명확히 필요한 도메인 / RULE-SET → DIRECT
  4. GEOIP,CN,DIRECT—IP가 중국에 속하면 직접 연결.
  5. MATCH,Proxy—낙수 효과, 일치하지 않는 트래픽은 프록시 사용.

TUN 모드 vs 시스템 프록시: 차이점 및 사용 시나리오

Clash는 트래픽을 인계받는 두 가지 방법을 지원합니다. 잘못된 모드를 선택하는 것은 「일부 앱이 프록시를 사용하지 않는」 일반적인 근본 원인입니다.

시스템 프록시 모드
TUN 투명 프록시
원리
시스템에 HTTP/SOCKS5 프록시 주소를 등록하고 응용 프로그램이 해당 주소에 능동적으로 연결합니다.
가상 네트워크 카드를 생성하여 네트워크 계층에서 모든 IP 트래픽을 가로챕니다.
커버 범위
시스템 프록시 설정이 있는 앱(브라우저, 대부분의 앱)만 지원합니다.
명령줄 도구 및 게임 클라이언트를 포함한 모든 프로세스의 모든 아웃바운드 트래픽.
필요 권한
일반 사용자 권한
관리자 / root 권한 (가상 네트워크 카드 생성용)
사용 시나리오
일상적인 브라우징, 단순 프록시 필요
게임 가속, 명령줄 도구 프록시, 전역 트래픽 인계

TUN 모드 구성 다이어그램

config.yaml
tun:
  enable: true
  stack: system # or gvisor
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

stack 옵션: system은 고성능을 위해 시스템 네트워크 스택을 사용하고, gvisor 사용자 공간 네트워크 스택은 호환성이 더 좋습니다. Mihomo 커널은 mixed 혼합 모드도 지원합니다.

Clash DNS 작동 원리: Fake-IP, Redir-Host 및 DNS 유출 방지

DNS 유출은 프록시 사용자가 가장 간과하기 쉬운 보안 사각지대입니다. 트래픽은 프록시를 통과하지만 DNS 쿼리는 로컬 ISP로 평문 전송되어 방문하는 도메인이 노출될 수 있습니다. Clash는 이를 해결하기 위해 완벽한 내장 DNS 모듈을 갖추고 있습니다.

Fake-IP 모드

권장

Clash가 DNS 요청을 받으면 즉시 가짜 IP(예: 198.18.x.x)를 반환하여 앱이 가능한 한 빨리 연결을 시작할 수 있도록 합니다. 실제 DNS 파싱은 프록시 쪽으로 지연되어 로컬에서의 조기 도메인 노출을 방지합니다.

1 앱 질문: google.com의 IP는 무엇인가요?
2 Clash가 가짜 IP 198.18.0.1 반환
3 앱이 가짜 IP에 연결, Clash가 가로채서 실제 도메인 기록
4 노드 측에서 재해석하여 실제 서버에 연결
  • 더 빠른 연결(실제 DNS 응답을 기다릴 필요 없음)
  • 우수한 유출 방지, 도메인이 로컬 DNS를 거치지 않음
  • 규칙 엔진과 가장 매끄럽게 통합

Redir-Host 모드

호환 모드

실제 DNS 파싱이 먼저 로컬에서 완료되고 도메인이 실제 IP로 변환된 후 규칙 엔진에 전달되어 GEOIP 일치를 수행합니다. 호환성은 더 좋지만 DNS 쿼리 자체가 로컬 ISP에 유출될 위험이 있습니다.

1 앱 질문: google.com의 IP는 무엇인가요?
2 Clash가 업스트림 DNS에 실제 IP 쿼리
3 실제 IP 반환, 규칙 엔진이 IP를 사용하여 GEOIP 판단
4 규칙에 따라 직접 연결 또는 프록시 결정
  • 특수 네트워크 환경에서 더 나은 호환성
  • 실제 IP를 기반으로 하여 더 정확한 GEOIP 규칙 일치
  • DNS 쿼리가 로컬에서 발생하여 유출 위험 있음

DNS 구성 참조

config.yaml — dns 블록
dns:
  enable: true
  enhanced-mode: fake-ip # or redir-host
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 8.8.8.8
    - 114.114.114.114
  fallback: # used when GEOIP != CN
    - tls://1.1.1.1:853
    - https://dns.google/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

fallbackfallback-filter 연동: 도메인이 해외 IP로 파싱되면 오염을 방지하기 위해 암호화된 DoT / DoH 서버를 사용하여 자동으로 재해석합니다.

Clash가 지원하는 프록시 프로토콜: 원리 및 선택 조언

프로토콜은 트래픽 암호화 및 난독화 전략을 결정합니다. Clash는 기본적으로 여러 프로토콜을 지원하며 Mihomo(Clash Meta) 커널은 차세대 프로토콜에 대한 지원을 더욱 확장합니다.

Shadowsocks(SS)

클래식 & 안정

대칭 암호화(AES / ChaCha20)를 사용하여 트래픽을 암호화하여 심층 패킷 분석(DPI)에 저항하는 무작위 데이터처럼 보이게 합니다. 간단한 프로토콜 설계와 가장 광범위한 클라이언트 지원을 제공합니다.

암호화AES-256-GCM / ChaCha20-Poly1305
전송 계층TCP / UDP
주요 용도일상적인 프록시, 광범위한 노드, 입문자에게 적합

VMess

V2Ray 생태계

V2Ray 프로젝트에서 설계한 독점 프로토콜로 암호화 외에 타임스탬프 확인 및 난독화 기능을 추가합니다. WebSocket + TLS와 함께 사용하여 HTTPS 트래픽으로 위장할 수 있으며 강력한 차단 방지 기능이 있습니다.

암호화AES-128-GCM / ChaCha20-Poly1305
전송 계층TCP / WebSocket / gRPC / HTTP/2
주요 용도강력한 차단 환경, CDN과 잘 작동함

Trojan

TLS 난독화

프록시 데이터를 TLS 계층에서 직접 전송하여 추가 난독화 없이 일반 HTTPS와 똑같이 보이게 합니다. 서버는 프록시 특성을 더욱 숨기기 위해 실제 웹 응답도 제공합니다.

암호화TLS 1.3 (인증서 검증)
전송 계층TCP / WebSocket
주요 용도TLS 난독화 필요, HTTPS에 가장 가까운 트래픽 특성

Hysteria2

Mihomo 지원

QUIC(UDP) 기반의 차세대 고성능 프로토콜로 지연 시간이 길고 패킷 손실이 많은 환경(예: 국가 간 링크)에서 TCP 프로토콜보다 월등히 뛰어난 성능을 발휘합니다. 불안정한 네트워크 시나리오를 위해 설계되었습니다.

전송 계층QUIC (UDP 기반)
장점열악한 네트워크 환경에서 더 빠르고 패킷 손실에 강함
요구 사항Mihomo (Clash Meta) 커널 필요

TUIC

Mihomo 지원

마찬가지로 QUIC 기반이며 저지연 및 연결 재사용에 중점을 둡니다. 0-RTT 핸드셰이크 설계로 첫 패킷 지연을 줄여 응답 속도에 민감한 시나리오(예: 게임, 실시간 시청각)에 적합합니다.

전송 계층QUIC (UDP) + 0-RTT
장점매우 낮은 지연 시간, 높은 리소스 효율성
요구 사항Mihomo (Clash Meta) 커널 필요

WireGuard

Mihomo 지원

최소한의 코드와 간단한 감사를 제공하는 현대적인 VPN 프로토콜로 ChaCha20 + Poly1305 암호화를 사용하며 커널 수준 구현으로 매우 높은 성능을 제공합니다. Mihomo는 WireGuard를 아웃바운드 프로토콜로 지원합니다.

암호화ChaCha20-Poly1305 / Curve25519
전송 계층UDP
요구 사항Mihomo (Clash Meta) 커널 필요

정책 그룹 상세 설명: URL-Test 자동 속도, Fallback 장애 조치 및 부하 분산

정책 그룹은 규칙을 「패키징」하고 노드를 「스케줄링」하는 핵심 메커니즘입니다. 규칙에 일치하면 트래픽이 노드로 직접 전송되지 않고 정책 그룹으로 전송됩니다. 정책 그룹은 자동 속도 테스트 및 장애 조치와 같은 기능을 통해 사용할 노드를 결정합니다.

select · 수동 선택

사용자가 노드 목록에서 현재 사용할 노드를 수동으로 선택하며 일반적으로 클라이언트 인터페이스에 직접 표시됩니다. 출구를 정밀하게 제어하려는 사용자에게 적합합니다.

type: select
proxies: [HK-01, SG-02, JP-03]

url-test · 자동 최적 지연 시간

정기적으로 모든 노드에 HTTP 프로브 요청을 보내고 응답 지연 시간이 가장 낮은 노드를 자동으로 선택합니다. 지연 시간이 임계값을 초과할 때만 전환하여 빈번한 지터를 방지합니다.

type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50

fallback · 자동 장애 조치

순서대로 첫 번째 노드를 사용하며 건강 상태 확인에 실패하면 자동으로 두 번째 노드로 전환합니다. 안정성 보장이 필요한 시나리오에 적합합니다.

type: fallback
url: http://www.gstatic.com/generate_204
interval: 180

load-balance · 부하 분산

여러 노드가 번갈아 가며 트래픽을 처리하여 연결을 분산시키고 전체 처리량을 향상시킵니다. Mihomo는 동일한 세션이 동일한 노드를 사용하도록 일관된 해싱을 지원합니다.

type: load-balance
strategy: consistent-hashing
url: http://www.gstatic.com/generate_204

Clash 클래식 vs Mihomo (Clash Meta): 어떤 것을 사용해야 하나요?

Clash는 현재 두 개의 주요 브랜치가 있으며 일상적으로 혼용되지만 프로토콜 지원 및 TUN 향상 기능에서 큰 성능 차이가 있습니다.

Clash (클래식)

Dreamacro/clash
  • Shadowsocks / VMess / Trojan / SNELL
  • HTTP / SOCKS5 프록시
  • Rule / Global / Direct 모드
  • Fake-IP / Redir-Host DNS
  • TUN 모드 (기본)
  • Hysteria2 / TUIC / WireGuard
  • 향상된 TUN (gVisor / mixed 스택)
  • rule-providers 고급 기능
VS

Mihomo(Clash Meta)

metacubex/mihomo
  • Shadowsocks / VMess / Trojan / SNELL
  • Hysteria2 / TUIC / WireGuard / VLESS
  • Rule / Global / Direct / Script 모드
  • Fake-IP + fallback-filter 향상된 DNS
  • 향상된 TUN (system / gVisor / mixed)
  • rule-providers 원격 규칙 세트 구독
  • Sub-Rule 하위 규칙, GeoSite 데이터베이스
  • 다중 아키텍처: x86_64 / ARM / MIPS

결론: 신규 사용자는 타협 없이 더 완벽한 프로토콜 지원과 TUN 기능을 얻으려면 Mihomo(Clash Meta) 커널을 기반으로 하는 클라이언트(예: Clash Verge Rev, Mihomo Party, Clash Meta for Android)를 직접 선택해야 합니다. 클래식 Clash 커널 클라이언트는 여전히 안정적이지만 프로토콜 생태계의 지속적인 업데이트는 Mihomo 브랜치에 집중되어 있습니다.

핵심 원리 FAQ

Clash의 규칙 순서가 왜 그렇게 중요한가요?
규칙 엔진은 위에서 아래로 한 줄씩 일치시킵니다. 첫 번째 일치가 적용되고 후속 규칙은 실행되지 않습니다. 넓은 범위의 MATCH가 맨 위에 있으면 그 아래의 모든 규칙은 트리거되지 않습니다. 합리적인 순서는 다음과 같습니다: 로컬 네트워크 → 명시적 프록시 도메인 → 명시적 직접 연결 도메인 → GEOIP → MATCH 낙수 효과.
Fake-IP가 특정 응용 프로그램에서 문제를 일으킬 수 있나요?
일부 응용 프로그램(예: 특정 게임 및 LAN 서비스)은 198.18.x.x IP 범위를 특별하게 처리하여 이상 현상을 일으킬 수 있습니다. Clash는 fake-ip-filter 구성 항목을 제공하여 특정 도메인을 Fake-IP에서 제외하고 일반적인 DNS 파싱을 사용하도록 설정할 수 있습니다.
TUN 모드를 활성화한 후 시스템이 느려지는 이유는 무엇인가요?
TUN 모드는 모든 트래픽을 가로채고 사용자 공간에서 처리하므로 커널 네트워크 스택을 직접 통과하는 것보다 오버헤드가 추가됩니다. Mihomo의 system 스택은 gvisor보다 성능이 높습니다. 기기 성능이 부족한 경우 전역적으로 TUN을 활성화하는 대신 특정 앱에 대해 시스템 프록시를 활성화할 수 있습니다.
VMess와 Shadowsocks 중 어느 것이 더 안전한가요?
두 프로토콜 모두 암호화 수준(둘 다 AEAD 암호화 사용)에서는 비슷합니다. 차이점은 트래픽 특성에 있습니다. Shadowsocks는 특성이 상대적으로 단순한 반면, VMess는 WebSocket+TLS와 결합하여 일반 HTTPS로 완전히 위장할 수 있어 고강도 탐지 환경에서 식별 및 차단이 더 어렵습니다.
url-test 정책 그룹의 속도 테스트 URL 요구 사항은 무엇인가요?
속도 테스트 URL은 빠르고 안정적이어야 합니다. 일반적으로 Google의 http://www.gstatic.com/generate_204(빈 204 응답 반환) 또는 http://cp.cloudflare.com/generate_204가 사용됩니다. 국내 주소로 인한 오판을 방지하기 위해 프록시를 통해 접근 가능한 해외 주소를 사용하는 것이 좋습니다.
Country.mmdb란 무엇이며 얼마나 자주 업데이트해야 하나요?
Country.mmdb는 MaxMind GeoIP2 형식의 IP 귀속 데이터베이스입니다. GEOIP 규칙은 이 데이터베이스를 사용하여 IP 주소를 국가 코드로 매핑합니다. 1~3개월마다 업데이트하는 것이 좋습니다. 일부 클라이언트는 자동 업데이트를 지원합니다. Loyalsoldier와 같은 커뮤니티에서 유지 관리하는 정제된 버전을 통해 더 정확한 한국 IP 범위를 얻을 수 있습니다.

다음 단계: Clash 다운로드 및 설정

플랫폼에 맞는 클라이언트를 선택하고 3단계로 설치 및 구독 구성을 완료하여 지금 바로 지능형 분할을 경험하세요.