Clash 오픈소스 프로젝트 관계도: 원본 코어·Meta·mihomo와 GUI 클라이언트 비교

원본 Clash, Clash Meta, mihomo의 계보와 Verge Rev 같은 데스크톱 클라이언트의 코어 연동 방식 및 선택 기준을 정리합니다.

코어·클라이언트·설정의 역할 구분

Clash 데스크톱 클라이언트를 고르기 전에 세 가지를 구분해야 합니다. 연결을 처리하는 코어, 설정 화면을 제공하는 GUI 클라이언트, 노드와 규칙을 정의하는 설정 파일입니다. 이름에 Clash가 들어간다고 같은 코어를 사용하거나 설정 파일을 완전히 똑같이 읽을 수 있는 것은 아닙니다.

코어는 프록시 포트를 열고 설정을 파싱하며 규칙을 적용하고 아웃바운드 연결을 생성하는 등 DNS를 포함한 네트워크 처리를 담당합니다. GUI 클라이언트는 구독 가져오기, 프록시 그룹 선택, 시스템 프록시 설정, 백그라운드 서비스, 로그 표시를 관리합니다. 설정 파일에는 코어가 실행할 프록시 노드, 프록시 그룹, 규칙, DNS 설정이 담깁니다.

계층대표 항목주요 역할
네트워크 코어원본 Clash, mihomoYAML 파싱, 규칙 적용, 네트워크 연결 처리
GUI 클라이언트Clash Verge Rev설정 관리, 코어 실행, 데스크톱 조작 기능 제공
설정 파일config.yaml, 구독 응답 내용노드, 프록시 그룹, DNS, 규칙 정의
제어 인터페이스external-controllerGUI에 프록시 선택, 연결 기록, 로그 등의 기능 제공

원본 Clash·Meta·mihomo의 관계

원본 Clash: 생태계의 출발점

원본 Clash는 일반적으로 Dreamacro/Clash 프로젝트의 오픈소스 코어를 가리킵니다. Go로 작성됐으며 널리 쓰이는 YAML 설정 구조와 제어 인터페이스를 형성했습니다. 원 프로젝트는 2023년 11월 공개 유지보수를 중단했습니다. 기존 프로그램과 설정은 여전히 남아 있지만, 오래된 설치 파일을 계속 업데이트와 수정을 제공받는 최신 버전으로 간주해서는 안 됩니다.

과거의 Clash Premium도 구분해야 합니다. Clash Premium은 ‘모든 오픈소스 Clash 코어’를 통칭하는 말이 아니며, mihomo의 이전 이름도 아닙니다. 예전 가이드 중에는 Premium을 전제로 한 기능이 있으므로, 설정 필드 하나만 보고 원본 오픈소스 코어에서 반드시 지원한다고 판단해서는 안 됩니다.

Clash Meta: 원본을 확장한 포크

Clash Meta는 원본 Clash 코드를 바탕으로 발전하며 프로토콜, DNS, 라우팅 등의 기능을 확장했습니다. 이전 문서에서 말하는 ‘Meta 코어’나 ‘Clash.Meta’는 대개 이 프로젝트 계열을 뜻하며, 별도의 구독 형식을 가리키는 것은 아닙니다. 구독에 ‘Meta 필요’라고 표시돼 있다면 보통 원본 구형 코어에 구현되지 않은 기능을 설정에서 사용한다는 뜻입니다.

mihomo: Meta 프로젝트의 후속 이름

Clash Meta는 이후 mihomo로 이름을 바꿨으며, 현재 자주 사용되는 프로젝트 경로는 MetaCubeX/mihomo입니다. 따라서 Meta와 mihomo는 서로 무관하거나 순서대로 모두 실행해야 하는 두 코어가 아닙니다. 클라이언트 메뉴, 구독 안내, 파일명, 가이드에는 이전 이름이 남아 있을 수 있으므로 저장소 주소와 버전 출력도 함께 확인하세요.

코어 프로젝트의 발전 과정(간략)
Dreamacro/Clash
└─ Clash.Meta(확장 포크)
   └─ mihomo(후속 이름, MetaCubeX/mihomo)

