왜 Clash.Meta로 업그레이드해야 하는가

Dreamacro가 유지 관리하던 초기 Clash 버전(흔히 "Clash Premium" 또는 "오리지널 Clash"라고 함)은 2023년 말 공개 업데이트와 유지 관리를 중단했습니다. 당시 커뮤니티는 중단된 구형 커널을 계속 사용할 것인지, 아니면 그 위에서 활발하게 개발 중인 포크 버전으로 이전할 것인지 선택의 기로에 섰습니다.

Clash.Meta(mihomo라고도 함)는 바로 이러한 배경에서 커뮤니티의 주류가 되었습니다. 오리지널 Clash의 완벽한 규칙 체계와 설정 구문을 유지하면서도 대량의 신규 프로토콜 지원, 성능 최적화 및 보안 강화를 도입하여 많은 개발자와 사용자의 선택을 받았습니다. 본 게시물 작성 시점을 기준으로 Clash.Meta의 GitHub 리포지토리는 수만 개의 Star를 기록하고 있으며, 현재 가장 활발하게 업데이트되는 Clash 계열 커널 중 하나입니다.

명칭 설명: Clash.Meta 프로젝트는 2024년 초 리포지토리 이름을 mihomo로 정식 변경했지만, 커뮤니티에서는 여전히 "Clash.Meta"라는 명칭이 널리 쓰입니다. 본문에서는 두 이름을 혼용하며, 모두 동일한 프로젝트를 가리킵니다.

구버전 Clash 커널을 계속 사용하는 것이 불가능한 것은 아니지만, 점차 다음과 같은 곤란함에 직면하게 될 것입니다: 신규 프로토콜(Hysteria2, VLESS Reality, Tuic v5 등) 접속 불가, 보안 취약점 미해결, 최신 GUI 클라이언트와의 호환성 악화, 커뮤니티 지원 부족 등입니다. Clash.Meta로의 이전은 "가치 있는 수고"입니다. 대부분의 설정을 그대로 재사용할 수 있어 전환 비용이 생각보다 훨씬 낮기 때문입니다.

Clash.Meta와 구버전 커널의 차이점

마이그레이션을 시작하기 전에 두 커널의 차이점을 전체적으로 이해하면 어떤 설정을 조정해야 할지, 어떤 것을 그대로 사용할 수 있을지 판단하는 데 도움이 됩니다.

특징 구형 Clash Premium Clash.Meta / mihomo
기본 규칙 구문 ✓ 지원 ✓ 완벽 호환
Shadowsocks / VMess ✓ 지원 ✓ 지원
VLESS / Reality ✗ 미지원 ✓ 지원
Hysteria2 ✗ 미지원 ✓ 지원
TUIC v5 ✗ 미지원 ✓ 지원
TUN 모드 △ 제한적 지원 ✓ 완전한 TUN + 시스템 DNS
활발한 유지 관리 ✗ 중단됨 ✓ 지속적 업데이트
보안 취약점 수정 ✗ 중단 ✓ 정기적 수정

표에서 볼 수 있듯이 Clash.Meta는 프로토콜 지원과 보안 면에서 뚜렷한 우위를 점하면서도 기본 설정 구문의 높은 호환성을 유지합니다. 즉, 기존 설정 파일의 대부분을 그대로 사용할 수 있으며 소수의 필드만 약간 조정하면 됩니다.

업그레이드 준비: 백업 및 환경 확인

모든 커널 마이그레이션은 완벽한 백업에서 시작해야 합니다. 다음은 실제 작업 전 반드시 완료해야 할 체크리스트입니다:

  1. 현재 설정 파일 백업: config.yaml(및 부속 규칙 파일, Provider 파일)을 안전한 장소에 복사하세요. 클라우드나 버전 관리 시스템에 저장하는 것도 좋습니다.
  2. 현재 작동 상태 기록: 현재 프록시 연결 상태, 지연 시간 테스트 결과 등을 스크린샷으로 기록해 두면 이전 후 비교에 도움이 됩니다.
  3. 운영체제 및 아키텍처 확인: Clash.Meta는 Windows(amd64/arm64), macOS(amd64/arm64), Linux 등 다양한 빌드 버전을 제공합니다. 환경에 맞는 버전을 다운로드하세요.
  4. 관리 패널 버전 확인: Yacd, MetaCubeX 등 웹 패널을 사용 중이라면 최신 버전으로 업데이트하세요. 구형 패널은 새 커널 API와 호환성 문제가 있을 수 있습니다.
주의: Clash for Windows, Clash Verge Rev 등 GUI 클라이언트를 사용 중이라면 클라이언트 자체가 커널 관리를 담당하므로 클라이언트 내에서 커널 버전만 전환하면 됩니다. 이 가이드는 주로 명령줄 커널을 직접 사용하는 사용자를 위한 것입니다.

