1. Clash는 무엇을 하는 소프트웨어인가
Clash는 규칙(rule)에 따라 패킷·연결 단위로 경로를 나누는 오픈소스 네트워크 프록시 코어(Core)입니다. Go 언어로 작성되었고, 디바이스에서 나가는 트래픽을 받아 들인 뒤「이 연결은 중계 노드로」「이건 직접 연결」「이건 차단」처럼 정책에 맞게 보냅니다. 브라우저 한정 확장 프로그램이나, 단순히 시스템 전체를 한 줄로 묶는 VPN과는 접근 방식이 다릅니다. 사용자가 허용한 범위 안에서 어떤 앱·어떤 도메인이 어떤 경로를 타는지 설계할 수 있다는 점이 큰 매력입니다.
화면 없이 동작하는 명령행 프로그램이라는 사실만 기억해두면 구조 이해가 쉬워집니다. 기본적인 구동 정보는 모두 설정 파일(config.yaml)에 담고, Windows의 Clash for Windows나 macOS의 ClashX, Android의 CMFA처럼 익숙한 앱 이름들은 코어를 감싼 그래픽 셸(shell)에 가깝습니다. 따라서 업데이트 이슈를 볼 때도 「GUI 버전」과 「내가 쓰는 코어(Mihomo 등) 버전」을 구분해서 보는 편이 정확합니다.
2. 트래픽은 어떻게 코어에 들어오나
대표적인 방식은 세 가지로 정리할 수 있습니다.
- HTTP/HTTPS 프록시: 로컬 포트(예:
7890)를 열어 두고, 브라우저나 앱이 수동으로 프록시 주소를 지정합니다. 설정이 단순하고 디버깅에 유리합니다. - SOCKS5: 기본 포트 예시는
7891등으로 자주 쓰이며, HTTP보다 넓은 종류의 트래픽을 실을 수 있습니다. 게임·일부 데스크톱 앱과 궁합이 좋은 경우가 많습니다. - TUN 모드: 가상 네트워크 인터페이스를 만들어 OS 수준에서 TCP/UDP를 넓게 가로챕니다. 앱마다 프록시를 넣지 않아도 되므로 「투명에 가까운」 경험을 주지만, 권한·방화벽·다른 VPN과의 충돌을 함께 고려해야 합니다.
한번 코어 안으로 들어온 연결은 규칙 엔진에 순서대로 질문을 받습니다. 여기서 맞는 항목이 나오면 곧바로 해당 아웃바운드(Outbound)로 넘깁니다. 아웃바운드에는 특정 중계 노드·직결(DIRECT)·거부(REJECT) 등이 올 수 있고, 그룹으로 묶인 선택형 프록시(Select, URL-Test 등)도 규칙의 목적지가 됩니다. 이렇게 「입구 방식」(로컬 프록시/TUN)과 「판단」(규칙)과 「출구」(노드)가 분리되어 있어 기능을 조합하기 좋습니다.
3. 규칙 엔진이 Clash의 심장인 이유
규칙 한 줄은 대개 다음 형태를 따릅니다.
규칙종류, 인자, 대상 아웃바운드 이름
대표 규칙 종류만 표로 요약했습니다.
| 종류 | 의미 | 예시 |
|---|---|---|
DOMAIN | 도메인 정확 일치 | DOMAIN,google.com,Proxy |
DOMAIN-SUFFIX | 접미사 일치(하위 도메인 포함) | DOMAIN-SUFFIX,google.com,Proxy |
DOMAIN-KEYWORD | 도메인 문자열에 키워드 포함 시 | DOMAIN-KEYWORD,google,Proxy |
IP-CIDR | IPv4·IPv6 대역 매칭 | IP-CIDR,8.8.8.0/24,DIRECT |
GEOIP | 지리적 국가·지역 코드 기준 | GEOIP,KR,DIRECT |
MATCH | 위에서 안 잡힌 나머지 전부(맨 아래에 둠) | MATCH,Proxy |
규칙은 위에서 아래로 읽히며, 처음으로 성공한 한 줄만 적용됩니다. 그래서 자주 맞는 조건을 위에 두고, 넓은 조건은 아래로 내리는 식의 정렬이 성능과 예측 가능성 모두에 도움이 됩니다. 실제 운용에서는 구독 제공자가 만든 규칙 세트를 그대로 쓰거나 일부만 덮어쓰는 경우가 많으니, 위 표는 「로그를 읽을 때 무슨 뜻인가」를 위한 최소 사전으로 삼으면 충분합니다.
4. 플랫폼별로 흔히 쓰는 GUI 클라이언트
운영체제마다 익숙한 선택지가 조금씩 다릅니다. 아래는 입문자가 검색할 때 자주 마주치는 이름입니다.
- Windows: Clash for Windows(CFW), Clash Verge Rev, Mihomo Party 등
- macOS: ClashX Pro, Clash Verge Rev 등
- Android: ClashMeta for Android(CMFA) 등
- iOS: Stash, Shadowrocket 등(Clash 형식 프로필을 지원하는 앱)
- Linux: Clash Verge Rev, Mihomo Party, 또는 코어만 직접 실행
5. 아주 작은 config.yaml 예시
구조만 가늠하려면 다음 정도의 최소 예시로도 충분합니다.
mixed-port: 7890 # merged HTTP + SOCKS5 listen port
allow-lan: false
mode: rule # rule | global | direct
proxies:
- name: "node-a"
type: ss
server: 1.2.3.4
port: 8388
cipher: aes-256-gcm
password: "your-secret"
proxy-groups:
- name: "Proxy"
type: select
proxies:
- node-a
rules:
- GEOIP,KR,DIRECT
- MATCH,Proxy
실사용에서는 공급자 구독 URL을 클라이언트에 입력해 자동 생성·갱신하는 방식이 일반적입니다. 구독 변환 도구를 쓰면 여러 형식을 Clash 호환 프로필로 합치기도 쉽습니다. 직접 YAML을 많이 적을 필요는 없지만, 백업·튜닝을 위해 파일 구조를 아는 것은 여전히 큰 도움이 됩니다.
6. 빠져나오기 어렵게 만든 개념을 정리하며
Clash와 Mihomo를 한 문장으로 압축하면 「프록시 프로토콜·선택 가능한 노드·규칙 기반 라우팅을 모듈로 쌓아 올린 로컬 트래픽 스케줄러」에 가깝습니다. 순정 VPN 클라이언트가 제공하는 선택지가 제한적인 반면, Clash 계열은 도메인·국가·응급 패턴을 조합해「업무 트래픽은 직결, 특정 SaaS만 중계」 같은 시나리오를 코드에 가깝게 표현할 수 있습니다. 반대로 학습 부담이 있다는 단점도 있어, 처음에는 GUI로 구독만 연결하고 로그 창으로 규칙 매칭을 확인하는 순서가 안전합니다.
막연한 「원클릭 우회 앱」에 비해 Clash 계열은 무엇이 프록시를 거치는지 사용자에게 더 많이 공개되어 있습니다. 이 투명성 덕분에 문제가 생겼을 때 원인 분리도 쉽고, 불필요한 전 구간 터널링으로 인한 속도 저하나 호환 문제를 줄이기도 좋습니다. 이미 브라우저 전용 확장만 쓰다가 다른 앱까지 같은 정책을 적용하고 싶다면, 로컬 프록시나 TUN을 묶어 주는 코어 방식의 이점을 체감하기 쉽습니다.
자주 묻는 질문
Clash와 상용 VPN의 차이는 무엇인가요?
Clash는 기본적으로 기기 안에서 규칙에 따라 분기하는 프록시 엔진입니다. 회사 이름이 새겨진 VPN 앱이 흔히 제공하는「앱 하나로 전 구간 연결」과 UI는 비슷해 보여도, 설정의 세밀함과 호환 포맷 측면에서 철학이 다릅니다. 노드 제공자만 있고 규칙을 직접 다듬고 싶다면 Clash 계열이 유리한 경우가 많습니다.
Mihomo를 왜 들어야 하나요?
구버전 코어가 멈춘 뒤에도 새 프로토콜·버그 수정이 필요한 사용자가 많아, Mihomo 쪽 릴리스를 추적하는 것이 사실상 표준에 가깝습니다. 클라이언트 설명에 Meta·Mihomo 표기가 있는지 확인해 보세요.
보안과 합법 사용은 어떻게 지켜야 하나요?
프록시는 도구일 뿐이며, 연결 대상 노드와 현지 법규·서비스 약관을 스스로 준수해야 합니다. 공용 Wi-Fi 등에서 패킷이 중계되는 구조임을 이해하고, 신뢰할 수 있는 구독·노드만 사용하고 주기적으로 클라이언트를 업데이트하는 것이 좋습니다.
동일한 주제라도 브라우저 확장·시스템 VPN·SSR 단일 클라이언트처럼 겉으로 비슷해 보여도 내부 제어 깊이가 다른 경우가 많습니다. Clash·Mihomo는 규칙과 그룹을 통해 경로를 쪼개고, 플랫폼 간에도 같은 프로필 패턴을 유지하기 쉬워 장기 사용자에게 특히 편합니다. 우회만 되면 된다는 수준이 아니라 네 동작 원리까지 알고 싶다면, 아래 튜토리얼과 다운로드로 이어져 있는 공식 안내에서 단계별로 따라가 보시길 권합니다.