연동 관계(코드 상속 관계가 아님)
Clash Verge Rev 등 GUI 클라이언트
├─ 구독 및 로컬 설정 관리
├─ mihomo 실행·중지·재시작
└─ 제어 인터페이스로 상태 조회 및 프록시 전환

이 관계도는 프로젝트의 발전 과정과 실행 시 각 구성요소의 역할을 보여줍니다. 서로 다른 포크의 모든 기능이 일대일로 대응한다는 뜻은 아닙니다. 설정 호환 여부는 클라이언트 이름에 ‘Clash’가 있는지만 볼 것이 아니라 현재 코어 버전에서 지원하는 필드와 프로토콜을 확인해야 합니다.

Verge Rev 같은 GUI 클라이언트의 코어 연동 방식

Clash Verge Rev는 Tauri 기술 스택을 사용하는 데스크톱 GUI 클라이언트 프로젝트이며, mihomo와는 별개의 프로젝트입니다. 설치 파일에는 보통 코어가 함께 제공됩니다. 클라이언트가 실행용 설정을 생성하고 코어 프로세스를 시작한 뒤, 제어 인터페이스를 통해 프록시 그룹, 연결 기록, 로그를 표시합니다. 클라이언트 버전과 코어 버전은 각각 따로 관리되므로, 하나를 업데이트해도 다른 하나까지 반드시 함께 업데이트되는 것은 아닙니다.

  1. 설정 가져오기: 구독 주소나 로컬 YAML을 저장하고 설정 내용을 읽습니다.
  2. 실행 매개변수 정리: 설정 덮어쓰기, 병합 또는 스크립트로 포트, DNS, 규칙을 조정할 수 있습니다.
  3. 코어 실행: 코어가 최종 생성된 설정을 읽어 로컬 포트를 열고 규칙을 불러옵니다.
  4. GUI 제어: 클라이언트가 제어 인터페이스를 호출해 프록시 전환, 설정 재로드, 로그 표시를 처리합니다.
  5. 시스템 연동: 필요에 따라 시스템 프록시를 설정하거나 서비스와 권한 기능을 통해 TUN을 지원합니다.

GUI·웹 패널·코어는 서로 다른 구성요소

웹 제어 패널은 주로 제어 인터페이스를 통해 실행 중인 코어를 관리하며, 일반적으로 데스크톱 설치, 시작 프로그램 등록, 권한 서비스까지 모두 담당하지는 않습니다. 패널 페이지가 열려 있어도 로컬 코어가 실행 중이라는 뜻은 아닙니다. 반대로 코어는 명령줄에서 실행하면서 데스크톱 창 없이 사용할 수도 있습니다.

이전 클라이언트도 각각 구분해 판단해야 합니다. Clash for Windows, 구형 Clash Verge, Clash Verge Rev는 한 프로젝트의 버전 세 가지가 아닙니다. 이름이 비슷하다고 개발·유지보수 팀도 같다고 볼 수 없으며, 오픈소스 코어를 호출한다고 해서 GUI 클라이언트의 모든 코드가 같은 라이선스를 따른다는 뜻도 아닙니다.

설정 호환성: 네 가지 확인 항목

대부분의 설정은 proxies, proxy-groups, rules 같은 최상위 구조를 사용하지만, ‘YAML을 파싱할 수 있다’고 해서 설정 전체를 실행할 수 있는 것은 아닙니다. 구형 코어는 새 프로토콜, 다른 규칙 문법, 새 DNS 필드를 만나면 오류를 내거나 예상과 다르게 동작할 수 있습니다.

  • 노드 유형: VLESS, Hysteria2, TUIC 등의 지원 여부는 mihomo의 구체적인 버전을 확인해야 합니다. 이를 근거로 구형 원본 코어도 지원한다고 판단할 수는 없습니다.
  • 규칙과 규칙 세트: rule-providers의 형식, 동작 유형, 파일 내용이 서로 맞아야 합니다. 도메인 목록을 완전한 규칙 목록처럼 그대로 사용할 수는 없습니다.
  • DNS 설정: fake-ip, 상위 DNS, 라우팅 관련 설정은 현재 코어 문서에서 확인하세요. 오래된 가이드의 설정을 통째로 복사하지 마세요.
  • 클라이언트 덮어쓰기: 구독 원본을 수정해도 반영되지 않는다면 최종 실행 설정이 덮어써졌거나 구독 업데이트가 변경 내용을 되돌렸을 수 있습니다.

