MANUAL

Clash 전 플랫폼 설치 설정 가이드

Windows, macOS, Android, iOS, Linux 다섯 개 플랫폼을 각각 한 장(章)으로 다룹니다. 다운로드와 설치부터 구독 추가, 시스템 프록시, TUN 모드까지 전 과정을 상세히 정리하고 주의할 점도 따로 짚었습니다. 이 페이지는 필요할 때 찾아보는 참고용 매뉴얼입니다. 가장 빠르게 첫 연결을 마치고 싶다면 먼저 입문 가이드를 보고, 구체적인 문제가 생기면 이 페이지의 해당 장으로 돌아오세요.

공통 준비 사항

어떤 플랫폼을 사용하든 처음 설정하기 전에 확인해야 할 세 가지가 있습니다. 클라이언트 선택, 구독 링크 확보, 설정 파일의 기본 구조 이해입니다. 이 세 가지는 모든 플랫폼에서 동일하므로 이 장에서 한 번에 정리하고, 이후 플랫폼별 장에서는 다시 다루지 않습니다.

클라이언트 선택

Clash는 오픈소스 생태계로, 동일한 설정 파일을 여러 클라이언트에서 함께 사용할 수 있습니다. 플랫폼별 추천 조합은 다음과 같으며, 설치 파일은 모두 다운로드 페이지에서 받을 수 있습니다. 각 클라이언트의 세부 차이는 블로그 글 주요 Clash 클라이언트 비교를 참고하세요.

플랫폼우선 추천대안설명
WindowsClash PlusClash Verge Rev, FlClash, Clash NyanpasuClash for Windows는 유지보수가 종료되어 기록용으로만 남아 있습니다
macOSClash PlusClash Verge Rev, FlClashClashX Meta는 유지보수가 종료되어 기록용으로만 남아 있습니다
AndroidClash PlusClash Meta for Android, FlClash, Surfboardarm64와 armv7 설치 파일을 구분해야 합니다
iOSClash Plus(App Store)공식 사이트는 clashplus.io이며, 스토어에서 바로 설치합니다
LinuxClash Verge RevFlClashdeb 패키지를 제공하며, 서버 환경에서는 Mihomo 코어를 직접 실행할 수 있습니다

구독 링크

구독 링크는 서비스 제공업체가 발급하는 HTTP(S) 주소로, Clash가 해석할 수 있는 노드와 규칙 목록을 담고 있습니다. 클라이언트는 일정 주기로 이 주소에 접속해 노드 정보를 자동으로 갱신합니다. 준비 단계에서 두 가지를 확인하세요. 첫째, 링크가 온전한지 확인합니다. https://로 시작해야 하며 메신저 등에서 잘리거나 줄바꿈이 섞이지 않아야 합니다. 둘째, 링크는 민감한 인증 정보이므로 이를 가진 사람은 누구나 트래픽 할당량을 사용할 수 있습니다. 공개 채팅방에 올리거나 스크린샷으로 노출하지 마세요. 링크가 만료되거나 형식이 맞지 않을 때의 증상과 대처법은 설정 문제 해결 장을 참고하세요.

설정 파일의 기본 구조

Clash의 설정 파일은 보통 구독을 통해 생성되는 YAML 문서입니다. 전체 구조를 이해해두면 이후 문제를 해결하기 쉬워집니다. 핵심 필드는 다섯 가지로, 인바운드 포트, 실행 모드, 노드 목록, 정책 그룹, 규칙입니다. 최소한의 읽을 수 있는 예시는 다음과 같습니다.

mixed-port: 7890          # HTTP 와 SOCKS 가 공유하는 인바운드 포트
allow-lan: false          # 로컬 네트워크 기기 접속 허용 여부
mode: rule                # rule / global / direct
log-level: info
external-controller: 127.0.0.1:9090

proxies: []               # 노드 목록, 구독으로 채워짐

proxy-groups:
  - name: 노드 선택
    type: select
    proxies:
      - DIRECT

rules:
  - DOMAIN-SUFFIX,github.com,노드 선택
  - GEOIP,CN,DIRECT
  - MATCH,노드 선택

