Mobile wallpaper
3822 字
19 分钟

mihomo (Clash) 配置详解:定制你的专属配置文件

2025-08-03
2025-11-16
浏览量 加载中...
AI内容警告

本文使用了AI润色,更多内容请看文章内容说明

文章内容过时,等待重置中…

更新日志

  • 2025-08-04: 优化描述,调整文章结构,部分内容润色。
阅前须知
  • 本文旨在帮助您理解 mihomo 配置文件的核心概念,掌握常用选项的用途,而不是直接提供一份现成的配置文件。
  • 本教程主要面向 Windows 用户,部分内容可能不适用于 Linux、Android、macOS 等其他平台。
  • 内容基于个人使用经验总结,如有错漏,欢迎指正。
  • 参考文档: MetaCubeX Wiki
  • 本人使用的是Sub-Store进行的订阅获取/转换, 以此能保证多设备的订阅统一(和多订阅合并/筛选节点/覆写流量信息/节点增加前缀), 所以不会包含代理集合相关的内容 因为我没用过
  • 如果在完整阅读后仍有疑问,建议优先查阅文档或者提问,不建议直接去问AI,不建议直接相信AI告诉你的任何内容,如果给你新增了某些选项或配置,建议优先查阅文档得知其作用
  • 除非你很有信心和时间,否则不建议从0开始写一份配置文件,那太累了,更推荐寻找他人分享的配置文件,在其基础上进行自定义修改

一、配置结构#

一份完整的 mihomo 内核配置文件(通常是 .yaml 格式)主要由以下几个部分组成:

  • 通用 (General): 基础设置,如代理端口、局域网访问控制等。
  • DNS
  • 代理节点 (Proxies) (本文不含相关内容,因为种类多且一般不会需要手动配置)
  • 代理集合 (Provider) (本文不含相关内容)
  • 代理组 (Proxy Groups)
  • 路由规则 (Rules)
  • 规则集合 (Rule Providers)

二、通用设置 (General)#

1. 代理端口#

这部分设置通常无需手动修改,因为客户端会自动覆写这些端口配置。一般只有跑裸核的时候需要修改

端口配置
# port: 7890
# HTTP(S) 代理服务器端口
# socks-port: 7891
# SOCKS5 代理端口
# 混合端口是一个特殊的端口,它同时支持 HTTP(S) 和 SOCKS5 协议。
# 您可以使用任何支持 HTTP 或 SOCKS 代理的程序连接到这个端口。
mixed-port: 10801 # HTTP(S) 和 SOCKS 代理混合端口
# 透明代理端口 (主要用于非 Windows 系统)
# redir-port: 7892 # 适用于 Linux/Android/macOS
# tproxy-port: 7893 # 仅适用于 Linux/Android

2. 局域网与验证#

allow-lan 设为 true 后,您局域网内的其他设备(如手机、电视)才能通过当前设备的 IP 和端口号进行代理。如果不需要,保持 false 即可。

局域网访问控制
allow-lan: true # 允许局域网连接
bind-address: "*" # 绑定所有 IP 地址
# authentication: # HTTP/SOCKS 入口验证,格式 "用户名:密码"
# - "user:password123"
# skip-auth-prefixes: # 跳过验证的 IP 段
# - 127.0.0.1/8
# - ::1/128
# lan-allowed-ips: # 允许连接的 IP 段 (白名单)
# - 0.0.0.0/0
# - ::/0
# lan-disallowed-ips: # 禁止连接的 IP 段 (黑名单,优先级更高)
# - 192.168.0.3/32

3. 控制面板 (Web UI)#

用于配置网页控制面板,如果您不使用 Web UI 或者通过客户端软件控制,可以忽略这部分。

Web UI 配置
# external-controller: 0.0.0.0:9093 # RESTful API 监听地址
# secret: "123456" # 连接密码
# external-ui: ui # 控制面板目录
# external-ui-name: zashboard # 控制面板名称
# external-ui-url: "https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip" # 下载地址

4. 核心行为#

这部分包含了一些影响网络性能和连接行为的关键选项。

个人建议

find-process-mode 我是 alwayslog-level 平时使用 infowarning 即可。

核心行为配置
unified-delay: true # 统一延迟计算,消除因协议不同带来的延迟差异
tcp-concurrent: true # TCP 并发连接,对同一域名解析出的多个 IP 同时发起连接,择优使用
# 进程匹配模式
# - always: 强制匹配所有连接的进程
# - strict: (默认) 由 mihomo 判断是否开启
# - off: 不匹配进程,推荐在路由器上使用
find-process-mode: always
# 全局 TLS 指纹,用于模拟特定浏览器行为,无特殊需求使用 chrome (整活可以填个`random`,不过应该没啥大影响)
global-client-fingerprint: chrome
profile:
store-selected: true # 记录策略组的选择
store-fake-ip: true # 持久化 fake-ip 分配记录
log-level: info # 日志等级: silent | error | warning | info | debug
ipv6: true # 全局 IPv6 开关,如果您的网络不支持 IPv6,建议关闭
# 运行模式
# - rule: 规则模式 (常用)
# - global: 全局代理
# - direct: 全局直连
mode: rule

