3696 字
18 分钟

mihomo(Clash Meta)完全配置指南 2026:配置文件详解 + 规则集 + TUN 模式 + Docker 部署 + 旁路由透明代理

mihomo(前身为 Clash Meta)是目前最活跃的开源代理内核,在原版 Clash 和 Clash Premium 相继停更后,mihomo 成为 2024-2026 年代理工具生态的事实标准内核。Clash Verge Rev、OpenClash、PassWall 等主流客户端均使用 mihomo 内核驱动。

本文聚焦 mihomo 内核层的深度配置,区别于其他前端客户端教程:直接操作 YAML 配置文件,掌握内核能力的上限,适合进阶用户和需要在路由器/服务器上部署的场景。


一、mihomo 与各版本 Clash 的关系#

2020 Clash(原版开源)
├── Clash Premium(官方闭源增强版)← 新增 TUN、Rule Provider、Script 等
└── Clash.Meta / Clash Meta(社区分支,完全开源)
2023年末
Clash 原版和 Premium 删库 ──→ Clash.Meta 社区接管,改名 mihomo
2024-2026 mihomo(当前主流)
内置于:Clash Verge Rev、OpenClash、sing-box GUI 等

mihomo vs Clash Premium 核心差异

功能Clash Premium(已删库)mihomo(当前)
TUN 模式✅ 更完善
Rule Provider
Script 脚本
VLESS Reality
Hysteria2
TUIC v5
开源❌ 闭源✅ 完全开源
维护状态❌ 已删库停更✅ 活跃维护

二、配置文件完整结构解析#

mihomo 使用 YAML 格式配置文件。以下是一份带完整注释的配置模板,覆盖所有常用字段:

# ╔══════════════════════════════════════════════════════════════╗
# ║ mihomo 配置文件完整模板(2026版) ║
# ╚══════════════════════════════════════════════════════════════╝
# ── 一、基础监听端口 ──────────────────────────────────────────
port: 7890 # HTTP/HTTPS 代理端口
socks-port: 7891 # SOCKS5 代理端口
redir-port: 7892 # 透明代理端口(用于旁路由/iptables 重定向)
tproxy-port: 7893 # TProxy 透明代理端口(Linux Only,用于 UDP)
mixed-port: 7897 # 混合端口(HTTP + SOCKS5 合一,推荐客户端使用)
# 允许局域网连接(旁路由方案必须开启)
allow-lan: true
# 绑定地址,* 表示监听所有接口
bind-address: "*"
# ── 二、运行模式 ─────────────────────────────────────────────
# rule:规则模式(推荐)| global:全局模式 | direct:直连模式
mode: rule
# 日志级别:info / warning / error / debug / silent
log-level: info
# 是否开启 IPv6 支持(通常建议关闭)
ipv6: false
# ── 三、外部控制 API(用于 UI 面板)────────────────────────
external-controller: 0.0.0.0:9090 # API 地址(面板通过此接口控制)
external-controller-tls: 0.0.0.0:9443 # HTTPS API(可选)
secret: "your-secret-token" # API 密钥(务必修改!)
# UI 面板文件目录(将 Yacd/MetaCubeX 前端放这里)
external-ui: /path/to/ui
# ── 四、DNS 配置 ─────────────────────────────────────────────
dns:
enable: true
listen: 0.0.0.0:53 # DNS 监听端口(TUN 模式会自动劫持)
ipv6: false
# enhanced-mode:fake-ip(推荐)或 redir-host
# fake-ip 模式:为所有域名返回假 IP(198.18.x.x),由 mihomo 解析实际地址
# 优点:DNS 不泄漏,延迟更低,更适合 TUN 模式
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
# 不使用 fake-ip 的域名(本地域名、NAS 等需要真实 IP 的服务)
fake-ip-filter:
- "*.lan"
- "*.local"
- "*.internal"
- "+.stun.*.*"
- "+.stun.*.*.*"
- "localhost.ptlogin2.qq.com"
- "dns.msftncsi.com"
# 用于引导解析 DoH/DoT 服务器域名的 DNS(必须是 IP,不走规则)
default-nameserver:
- 119.29.29.29 # 腾讯 DNSPod(国内快速)
- 223.5.5.5 # 阿里 DNS
# 主 DNS 服务器(推荐 DoH 防运营商劫持)
nameserver:
- https://doh.pub/dns-query # 腾讯 DoH
- https://dns.alidns.com/dns-query # 阿里 DoH
# 非中国域名使用海外 DNS(走代理解析)
fallback:
- https://1.1.1.1/dns-query # Cloudflare DoH
- https://8.8.8.8/dns-query # Google DoH
- tls://1.1.1.1:853 # Cloudflare DoT
# fallback 过滤规则:判断为国内 IP 或国内域名时用 nameserver,否则用 fallback
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
domain:
- "+.google.com"
- "+.facebook.com"
- "+.youtube.com"
# ── 五、TUN 模式 ─────────────────────────────────────────────
tun:
enable: true
stack: mixed # mixed(推荐)| system | gvisor
dns-hijack:
- "any:53" # 劫持所有 DNS 请求
- "tcp://any:53"
auto-route: true # 自动添加路由表
auto-redirect: true # 自动重定向(macOS/Linux)
auto-detect-interface: true # 自动检测出口网卡
# ── 六、代理节点(proxies)───────────────────────────────────
proxies:
# 也可以为空,全部通过 proxy-providers 拉取
- name: "手动节点示例"
type: vless
server: example.com
port: 443
uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
network: ws
tls: true
ws-opts:
path: /path
# ── 七、代理提供者(Proxy Providers)────────────────────────
proxy-providers:
# 从机场订阅链接动态拉取节点
MyAirport:
type: http
url: "https://你的机场订阅链接"
interval: 3600 # 每小时自动更新
path: ./providers/airport.yaml
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300 # 每 5 分钟测速
# ── 八、代理组(proxy-groups)──────────────────────────────
proxy-groups:
# 主选择组:手动选择或自动选最快
- name: "🚀 节点选择"
type: select
use:
- MyAirport # 使用 proxy-provider 中的节点
proxies:
- "♻️ 自动选择"
- DIRECT
# 自动测速选最快节点
- name: "♻️ 自动选择"
type: url-test
use:
- MyAirport
url: https://www.gstatic.com/generate_204
interval: 300
tolerance: 50 # 延迟差距超 50ms 才切换(防抖动)
# 流媒体专用组(手动指定解锁节点)
- name: "🎬 流媒体"
type: select
use:
- MyAirport
filter: "港|日|新|美|HK|JP|SG|US" # 过滤节点名称
# AI 服务专用组
- name: "🤖 AI 服务"
type: select
proxies:
- "🚀 节点选择"
use:
- MyAirport
filter: "美|日|US|JP"
# 兜底策略:没有匹配规则时走此组
- name: "🐟 漏网之鱼"
type: select
proxies:
- "🚀 节点选择"
- DIRECT
# ── 九、规则提供者(Rule Providers)────────────────────────
rule-providers:
# Loyalsoldier 维护的高质量规则集
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
icloud:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
path: ./ruleset/icloud.yaml
interval: 86400
apple:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
path: ./ruleset/apple.yaml
interval: 86400
google:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
path: ./ruleset/google.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
private:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
path: ./ruleset/private.yaml
interval: 86400
gfw:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
path: ./ruleset/gfw.yaml
interval: 86400
cncidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
lancidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
path: ./ruleset/lancidr.yaml
interval: 86400
# ── 十、分流规则(rules)────────────────────────────────────
rules:
# 广告域名:直接拒绝
- RULE-SET,reject,REJECT
# 私有/局域网:直连
- RULE-SET,private,DIRECT
- RULE-SET,lancidr,DIRECT,no-resolve
# iCloud 直连(国内 CDN 加速)
- RULE-SET,icloud,DIRECT
# Apple 服务:可根据需要改为 DIRECT 或代理
- RULE-SET,apple,DIRECT
# AI 服务:走 AI 专用组
- DOMAIN-SUFFIX,openai.com,🤖 AI 服务
- DOMAIN-SUFFIX,anthropic.com,🤖 AI 服务
- DOMAIN-SUFFIX,gemini.google.com,🤖 AI 服务
# 流媒体:走流媒体组
- DOMAIN-SUFFIX,netflix.com,🎬 流媒体
- DOMAIN-SUFFIX,nflxvideo.net,🎬 流媒体
- DOMAIN-SUFFIX,disney.com,🎬 流媒体
- DOMAIN-SUFFIX,hbo.com,🎬 流媒体
# Google 服务:走代理
- RULE-SET,google,🚀 节点选择
# 被墙域名:走代理
- RULE-SET,proxy,🚀 节点选择
- RULE-SET,gfw,🚀 节点选择
# 国内域名和 IP:直连
- RULE-SET,direct,DIRECT
- RULE-SET,cncidr,DIRECT,no-resolve
# GeoIP 判断
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
# 兜底:未匹配的走漏网之鱼组
- MATCH,🐟 漏网之鱼