규칙은 위에서 아래로 순서대로 매칭되며, 일치하면 바로 멈춥니다. MATCH는 마지막에 위치하는 기본 규칙입니다. 정책 그룹의 select, url-test, fallback 등 유형별 동작 방식은 블로그 글 정책 그룹 유형 상세 설명을 참고하고, 각 필드의 용어 설명은 개념 사전에서 확인할 수 있습니다.

시스템 프록시와 TUN 모드

클라이언트를 실행하면 로컬에 프록시 포트가 열리지만, 트래픽이 자동으로 그 포트를 지나가지는 않습니다. 트래픽을 유입시키는 방법은 두 가지, 시스템 프록시와 TUN 모드입니다. 시스템 프록시는 운영체제의 HTTP/SOCKS 프록시 설정을 로컬 포트로 지정하는 방식으로 구현이 간단하지만, 시스템 프록시 설정을 따르는 앱에만 적용됩니다. TUN 모드는 가상 네트워크 카드를 만들어 네트워크 계층에서 모든 트래픽을 가로채므로 시스템 프록시를 거치지 않는 커맨드라인 도구나 게임 클라이언트까지 포함할 수 있지만, 더 높은 시스템 권한이 필요합니다.

선택 가이드

일반 브라우저와 대부분의 앱은 시스템 프록시만으로 충분합니다. 커맨드라인 도구나 게임, 시스템 프록시 설정을 읽지 않는 소프트웨어까지 처리해야 할 때 TUN 모드를 켜세요. 두 가지를 동시에 켜는 것은 의미가 없으며, 대부분의 클라이언트가 자동으로 상호 배제를 처리합니다.

세 가지 실행 모드

설정 파일의 mode 필드가 규칙 엔진의 동작을 결정합니다. rule은 규칙 모드로 규칙 목록에 따라 트래픽을 분산시키는 기본값입니다. global은 전역 모드로 모든 트래픽이 하나의 정책 그룹을 거치며 노드를 임시로 테스트할 때 사용합니다. direct는 직접 연결 모드로 모든 트래픽이 프록시를 거치지 않으며, "문제가 프록시 때문인지" 확인할 때 사용합니다. 문제 해결 시 세 가지 모드를 번갈아 전환해 비교하는 것이 가장 빠른 진단 방법 중 하나입니다.

Windows 설치 설정

다운로드와 설치

다운로드 페이지 Windows 영역에서 Clash Plus 설치 파일을 받습니다. 시스템 요구 사항은 Windows 10 64비트 이상입니다. 설치 프로그램을 실행하면 SmartScreen이 "Windows가 PC를 보호했습니다"라는 경고를 표시할 수 있는데, 이는 상용 코드 서명 인증서를 구매하지 않은 오픈소스 소프트웨어에서 흔히 발생하는 현상입니다. "추가 정보"를 클릭한 뒤 "실행"을 누르면 계속 진행할 수 있습니다. 설치 경로는 기본값을 유지하는 것을 권장합니다. 압축 해제 버전을 사용할 경우 관리자 권한이 필요한 디렉터리(예: C:\Program Files)에 직접 풀지 않도록 주의하세요. 그렇지 않으면 설정 파일 저장에 실패할 수 있습니다.

구독 추가와 첫 연결

처음 실행한 뒤 구독(또는 "설정") 페이지로 이동해 구독 링크를 붙여넣고 가져오기를 클릭합니다. 클라이언트가 설정을 내려받아 노드 목록을 표시합니다. 프록시 탭으로 이동해 "노드 선택" 정책 그룹에서 노드 하나를 고른 뒤, 메인 화면으로 돌아와 "시스템 프록시" 스위치를 켭니다. 이 상태에서 브라우저로 규칙에 포함된 사이트에 접속해 정상적으로 열리면 연결이 정상 작동한다는 뜻입니다. 노드가 전부 타임아웃으로 표시되면 블로그 글 노드 타임아웃 진단 순서의 다섯 단계를 순서대로 확인하세요.

시스템 프록시와 포트