5. GeoData#

GeoIP 和 Geosite 数据库是 GEOIPGEOSITE 规则的基础,通常保持默认即可。

GeoData 配置
# 自定义 geodata 数据库的下载地址
geox-url:
geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
mmdb: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"
# asn: "https://github.com/xishang0128/geoip/releases/download/latest/GeoLite2-ASN.mmdb"
geo-auto-update: false # 是否自动更新 geodata
geo-update-interval: 24 # 更新间隔 (小时)
geodata-mode: true # 更改 geoip 使用文件,mmdb 或者 dat,可选 true/false,true为 dat,此项有默认值 false

三、TUN 模式#

TUN 模式可以接管系统所有流量,实现真正的“全局代理”,比系统代理 (System Proxy) 更彻底。

个人建议

建议启用 TUN 模式。stack 如无使用问题,建议使用 mixed 栈,默认 gvisor

TUN 模式配置
tun:
enable: true
stack: mixed # 可选: system, gvisor, mixed
dns-hijack:
- 0.0.0.0:53 # 劫持所有 DNS 请求
# auto-detect-interface: true # 自动识别出口网卡
# auto-route: true # 自动配置路由表
# strict-route: true # 严格路由,防止流量泄漏
# mtu: 9000 # 最大传输单元,会影响极限状态下的速率,一般用户默认即可。

stack (协议栈) 说明:

  • system: 使用系统协议栈,可以提供更稳定/全面的 tun 体验,且占用相对其他堆栈更低
  • gvisor: 通过在用户空间中实现网络协议栈,可以提供更高的安全性和隔离性,同时可以避免操作系统内核和用户空间之间的切换,从而在特定情况下具有更好的网络处理性能
  • mixed: TCP 使用 system 栈,UDP 使用 gvisor 栈,使用体验可能相对更好。
防火墙问题

如果打开了防火墙,则无法使用 system 和 mixed 协议栈,通过以下方式放行内核: Windows: 设置 -> Windows 安全中心 -> 允许应用通过防火墙 -> 选中内核

MacOS: 一般无需配置,防火墙默认放行签名软件,如果遇到开启防火墙无法使用的情况,可以尝试放行:系统设置 -> 网络 -> 防火墙 -> 选项 -> 添加 mihomo app
Linux: 一般无需配置,防火墙默认不拦截应用,如果遇到开启防火墙无法使用的情况,可以尝试放行 TUN 网卡出站流量(假设 TUN 网卡为 Mihomo): sudo iptables -A OUTPUT -o Mihomo -j ACCEPT

顺带提一下,如果你是Android跑裸核的,用box4magisk这类模块,我个人认为使用透明代理更好


四、嗅探 (Sniffer)#

Sniffer 这个我觉得不需要花时间去配置(没啥好配置的);如果你使用的是机场,那么很有可能节点出口就开着嗅探,这里修改成啥都没影响

直接这样用都可以

Sniffer 配置
sniffer:
enable: true
override-destination: true # 使用嗅探结果作为实际访问地址
force-dns-mapping: true # 对 redir-host 类型识别的流量进行强制嗅探
parse-pure-ip: true # 对所有未获取到域名的流量进行强制嗅探
sniff:
HTTP:
ports: [80, 8080-8880]
TLS:
ports: [443, 8443]
QUIC:
ports: [443, 8443]
# force-domain: # 强制嗅探的域名列表
# - +.v2ex.com
# skip-domain: # 跳过嗅探的域名列表
# - Mijia Cloud

五、DNS 设置#

DNS 是整个配置的核心之一,直接影响访问速度和分流准确性。

关于DNS泄露#

无特殊需求不应追求”无 DNS 泄露”

为了追求所谓的“无 DNS 泄露”而全局使用国外 DNS (如 8.8.8.8),会导致所有域名都通过国外服务器解析。这会影响解析速度和解析结果

DNS泄露可以理解为DNS的出口的IP和你网络的出口IP地理位置不一致; 真要非常关心DNS泄露,那我建议你直接切换到全局模式,全走代理出口就好了

以我的博客为例:

  • 使用国内 DNS 解析: 会分流到优选的腾讯eo 国内解析
  • 使用国外 DNS 解析: Cloudflare CDN 国外解析