三、proxy-groups 进阶配置#

3.1 fallback(故障切换组)#

proxy-groups:
# 故障切换:主节点不可用时自动切换到备用节点
- name: "🛡️ 故障切换"
type: fallback
use:
- MyAirport
url: https://www.gstatic.com/generate_204
interval: 60 # 每 60 秒检测一次
lazy: false # 启动时立即检测(不延迟)

3.2 load-balance(负载均衡组)#

proxy-groups:
# 负载均衡:多个节点同时使用,分散流量
- name: "⚖️ 负载均衡"
type: load-balance
use:
- MyAirport
url: https://www.gstatic.com/generate_204
interval: 300
# strategy: consistent-hashing # 同一域名固定打同一节点(默认)
strategy: round-robin # 轮询分配(适合无状态请求)

3.3 filter 过滤节点#

proxy-groups:
# 只使用机场中的香港节点
- name: "🇭🇰 香港节点"
type: url-test
use:
- MyAirport
filter: "(?i)港|HK|Hong Kong" # 正则匹配节点名称
url: https://www.gstatic.com/generate_204
interval: 300
tolerance: 30
# 排除某些节点(如排除试用/免费节点)
- name: "🚀 精选节点"
type: select
use:
- MyAirport
filter: "^(?!.*(?:试用|FREE|free)).*$" # 排除含"试用"和"FREE"的节点

四、TUN 模式详细配置与验证#

4.1 TUN stack 模式对比#

Stack说明适用平台推荐场景
mixedTCP 走 system,UDP 走 gvisor全平台推荐,通用性最好
system全部走系统网络栈Linux/macOS追求性能
gvisor全部走用户态网络栈全平台兼容性最佳,性能略低
lwip轻量级实现(实验性)嵌入式路由器资源受限场景

4.2 完整 TUN 配置#

tun:
enable: true
stack: mixed
# DNS 劫持:拦截所有 DNS 请求,防止 DNS 泄漏
dns-hijack:
- "any:53"
- "tcp://any:53"
# 自动路由:向系统路由表添加规则
auto-route: true
# 自动重定向(macOS/iOS 透明代理,Linux 不需要)
auto-redirect: true
# 严格路由:防止流量绕过 TUN
# strict-route: true # 开启后某些 LAN 功能可能受影响,按需启用
# 自动检测出口网卡
auto-detect-interface: true
# 以下为 Linux 旁路由场景配置(TUN 接口名称)
# device: utun0 # macOS 默认 utun0,Linux 默认 tun0
# 排除特定 IP 不走 TUN(如直连本地服务)
# exclude-package: [] # Android 专用,排除特定 App

4.3 验证 TUN 是否生效#

Terminal window
# 方法1:访问 IP 检测网站,查看 IP 是否变为代理 IP
curl https://ip.sb
# 方法2:ping 测试(TUN 模式下 ping 也走代理)
ping -c 3 8.8.8.8
# 若 TTL 值与直连不同,说明走了 TUN
# 方法3:DNS 泄漏检测
# 访问 https://dnsleaktest.com → Extended Test
# 所有 DNS 服务器应为代理节点的 DNS,不应出现运营商 DNS
# 方法4:查看 TUN 网卡
ip addr show # Linux:查看是否有 tun0 接口
ifconfig # macOS:查看是否有 utun 开头的接口

五、Docker 部署 mihomo + UI 面板#

5.1 目录结构准备#

Terminal window
mkdir -p /opt/mihomo/{config,ui}
cd /opt/mihomo

5.2 下载 UI 面板(MetaCubeX)#