"시스템 프록시" 스위치가 실제로 하는 일은 Windows 설정 → 네트워크 및 인터넷 → 프록시의 주소를 127.0.0.1:7890(포트는 클라이언트 설정 기준)으로 바꾸는 것입니다. 스위치를 켰는데도 프록시 설정이 적용되지 않으면 먼저 포트가 다른 프로그램에 점유되어 있는지 확인하세요.

netstat -ano | findstr "7890"

출력 결과에 이미 다른 프로세스가 이 포트를 사용 중이라면, 클라이언트 설정에서 mixed-port를 7891 등 사용하지 않는 값으로 바꾸고 클라이언트를 재시작한 뒤 시스템 프록시를 다시 켭니다. 여러 프록시 소프트웨어를 동시에 실행하면 서로 시스템 프록시 설정을 덮어쓰므로 하나만 실행 상태로 유지해야 합니다.

TUN 모드와 서비스 모드

Windows에서 가상 네트워크 카드를 만들려면 관리자 권한이 필요합니다. Clash Verge Rev 등의 클라이언트는 "서비스 모드"를 제공합니다. 시스템과 함께 실행되는 백그라운드 서비스를 설치하면 이후 TUN을 켤 때마다 UAC 승인 창이 뜨지 않습니다. 경로는 보통 설정 → 서비스 모드 → 설치입니다. 서비스를 설치한 뒤 TUN 스위치를 켜면 설정 → 네트워크 연결에서 새로 생긴 가상 네트워크 카드를 확인할 수 있으며, 이것이 정상 작동의 증거입니다. TUN을 켰다면 시스템 프록시 스위치는 꺼두는 것이 좋습니다. 트래픽이 두 계층을 거듭 통과하는 것을 방지할 수 있습니다.

부팅 시 자동 실행

클라이언트 설정에는 보통 "부팅 시 자동 실행"과 "조용히 시작" 두 스위치가 있습니다. 전자는 시작 항목을 등록하고, 후자는 실행 시 메인 창을 띄우지 않고 트레이에 바로 상주합니다. 둘 다 켜두고 기본 구독을 선택해 두면 부팅과 동시에 이전 프록시 상태가 자동으로 복원되어 별도 조작이 필요 없습니다. 자동 실행이 되지 않으면 작업 관리자 → 시작 앱에서 해당 항목이 비활성화되어 있는지 확인하세요.

플랫폼별 주의사항

  • UWP 앱(Microsoft Store로 설치한 앱)은 기본적으로 로컬 프록시로의 루프백 연결이 차단됩니다. 일부 클라이언트는 "UWP 루프백 예외" 도구를 제공하므로 해당 앱을 체크하면 적용됩니다.
  • 처음 실행할 때 뜨는 Windows 방화벽 확인 창에서 "개인 네트워크"를 선택하고 허용하세요. 그렇지 않으면 allow-lan 환경에서 로컬 네트워크 기기가 접속할 수 없습니다.
  • 기존 프록시 소프트웨어를 제거한 뒤 시스템 프록시 설정에 이미 유효하지 않은 포트가 남아 있으면 "인터넷 연결 끊김"처럼 보일 수 있습니다. 시스템 프록시 설정에서 수동으로 끄면 복구됩니다.

macOS 설치 설정

칩 아키텍처 확인

좌측 상단 애플 메뉴 → 이 Mac에 관하여를 클릭하세요. 칩 항목에 Apple M 시리즈가 표시되면 Apple Silicon(arm64) 패키지를, Intel이 표시되면 Intel(x64) 패키지를 받습니다. 잘못된 아키텍처의 패키지는 Apple Silicon에서 Rosetta를 거쳐 실행되며 동작은 하지만 성능과 전력 효율이 한 단계 낮아지므로 정확한 버전을 설치하는 것이 좋습니다. 설치 파일은 다운로드 페이지 macOS 영역에서 아키텍처별로 나뉘어 있습니다.

설치와 첫 실행

