입문 2026년 5월 10일

Clash란 무엇인가? 오픈소스 프록시 코어 한눈에 보기

네트워크 프록시를 처음 다룰 때 헷갈리는 「코어」「GUI」「구독」의 관계를 정리했습니다. Clash가 하는 일과 규칙 엔진의 역할만 이해하면, 이후 플랫폼별 설치 튜토리얼도 훨씬 따라가기 쉬워집니다.

Clash Mihomo 입문

1. Clash는 무엇을 하는 소프트웨어인가

Clash는 규칙(rule)에 따라 패킷·연결 단위로 경로를 나누는 오픈소스 네트워크 프록시 코어(Core)입니다. Go 언어로 작성되었고, 디바이스에서 나가는 트래픽을 받아 들인 뒤「이 연결은 중계 노드로」「이건 직접 연결」「이건 차단」처럼 정책에 맞게 보냅니다. 브라우저 한정 확장 프로그램이나, 단순히 시스템 전체를 한 줄로 묶는 VPN과는 접근 방식이 다릅니다. 사용자가 허용한 범위 안에서 어떤 앱·어떤 도메인이 어떤 경로를 타는지 설계할 수 있다는 점이 큰 매력입니다.

화면 없이 동작하는 명령행 프로그램이라는 사실만 기억해두면 구조 이해가 쉬워집니다. 기본적인 구동 정보는 모두 설정 파일(config.yaml)에 담고, Windows의 Clash for Windows나 macOS의 ClashX, Android의 CMFA처럼 익숙한 앱 이름들은 코어를 감싼 그래픽 셸(shell)에 가깝습니다. 따라서 업데이트 이슈를 볼 때도 「GUI 버전」과 「내가 쓰는 코어(Mihomo 등) 버전」을 구분해서 보는 편이 정확합니다.

2023년 이후에는 원본 Clash 코어 공개 유지보수가 사실상 중단되었고, 커뮤니티는 Mihomo(clash-meta) 계열을 주력으로 사용합니다. 본 사이트에서 안내하는 클라이언트 역시 이 흐름을 전제로 합니다.

2. 트래픽은 어떻게 코어에 들어오나

대표적인 방식은 세 가지로 정리할 수 있습니다.

한번 코어 안으로 들어온 연결은 규칙 엔진에 순서대로 질문을 받습니다. 여기서 맞는 항목이 나오면 곧바로 해당 아웃바운드(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-CIDRIPv4·IPv6 대역 매칭IP-CIDR,8.8.8.0/24,DIRECT
GEOIP지리적 국가·지역 코드 기준GEOIP,KR,DIRECT
MATCH위에서 안 잡힌 나머지 전부(맨 아래에 둠)MATCH,Proxy

규칙은 위에서 아래로 읽히며, 처음으로 성공한 한 줄만 적용됩니다. 그래서 자주 맞는 조건을 위에 두고, 넓은 조건은 아래로 내리는 식의 정렬이 성능과 예측 가능성 모두에 도움이 됩니다. 실제 운용에서는 구독 제공자가 만든 규칙 세트를 그대로 쓰거나 일부만 덮어쓰는 경우가 많으니, 위 표는 「로그를 읽을 때 무슨 뜻인가」를 위한 최소 사전으로 삼으면 충분합니다.

4. 플랫폼별로 흔히 쓰는 GUI 클라이언트

운영체제마다 익숙한 선택지가 조금씩 다릅니다. 아래는 입문자가 검색할 때 자주 마주치는 이름입니다.

대부분의 패키지는 다운로드 페이지에서 플랫폼별로 모아 두었습니다. 설치 후에는 동일한 구독 URL을 넣어 노드 목록을 받아오는 흐름이 대부분 비슷합니다.

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는 규칙과 그룹을 통해 경로를 쪼개고, 플랫폼 간에도 같은 프로필 패턴을 유지하기 쉬워 장기 사용자에게 특히 편합니다. 우회만 되면 된다는 수준이 아니라 네 동작 원리까지 알고 싶다면, 아래 튜토리얼과 다운로드로 이어져 있는 공식 안내에서 단계별로 따라가 보시길 권합니다.

설치부터 시작할까요?

플랫폼에 맞는 클라이언트를 받고 구독만 연결하면 몇 분 안에 프로필을 불러올 수 있습니다.