포트 예시: 프록시 포트와 제어 포트는 구분해서 사용

아래 설정 조각은 용도를 구분하기 위한 예시일 뿐, 단독으로 연결할 수 있는 완전한 설정이나 모든 클라이언트의 기본값을 뜻하지 않습니다. 예시에서 7890은 HTTP 및 SOCKS 프록시용이고 9090은 제어 인터페이스용으로, 두 포트의 용도가 다릅니다.

mixed-port: 7890
allow-lan: false
mode: rule
external-controller: 127.0.0.1:9090

브라우저나 명령줄 프로그램은 프록시 포트에 연결해야 하며, 인터넷 프록시 주소에 9090을 입력하면 안 됩니다. 제어 인터페이스는 로컬에서만 접근할 수 있도록 제한하는 것이 좋습니다. 원격 제어가 필요하다면 인증과 접근 제한을 별도로 설정하세요. GUI 연결을 위해 인터페이스를 LAN이나 인터넷에 그대로 공개하지 마세요.

시스템 프록시와 TUN: GUI와 코어를 따로 확인

시스템 프록시는 보통 운영체제의 프록시 설정을 로컬 리스닝 포트로 연결합니다. 해당 설정을 따르는 브라우저와 앱은 프록시를 통해 요청을 보내지만, 모든 앱이 시스템 프록시를 사용하는 것은 아닙니다. 규칙 모드는 코어에 들어온 연결의 경로를 결정할 뿐, 모든 프로그램이 코어를 거치도록 강제하지는 않습니다.

TUN은 가상 네트워크 인터페이스와 라우팅을 통해 트래픽을 처리하며 DNS, 권한, 시스템 네트워크 환경도 관련됩니다. mihomo는 필요한 코어 기능을 제공하고, 클라이언트는 스위치, 서비스 설치, 권한 연동을 담당합니다. GUI에 TUN 버튼이 있다고 해서 서비스, 라우팅, DNS가 모두 정상 작동한다는 뜻은 아닙니다.

증상우선 확인할 항목가능한 원인
창은 열렸지만 프록시 포트가 열리지 않음코어 시작 로그, 포트 충돌GUI 프로세스가 정상이어도 코어가 정상 실행된 것은 아닙니다
브라우저는 되지만 특정 앱은 프록시를 사용하지 않음앱의 프록시 설정, 연결 기록앱이 시스템 프록시 설정을 따르지 않을 수 있습니다
TUN을 켠 뒤 도메인 접속에 문제가 생김DNS 설정, 라우팅, 서비스 권한노드 문제로 바로 단정할 수 없습니다
클라이언트를 바꾼 뒤 규칙 동작이 달라짐코어 버전, 최종 설정, 덮어쓰기 순서같은 구독이어도 실행 설정은 다르게 생성될 수 있습니다

처음에는 시스템 프록시부터 사용해 구독, 프록시 그룹, 프록시 포트가 정상인지 확인한 뒤 앱의 필요에 따라 TUN을 켜세요. 노드 연결 문제와 시스템 트래픽 처리 문제를 분리할 수 있어 여러 변수를 한꺼번에 바꾸는 일을 피할 수 있습니다.

클라이언트 선택 및 버전 확인 절차

클라이언트와 코어 버전을 각각 확인한 뒤 기능 비교

Clash Verge Rev를 예로 들면, 먼저 ‘설정’ → ‘정보’에서 클라이언트 버전을 확인한 다음 ‘설정’의 코어 관련 메뉴나 시작 로그에서 코어 이름과 버전을 확인할 수 있습니다. 메뉴 위치는 배포판에 따라 다를 수 있습니다. 코어 버전을 따로 확인하는 메뉴가 없다면 해당 버전의 로그와 프로젝트 안내를 참고하세요. ‘최신 버전’이라고만 적지 말고 전체 버전 번호를 기록해야 합니다.