dmg 이미지를 열어 앱 아이콘을 Applications 폴더로 드래그한 뒤 런치패드나 응용 프로그램 폴더에서 실행합니다. 처음 실행 시 "확인되지 않은 개발자"라는 안내가 뜨면 시스템 설정 → 개인정보 보호 및 보안으로 이동해 하단에 나타난 해당 앱 안내에서 "그래도 열기"를 클릭하세요. 또는 Finder에서 앱 아이콘을 마우스 우클릭해 "열기"를 선택하고 한 번 확인하면 이후에는 더블클릭으로 정상 실행됩니다.

권한 승인: 네트워크 확장과 키체인

macOS 클라이언트는 처음 실행할 때 두세 개의 승인 팝업이 연이어 나타나며, 각각을 올바르게 처리하지 않으면 기능이 제한됩니다.

  1. 네트워크 확장/프록시 설정 팝업: "허용"을 클릭하세요. 이는 시스템 프록시와 TUN을 설정하기 위한 전제 조건으로, 거부하면 클라이언트는 로컬 포트만 제공할 수 있습니다.
  2. 키체인 접근 팝업: 로그인 암호를 입력한 뒤 "항상 허용"을 클릭하세요. "허용"을 클릭하면 실행할 때마다 이 팝업이 반복됩니다.
  3. 일부 클라이언트는 특권 도우미(Helper) 설치도 요청하므로 마찬가지로 암호를 입력해 한 번 확인합니다.

잘못해서 거부를 눌렀더라도 복구할 수 있습니다. 시스템 설정 → 네트워크 → VPN 및 필터, 그리고 개인정보 보호 및 보안 → 전체 디스크 접근 권한에서 클라이언트에 권한을 다시 부여하면 됩니다. 팝업 화면 전체 캡처와 항목별 설명은 블로그 글 macOS에서 Clash 클라이언트 권한 설정 완전 정리를 참고하세요.

시스템 프록시와 확인

구독을 추가하고 노드를 선택한 뒤 클라이언트의 "시스템 프록시로 설정" 스위치를 켭니다. 실제로 시스템 설정에 반영되었는지 확인하려면 터미널에서 다음을 실행합니다.

networksetup -getwebproxy Wi-Fi

출력에 Enabled: Yes가 표시되고 포트가 클라이언트 설정과 일치하면 정상 작동 중입니다. macOS의 프록시 설정은 네트워크 서비스별로 따로 저장된다는 점에 주의하세요. Wi-Fi와 유선 이더넷은 서로 다른 설정을 가지므로, 네트워크 인터페이스를 전환한 뒤 프록시가 풀렸다면 클라이언트가 한쪽 서비스에만 설정을 적용한 경우가 많습니다. 시스템 프록시 스위치를 한 번 다시 켜면 해결됩니다.

TUN 모드

macOS에서 TUN을 켜려면 시스템 확장을 승인하거나 특권 도우미 방식으로 가상 네트워크 카드를 생성해야 하며, 처음 TUN 스위치를 켤 때 승인 팝업이 다시 나타납니다. 켠 뒤 터미널에서 ifconfig | grep utun을 실행하면 새로 생긴 utun 인터페이스를 확인할 수 있습니다. Windows와 마찬가지로 TUN을 켠 상태에서는 시스템 프록시 스위치를 꺼서 이중 프록시를 피하세요.

플랫폼별 주의사항

  • macOS 버전을 크게 업그레이드한 뒤 네트워크 확장 권한이 초기화될 수 있습니다. 이 경우 클라이언트는 정상 실행되지만 트래픽이 프록시를 거치지 않습니다. 권한 승인 절차를 다시 진행하면 됩니다.
  • 클라이언트가 비정상 종료되면 시스템 프록시가 초기화되지 않아 "클라이언트를 끄니 오히려 인터넷이 끊기는" 현상이 나타날 수 있습니다. 시스템 설정 → 네트워크 → 해당 서비스 → 세부 정보 → 프록시에서 수동으로 체크를 해제하면 됩니다.
  • 여러 Clash 클라이언트를 동시에 설치했다면 동시에 실행하지 마세요. 시스템 프록시 설정이 계속 덮어써져 예측할 수 없는 동작이 발생합니다.

Android 설치 설정

설치 파일 아키텍처 선택

