mihomo 커널
Proxy coremihomo는 Clash Meta 프로젝트의 흐름을 이어 발전한 프록시 커널로, 프로토콜 연결, 규칙 매칭, DNS 등 네트워크 처리를 담당합니다. 커널은 단독으로 실행하거나 GUI 클라이언트에서 호출할 수 있으므로 클라이언트 이름과 커널 이름이 다를 수 있습니다. 특정 설정의 지원 여부는 앱 이름에 Clash가 포함되는지가 아니라 실제 실행 중인 커널과 지원 범위를 기준으로 확인해야 합니다.
개념 정리
설정 항목으로 개념을 찾고 네트워크 동작으로 차이를 확인하세요. 커널, 프로토콜, 라우팅, 구독에서 자주 쓰는 용어를 다섯 가지 주제로 정리했습니다.
실행 구성 요소
인터페이스, 처리 엔진, 프록시 아웃바운드는 서로 다른 요소입니다. 문제를 해결할 때는 먼저 어느 계층에서 문제가 발생했는지 확인하세요.
mihomo는 Clash Meta 프로젝트의 흐름을 이어 발전한 프록시 커널로, 프로토콜 연결, 규칙 매칭, DNS 등 네트워크 처리를 담당합니다. 커널은 단독으로 실행하거나 GUI 클라이언트에서 호출할 수 있으므로 클라이언트 이름과 커널 이름이 다를 수 있습니다. 특정 설정의 지원 여부는 앱 이름에 Clash가 포함되는지가 아니라 실제 실행 중인 커널과 지원 범위를 기준으로 확인해야 합니다.
GUI 클라이언트는 구독 가져오기, 정책 선택, 로그 확인 등을 시각적 인터페이스로 제공하며, 시스템 프록시 설정이나 서비스 관리 기능도 포함할 수 있습니다. 같은 커널을 여러 클라이언트에서 사용할 수 있고, 메뉴 이름과 설정 저장 방식은 앱마다 다릅니다. 클라이언트를 바꾸기 전에 지원 운영체제와 커널 유형, 설정 이전 방법을 각각 확인하세요.
클라이언트 비교 보기 ›노드는 보통 설정에 정의된 개별 프록시 아웃바운드를 뜻하며, 프로토콜 유형, 서버 주소, 포트, 인증 매개변수 등을 포함합니다. 노드 이름은 구분을 위한 라벨일 뿐 서버 위치, 회선 품질, 프로토콜 지원 여부를 보장하지 않습니다. 같은 서버에서 서로 다른 아웃바운드 설정을 제공할 수도 있으므로 연결 기록과 실제 앱 동작을 함께 확인해 노드를 선택하세요.
클라이언트의 지연 시간 테스트는 지정한 프록시를 통해 테스트 주소에 접속해 소요 시간을 기록하는 방식으로, 반드시 ICMP Ping을 의미하지는 않습니다. 결과는 테스트 대상, DNS, 연결 수립 과정, 당시 네트워크 상태에 따라 달라지며 다운로드 속도로 환산할 수 없습니다. 테스트가 시간 초과되더라도 모든 웹사이트에 연결할 수 없다는 뜻은 아니므로 테스트 주소의 접근성과 실제 연결 로그를 확인하세요.
클라이언트나 제어 패널이 커널과 상호작용하는 관리 인터페이스이며, 보통 external-controller 설정에서 수신 주소를 지정합니다. 연결 정보 조회, 정책 전환, 실행 상태 확인 등에 사용할 수 있지만 앱의 인터넷 연결을 위한 프록시 포트는 아닙니다. 필요한 접근 범위로 제한하고, 원격 관리 시에는 인증을 설정하고 방화벽 규칙도 확인하세요.
아웃바운드 연결
프로토콜은 통신 방식을 설명할 뿐 속도 순위를 직접 나타내지는 않습니다. 서버 구현, 네트워크 경로, 단말 리소스도 성능에 영향을 줍니다.
Shadowsocks는 암호화 프록시 프로토콜이며, 설정에서는 보통 ss로 표기합니다. 클라이언트와 서버에서 같은 암호화 방식과 인증 정보를 사용해야 하며, 프로토콜 확장이나 플러그인에 따라 추가 매개변수가 필요할 수 있습니다. 앱에서 사용하는 SOCKS 프록시 진입점과는 다른 개념이므로 이름이 비슷하다는 이유로 설정을 서로 바꿔 쓸 수는 없습니다.
VMess와 VLESS는 V2Ray 생태계의 서로 다른 프로토콜이지, 같은 설정 유형을 다르게 표기한 것이 아닙니다. VLESS는 자체적으로 데이터를 암호화하지 않으므로 연결의 보안 특성을 파악하려면 TLS나 REALITY 등의 적용 여부를 함께 확인해야 합니다. 가져올 때 전송 방식, 서버 이름, 인증 매개변수도 확인하세요. type만 바꿔서는 프로토콜을 변환할 수 없습니다.
Trojan은 보통 TLS를 통해 프록시 연결을 수립합니다. 설정의 비밀번호, 서버 주소, TLS 관련 매개변수가 일치해야 합니다. 인증서 검증에 실패하면 먼저 서버 이름, 기기 시간, 인증서 체인을 확인하고 검증을 건너뛰지 마세요. 같은 이름의 노드라도 전송 설정이 다를 수 있으며, 연결 여부는 양쪽 매개변수가 일치하는지에 달려 있습니다.
Hysteria2는 QUIC 기반이며 UDP 네트워크에 연결할 수 있어야 합니다. 패킷 손실이나 경로 변동이 있는 환경에서는 기존 TCP 전송과 특성이 다르게 나타납니다. 모든 네트워크에서 더 빠르다고 보장하지 않으며 대역폭과 혼잡 제어 설정도 사용 경험에 영향을 줍니다. 현재 네트워크에서 UDP가 제한된다면 DNS나 규칙을 반복해서 바꾸기보다 먼저 연결 가능 여부를 확인하세요.
TUIC도 QUIC 기반으로 TCP와 UDP 트래픽을 프록시할 수 있지만, 인증 방식과 설정, 구현 세부 사항은 Hysteria2와 다릅니다. 클라이언트와 서버가 호환되는 TUIC 프로토콜 버전을 지원해야 합니다. 모바일 기기에서는 지속 연결, 네트워크 전환, 백그라운드 실행에 따른 리소스 사용량도 확인해야 합니다. 프로토콜 이름만으로 배터리 절약 여부를 단정할 수 없습니다.
프로토콜별 설계 차이 살펴보기 ›매칭과 정책
규칙은 연결을 매칭하고 프록시 그룹은 아웃바운드를 구성합니다. 연결 정보를 확인할 때는 두 요소를 함께 살펴보세요.
규칙 모드에서는 커널이 설정 순서에 따라 연결의 도메인, 주소, 기타 조건을 확인하며, 보통 처음 일치한 규칙이 아웃바운드 정책을 결정합니다. 따라서 범위가 넓은 규칙을 앞에 두면 뒤에 있는 세부 규칙이 적용되지 않을 수 있습니다. Clash 사용자 규칙을 추가한 뒤에는 연결 정보에서 일치한 규칙을 확인하고, 마지막 기본 규칙이 원하는 정책을 가리키는지 확인하세요.
규칙 사용 안내 보기 ›프록시 그룹은 여러 노드나 다른 프록시 그룹을 하나의 논리적 아웃바운드로 묶어 규칙에서 공통으로 참조할 수 있게 합니다. select는 보통 수동 선택에, url-test는 테스트 결과에 따른 선택에, fallback은 사용 가능 여부에 따른 순차 전환에 사용됩니다. 그룹 이름만으로 동작을 알 수는 없습니다. 문제를 해결할 때는 그룹 안의 참조 항목을 펼쳐 최종적으로 사용되는 노드까지 확인하세요.
GeoIP는 IP를 기준으로 분류해 매칭하고, GeoSite는 도메인 집합을 기준으로 매칭합니다. 사용하는 데이터와 매칭 대상이 서로 다릅니다. 데이터에 기록된 분류가 대상 서비스의 현재 물리적 위치와 일치한다고 볼 수 없으며, 업데이트 지연으로 오차가 생길 수도 있습니다. 잘못 매칭되면 노드만 바꾸지 말고 도메인 해석 결과, 데이터 출처, 규칙 순서를 함께 확인하세요.
규칙 세트는 rule-providers로 정의하고 규칙 목록에서 RULE-SET으로 참조해 매칭 조건을 별도로 관리합니다. 규칙 세트 자체는 보통 노드를 선택하지 않으며, 최종 정책은 이를 참조하는 규칙에서 지정합니다. 사용할 때는 데이터 형식과 동작 유형이 맞는지 확인하고, 원격 업데이트 실패로 이전 데이터가 계속 사용되고 있지는 않은지도 살펴보세요.
규칙 모드는 규칙 목록에 따라 아웃바운드를 배정하고, 전역 모드는 주로 GLOBAL 프록시 그룹을 사용합니다. 직접 연결 모드에서는 커널로 들어온 연결을 바로 아웃바운드로 보냅니다. 전역 모드라고 해서 시스템의 모든 트래픽을 처리하는 것은 아니며, 처리 범위는 시스템 프록시, TUN, 앱 동작에 따라 달라집니다. 모드를 바꾼 뒤에는 새 연결을 만들어 확인하세요. 기존 연결은 이전 경로를 계속 사용할 수 있습니다.
트래픽 진입과 이름 해석
연결을 처리하는 경로와 도메인을 해석하는 경로는 서로 관련되어 있지만 다릅니다. 모드 전환만으로 실제 경로 확인을 대신할 수는 없습니다.
TUN 모드는 가상 네트워크 인터페이스로 IP 패킷을 받아 시스템 프록시 설정을 따르지 않는 일부 앱의 트래픽도 처리할 수 있습니다. 보통 관리자 권한, 서비스 구성 요소 또는 시스템 VPN 권한이 필요하며 라우팅 및 DNS 설정과 함께 사용해야 합니다. 특정 프록시 노드를 고정으로 사용하는 방식은 아닙니다. 처리되는 연결은 현재 모드와 규칙에 따라 아웃바운드가 결정되며 다른 VPN의 라우팅과 충돌할 수도 있습니다.
시스템 프록시는 운영체제에 프록시 주소와 포트를 등록해 해당 설정을 지원하는 앱의 연결을 클라이언트로 전달합니다. 일부 앱은 별도의 네트워크 설정을 사용하므로 시스템 프록시를 따르지 않을 수 있습니다. 따라서 브라우저가 작동한다고 모든 프로그램의 트래픽이 처리되는 것은 아닙니다. 클라이언트를 종료하거나 제거한 뒤에도 인터넷에 연결되지 않으면, 시스템 프록시 설정이 종료된 로컬 포트를 가리키고 있지 않은지 확인하세요.
Fake-IP는 도메인에 가상 주소를 반환하고 커널에 도메인과 주소의 매핑을 보존해 연결을 처리할 때 도메인 기준으로 다룰 수 있게 합니다. 반환되는 주소는 대상 서버의 실제 주소가 아니므로 외부 지리 위치 조회에 사용해도 의미가 없습니다. 실제 DNS 응답에 의존하는 일부 앱은 fake-ip-filter에 추가해야 하며, 설정 변경 후 관련 DNS 캐시를 비워야 할 수도 있습니다.
redir-host는 Fake-IP처럼 가상 주소를 반환하는 대신 앱에 실제 DNS 응답 주소를 반환합니다. 도메인 규칙의 정상적인 매칭 여부는 커널에 도메인 매핑 정보가 있는지, 스니핑이 적용되는지 등의 조건을 함께 살펴야 합니다. 강화 모드 전환은 만능 해결책이 아닙니다. 먼저 문제가 DNS 해석, 연결 처리, 규칙 매칭 중 어디에 있는지 확인한 다음 캐시와 해석 경로를 점검하세요.
DNS 누출은 도메인 조회가 예상한 해석 경로를 벗어나는 현상을 말합니다. 예를 들어 연결은 프록시를 통하지만 DNS 조회는 예상하지 못한 시스템 리졸버로 전달되는 경우입니다. 브라우저의 암호화 DNS, 시스템 DNS, IPv6, 클라이언트의 DNS 처리 범위를 함께 확인하세요. 검사 페이지에 특정 DNS 제공자가 표시된다는 사실만으로 누출을 단정할 수는 없으며, 예상 설정과 실제 조회 경로를 함께 살펴야 합니다.
설정 출처와 관리
원격 콘텐츠, 로컬 파일, 클라이언트 재정의는 각각 적용 범위가 다릅니다. 변경하기 전에 현재 어떤 설정 파일을 불러오는지 확인하세요.
Profile은 클라이언트가 관리하고 커널이 불러오는 설정 파일로, 보통 노드, 프록시 그룹, 규칙, DNS, 수신 포트 등을 포함합니다. 클라이언트에 여러 Profile을 저장할 수 있지만 일반적으로 현재 설정으로 선택되는 파일은 하나입니다. 가져오기에 성공했다고 바로 적용된 것은 아니므로 선택 상태, 커널 로드 결과, 연결 기록을 확인하세요.
구독 URL은 원격 설정이나 노드 데이터를 가져오는 데 사용합니다. 응답은 전체 YAML일 수도 있고 특정 형식의 노드 목록일 수도 있으므로 적절한 가져오기 방식을 선택해야 합니다. 구독을 업데이트했다고 프록시 연결이 수립되는 것은 아닙니다. URL에 접근 자격 증명이 포함되는 경우가 많으므로 공개 스크린샷에 노출하지 마세요. Clash 구독 업데이트에 실패하면 주소 만료, 요청 실패, 형식 분석 오류를 구분해 확인해야 합니다.
구독 관련 질문과 답변 보기 ›YAML은 Clash 계열 설정에서 자주 사용하는 구조화된 텍스트 형식으로, 들여쓰기와 키-값 쌍, 목록으로 계층 구조를 표현합니다. 들여쓰기에는 Tab 대신 공백을 사용해야 하며 문자열의 특수 문자는 따옴표로 감싸야 할 수 있습니다. 문법이 유효하더라도 현재 커널에서 모든 항목을 지원하는 것은 아니므로 저장 후 로드 로그를 확인하세요. 편집기에 오류가 없다는 이유만으로 설정이 올바르다고 판단하지 마세요.
프록시 제공자는 proxy-providers로 독립적으로 업데이트할 노드 소스를 정의하고 프록시 그룹에서 참조하는 방식으로, 노드 관리와 규칙 관리를 분리할 수 있습니다. 전체 Profile과 달리 보통 DNS나 라우팅 설정 전체를 제공하지 않습니다. 가져오기 전에 원격 콘텐츠 형식을 확인하고, 임의의 구독 URL을 입력하면 바로 사용할 수 있다고 가정하지 마세요.
재정의 또는 병합 기능은 원격 설정을 유지하면서 규칙 추가나 DNS 변경 같은 로컬 수정을 저장해 구독 업데이트로 변경 사항이 덮어쓰이는 일을 줄입니다. 보통 클라이언트에서 구현하며 앱마다 항목 우선순위, 목록 추가 및 대체 방식이 다를 수 있습니다. 수정 후에는 재정의 편집 영역만 확인하지 말고 커널에 전달되는 최종 설정을 확인하고, 복구할 수 있도록 원본 설정도 보관하세요.