사용 중인 코어 실행 파일을 찾았다면 터미널에서 버전을 확인할 수 있습니다. 아래는 Windows PowerShell 명령 예시입니다. 파일명은 실제 설치 파일에 맞춰야 하며, GUI 클라이언트의 메인 프로그램을 코어로 착각해 실행하지 마세요.

# 실제 코어 파일이 있는 디렉터리에서 실행
.\mihomo.exe -v

# 사용할 YAML 설정을 검사
.\mihomo.exe -t -f .\config.yaml

설정 검사를 통해 문법과 일부 필드 오류를 찾을 수 있지만, 노드 연결 여부나 시스템 프록시 또는 TUN의 트래픽 처리 여부까지 확인할 수 있는 것은 아닙니다. 설정에서 상대 경로, 외부 규칙 세트, 프로바이더 파일을 참조한다면 검사할 때 해당 작업 디렉터리와 관련 파일도 사용해야 합니다.

사용 환경에 따라 선택 순서 정하기

  1. 일반적인 데스크톱 사용: 먼저 운영체제와 프로세서 아키텍처를 확인한 뒤, 유지보수가 계속되고 코어 상태를 명확하게 보여주는 GUI 클라이언트를 선택하세요.
  2. 최신 프로토콜이 포함된 설정: 필요한 mihomo 버전을 먼저 확인한 다음 클라이언트에 실제로 포함된 버전을 확인하세요. GUI 기능만 비교해서는 안 됩니다.
  3. TUN 사용: 현재 시스템의 서비스 설치, 관리자 권한, 알려진 네트워크 호환성 문제를 확인하고 TUN을 끌 수 있는 복구 방법을 마련하세요.
  4. 서버 또는 자동화: 코어를 직접 실행하고 설정, 프로세스, 제어 인터페이스를 별도로 관리할 수 있습니다. 전체 데스크톱 GUI를 설치할 필요는 없습니다.
  5. 기존 설정 이전: 새 클라이언트에서 설정 파싱, 프록시 선택, DNS를 먼저 확인한 뒤 시작 프로그램 설정과 시스템 트래픽 처리 설정을 이전하세요.

오픈소스 정보를 확인할 때는 코어와 클라이언트 저장소의 라이선스를 각각 살펴봐야 합니다. mihomo는 GPL-3.0 라이선스를 사용하지만, 이것만으로 GUI 클라이언트나 설치 파일에 포함된 구성요소 및 배포 조건까지 확인되는 것은 아닙니다. 프로젝트명, 저장소 주소, 클라이언트 버전, 코어 버전을 서로 맞춰 확인하세요.

이전 후 최소 점검 목록

설치하거나 교체한 뒤에는 먼저 정상 작동이 확인된 설정으로 기본 기능을 점검하세요. 시스템 프록시, TUN, 복잡한 덮어쓰기, 자동 전환을 처음부터 한꺼번에 켜지 마세요. 설정을 한 번에 하나씩 추가해야 로그에서 원인을 찾기 쉽습니다.

  • 코어가 실행 중인지, 실제 리스닝 포트가 앱에 입력한 포트와 일치하는지 확인하세요. 예: 127.0.0.1:7890.
  • 구독이 정상적으로 파싱됐는지, 프록시 그룹에 노드가 표시되는지, 삭제된 프록시를 참조하고 있지는 않은지 확인하세요.
  • 규칙 모드에서 요청을 한 번 보내고 연결 기록에 표시된 적용 규칙과 최종 아웃바운드 경로를 확인하세요.
  • 로컬 규칙과 덮어쓰기 내용이 최종 실행 설정에 반영됐는지 확인한 뒤 구독을 업데이트하고 변경 사항이 예상대로 유지되는지 점검하세요.
  • 마지막으로 클라이언트를 재시작한 뒤 설정이 복구되는지, 필요에 따라 켠 시스템 프록시나 TUN이 정상 작동하는지 확인하세요.

설치와 설정 가져오기를 순서대로 진행하려면 사용 가이드를 확인하세요. 포트, 구독, 시스템 트래픽 처리 문제가 있다면 도움말 센터를 참고하세요. 프록시 그룹이나 규칙 세트 같은 용어가 익숙하지 않다면 먼저 용어 설명을 읽어보세요.

Clash 다운로드운영체제에 맞는 설치 파일 선택