최근 몇 년간 출시된 대부분의 기기는 arm64-v8a 패키지를 선택하면 됩니다. armeabi-v7a는 일부 오래된 기기나 보급형 기기에만 필요합니다. 확실하지 않다면 먼저 arm64 패키지를 설치해 보고 "패키지 구문 분석 오류" 또는 "앱이 설치되지 않음"이라는 메시지가 뜨면 v7a로 바꾸세요. Clash Meta for Android는 크기는 크지만 선택할 필요가 없는 universal 통합 패키지도 제공합니다. 설치 파일은 다운로드 페이지 Android 영역에서 아키텍처별로 나뉘어 있습니다.

설치와 구독 추가

브라우저로 APK를 내려받아 설치하면 시스템이 "알 수 없는 앱 설치 허용"을 요청합니다. 열리는 설정 화면에서 브라우저(또는 파일 관리자)에 해당 권한을 부여한 뒤 돌아와 설치를 계속하세요. 클라이언트를 처음 실행하면 설정/구독 페이지로 이동해 새 설정을 만들고 구독 링크를 붙여넣습니다. 저장하면 클라이언트가 자동으로 내려받아 해석합니다. 목록에 노드가 나타나면 추가에 성공한 것입니다.

VPN 권한과 연결

Android 클라이언트는 시스템 VpnService를 통해 트래픽을 가로챕니다. 처음 연결을 누르면 "연결 요청" 대화상자가 나타나 VPN 연결을 생성하겠다는 안내가 표시되며, "확인"을 누르면 됩니다. 이 승인은 한 번만 필요하며, 상태 표시줄에 열쇠 아이콘이 나타나면 정상 작동 중이라는 뜻입니다. 이후 연결/해제는 클라이언트 메인 화면에서 한 번의 조작으로 처리됩니다. Android에는 별도의 "시스템 프록시" 스위치가 없으며, VpnService 자체가 데스크톱의 TUN 모드에 해당합니다.

백그라운드 유지와 배터리 최적화

일부 제조사의 커스텀 시스템은 백그라운드 프로세스를 적극적으로 관리하는데, 이는 Android에서 "사용 중 갑자기 연결이 끊기는" 가장 흔한 원인입니다. 다음을 순서대로 확인하세요.

  • 시스템 설정 → 배터리에서 클라이언트를 찾아 배터리 최적화 정책을 "제한 없음" 또는 "최적화 안 함"으로 변경합니다.
  • "자동 실행 관리" 기능이 있는 시스템(예: MIUI, EMUI 등)에서는 클라이언트에 자동 실행 권한을 부여합니다.
  • 최근 실행 앱 화면에서 클라이언트를 잠금 처리(카드를 아래로 당기거나 길게 눌러 설정, 제조사에 따라 다름)해 한 번에 정리될 때 종료되지 않도록 합니다.

앱별 프록시 설정

클라이언트 네트워크 설정의 "접근 제어"는 앱별로 트래픽을 나눌 수 있습니다. 화이트리스트 모드는 체크한 앱만 프록시를 거치고, 블랙리스트 모드는 체크한 앱이 프록시를 거치지 않습니다. 은행 앱은 프록시 환경에 민감하므로 블랙리스트에 넣으면 위험 탐지 오작동을 피할 수 있고, 게임을 블랙리스트에 넣으면 불필요한 지연을 줄일 수 있습니다. 앱별 목록을 수정한 뒤에는 한 번 연결을 끊고 다시 연결해야 적용됩니다.

플랫폼별 주의사항

  • 시스템의 "개인 DNS"(설정 → 네트워크 → 개인 DNS)를 특정 서비스로 고정하면 DNS 조회가 클라이언트의 fake-ip 체계를 우회해 일부 규칙이 적용되지 않을 수 있습니다. "자동"으로 두거나 꺼두는 것을 권장합니다.
  • 같은 시점에 시스템은 하나의 VPN 연결만 허용하므로 다른 VPN 앱과 서로 충돌하는 것은 시스템의 정상 동작이며 오류가 아닙니다.
  • 절전 모드와 VPN을 함께 사용하면 일부 기기에서 백그라운드 트래픽이 제한될 수 있습니다. 이상 증상이 있으면 먼저 시스템의 절전 및 데이터 절약 설정을 확인하세요.

