전역 설정
config.yaml 최상위에서 proxies/rules와 같은 레벨에 위치하는 필드들로, 코어 자체의 동작 방식을 제어합니다: 어떤 주소를 리스닝할지, 어떤 모드로 실행할지, 로그를 얼마나 상세히 남길지, API를 어떻게 개방할지 등을 결정합니다. 왼쪽 목차에서 가이드, 아웃바운드 프록시, 라우팅 규칙 등 다른 섹션으로 바로 이동할 수 있습니다.
LAN 허용
allow-lan선택다른 기기가 이 기기의 프록시 포트를 통해 인터넷에 접속하도록 허용할지 여부입니다. 휴대폰이나 태블릿을 컴퓨터에서 실행 중인 Clash에 연결하려면 반드시 활성화해야 합니다.
bind-address선택바인딩 주소로, 다른 기기는 이 주소를 통해서만 접근할 수 있습니다. "*"는 모든 IP에 바인딩하며, 단일 IPv4/IPv6 주소를 입력해 하나의 네트워크 인터페이스에만 바인딩할 수도 있습니다.
lan-allowed-ips / lan-disallowed-ips선택LAN 접근을 위한 IP 화이트리스트와 블랙리스트로, allow-lan: true일 때만 적용되며 블랙리스트가 화이트리스트보다 우선합니다.
allow-lan: true bind-address: "*" lan-allowed-ips: - 0.0.0.0/0 - ::/0 lan-disallowed-ips: - 192.168.0.3/32
authentication선택http(s)/socks/mixed 프록시에 사용자 이름과 비밀번호 인증을 설정하며, "user:pass" 배열 형식입니다.
skip-auth-prefixes선택인증을 건너뛸 수 있는 IP 대역을 설정합니다. 예: 127.0.0.1/8, ::1/128.
실행 모드와 로그
mode기본값 rulerule 규칙 매칭(가장 많이 사용), global 전역 프록시로 모든 트래픽이 GLOBAL 프록시 그룹에서 선택된 노드를 거치고, direct 전역 직접 연결로 모든 프록시를 무시합니다.
log-level기본값 info로그의 상세 정도로, 적은 순에서 많은 순으로: silent 무음 → error → warning → info → debug(거의 모든 실행 정보를 출력하며, 문제 해결 시에만 필요).
ipv6기본값 true코어가 IPv6 트래픽을 허용할지 여부입니다.
find-process-mode기본값 strict연결을 시작한 프로세스를 매칭할지 여부입니다(PROCESS-NAME 규칙과 함께 사용): always는 모든 프로세스를 강제로 매칭하고, strict는 코어가 매칭이 필요한지 스스로 판단하며, off는 전혀 매칭하지 않습니다(공유기에서 실행할 때 추천).
TCP Keep Alive
모바일 기기에서는 다음 항목들을 적절히 조정하면 배터리 소모를 줄일 수 있습니다:
| 필드 | 설명 |
|---|---|
keep-alive-interval | TCP Keep Alive 패킷 전송 간격(초 단위) |
keep-alive-idle | TCP Keep Alive의 최대 유지 시간 |
disable-keep-alive | TCP Keep Alive를 비활성화합니다. Android에서는 강제로 true로 설정됩니다 |
외부 제어(API)
대시보드(Dashboard)는 여기서 설정한 RESTful API를 통해 코어와 통신합니다.
external-controller선택API 리스닝 주소로, 기본값 127.0.0.1:9090은 로컬 접근만 허용합니다. 0.0.0.0:9090으로 변경하면 모든 네트워크 인터페이스에서 리스닝할 수 있습니다(예: 휴대폰이 공유기에서 실행 중인 대시보드에 접속).
secret선택API 접근 키로, 0.0.0.0으로 개방할 때는 반드시 설정하는 것을 강력히 권장합니다. 그렇지 않으면 누구나 대시보드에 접속해 설정을 변경할 수 있습니다.
external-controller-cors선택API의 CORS 헤더 설정으로, allow-origins 배열과 allow-private-network로 구성됩니다.
external-ui / external-ui-url선택대시보드 정적 웹 리소스(예: metacubexd)를 API 주소/ui에 마운트합니다. external-ui-url은 대시보드 리소스를 자동으로 다운로드/업데이트할 주소를 설정하는 데 사용됩니다.
external-controller: 127.0.0.1:9090 secret: "" external-ui: ui external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip"
그 외에도 external-controller-tls(HTTPS API), external-controller-unix(Unix socket), external-controller-pipe(Windows namedpipe) 등의 고급 작성법이 있습니다. Unix socket / namedpipe로 API에 접근할 때는 secret을 검증하지 않으므로 보안에 직접 주의해야 합니다.
그 외 자주 쓰는 필드
| 필드 | 설명 |
|---|---|
unified-delay | 통합 지연 시간을 활성화하면 RTT를 계산해 서로 다른 프로토콜의 핸드셰이크 소요 시간으로 인한 지연 차이를 제거하여 속도 측정값을 서로 비교할 수 있게 합니다 |
tcp-concurrent | TCP 동시 연결을 활성화합니다: DNS로 해석된 모든 IP에 동시에 연결을 시도하고 가장 먼저 성공한 것을 채택하여 일부 회선의 연결 실패 문제를 완화할 수 있습니다 |
interface-name | mihomo의 트래픽 아웃바운드 네트워크 인터페이스를 지정합니다 |
routing-mark | Linux에서 아웃바운드 연결에 기본 라우팅 마크를 설정합니다 |
profile.store-selected | 각 프록시 그룹에서 마지막으로 수동 선택한 노드를 기억해 재시작 후에도 다시 선택할 필요가 없게 합니다 |
profile.store-fake-ip | fake-ip 매핑 테이블을 저장하여 도메인이 다시 연결될 때 기존 매핑 주소를 재사용합니다 |
global-client-fingerprint | 더 이상 사용되지 않으며, 각 proxy에서 직접 client-fingerprint를 설정하세요 |
GEO 데이터 소스
geodata-mode기본값 falseGEOIP 데이터 파일 형식으로, true는 .dat 형식을, false는 .mmdb 형식을 사용합니다.
geodata-loader기본값 memconservativestandard는 표준 로더이고, memconservative는 저용량 메모리 기기에 최적화된 로더입니다(공유기 등의 환경에 추천).
geo-auto-update / geo-update-interval선택GEO 데이터베이스를 자동으로 업데이트할지와 업데이트 간격(단위: 시간)입니다.
geox-url선택geoip/geosite/mmdb/asn 네 가지 데이터 파일의 다운로드 주소를 사용자 지정합니다. 네트워크 환경이 좋지 않을 때는 국내(중국) 미러로 변경할 수 있습니다.