Terminal window
# 下载 MetaCubeX-UI(功能最完整)
wget -O /tmp/metacubexd.tar.gz \
https://github.com/metacubex/metacubexd/releases/latest/download/compressed-dist.tgz
tar -xzf /tmp/metacubexd.tar.gz -C /opt/mihomo/ui/
# 或者使用更轻量的 Yacd-meta
wget -O /tmp/yacd-meta.tar.gz \
https://github.com/metacubex/yacd/releases/latest/download/yacd.tar.xz
tar -xJf /tmp/yacd-meta.tar.gz -C /opt/mihomo/ui/

5.3 配置文件#

/opt/mihomo/config/config.yaml 写入配置(参考第二节模板),重点注意:

# Docker 部署时监听 0.0.0.0 而非 127.0.0.1
external-controller: 0.0.0.0:9090
secret: "your-strong-secret"
# UI 文件路径(映射到容器内路径)
external-ui: /ui

5.4 Docker Compose 部署#

/opt/mihomo/docker-compose.yml
version: "3.8"
services:
mihomo:
image: metacubex/mihomo:latest # 官方镜像
container_name: mihomo
restart: unless-stopped
# 网络:host 模式允许 TUN/透明代理(推荐)
# 注意:host 模式下容器直接使用宿主机网络栈
network_mode: host
# 权限:TUN 模式需要 NET_ADMIN
cap_add:
- NET_ADMIN
volumes:
- ./config:/root/.config/mihomo # 配置文件目录
- ./ui:/ui # UI 面板文件
- /etc/localtime:/etc/localtime:ro # 同步时区
# 如果不用 host 模式,使用 bridge 并暴露端口
# ports:
# - "7897:7897" # mixed port
# - "9090:9090" # API
# - "7893:7893" # redir-port
devices:
- /dev/net/tun:/dev/net/tun # TUN 设备访问(不用 TUN 可去掉)
Terminal window
# 启动
docker compose up -d
# 查看日志
docker logs -f mihomo
# 重载配置(不重启容器)
curl -X PUT http://127.0.0.1:9090/configs \
-H "Authorization: Bearer your-strong-secret" \
-H "Content-Type: application/json" \
-d '{"path":"/root/.config/mihomo/config.yaml"}'

5.5 访问 UI 面板#

启动后访问:http://服务器IP:9090/ui

在面板中可以:

  • 实时查看所有节点延迟
  • 手动切换代理组
  • 查看实时连接列表
  • 修改运行模式(规则/全局/直连)

六、旁路由透明代理方案#

旁路由是指将一台 Linux 设备(树莓派、软路由、NAS、虚拟机)接入家庭网络,由它承担代理功能,其他设备只需将默认网关指向旁路由即可自动走代理,无需每台设备单独配置。

6.1 网络拓架构#

互联网
主路由(运营商光猫 / 家用路由器)
↓ 192.168.1.1
├── 旁路由(mihomo + Linux)192.168.1.2
│ ↑ 将网关/DNS 指向 192.168.1.2 的设备通过此处代理
├── 电脑 192.168.1.100 ← 网关改为 192.168.1.2
├── 手机 192.168.1.101 ← 网关改为 192.168.1.2
└── 其他设备...

6.2 mihomo 透明代理配置#

# 旁路由专用配置(在原配置基础上修改)
# 开启局域网访问
allow-lan: true
bind-address: "*"
# 透明代理端口
redir-port: 7892 # TCP 重定向
tproxy-port: 7893 # UDP TProxy(Linux Only)
# TUN 在旁路由方案中通常不需要(用 iptables 替代)
# tun:
# enable: false
# DNS 必须开启(旁路由承担 DNS 解析)
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
# ... 其余 DNS 配置同上

6.3 iptables 规则(Linux 旁路由核心)#