iOS 설치 설정

App Store 설치

iOS에서는 Clash Plus를 사용하며 App Store에서 바로 설치할 수 있습니다. 스토어에서 Clash Plus를 검색하거나 다운로드 페이지 iOS 영역에서 스토어 상세 페이지로 이동하세요. 공식 사이트는 clashplus.io이며, 기능 설명과 업데이트 내역은 공식 사이트를 기준으로 합니다. iPhone과 iPad는 하나의 버전을 함께 사용합니다.

구독 추가

앱을 열어 구독/설정 페이지로 이동한 뒤 추가를 누르고 구독 링크를 붙여넣어 저장합니다. 일부 버전은 클립보드를 읽어 빠르게 추가하는 기능을 지원합니다. 링크를 먼저 복사한 뒤 앱을 열면 안내에 따라 확인하면 됩니다. 추가가 끝나면 프록시 페이지에 노드 목록이 나타나며, 그중 하나를 현재 출구로 선택합니다.

VPN 설정과 권한

처음 연결을 누르면 시스템이 ""Clash Plus"에서 VPN 설정을 추가하려고 합니다"라는 안내를 표시합니다. "허용"을 누르고 잠금 화면 암호나 Face ID로 인증하세요. 승인 후 설정 → 일반 → VPN 및 기기 관리 → VPN에 해당 항목이 생성되며, 상태 표시줄에 VPN 표시가 나타나면 연결에 성공한 것입니다. 이후 연결/해제는 앱 내에서 조작할 수도 있고, 시스템 설정의 VPN 스위치로 바로 조작할 수도 있으며 두 곳의 상태는 항상 동기화됩니다.

사용 시 유의사항

  • 구독을 바꾸거나 설정을 크게 수정한 뒤에는 먼저 연결을 끊고 다시 연결해 새 설정이 완전히 적용되도록 하세요.
  • 앱이 시스템에 의해 정리되어도 VPN 터널은 보통 시스템 네트워크 확장이 계속 유지합니다. 연결이 끊긴 것을 발견하면 앱으로 돌아가 다시 연결하면 됩니다.
  • 규칙 모드, 정책 그룹 등의 개념은 데스크톱과 완전히 동일하므로 공통 설정 지식은 이 페이지의 사전 준비 장과 개념 사전을 그대로 참고할 수 있습니다.

Linux 설치 설정

클라이언트 설치

데스크톱 환경에서는 Clash Verge Rev를 추천하며 deb와 rpm 패키지를 제공합니다. FlClash는 deb 패키지를 제공합니다. 설치 파일은 다운로드 페이지 Linux 영역에서 받으며, 시스템 패키지 관리자로 설치하면 의존성이 자동으로 해결됩니다.

# Debian / Ubuntu 계열
sudo apt install ./clash-verge-rev_amd64.deb

# Fedora / RHEL 계열
sudo dnf install ./clash-verge-rev_x86_64.rpm

설치 시 libwebkit2gtk 등의 의존성이 없다는 오류가 뜨면 먼저 sudo apt update를 실행한 뒤 다시 시도하세요. apt install ./패키지명 형태(./ 포함)는 의존성까지 함께 처리해 dpkg -i보다 편리합니다.

데스크톱 환경별 시스템 프록시

Linux의 "시스템 프록시"는 데스크톱 환경마다 별도로 구현됩니다. GNOME에서는 설정 → 네트워크 → 네트워크 프록시에서 "수동"을 선택하고 HTTP/HTTPS에 127.0.0.1:7890을 입력하며, Socks 호스트도 동일합니다. KDE에서는 시스템 설정 → 네트워크 설정 → 프록시에서 설정합니다. 클라이언트의 시스템 프록시 스위치는 보통 GNOME/KDE에서만 작동하며, 다른 데스크톱 환경이나 터미널 전용 환경에서는 환경 변수를 사용합니다.

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890

