Skip to content

mihomo — 配置结构

mihomo 启动时读取单个 YAML 文档。根文档映射到 config/config.go:392 中的 Go 结构体 RawConfig。与 Xray 和 sing-box 不同, mihomo 不存在顶层 log —— 多数运行时开关都是文档根部的扁平 键,只有少数功能区使用嵌套块(dnstunprofile 等)。

扁平顶层字段

下表是直接位于文档根部的标量字段。

Go 字段类型页面描述
portPortint基础HTTP 代理端口。
socks-portSocksPortint基础SOCKS 代理端口。
redir-portRedirPortint基础Linux REDIRECT 入站端口。
tproxy-portTProxyPortint基础Linux TPROXY 入站端口。
mixed-portMixedPortint基础HTTP + SOCKS 复用端口。
ss-configShadowSocksConfigstringShadowsocksShadowsocks 入站 URI。
vmess-configVmessConfigstringVMessVMess 入站 URI。
inbound-tfoInboundTfobool基础入站的 TCP Fast Open。
inbound-mptcpInboundMPTCPbool基础入站的多路径 TCP。
authenticationAuthentication[]string基础HTTP/SOCKS 鉴权用的 user:pass 列表。
skip-auth-prefixesSkipAuthPrefixes[]netip.Prefix基础可跳过鉴权的来源 CIDR。
lan-allowed-ipsLanAllowedIPs[]netip.Prefix基础allow-lan 为 true 时的允许列表。
lan-disallowed-ipsLanDisAllowedIPs[]netip.Prefix基础allow-lan 为 true 时的拒绝列表。
allow-lanAllowLanbool基础将监听器绑定到 0.0.0.0/:: 而非 localhost。
bind-addressBindAddressstring基础覆盖绑定地址(与 allow-lan 配合)。
modeModeT.TunnelMode基础rule / global / direct
unified-delayUnifiedDelaybool基础消除代理 URL 测试中的握手偏差。
log-levelLogLevellog.LogLevel日志debug / info / warning / error / silent
ipv6IPv6bool基础在整个协议栈启用 IPv6。
external-controllerExternalControllerstring外部控制器RESTful API 监听地址。
external-controller-pipeExternalControllerPipestring外部控制器API 的 Windows 命名管道路径。
external-controller-unixExternalControllerUnixstring外部控制器API 的 Unix 套接字路径。
external-controller-tlsExternalControllerTLSstring外部控制器TLS 监听地址。
external-controller-corsExternalControllerCorsRawCors外部控制器CORS 允许列表。
external-uiExternalUIstring外部控制器面板的静态资源目录。
external-ui-urlExternalUIURLstring外部控制器面板 tarball 的自动下载 URL。
external-ui-nameExternalUINamestring外部控制器external-ui 下的子目录名。
external-doh-serverExternalDohServerstring外部控制器由 mihomo 自身托管的 DoH 端点。
secretSecretstring外部控制器API 的 Bearer 令牌。
interface-nameInterfacestring基础出站绑定的接口。
routing-markRoutingMarkint基础出站套接字的 Linux SO_MARK。
tunnelsTunnels[]LC.Tunnel隧道静态端口到目标的隧道。
geo-auto-updateGeoAutoUpdateboolGeo 数据自动刷新 geoip / geosite 资源。
geo-update-intervalGeoUpdateIntervalintGeo 数据自动刷新间隔(小时)。
geodata-modeGeodataModeboolGeo 数据使用 geoip.dat 替代 Country.mmdb
geodata-loaderGeodataLoaderstringGeo 数据加载器选择(memconservativestandard)。
geosite-matcherGeositeMatcherstringGeo 数据匹配器实现。
tcp-concurrentTCPConcurrentbool基础并发 A / AAAA 拨号。
find-process-modeFindProcessModeprocess.FindProcessMode基础strict / always / off
global-client-fingerprintGlobalClientFingerprintstring基础出站的默认 uTLS 指纹。
global-uaGlobalUAstring基础默认 HTTP User-Agent
etag-supportETagSupportbool基础订阅获取时遵循 ETag
keep-alive-idleKeepAliveIdleint基础TCP keepalive 空闲时长(秒)。
keep-alive-intervalKeepAliveIntervalint基础TCP keepalive 间隔(秒)。
disable-keep-aliveDisableKeepAlivebool基础禁用 TCP keepalive。

嵌套块与列表

Go 字段类型页面描述
proxy-providersProxyProvidermap[string]map[string]any代理组远端代理列表。
rule-providersRuleProvidermap[string]map[string]any规则远端规则集。
proxiesProxy[]map[string]any代理组出站代理定义。
proxy-groupsProxyGroup[]map[string]any代理组组:selector / url-test / fallback / load-balance / relay。
rulesRule[]string规则路由规则(紧凑字符串形式)。
sub-rulesSubRulesmap[string][]string规则命名的子规则组。
listenersListeners[]map[string]any代理组自由形式的入站监听器。
hostsHostsmap[string]anyDNS静态 DNS 覆盖。
dnsDNSRawDNSDNSDNS 子系统块。
ntpNTPRawNTPNTP内嵌 NTP 客户端。
tunTunRawTunTUNTUN 入站。
tuic-serverTuicServerRawTuicServerTUICTUIC 入站。
iptablesIPTablesRawIPTablesiptablesLinux iptables 自动配置。
experimentalExperimentalRawExperimental实验性指纹、QUIC 调优、IPv4-in-IPv6 转换。
profileProfileRawProfile配置档案持久化状态(选中的代理、fake-ip 缓存)。
geox-urlGeoXUrlRawGeoXUrlGeo 数据四个 geo 资源文件的下载 URL。
snifferSnifferRawSniffer嗅探器连接嗅探(TLS SNI、HTTP Host、QUIC)。
tlsTLSRawTLSTLS入站的默认 TLS 凭据。
clash-for-androidClashForAndroidRawClashForAndroidClash for AndroidAndroid 应用专属设置。

一览

yaml
mode: rule
mixed-port: 7890
allow-lan: false
log-level: info
external-controller: 127.0.0.1:9090

dns:
  enable: true
  nameserver:
    - https://1.1.1.1/dns-query

proxies: []
proxy-groups: []
rules: []

源码: config/config.go:392-459 · v1.19.24 (a847246)

由 Argsment 出品的 Core Tutorial