먼저 세 가지를 구분하세요: 코어, GUI 클라이언트, 설정 파일
‘Clash 다운로드’를 검색하면 코어 프로그램, 데스크톱 설치 파일, 모바일 앱이 함께 검색되는 경우가 많습니다. 이들은 서로 다른 종류입니다. 먼저 세 가지의 관계를 구분하면 버전 선택, 설정 오류, 마이그레이션 문제를 더 쉽게 파악할 수 있습니다.
- 코어: 연결을 받고 DNS를 조회하며 규칙을 적용하고 아웃바운드 연결을 설정합니다. mihomo가 이 계층에 해당하며, GUI 없이 독립적으로 실행할 수 있습니다.
- GUI 클라이언트: 구독 가져오기, 노드 선택, 로그 표시와 시스템 프록시 설정, 백그라운드 서비스 같은 플랫폼 기능을 담당합니다. Clash Verge Rev와 FlClash가 여기에 해당하며, 일반적으로 설치 파일에 사용할 수 있는 코어가 포함됩니다.
- 설정 파일: 코어가 사용할 포트와 노드, 트래픽 분기 규칙을 지정합니다. 클라이언트는 실행 전에 설정을 병합하거나 덮어쓰고 새로 생성할 수도 있습니다.
예를 들어 인터페이스의 ‘시스템 프록시’ 버튼은 보통 운영체제의 프록시 설정을 변경합니다. 반면 mixed-port: 7890은 코어에서 HTTP/SOCKS 혼합 프록시 포트를 엽니다. 버튼을 켜도 앱이 시스템 프록시를 따르지 않으면 트래픽이 이 포트를 거치지 않을 수 있습니다. 두 기능은 같은 설정이 아닙니다.
변천 과정: Clash → Clash Meta → mihomo
원본 Clash: 규칙 기반 프록시 코어의 출발점
원본 Clash는 Go로 작성된 규칙 기반 프록시 프로그램으로, proxies, proxy-groups, rules와 같은 YAML 설정 구조를 널리 알렸습니다. 이후 많은 클라이언트가 이 개념을 이어받았지만, 설정 구조를 공유한다고 해서 같은 개발팀의 프로젝트인 것은 아닙니다.
과거에는 Clash Premium도 있었습니다. 원본 생태계에서 추가 기능을 제공하던 비공개 소스 코어 분기이며, 원본 오픈소스 코어와 혼동해서는 안 됩니다. 예전 가이드에서 ‘Premium이 필요하다’고 안내하는 데는 당시의 배경이 있습니다. 그렇다고 지금도 구버전 Premium을 찾아야 한다는 뜻은 아닙니다.
Clash Meta: 인터페이스 테마가 아닌 확장 코어 분기
Clash Meta는 Clash에서 파생된 코어로, 프로토콜 지원과 DNS, 규칙 처리 등의 기능을 확장했습니다. 구형 설정, 구독 서비스, 클라이언트 옵션에서 자주 보이는 ‘Meta 코어’는 보통 이 계보를 가리키며, Meta라는 이름의 GUI 테마를 뜻하지 않습니다.
mihomo: Meta 계보를 잇는 프로젝트 이름
2023년 말 무렵 Clash 생태계에서는 원 프로젝트 저장소 폐쇄와 클라이언트 업데이트 중단이 이어졌고, 커뮤니티가 프로젝트를 이어받았습니다. Clash Meta는 이후 mihomo로 이름을 바꾸었으며, 현재 프로젝트는 MetaCubeX 조직에서 관리합니다. 따라서 ‘Clash Meta와 mihomo는 어떻게 다른가요?’에 간단히 답하면, 전자는 코어 계보의 이전 이름이고 후자는 이후 프로젝트 이름입니다.
이름이 이어졌다고 해서 바이너리의 기능이 항상 같은 것은 아닙니다. 몇 년 전 Meta 코어와 최신 mihomo는 필드, 프로토콜, 기본 동작이 다를 수 있습니다. 문제를 해결할 때는 ‘Meta를 쓴다’고만 적지 말고 실제 버전 번호를 기록하세요. mihomo를 원래 Clash 개발팀이 내놓은 새 버전이라고 부르는 것도 정확하지 않습니다.
클라이언트 구분: Clash Verge와 Verge Rev는 별개로 확인하세요
아래 내용은 프로젝트 관계를 기준으로 정리한 것으로, 특정 설치 파일의 코어 버전을 보장하지 않습니다. 배포판에 따라 코어 업데이트, 빌드 옵션, 플랫폼 지원이 달라질 수 있으므로 설치한 버전의 릴리스 노트와 실행 정보를 확인하세요.
| 프로젝트 | 역할 및 코어 관계 | 선택 시 확인할 점 |
|---|---|---|
| mihomo | Clash Meta 계보를 잇는 프록시 코어 | 운영체제, 프로세서 아키텍처, 코어 버전, 설정 지원 여부 |
| Clash Verge | 초기 데스크톱 GUI 클라이언트. 과거 버전은 Clash와 Clash Meta 코어를 선택할 수 있었으며, 원 프로젝트는 아카이브되었습니다. | 이전 버전의 기능 목록을 Verge Rev의 현재 사양으로 간주하지 마세요. |
| Clash Verge Rev | 커뮤니티가 이어서 관리하는 데스크톱 클라이언트로 mihomo 코어를 사용합니다. | 백그라운드 서비스, TUN 권한, 구독 덮어쓰기, 코어 업데이트 방식 |
| FlClash | Flutter로 개발된 멀티플랫폼 GUI 클라이언트로 mihomo 코어를 사용합니다. | 플랫폼 지원, 모바일 VPN 권한, 빌드별 기능 차이 |
| Clash for Windows | 유지보수가 중단된 과거 GUI 클라이언트. 후기 배포판은 대개 Clash Premium을 사용합니다. | 이름에 Clash가 들어간다고 해서 현재 mihomo 필드를 지원한다고 단정할 수 없습니다. |
이름이 비슷해도 저장소와 배포 주체를 확인하세요
Clash Verge와 Clash Verge Rev는 접미사를 생략해도 되는 동일한 배포 프로젝트가 아닙니다. 설치 파일명, 앱 내부에 표시되는 이름, 프로젝트 저장소가 서로 일치하는지 확인하세요. 사이트나 배포 파일에 FlClash 파생 이름이 표시된 경우에도 업스트림 원본인지, 재패키징된 버전인지, 수정된 분기인지 확인해야 합니다. 아이콘이 비슷하다는 이유만으로 판단해서는 안 됩니다.
데스크톱과 모바일에서 같은 설정을 사용하려면 먼저 두 환경의 코어 기능이 겹치는지 확인한 뒤 인터페이스 사용성을 비교하세요. 플랫폼별 클라이언트 선택은 클라이언트 비교를 참고하고, 설치 파일은 다운로드 페이지에서 받으세요. 중단된 클라이언트를 오래된 가이드 때문에 계속 사용할 필요는 없습니다.
설정 호환성: 같은 YAML이라도 실행 결과는 다를 수 있습니다
프로토콜과 필드의 지원 여부는 실제 실행 중인 코어가 결정합니다
YAML은 데이터 형식일 뿐입니다. 파일을 읽을 수 있다고 해서 모든 노드 프로토콜과 매개변수가 지원되는 것은 아닙니다. 예를 들어 type: hysteria2 노드를 사용하려면 해당 프로토콜을 지원하는 코어가 필요합니다. 클라이언트에서 YAML을 가져올 수 있다는 이유만으로 구형 Clash나 Premium에서 연결된다고 볼 수는 없습니다.
기본 필드도 의미와 조합을 확인해야 합니다. mode: rule은 규칙 모드를 뜻하며, 규칙은 작성 순서대로 적용되고 MATCH는 보통 마지막에 기본 규칙으로 사용됩니다. 클라이언트 덮어쓰기에서 모드를 전역으로 바꾸면 구독에 규칙이 남아 있어도 예상대로 트래픽을 분기하지 않습니다.
클라이언트가 별도의 실행 설정을 생성할 수도 있습니다
구독 원문, 클라이언트 편집기에 표시된 내용, 실제 코어에 전달되는 설정은 서로 다른 파일일 수 있습니다. 덮어쓰기 스크립트, 설정 병합, 인터페이스의 토글이 최종 결과를 바꿀 수 있습니다. ‘YAML을 수정했는데 적용되지 않는다’면 클라이언트에 ‘실행 설정’, ‘현재 설정’, 설정 디렉터리 메뉴가 있는지 확인하세요. 메뉴 이름은 버전마다 다르므로 다른 프로그램의 메뉴를 그대로 따라 하지 마세요.
아래는 개념 확인용 mihomo 설정 예시이며, 완전한 구독 파일이 아닙니다. 기존 설정에 같은 최상위 필드가 있다면 해당 필드를 수정하세요. 이 내용을 파일 끝에 그대로 다시 붙여 넣으면 안 됩니다.
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
tun:
enable: false
7890은 예시 포트이며 모든 클라이언트의 고정 포트가 아닙니다. 브라우저, 터미널, 시스템 설정에는 실제로 열려 있는 포트를 지정하세요.allow-lan: false는 LAN에서 프록시에 접근할 수 있도록 개방하지 않는다는 뜻이며, 운영체제 방화벽 설정을 대신하지 않습니다.tun.enable: false는 이 설정에서 TUN을 끕니다. 클라이언트 인터페이스에서 값을 덮어쓸 수 있으므로 최종 설정을 확인해야 합니다.- 이 설정 예시에는 노드, 프록시 그룹, 규칙이 없으므로 구독 사용 가능 여부를 판단할 수 없습니다.
라이선스: 코어와 인터페이스를 각각 확인하세요
원본 Clash의 오픈소스 코드, mihomo, Clash Verge Rev, FlClash에는 모두 GPL-3.0 라이선스가 적용됩니다. 라이선스가 같다고 해서 같은 프로젝트라는 뜻은 아니며, 제3자가 빌드한 모든 배포판이 배포 의무를 이행했다고 볼 수도 없습니다. 적용 조건은 해당 버전의 LICENSE 파일에서 확인하세요. 이후 라이선스 버전의 적용 가능 여부 같은 세부 사항도 살펴봐야 합니다.
개인 사용과 재배포는 확인할 사항이 다릅니다
- 개인 설치 및 사용: 일반적으로 클라이언트를 실행하기 위해 개인 구독, 규칙, 노드 비밀번호를 공개할 필요는 없습니다. 소프트웨어 소스 코드의 라이선스와 개인 설정 데이터는 별개의 문제입니다.
- 수정 후 배포: 적용되는 라이선스에 따라 해당 소스 코드, 라이선스 전문, 필수 고지를 제공해야 합니다. 프로젝트 이름만 남겨두면 의무를 다한 것이 아닙니다.
- 타사 구성 요소를 패키징하는 경우: 인터페이스, 코어, 의존 라이브러리, 플랫폼 구성 요소의 라이선스를 각각 확인해야 합니다. 과거의 비공개 소스 Clash Premium은 오픈소스 인터페이스에서 호출된다고 해서 GPL 오픈소스 코드가 되는 것이 아닙니다.
배포 파일을 확인할 때는 소프트웨어의 ‘정보’ 메뉴나 프로젝트 안내에서 소스 코드 주소를 찾고, 릴리스 태그를 확인한 다음 해당 태그의 라이선스 파일을 읽는 순서가 실용적입니다. 브랜드 사용 권한, 상표 사용 권한, 소스 코드 라이선스는 서로 다릅니다. 상업적으로 재배포할 계획이라면 실제 패키징 방식에 맞춰 준수 여부를 검토하세요.
마이그레이션 체크리스트: 기존 동작을 유지한 뒤 새 기능을 활성화하세요
구형 Clash 클라이언트에서 mihomo 클라이언트로 옮길 때 구독을 바꾸고, TUN을 켜고, DNS 모드를 전환하고, 덮어쓰기까지 한 번에 적용하는 것은 권장하지 않습니다. 변수가 너무 많으면 문제가 생겼을 때 원인을 찾기 어렵습니다. 아래 순서대로 진행하면 이전 상태로 되돌리기도 쉽습니다.
- 기존 환경 기록하기. 클라이언트 이름과 버전, 코어 이름과 버전, 운영체제 버전, 시스템 프록시와 TUN의 활성화 상태를 기록하세요. 설정을 내보내기 전에 구독 토큰이 파일에 포함되는지 확인하세요.
- 정상 작동하는 설정 백업하기. 원래 구독 주소와 로컬 수정 사항을 보관하고 덮어쓰기 규칙도 따로 기록하세요. 클라이언트 프로그램 폴더만 복사하지 마세요. 사용자 설정은 다른 경로에 저장될 수 있습니다.
- 기존 클라이언트 종료하기. 기존 프로세스와 백그라운드 서비스가 프록시 포트를 점유하지 않도록 하세요. 두 프로세스가 동시에
127.0.0.1:7890을 사용하면 충돌이 발생할 수 있으며, 실행 실패나 프록시 연결 불가로 나타날 수 있습니다. - 먼저 가져온 다음 확인하기. 새 클라이언트에서 대상 설정을 활성화하고 로그에 알 수 없는 필드, 미지원 노드 유형, 존재하지 않는 프록시 그룹 참조 오류가 있는지 확인하세요.
- 먼저 명시적 프록시 포트 테스트하기. TUN은 잠시 끄고 새 클라이언트의 실제 포트에 맞춰 앱 프록시를 설정한 뒤 웹 연결, 도메인 조회, 규칙 적용 여부를 각각 확인하세요.
- 마지막으로 시스템 트래픽 연동 켜기. 필요에 따라 시스템 프록시나 TUN을 켜고 권한을 설정한 뒤 로컬 네트워크, 절전 모드 복귀, 앱별 트래픽 분기를 테스트하세요. 한 번에 하나씩만 변경하세요.
로그에 address already in use가 표시되면 먼저 포트 점유 여부를 확인하세요. 설정 파싱 오류라면 필드와 들여쓰기를 확인하세요. 특정 앱에서만 문제가 생긴다면 해당 앱이 시스템 프록시를 사용하는지, 별도 DNS나 자체 네트워크 스택을 사용하는지 살펴보세요. 연결 실패만 보고 노드를 먼저 바꾸지는 마세요.
자주 묻는 질문: 코어 업데이트, 구독 인식, 선택 순서
클라이언트를 업데이트하면 mihomo도 자동으로 업데이트되나요?
항상 그런 것은 아닙니다. 설치 파일에 코어가 포함된 클라이언트도 있고, 코어를 따로 다운로드할 수 있는 클라이언트도 있습니다. 인터페이스에 표시되는 앱 버전과 코어 버전은 다릅니다. 업데이트 후에는 코어 실행 정보를 다시 확인하고 필요한 경우 시작 로그도 살펴보세요. ‘업데이트 확인’에서 최신 버전이라고 표시된다는 이유만으로 코어도 업데이트되었다고 단정하지 마세요.
Clash용이라고 표시된 구독을 mihomo에서 바로 사용할 수 있나요?
일반적인 Clash YAML 설정은 대부분 마이그레이션할 수 있지만 프로토콜, 확장 필드, 클라이언트 덮어쓰기 여부를 확인해야 합니다. 구독 서비스가 요청의 클라이언트 식별자에 따라 다른 내용을 반환할 수도 있습니다. 기존 링크가 완전한 YAML이 아니라 노드 URI 목록을 반환한다면 새 클라이언트가 해당 가져오기 방식을 지원하는지도 확인하세요. 모든 ‘구독 링크’가 같은 형식이라고 볼 수는 없습니다.
같은 mihomo 코어인데 데스크톱에서는 되고 휴대폰에서는 안 되는 이유는 무엇인가요?
구독 주소만 비교하지 말고 실제 실행 설정을 먼저 비교하세요. 모바일에서는 VPN 권한, 앱별 제외 목록, 백그라운드 제한, 다른 VPN의 사용 여부가 영향을 줄 수 있습니다. 데스크톱에서는 시스템 프록시, 방화벽, 서비스 권한이 원인일 수 있습니다. 프로토콜 지원이 같다는 사실은 차이의 한 종류만 제외할 뿐, 전체 네트워크 경로의 차이까지 없애지는 않습니다.
먼저 코어를 선택해야 하나요, 클라이언트를 선택해야 하나요?
필요한 프로토콜, 운영체제, 트래픽 연동 방식을 먼저 정한 다음 조건을 지원하는 유지보수 중인 클라이언트를 찾으세요. GUI 조작이 필요하면 플랫폼에 맞는 앱을 선택하고, 서버 배포나 자동화 관리가 목적이라면 mihomo를 직접 살펴볼 수 있습니다. 이어 실제 코어 버전을 확인하고 마지막으로 설정을 가져오세요. 전체 사용 절차는 사용 가이드를, 문제 해결 방법은 문제 해결 문서를 참고하세요.