~/.bashrc 또는 ~/.zshrc에 기록하면 계속 적용됩니다. 환경 변수는 이를 읽는 프로그램에만 영향을 주며, 대부분의 브라우저는 변수 대신 데스크톱 환경 설정을 읽는다는 점에 주의하세요.

TUN 모드와 권한

TUN 장치를 만들려면 root 권한 또는 해당 capability가 필요합니다. Clash Verge Rev는 서비스 모드를 제공하는데, 시스템 서비스를 설치하면 서비스 프로세스가 특권으로 가상 네트워크 카드를 생성하고 앱 자체는 일반 권한으로 실행됩니다. 클라이언트 설정에서 서비스를 설치하고 TUN 스위치를 켜면 됩니다. 직접 코어를 실행하는 경우에는 바이너리에 capability를 부여한 뒤 일반 사용자로 실행할 수 있습니다.

sudo setcap cap_net_admin,cap_net_bind_service=+ep /usr/local/bin/mihomo

서버 환경: Mihomo 코어 직접 실행

데스크톱 환경이 없는 서버나 라우터에서는 GUI가 필요 없으므로 Mihomo 코어를 직접 실행합니다. 코어 바이너리를 /usr/local/bin/mihomo에, 설정 파일을 /etc/mihomo/config.yaml에 두고 systemd로 관리합니다.

[Unit]
Description=Mihomo core
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure

[Install]
WantedBy=multi-user.target

/etc/systemd/system/mihomo.service로 저장한 뒤 sudo systemctl enable --now mihomo를 실행하면 시작 및 자동 실행이 설정됩니다. 로그는 journalctl -u mihomo -f로 실시간 확인할 수 있습니다. 설정에서 external-controller를 활성화하면 어떤 Clash 패널로도 원격 관리할 수 있습니다. 각 아키텍처별 코어 패키지는 다운로드 페이지 코어 영역에서도 받을 수 있습니다.

플랫폼별 주의사항

  • 배포판에 기본 포함된 systemd-resolved가 53번 포트를 사용하고 있어 설정의 dns.listen에서 53번을 지정하면 충돌합니다. Clash의 DNS 리스닝 포트를 1053 등으로 바꾸거나 resolved 설정을 조정하세요.
  • 방화벽(ufw/firewalld)이 켜져 있으면 allow-lan을 사용할 때 해당 포트를 허용해야 로컬 네트워크 기기가 접속할 수 있습니다.
  • Wayland 세션에서 일부 클라이언트의 트레이 아이콘이 표시되지 않는 경우가 있는데, 기능에는 영향이 없으며 앱 메뉴에서 메인 창을 다시 열 수 있습니다.

설정 문제 해결

구독 추가 실패

다음을 순서대로 확인하세요. 링크가 온전한지, 줄바꿈이나 공백으로 잘리지 않았는지 확인합니다. 브라우저에서 해당 링크를 직접 열어 텍스트 내용이 다운로드되면 링크 자체는 접근 가능하다는 뜻입니다. 다운로드된 내용이 YAML이 아니라 다른 형식이라면 구독이 Clash 형식이 아니라는 의미이므로, 서비스 제공업체에서 대상 형식을 바꾸거나 구독 변환 서비스를 한 번 거쳐야 합니다. 일부 구독 서버는 요청의 User-Agent를 검사하므로 다른 클라이언트로 추가하거나 클라이언트 설정에서 UA를 조정하면 우회할 수 있습니다.

모든 노드가 타임아웃

노드가 전부 빨갛게 표시된다고 해서 노드 자체가 문제인 것은 아니며, 대부분 로컬 연결 문제입니다. 확인 순서는 다섯 단계로 고정되어 있습니다. 구독이 만료되었는지 → 로컬 포트가 점유되어 있는지 → 시스템 프록시 스위치가 실제로 적용되었는지 → 노드 프로토콜과 코어가 맞는지 → DNS가 오염되었는지입니다. 각 단계의 판단법과 해결법은 블로그 글 노드 타임아웃 진단 순서에서 자세히 설명합니다.

규칙이 적용되지 않음