参考配置#

DNS 配置解释
dns:
enable: true
# 缓存算法,推荐arc,默认lru
cache-algorithm: arc
# DOH 优先使用 http/3
prefer-h3: false
use-hosts: true
use-system-hosts: true
# dns 连接遵守路由规则,需配置 proxy-server-nameserver
# 强烈不建议和 prefer-h3 一起使用
respect-rules: false
# DNS 服务监听,支持 udp, tcp; 一般无需设置
listen: 0.0.0.0:1053
ipv6: false
# 默认 DNS, 用于解析 DNS 服务器 的域名; 必须为 IP, 可为加密 DNS
default-nameserver:
- 223.5.5.5
# DNS处理模式,可选值 fake-ip/redir-host,默认redir-host
enhanced-mode: fake-ip
# fakeip 下的 IP 段设置,tun 的默认 IPV4 地址 也使用此值作为参考
fake-ip-range: 198.18.0.1/16
# 可选 blacklist/whitelist,默认blacklist,whitelist 即只有匹配成功才返回 fake-ip
fake-ip-filter-mode: blacklist
# fakeip 过滤,以下地址不会下发 fakeip 映射用于连接
fake-ip-filter:
- '*.lan'
# 指定域名查询的解析服务器,可使用 geosite, 优先于 nameserver/fallback 查询
# 个人认为没必要使用,除非你需要特定域名或规则特定DNS,如果只是CN这种的无需使用,只需要配置 default-nameserver,nameserver,fallback 这三个即可
nameserver-policy:
'+.arpa': '10.0.0.1'
'rule-set:cn':
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
# 默认的域名解析服务器
# 我一般放国内加密DNS
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
# 后备域名解析服务器,一般情况下使用境外 DNS, 保证结果可信
# 配置 fallback 后默认启用 fallback-filter,geoip-code为 cn
fallback:
- tls://8.8.4.4
- tls://1.1.1.1
# 代理节点域名解析服务器,仅用于解析代理节点的域名,如果不填则遵循 nameserver-policy、nameserver 和 fallback 的配置
# 个人认为无需配置
proxy-server-nameserver:
- https://doh.pub/dns-query
# 用于 direct 出口域名解析的 DNS 服务器,如果不填则遵循 nameserver-policy、nameserver 和 fallback 的配置
# 个人认为无需配置
direct-nameserver:
- system
# 是否遵循 nameserver-policy,默认为不遵守,仅当 direct-nameserver 不为空时生效
# 个人认为为无需配置
direct-nameserver-follow-policy: false
# 后备域名解析服务器筛选,满足条件的将使用 fallback 结果或只使用 fallback 解析
# 如无特殊规则需要添加也可以不配置,默认会配置 geoip-code为 cn
fallback-filter:
geoip: true
geoip-code: CN
geosite:
- gfw
ipcidr:
- 240.0.0.0/4
domain:
- '+.google.com'
- '+.facebook.com'
- '+.youtube.com'

enhanced-mode 的选择#

个人建议

我更喜欢 redir-host 模式,fake-ip 下访问部分域名异常, 需要在fake-ip-filter添加对应域名(也就是回退到 redir-host)才能访问, 既然如此那我就直接redir-host

fake-ip能实现非直连域名一定不在本地本机进行任何DNS解析,能有效避免DNS污染/泄露

我的 DNS 配置 (redir-host)
ddns:
enable: true
ipv6: false
prefer-h3: true
listen: 0.0.0.0:53
enhanced-mode: redir-host
cache-algorithm: arc
use-system-hosts: true
default-nameserver:
- "119.29.29.29"
- "223.5.5.5"
- "114.114.114.114"
- "tls://1.12.12.12:853"
- "tls://223.5.5.5:853"
nameserver:
- "system"
- "quic://223.5.5.5"
- "tls://dot.pub:853"
- "tls://dns.alidns.com"
fallback:
- "tls://1.1.1.1:853"
- "https://dns.google/dns-query"
- "tls://dns.google"
- "tcp://208.67.222.222"
- "tcp://8.26.56.2"

六、代理组 (Proxy Groups)#

代理组是 mihomo 实现复杂分流策略的基础,它允许你将多个节点按不同方式组织起来。

