mihomo 커널
Proxy engine / mihomomihomo는 Clash 생태계의 프록시 커널로, 설정 파싱과 규칙 매칭, DNS 처리, 연결 전달을 담당합니다. 커널은 그래픽 인터페이스와 다릅니다. 설정이 작동하는지 확인하려면 실제로 사용하는 커널과 해당 커널이 지원하는 항목을 확인해야 합니다. 클라이언트 이름이 같더라도 설치 환경에 따라 커널 기능이 모두 같다고 단정할 수 없습니다.
mode: rule
CLASH / CONFIGURATION GLOSSARY
커널, 규칙, DNS, 포트까지. 설정 단계에 맞는 용어를 찾아 실제 적용값과 비교해 보세요.
자주 쓰이는 용어 24개를 정리했습니다. 각 항목에는 고유 앵커가 있어 설명 위치를 가리키는 주소를 복사할 수 있습니다. 처음 설정한다면 입문 가이드를, 오류가 발생했다면 문제 해결 가이드에서 증상별로 확인하세요.
연결을 처리하는 커널, 조작 인터페이스, 연결 매개변수를 먼저 구분하세요.
mihomo는 Clash 생태계의 프록시 커널로, 설정 파싱과 규칙 매칭, DNS 처리, 연결 전달을 담당합니다. 커널은 그래픽 인터페이스와 다릅니다. 설정이 작동하는지 확인하려면 실제로 사용하는 커널과 해당 커널이 지원하는 항목을 확인해야 합니다. 클라이언트 이름이 같더라도 설치 환경에 따라 커널 기능이 모두 같다고 단정할 수 없습니다.
mode: rule
그래픽 클라이언트에서는 구독 관리, 정책 선택, 로그 확인, 시스템 프록시 설정을 할 수 있습니다. 인터페이스 설정이 커널 설정을 생성하거나 덮어쓸 수 있으므로, 문제를 해결할 때는 가져온 원본 파일뿐 아니라 실제 적용된 설정도 확인하세요. 클라이언트를 고를 때는 플랫폼과 아키텍처를 확인한 뒤 필요한 기능을 사용할 수 있는지 살펴보세요. 자세한 내용은 클라이언트 비교를 참고하세요.
프록시 노드는 원격 연결에 필요한 설정값의 묶음으로, 보통 서버 주소와 포트, 프로토콜, 인증 정보를 포함합니다. 목록에 표시된다는 것은 설정을 인식했다는 뜻일 뿐이며, 실제 연결 여부는 설정값과 네트워크, 서버 상태에 따라 달라집니다. 노드 이름은 식별을 위한 표기일 뿐 실제 접속 지역이나 프로토콜 종류를 보장하지 않습니다.
proxies:
클라이언트는 지정된 테스트 주소에 노드를 통해 접속해 응답 시간을 측정하는 경우가 많으며, 이는 ICMP ping과 다릅니다. 결과는 대상 주소와 핸드셰이크 과정, 네트워크 경로에 영향을 받으므로 다운로드 속도나 모든 사이트의 접속 가능 여부를 그대로 나타내지는 않습니다. timeout이 발생하면 테스트 주소에 연결할 수 있는지 확인한 뒤 문제 해결 가이드에 따라 로컬 네트워크와 노드 연결을 점검하세요.
type: url-test
프로토콜에 따라 설정 항목이 달라지므로 전송 방식과 인증 정보를 함께 맞춰야 합니다.
Shadowsocks는 암호화 프록시 프로토콜입니다. 서버 주소와 포트, 암호화 방식, 비밀번호가 서로 일치해야 합니다. 구독을 가져온 뒤 연결에 실패하면 암호화 방식과 추가 플러그인 요구 사항부터 확인하세요. 다른 프로토콜의 설정 항목으로 대신할 수 없습니다. UDP 전달 여부는 노드 설정과 서버 지원에 따라 달라지며, 이름에 SS가 들어간다는 이유만으로 결정되지는 않습니다.
type: ss
VMess는 클라이언트와 서버 설정을 맞춰야 하는 프록시 프로토콜이며, UUID가 대표적인 사용자 식별 항목입니다. WebSocket이나 TLS를 사용한다면 전송 경로와 호스트 이름, 인증서 설정도 확인해야 합니다. UUID만 맞는다고 연결이 보장되지는 않습니다. 로그에 인증 또는 핸드셰이크 오류가 표시되면 전송 매개변수를 더 확인하기 전에 시스템 시간이 정확한지 살펴보세요.
type: vmess
VLESS는 경량 프록시 프로토콜로, TLS와 같은 전송 암호화를 자체 제공하지 않습니다. TLS 또는 REALITY 사용 여부와 flow 설정은 서버 설정을 따라야 합니다. 프로토콜 이름만 바꿔서는 노드를 변환할 수 없습니다. 가져오기 전에 현재 커널이 필요한 조합을 지원하는지 확인해 설정 항목 비호환을 서버 장애로 오해하지 않도록 하세요.
type: vless
Trojan은 보통 TLS로 프록시 연결을 전달하고 비밀번호로 인증합니다. 문제를 해결할 때 주소와 비밀번호뿐 아니라 서버 이름과 인증서 검증 결과도 확인하세요. 인증서 검증을 건너뛰는 방법을 기본 해결책으로 삼아서는 안 됩니다. 서버가 WebSocket 등의 전송 방식을 별도로 사용하는 경우 클라이언트에도 해당 매개변수를 설정해야 합니다. 서버 포트만 입력해서는 연결할 수 없습니다.
type: trojan
규칙은 연결을 처리할 대상을 정하고, 정책 그룹은 사용할 연결 경로를 정합니다.
규칙 모드에서는 rules 목록을 위에서 아래로 확인해 연결에 적용할 규칙을 찾고, 일치한 규칙의 정책으로 연결을 처리합니다. 규칙을 수정할 때는 구체적인 조건을 포괄적인 조건보다 앞에 두고, 연결 기록에서 실제로 적용된 규칙을 확인하세요. 마지막에는 앞선 규칙에 일치하지 않은 연결을 처리하도록 MATCH를 두는 경우가 많습니다. 전역 모드에서는 규칙 모드를 기준으로 예상한 출구를 판단할 수 없습니다.
DOMAIN-SUFFIX,example.com,DIRECT
정책 그룹은 여러 노드나 다른 정책을 하나의 이름으로 묶어 규칙에서 참조할 수 있게 합니다. select는 직접 선택할 때, url-test는 테스트 결과에 따라 선택할 때 사용합니다. 그룹 안에서 노드를 선택해도 규칙 순서는 바뀌지 않으며, 모든 앱이 해당 그룹을 사용한다는 뜻도 아닙니다. 노드를 바꿨는데도 출구가 달라지지 않으면 연결에 적용된 그룹을 확인한 다음, 해당 그룹에서 실제로 사용되는 항목을 변경했는지 살펴보세요.
proxy-groups:
DIRECT는 프록시 노드를 거치지 않고 대상에 직접 연결하며, REJECT는 일치하는 연결을 차단합니다. 둘 다 내장 정책입니다. PROXY는 사용자가 정책 그룹 이름으로 지정하는 경우가 많으므로, 사용 전에 설정에 해당 이름이 실제로 있는지 확인하세요. 직접 연결도 로컬 라우팅 설정을 모두 우회한다는 뜻은 아닙니다. 차단 규칙은 연결 기록을 함께 확인해 잘못 차단했는지 판단해야 합니다.
DOMAIN-SUFFIX,example.com,REJECT
GeoIP는 IP 데이터베이스에 등록된 지역 정보를 바탕으로 대상 주소를 판별하며, 콘텐츠의 발신 지역이나 운영 주체의 소재지를 직접 확인하지 않습니다. CDN 사용이나 IP 변경에 따라 결과가 달라질 수 있습니다. 규칙의 no-resolve는 해당 규칙을 위해 도메인 조회를 새로 수행하지 않도록 합니다. 특정 도메인 목록을 안정적으로 매칭하려면 IP의 지역 정보에만 의존하기보다 도메인 규칙을 우선 고려하세요.
GEOIP,CN,DIRECT,no-resolve
도메인이 어떻게 조회되는지 확인한 다음 트래픽이 커널에 어떻게 들어오는지 살펴보세요.
DNS 조회는 도메인 이름을 연결에 필요한 주소로 변환합니다. 이름을 조회하는 경로와 실제 연결 경로는 별개입니다. 커널 DNS를 켠 뒤에도 앱의 요청이 해당 리졸버를 사용하는지 확인해야 합니다. 브라우저의 보안 DNS나 시스템 설정이 다른 경로를 사용할 수 있습니다. 도메인은 열리지 않지만 IP 주소로는 연결된다면 조회 응답과 캐시, 실제로 사용 중인 DNS 서비스를 확인하세요.
dns:
Fake-IP는 DNS 요청에 합성 주소를 돌려주고 커널에 도메인 매핑을 저장해 이후 연결을 도메인 기준으로 처리할 수 있게 합니다. 특정 앱에서 호환성 문제가 생기면 fake-ip-filter를 확인하세요. 모드를 바꾼 뒤에는 이전 DNS 캐시를 지우고 연결을 새로 설정하는 것이 좋습니다. 조회 결과가 합성 주소라고 해서 곧바로 오류인 것은 아닙니다. 이후 트래픽이 매핑을 보유한 커널로 들어가는지가 중요합니다.
enhanced-mode: fake-ip
TUN은 가상 네트워크 인터페이스로 IP 계층 트래픽을 받아 시스템 프록시 설정을 따르지 않는 일부 앱에도 적용할 수 있습니다. 권한과 라우팅, DNS 설정이 함께 맞아야 하며, 켰다고 모든 트래픽이 자동으로 전달되는 것은 아닙니다. 문제를 확인할 때는 가상 인터페이스와 라우팅이 구성됐는지 먼저 살펴보세요. 다른 VPN과 함께 실행하면 라우팅이 충돌할 수 있으므로, 원인을 좁히려면 하나씩 꺼서 테스트하세요.
auto-route: true
DNS 누수는 도메인 조회가 의도한 경로를 벗어나 원치 않는 DNS 서비스에 노출되는 현상입니다. 확인할 때는 시스템과 브라우저, 클라이언트 설정을 점검하고 로컬에서 요청을 보내는 출구와 재귀 DNS 리졸버의 출구를 구분해야 합니다. 지역 표시 하나만으로 결론을 내리지 마세요. 암호화 DNS를 사용한다는 것은 해당 조회 경로가 암호화된다는 뜻일 뿐, 조회가 의도한 프록시를 통과한다는 증거는 아닙니다.
설정의 출처와 파일 구조, 별도로 업데이트되는 리소스를 구분하세요.
구독 링크는 노드 목록이나 전체 설정을 가져오는 원격 주소이며, 클라이언트 프로그램 자체와는 다릅니다. 업데이트가 실패하면 응답 내용과 호환되는 형식인지 먼저 확인하세요. 링크에 접속 인증 정보가 포함될 수 있으므로 로그나 화면을 공유하기 전에 전체 주소를 가리세요. 웹페이지나 로그인 안내, 오류 메시지가 반환됐다면 파일 확장자를 바꾸는 것만으로 사용할 수 있는 YAML 설정이 되지는 않습니다.
구독 가져오기 단계 보기YAML은 들여쓰기로 데이터 계층을 표현하며, Clash 설정은 보통 config.yaml 파일로 저장합니다. 편집할 때는 Tab 대신 공백을 사용하고 같은 계층의 들여쓰기를 일관되게 유지하세요. 구문 분석을 통과해도 구조가 올바르다는 뜻일 뿐, 해당 항목의 지원 여부는 커널에서 확인해야 합니다. 오류가 난 줄뿐 아니라 그 위 계층의 들여쓰기도 함께 살펴보세요. 오류 줄만 수정하고 구조 문제를 남기지 않도록 주의해야 합니다.
config.yaml
Proxy Provider는 여러 노드를 별도로 불러오고 업데이트할 수 있는 리소스로 관리한 뒤 정책 그룹에서 참조하게 합니다. 리소스를 불러온 뒤에도 use 등의 설정으로 정책 그룹에 연결해야 합니다. provider만 정의하고 참조하지 않으면 라우팅 설정이 완성되지 않습니다. 노드 목록이 비어 있다면 리소스 가져오기, 내용 파싱, 정책 그룹 참조를 각각 확인해 문제를 분리하세요.
proxy-providers:
Rule Provider는 규칙 조건을 별도로 관리하고 RULE-SET을 통해 처리 정책을 지정하는 기능입니다. 리소스 형식은 behavior 및 format 설정과 맞아야 합니다. 규칙 세트도 참조된 위치에 따라 위에서 아래로 적용되는 순서에 포함됩니다. 규칙 리소스를 업데이트해도 정책 그룹이 자동으로 바뀌지는 않습니다. 규칙이 일치한 뒤 사용할 출구는 해당 규칙 세트를 참조하는 규칙이 지정합니다.
rule-providers:
로컬 수신 설정, 앱 설정, LAN 접근을 각각 확인하세요.
시스템 프록시는 운영체제 설정에 프록시 주소를 등록해 해당 설정을 따르는 앱에서 사용하게 합니다. 모든 트래픽을 처리하는 기능은 아닙니다. 브라우저에서는 연결되지만 다른 앱에서는 안 된다면 노드를 바꾸기 전에 해당 앱이 시스템 프록시를 사용하는지 확인하세요. 클라이언트를 종료한 뒤에도 네트워크에 연결되지 않는다면, 중지된 수신 포트를 가리키는 프록시 설정이 시스템에 남아 있는지 확인해야 합니다.
mixed-port는 하나의 로컬 포트에서 HTTP 프록시와 SOCKS 프록시 요청을 모두 받습니다. 앱에 입력하는 주소와 포트는 실제로 수신 중인 값과 일치해야 합니다. 포트가 이미 사용 중이면 수신에 실패할 수 있으며, 설정 예시의 숫자가 현재 클라이언트에서 사용 중인 포트라는 보장은 없습니다. 아래의 7890은 항목을 설명하기 위한 예시일 뿐이며 실제 값은 클라이언트 설정과 시작 로그를 확인하세요.
mixed-port: 7890
127.0.0.1과 IPv6의 ::1은 모두 로컬 기기를 가리키며, 앱이 로컬 프록시에 연결할 때 자주 사용합니다. 일부 Windows UWP 앱은 샌드박스의 루프백 제한을 받으므로 앱별 루프백 예외를 확인해야 합니다. LAN 접근을 켜도 이 권한 설정을 대신할 수는 없습니다. 다른 기기에서 127.0.0.1을 입력하면 Clash를 실행 중인 컴퓨터가 아니라 그 기기 자신에 연결됩니다.
127.0.0.1 / ::1
allow-lan은 다른 기기에서 커널의 프록시 수신 서비스에 접근할 수 있는지 제어하며, 수신 주소와 방화벽 설정도 함께 맞춰야 합니다. 신뢰할 수 있는 네트워크에서 필요한 경우에만 켜고 접근을 제한하세요. 프록시 포트와 컨트롤 인터페이스는 용도가 다르므로 함께 공용 인터넷에 노출하지 마세요. 다른 기기에서 연결할 때는 클라이언트를 실행하는 기기의 LAN 주소를 입력하고, 기기 간 통신이 가능한지 확인하세요.
allow-lan: true