설정 파일 마이그레이션 상세

이는 전체 마이그레이션 과정에서 가장 핵심적이고 주의 깊게 대조해야 할 부분입니다. 다행히 Clash.Meta는 구버전 설정과의 호환성이 매우 뛰어나 대부분의 필드를 수정 없이 사용할 수 있습니다. 다음 몇 가지 측면에 집중해 보세요:

1. 최상위 필드 조정

Clash.Meta는 일부 최상위 필드의 이름을 변경하거나 확장했습니다. 주요 변화는 다음과 같습니다:

config.yaml — 구버전 표기법
external-controller: '127.0.0.1:9090'
secret: ''
log-level: info
allow-lan: false
mode: rule
config.yaml — Clash.Meta 권장 표기법 (신규 필드)
external-controller: '127.0.0.1:9090'
external-ui: './ui'        # 로컬 웹 패널 디렉토리 (선택 사항)
secret: ''
log-level: info
allow-lan: false
mode: rule
ipv6: false                # 명확한 선언 권장
unified-delay: true        # 더 정확한 지연 시간 측정 방식 사용
tcp-concurrent: true       # 동시 TCP 연결 (신규 기능)

2. DNS 설정 이전

DNS 설정은 마이그레이션 시 가장 오류가 잦은 부분입니다. Clash.Meta는 더 세밀한 DNS 분기 제어를 도입했습니다. 구버전의 간단한 DNS 설정도 여전히 작동하지만, 더 나은 유출 방지 효과를 위해 다음과 같은 구조로 업데이트하는 것을 권장합니다:

권장되는 Clash.Meta DNS 설정 구조
dns:
  enable: true
  ipv6: false
  listen: '0.0.0.0:1053'
  enhanced-mode: fake-ip       # 또는 redir-host, 필요에 따라 선택
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - 'localhost.ptlogin2.qq.com'
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - 'https://doh.pub/dns-query'
    - 'https://dns.alidns.com/dns-query'
  fallback:
    - 'tls://8.8.8.8:853'
    - 'tls://1.1.1.1:853'
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4

3. 프록시 노드 구문 변화

Clash.Meta는 프록시 노드 필드에 소량의 확장을 가했습니다. 구버전 노드 정의는 일반적으로 수정할 필요가 없지만, 신규 프로토콜을 사용하려면 Clash.Meta 문서에 따라 해당 필드를 추가해야 합니다:

Hysteria2 노드 예시 (Clash.Meta 전용 구문)
proxies:
  - name: 'HY2-노드-한국'
    type: hysteria2
    server: example.com
    port: 443
    password: 'your-password-here'
    sni: example.com
    skip-cert-verify: false
    up: '50 Mbps'
    down: '200 Mbps'

4. 규칙 및 규칙 제공자 (Rule Provider)

규칙 구문과 Rule Provider 형식은 완벽하게 호환되며 구버전 규칙 세트를 그대로 사용할 수 있습니다. Clash.Meta는 추가로 원격 규칙 세트를 참조하는 RULE-SET을 지원하므로(rule-providers 필드와 함께 사용), 업데이트가 잦은 도메인 규칙은 Provider 형식으로 관리하여 유지 관리를 간소화하는 것이 좋습니다.

주요 오류 및 해결 방법

다음은 이전 후 사용자들이 가장 많이 겪는 오류 유형과 점검 방법입니다:

오류: field xxx is not supported

설정 파일에 Clash.Meta에서 폐기되었거나 아직 구현되지 않은 필드가 포함된 경우 발생합니다. 해결 방법: mihomo 공식 문서를 참조하여 해당 필드의 현재 상태를 확인하고, 삭제하거나 대응하는 신규 필드로 교체하세요.

오류: DNS resolve failed

대부분 DNS 설정이 불완전하거나 fake-ip-filter 목록이 누락되어 발생합니다. enhanced-mode가 올바르게 설정되었는지 확인하고 자주 사용하는 국내 서비스 도메인(예: 카카오톡, 네이버, 뱅킹 앱 등)에 대해 fake-ip 필터 규칙을 추가하세요.

오류: TUN 모드에서 로컬 네트워크 기기 인터넷 불가

TUN 모드에서 가장 흔한 문제입니다. tun.auto-routetun.auto-detect-interface가 모두 true로 설정되었는지 확인하세요. 또한 시스템 방화벽이 TUN 네트워크 카드의 트래픽 포워딩을 차단하지 않는지 확인해야 합니다(Windows는 관리자 권한 실행, macOS는 시스템 확장 프로그램 권한 필요).

오류: proxy [xxx] not found

존재하지 않는 프록시 그룹 이름을 규칙에서 참조하고 있습니다. proxy-groups 내의 그룹 이름이 규칙 부분의 참조와 완전히 일치하는지(대소문자 구분) 확인하세요.