proxy-groups:
- name: "proxy"
# 策略组类型, select:手动选择, url-test:自动选择, fallback:自动回退(故障转移), load-balance:负载均衡(一般用不到)
type: select
# 引入出站代理(节点)或其他策略组
proxies:
- DIRECT
- ss
# 引入代理集合(由于本文不含相关内容,因此简单解释一下,就是引入某个机场的节点)
use:
- provider1
- provider1
# 健康检查测试地址, 只会检查代理组的 proxies 字段的代理,不会检查代理集合(proxy-providers)的代理(通过 use 引入的)。
url: 'https://www.gstatic.com/generate_204'
# 健康检查间隔,如不为 0 则启用定时测试,单位为秒
interval: 300
# 懒惰状态,默认为true,未选择到当前策略组时,不进行测试
lazy: true
# 健康检查超时时间,单位为毫秒
timeout: 5000
# 最大失败次数,超过则触发一次强制健康检查,默认 5
max-failed-times: 5
# 禁用该策略组的UDP
disable-udp: true
# 引入所有出站代理以及代理集合,顺序将按照名称排序; 引入不包含策略组,可在proxies引入其他策略组
include-all: false
# 引入所有出站代理,顺序将按照名称排序; 引入不包含策略组,可在proxies引入其他策略组
include-all-proxies: false
# 引入所有代理集合,顺序将按照名称排序; 会使引入代理集合失效
include-all-providers: false
# 筛选满足关键词或正则表达式的节点,可以使用 ` 区分多个正则表达式; 仅作用于引入代理集合以及引入所有出站代理
# 搭配 include-all: true ,是一个较常用的筛选方式,例如筛选某个国家的节点
filter: "(?i)港|hk|hongkong|hong kong"
# 排除满足关键词或正则表达式的节点,可以使用 ` 区分多个正则表达式
# 可以用于排除一些流量信息节点(如果你认为不需要的话)
exclude-filter: "美|日"
# 不支持正则表达式,通过 | 分割,根据节点类型排除,仅排除引入出站代理
# 支持类型请参阅Adapter Type (https://github.com/MetaCubeX/mihomo/blob/fbead56ec97ae93f904f4476df1741af718c9c2a/constant/adapters.go#L18-L45),无视大小写
exclude-type: "Shadowsocks|Http"
# 健康检查时期望的 HTTP 响应状态码。若配置了该字段,则只有当响应状态码与期望状态一致时才认为节点可用。默认为 *,表示对响应状态不做要求
expected-status: 204
# 在 api 返回hidden状态,以隐藏该策略组展示 (需要使用 api 的前端适配)
hidden: true
# 在 api 返回icon所输入的字符串,以在该策略组显示 (需要使用 api 的前端适配)
# 很常用的配置
icon: xxx

七、路由规则 (Rules)#

规则是配置的最后一道关卡,它定义了什么样的请求应该走哪个策略组。规则从上到下依次匹配,一旦匹配成功,后续规则将被忽略。 推荐把所有非IP类规则写在IP类规则之前

常用规则类型#

类型描述示例
DOMAIN匹配完整域名DOMAIN,google.com,代理
DOMAIN-SUFFIX匹配域名后缀DOMAIN-SUFFIX,google.com,代理 (匹配 www.google.com)
DOMAIN-KEYWORD匹配域名关键字DOMAIN-KEYWORD,google,代理
DOMAIN-WILDCARD通配符匹配DOMAIN-WILDCARD,*.google.com,代理 (仅支持*?)
GEOIP匹配 IP 归属地GEOIP,CN,DIRECT (匹配中国大陆 IP)
GEOSITE匹配预设的网站列表GEOSITE,google,代理
MATCH最终规则,匹配所有剩余流量MATCH,DIRECT
PROCESS-NAME使用进程匹配,在Android平台可以匹配包名PROCESS-NAME,qq.exe,REJECT
TIP

更多规则类型和高级用法,请参阅 官方文档


八、规则集合 (Rule Providers)#

为了方便管理和更新大量的规则,我们可以使用远程规则订阅。

rule-providers:
# 订阅一个名为 "google" 的规则集
google:
type: http # 订阅类型, 可选http / file / inline (除了http外其他两个应该很少用)
behavior: classical # 行为 (domain/ipcidr/classical)
format: yaml # 格式,可选 yaml/text/mrs,默认 yaml
url: "https://raw.githubusercontent.com/user/repo/Google.yaml"
path: ./rules/google.yaml # 本地路径,可选
interval: 86400 # 更新间隔 (秒),例如 86400 为一天
proxy: DIRECT # 使用哪个策略组下载规则, 可选

然后在路由规则部分,使用 RULE-SET 来引用它:

rules:
- RULE-SET,google,代理

赞助支持

如果这篇文章对你有帮助,欢迎赞助支持!

赞助
mihomo (Clash) 配置详解:定制你的专属配置文件
https://blog.cmtyx.top/posts/mihomo-config-guide/
作者
璨梦踏月
发布于
2025-08-03
许可协议
CC BY-NC-SA 4.0
最后更新于 2025-11-16

评论区

目录