/opt/mihomo/iptables.sh
#!/bin/bash
# 旁路由透明代理 iptables 规则
# mihomo 代理用户(避免代理流量死循环)
MIHOMO_UID=1000 # mihomo 进程运行的 UID
# ── TCP 透明代理 ──────────────────────────────────────────────
# 创建自定义链
iptables -t nat -N MIHOMO
# 跳过本机流量和已被代理的流量
iptables -t nat -A MIHOMO -d 0.0.0.0/8 -j RETURN
iptables -t nat -A MIHOMO -d 10.0.0.0/8 -j RETURN
iptables -t nat -A MIHOMO -d 127.0.0.0/8 -j RETURN
iptables -t nat -A MIHOMO -d 169.254.0.0/16 -j RETURN
iptables -t nat -A MIHOMO -d 172.16.0.0/12 -j RETURN
iptables -t nat -A MIHOMO -d 192.168.0.0/16 -j RETURN
iptables -t nat -A MIHOMO -d 224.0.0.0/4 -j RETURN
iptables -t nat -A MIHOMO -d 240.0.0.0/4 -j RETURN
# 将其余 TCP 流量重定向到 mihomo 的 redir-port
iptables -t nat -A MIHOMO -p tcp -j REDIRECT --to-port 7892
# 对来自局域网的流量应用规则
iptables -t nat -A PREROUTING -p tcp -j MIHOMO
# 对本机发出的流量(mihomo 进程除外)也应用代理
iptables -t nat -A OUTPUT -p tcp \
! -m owner --uid-owner $MIHOMO_UID \
-j MIHOMO
# ── UDP 透明代理(TProxy)────────────────────────────────────
# 需要内核支持 ip_tables、xt_TPROXY、xt_mark
ip rule add fwmark 1 table 100
ip route add local default dev lo table 100
# UDP TProxy 规则
iptables -t mangle -N MIHOMO_UDP
iptables -t mangle -A MIHOMO_UDP -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A MIHOMO_UDP -d 240.0.0.0/4 -j RETURN
iptables -t mangle -A MIHOMO_UDP -p udp -j TPROXY \
--on-port 7893 --tproxy-mark 0x1/0x1
iptables -t mangle -A PREROUTING -p udp -j MIHOMO_UDP
echo "透明代理规则已应用"
Terminal window
# 赋予执行权限并运行
chmod +x /opt/mihomo/iptables.sh
bash /opt/mihomo/iptables.sh
# 设置开机自动运行(systemd)
cat > /etc/systemd/system/mihomo-iptables.service << 'EOF'
[Unit]
Description=mihomo iptables rules
After=network.target
[Service]
Type=oneshot
ExecStart=/opt/mihomo/iptables.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
systemctl enable mihomo-iptables

6.4 客户端设置#

其他设备要走旁路由代理,只需修改网关DNS 为旁路由 IP:

设置项原值改为
默认网关192.168.1.1(主路由)192.168.1.2(旁路由)
DNS 服务器192.168.1.1192.168.1.2

💡 如果不想逐台设备配置,可以在主路由的 DHCP 设置中将默认网关和 DNS 统一改为旁路由 IP,让所有设备自动走旁路由。


七、常见问题排查#

问题可能原因解决方法
规则集下载失败规则集 URL 无法访问(需要代理)在 mihomo 未启动时先挂 VPN 下载,或使用国内镜像
TUN 模式开启后网络全断路由冲突检查 auto-route 和系统路由表;重启 mihomo
DNS 泄漏(dnsleaktest 显示运营商 DNS)fake-ip 未生效确认 enhanced-mode: fake-ip;确认 DNS 监听在 53 端口
旁路由:局域网设备无法上网iptables 规则未加载运行 iptables 脚本;检查 allow-lan: true
proxy-provider 节点不更新缓存问题在 UI 面板手动刷新,或删除 ./providers/ 目录中的缓存文件
某些 App 不走代理该 App 使用了 DNS over HTTPS 绕过系统 DNS开启 TUN 模式;或在规则中添加该 App 的 DoH 域名强制走代理
secret 验证失败,API 不可访问Authorization Header 格式错误正确格式:Authorization: Bearer your-secret

八、与主流客户端的关系#

客户端内核定位推荐场景
Clash Verge RevmihomoGUI 桌面客户端Windows/macOS 日常使用
OpenClashmihomoOpenWrt 插件主路由集成
PassWall / SSR+多内核OpenWrt 插件旧版路由器
sing-box独立内核跨平台新一代替代方案
本文方案mihomo 裸核纯后端服务Docker/旁路由/服务器

相关文章

免责声明:本文仅为技术学习参考,请在当地法律法规允许的范围内合理使用。所有配置均在测试环境下验证,生产使用前请结合实际情况调整参数。

mihomo(Clash Meta)完全配置指南 2026:配置文件详解 + 规则集 + TUN 模式 + Docker 部署 + 旁路由透明代理
https://971918.xyz/posts/proxy-tools/mihomo-clash-meta-complete-guide/
作者
九所长
发布于
2026-07-10
许可协议
CC BY-NC-SA 4.0