가장 흔한 원인 세 가지를 확률순으로 나열하면 다음과 같습니다. 첫째, moderule이 아닌 경우입니다. 전역 모드나 직접 연결 모드에서는 규칙 목록이 아예 판단에 개입하지 않습니다. 둘째, 규칙 순서 문제입니다. 규칙은 위에서 아래로 매칭되며 일치하면 멈추므로, 더 넓은 범위의 규칙 뒤에 커스텀 규칙을 두면 영원히 적용되지 않습니다. 셋째, 목표 트래픽이 이미 DNS로 해석된 IP를 사용해 DOMAIN 계열 규칙이 매칭되지 않는 경우입니다. 이때는 IP-CIDR 규칙을 추가하거나 fake-ip를 활성화해야 합니다. 규칙을 수정한 뒤에는 설정을 다시 불러오는 것을 잊지 마세요.

DNS와 fake-ip

DNS 오염이 발생하면 도메인이 잘못된 IP로 해석되어 "노드는 정상인데 특정 사이트만 안 열리는" 현상이 나타납니다. fake-ip 강화 모드 사용을 권장합니다. 클라이언트가 먼저 예약된 대역의 가상 IP를 반환하고, 실제 해석은 프록시 경로에서 이루어지므로 로컬 오염을 근본적으로 피할 수 있습니다. 참고 설정은 다음과 같습니다.

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query

fake-ip 모드에서 실제 IP가 필요한 일부 앱(로컬 네트워크 검색, 일부 게임)은 fake-ip-filter에 해당 도메인을 등록해 실제 해석을 사용하도록 할 수 있습니다. 관련 용어 설명은 개념 사전의 "네트워크와 DNS" 항목에서 확인하세요.

포트 충돌

기본 인바운드 포트 7890이 다른 프로그램에 점유되면 클라이언트 실행이 실패하거나 시스템 프록시가 빈 포트를 가리킬 수 있습니다. 해결법은 동일합니다. mixed-port를 사용하지 않는 포트로 바꾸고 클라이언트를 재시작한 뒤 시스템 프록시 설정의 포트도 함께 갱신되었는지 확인하세요. 점유 프로세스는 Windows에서는 netstat -ano, macOS/Linux에서는 lsof -i :7890으로 확인할 수 있습니다.

YAML 문법 오류

설정을 직접 수정한 뒤 "설정 불러오기 실패"가 뜬다면 열에 아홉은 YAML 문법 문제입니다. 세 가지 원칙을 기억하세요. 들여쓰기는 공백만 사용하고 한 단계마다 두 칸으로 통일하며 탭을 섞지 않습니다. 콜론 뒤에는 반드시 공백을 하나 둡니다. 값에 콜론, 井 기호나 특수 문자가 포함되어 있으면 전체 값을 인용부호로 감쌉니다. 수정한 뒤에는 클라이언트의 "설정 검사" 기능이나 코어의 mihomo -t -f config.yaml로 문법을 먼저 검사한 다음 정식으로 불러오세요.

구독 갱신 전략

구독 내용은 서비스 제공업체가 관리하며, 노드 변경 사항은 갱신을 통해 반영됩니다. 클라이언트의 자동 갱신을 켜고 주기를 24시간으로 설정하는 것을 권장합니다. 대규모 타임아웃이 발생하거나 공지에서 노드가 교체되었다고 안내하면 구독을 수동으로 한 번 갱신한 뒤 다시 테스트하세요. "구독 갱신"은 원격 콘텐츠로 로컬에서 수정한 내용을 덮어쓴다는 점에 주의하세요. 커스텀 규칙은 구독으로 생성된 파일을 직접 고치는 대신, 클라이언트가 제공하는 오버라이드/병합 설정에 작성해야 합니다.

다음 단계

플랫폼별 설치를 마쳤다면 입문 가이드로 돌아가 구독 추가, 모드 선택, 연결, 확인의 네 단계를 한 번 거쳐 연결이 정상인지 확인하세요. 특정 필드나 용어의 정확한 정의가 필요하면 개념 사전을 확인하고, 설치 파일과 각 클라이언트의 시스템 요구 사항은 다운로드 페이지에서 확인할 수 있습니다.