오류: 웹 패널 로드 불가

외부 웹 패널(예: MetaCubeX)을 사용 중이라면 external-ui 필드가 올바른 로컬 디렉토리를 가리키고 있는지 확인하세요. CDN 버전을 사용한다면 네트워크가 CDN 리소스에 정상적으로 접근할 수 있는지 확인하고, external-controller 주소가 패널에 입력한 API 주소와 일치하는지 확인하세요.

TUN 모드 설정 및 성능 최적화

TUN 모드는 Clash.Meta가 구버전에 비해 가장 눈에 띄게 개선한 기능 중 하나입니다. 시스템 수준에서 가상 네트워크 카드를 생성함으로써 TUN 모드는 모든 TCP/UDP 트래픽을 가로채어 진정한 "전역 프록시"를 구현하며, 각 앱마다 별도의 프록시 설정을 할 필요가 없습니다.

권장되는 TUN 모드 설정 (config.yaml)
tun:
  enable: true
  stack: mixed          # mixed = TCP는 gVisor, UDP는 system 사용. 성능과 호환성의 균형
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - 'any:53'          # 모든 DNS 요청을 가로채 DNS 유출 방지
  device: Meta          # TUN 네트워크 카드 이름 (사용자 지정 가능)

stack 모드 선택 가이드:

성능 최적화 제안

고대역폭 환경(P2P 다운로드, 대량의 API 요청 등)에서는 다음 설정을 통해 처리량을 눈에 띄게 높일 수 있습니다:

고성능 최적화 설정
tcp-concurrent: true          # 동시 TCP 연결 수립
unified-delay: true           # 지연 시간 계산 방식 통일
keep-alive-interval: 30       # TCP Keep-Alive 간격 (초)

profile:
  store-selected: true        # 선택된 노드 영구 저장
  store-fake-ip: true         # fake-ip 매핑 영구 저장

업그레이드 후 검증 및 롤백 방안

설정 이전을 완료한 후에는 단순히 "느낌"으로 판단하지 말고 다음 단계에 따라 체계적으로 마이그레이션 효과를 검증하는 것이 좋습니다:

  1. 기본 연결성 검증: 대표적인 국내외 사이트에 접속하여 분기 규칙이 의도대로 작동하는지(국내 직결, 해외 프록시) 확인하세요.
  2. DNS 유출 테스트: dnsleaktest.com 등의 도구를 방문하여 DNS 요청이 프록시를 우회하여 통신사에 노출되지 않는지 확인하세요.
  3. 지연 시간 및 속도 테스트: Clash 패널에서 노드 지연 시간 테스트를 실행하여 이전 전후에 큰 변화가 있는지 비교하고, 실제 다운로드 속도를 테스트하여 트래픽이 정상적으로 전달되는지 확인하세요.
  4. 프로토콜 기능 검증: Hysteria2, Reality 등 신규 프로토콜을 사용했다면 해당 노드들의 연결성을 개별적으로 테스트하세요.
💡 롤백 방안: 이전 전에 백업해 둔 기존 설정 파일과 구형 커널 실행 파일은 여러분의 안전망입니다. 이전 후 해결할 수 없는 문제가 발생하면 즉시 커널 파일을 구버전으로 교체하고 백업 설정을 로드하여 원래 상태로 복구할 수 있습니다. 이전 후 최소 72시간 동안은 롤백 능력을 유지하고, 안정적으로 실행되는 것을 확인한 후 구형 파일을 완전히 삭제하세요.

진정으로 쓰기 편한 클라이언트 선택

커널 이전을 마친 후 많은 사용자는 "좋은 커널 + 좋은 클라이언트"가 결합되어야 비로소 완벽한 사용 경험이 완성된다는 것을 깨닫게 됩니다. Clash.Meta 커널 자체는 백엔드 엔진일 뿐이며, 일상적인 사용을 위해서는 설정을 관리하고 노드를 교체하며 로그를 확인하기 쉬운 우수한 GUI 클라이언트가 필요합니다.

하지만 현재 시중의 주요 Clash 클라이언트들은 제각각이며 다음과 같은 보편적인 고충이 존재합니다:

Clash V.CORE는 바로 이러한 문제들을 해결하기 위해 설계되었습니다. 최신 버전의 Clash.Meta 커널을 내장하고 Windows, macOS, Linux, Android, iOS 전 플랫폼을 지원하며 데스크톱과 모바일의 조작 로직을 통일했습니다. 커널 버전은 상위 소스를 따라 지속적으로 업데이트되므로 수동 마이그레이션이 필요 없으며, 정교하게 디자인된 인터페이스를 통해 노드 관리, 규칙 편집, 로그 확인 등을 한눈에 처리할 수 있습니다. 이제 막 커널 이전을 마친 여러분께 커널의 실력을 최대한 발휘하게 해줄 클라이언트를 제안합니다.