截屏2026-09-16 19.59.44.jpg

零基础从零上手:Mihomo / Clash 进阶定制配置文件编写与修改完全指南

在线订阅转换工具https://limbopro.com/tools/2yaml
点此下载基础配置模板示例文件https://limbopro.com/tools/2yaml/Profiles4limbo.yaml
Profiles4limbo.yaml 文件里面涉及到分流规则来自:https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash

对于刚接触代理工具(如 Clash、Mihomo / Mihomo Party 等内核)的小白来说,打开一份动辄上千行的 YAML 配置文件时,往往会有一种面对“天书”的无力感。满屏的英文、奇怪的缩进、长长的链接,让人直呼头大。

但实际上,一份优秀的配置文件就像是一座全自动的现代化物流枢纽

  • 全局设置与 TUN 是枢纽的地基与总闸,决定了怎么接管你的电脑流量。

  • 智能 DNS 是分拣中心的“安检与地址翻译”,负责把网址精准翻译成 IP,顺便防住中间拦截。

  • 规则集 (rule-providers) 是海关的黑白名单目录,源源不断地更新哪些是广告、哪些是 AI、哪些是流媒体。

  • 策略组 (proxy-groups) 则是各个专属通道(如美区节点、故障自动切换、广告拦截拒收)。

  • 路由规则 (rules) 则是交警指挥官,自上而下指挥每一个数据包该走哪条专属通道。

本文将结合生产环境级别的进阶定制配置文件,带你用“第一性原理”彻底拆解每一个键值对,挖掘那些小白平时绝对想不到的细节、坑点与核心原理

🛠️ 第一章:动工前必须知道的 YAML 语法“三大铁律”

在正式修改或自己编写配置文件之前,必须先明白:YAML 是一种对格式极其苛刻的语言。只要有一处不注意,内核就会直接罢工报错。

  1. 绝对不能用 Tab 键缩进:每一层级的缩进必须使用空格(推荐统一按 2 个或 4 个空格)。如果在电脑上按了 Tab 键,轻则解析失败,重则直接崩溃。

  2. 冒号后面必须加空格:例如 type: http,冒号和 http 之间必须有一个半角空格,不能写成 type:http

  3. 短横线代表列表(数组):同级元素的罗列(如多个节点或规则)必须用 - 开头,且 - 后面也必须带一个空格。

🌐 第二章:全局基础设置与 TUN 虚拟网卡——整机流量的总闸

这部分是整个软件的“发动机舱”,决定了它的性能边界与工作姿态。

1. 基础网络与端口设置

YAML

mixed-port: 7890
allow-lan: true
ipv6: true
mode: rule
log-level: info
bind-address: "*"
unified-delay: true
tcp-concurrent: true
keep-alive-interval: 60
find-process-mode: strict
external-controller: 127.0.0.1:9090
external-ui: ui
external-ui-url: https://github.com/Zephyruso/zashboard/releases/latest/download/dist.zip
  • mixed-port: 7890:混合端口。相当于在电脑本地开了一个“总快递站”,同时支持 HTTP 和 SOCKS5 协议。本地局域网或不支持系统代理的软件,只要把代理服务器指向 127.0.0.1:7890 就能被内核接管。

  • allow-lan: true:允许局域网连接。开启后,同一路由器下的其他设备(如手机、平板、另一台电脑)也能通过你的电脑 IP 和 7890 端口共享代理。

  • ipv6: true:启用 IPv6 支持。如果你的宽带或机场支持 IPv6,开启它能正常解析和接管 IPv6 流量,防止 IPv6 泄露。

  • mode: rule:运行模式。设置为 rule(规则分流)表示根据路由规则自动判断哪些流量走代理、哪些直连;如果是 global 则是全部走代理,direct 则是全部直连。

  • unified-delay: true:统一延迟计算。让不同协议的节点测速标准趋于一致,避免虚假的低延迟。

  • tcp-concurrent: true:TCP 并发连接。对同一域名同时发起多个 TCP 连接并取最快的一个,能显著提升网页打开的响应速度。

  • find-process-mode: strict:进程匹配模式。设置为 strict(严格模式)可以精准识别到底是哪个应用(比如某个游戏或浏览器)在发起网络请求,从而实现“按进程分流”。

  • external-controllerexternal-ui:外部控制 API 与网页端面板(如 Zashboard)。这让你可以通过浏览器直观地看到实时流量曲线、当前连接数,并手动切换节点。

2. TUN 虚拟网卡模式(现代代理的灵魂)

YAML

tun:
  enable: true
  stack: system
  auto-route: true
  strict-route: true
  auto-redirect: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53
  • 小白必知细节:早期的代理软件需要你在每个软件里手动设置代理,或者依赖系统的 HTTP 代理。而开启 tun: enable: true 后,内核会在你的电脑操作系统里凭空“虚拟”出一张网卡。

  • stack: system:使用操作系统原生的网络协议栈,稳定性和兼容性最好。

  • auto-route: true:自动将操作系统的默认网关指向这张虚拟网卡。从此,无论是微信聊天、网游、还是各种不听话的后台软件,其所有流量都会被强行拦截并纳入内核分流,实现真正的全局接管

  • dns-hijack:强行将所有发往 53 端口的 DNS 请求拦截下来交由内核处理。这是防止本地运营商 DNS 投毒污染的关键招式

🔍 第三章:智能 DNS 配置——告别解析污染与缓慢

DNS 负责把网址(如 google.com)翻译成 IP 地址。不合理的 DNS 配置会导致网页打不开、加载慢,甚至被运营商重定向到广告页。

YAML

dns:
  enable: true
  ipv6: true
  use-hosts: true
  cache-algorithm: arc
  use-system-hosts: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/15
  fake-ip-range6: 2001:2::1/48
  fake-ip-filter:
    - rule-set:local_rules
  nameserver:
    - https://cloudflare-dns.com/dns-query#✈️ 机场专线
    - https://dns.google/dns-query#✈️ 机场专线
  • cache-algorithm: arc:采用 ARC(自适应替换缓存)算法。能极其聪明地缓存你经常访问的网址,再次访问时实现零延迟解析。

  • enhanced-mode: fake-ip(虚假 IP 模式)

    • 核心原理:当你在浏览器输入网址时,内核不会慢吞吞地去远端查真实 IP,而是瞬间秒回一个假的虚拟 IP(例如 198.18.x.x)给操作系统。操作系统误以为连接已建立,马上开始发送数据。与此同时,内核在后台默默把真实 IP 翻译出来并悄悄替换。这能让网页打开速度获得质的飞跃。
  • nameserver 的加密指向

    • [https://cloudflare-dns.com/dns-query#](https://cloudflare-dns.com/dns-query#)✈️ 机场专线:指定使用加密的 DoH(DNS over HTTPS)协议向 Cloudflare 查询境外网址,并且强制让这个查询走 ✈️ 机场专线。这样可以彻底避开本地运营商的 DNS 监听和污染。

📦 第四章:规则集提供者 (rule-providers)——自动进化的分流目录

如果把规则写死在配置文件里,几万行的代码会让文件变得无比臃肿且难以维护。现代配置文件引入了 rule-providers(规则集提供者),让内核可以联网自动同步最新的分流名单

YAML

rule-providers:
  openai: 
    type: http
    behavior: classical
    interval: 86400
    format: text
    url: https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/OpenAI/OpenAI.list
    path: ./ruleset/openai.list
  advertising_lite:
    type: http
    behavior: classical
    interval: 86400
    format: text
    url: https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/AdvertisingLite/AdvertisingLite.list
    path: ./ruleset/advertising_lite.list
  • type: http:表示这个规则集是通过网络链接远程下载的。

  • interval: 86400:更新频率。单位是秒,86400 秒正好等于 24 小时。也就是说,内核每天会自动去检查并下载一次最新的 OpenAI 或广告拦截黑名单。

  • path:下载到本地后的缓存路径。即使电脑断网重启,内核也能直接读取本地缓存的 openai.list 正常运行,不影响刚开机时的联网。

  • 小白避坑指南openaiadvertising_lite 只是你在这一段给它起的名字,这个名字在后面的 rules(路由规则)中必须完全一致,多打一个字母或大小写不对都会报错。

🎛️ 第五章:策略组定义 (proxy-groups)——节点的分类与智能调度

策略组是整个配置文件的核心灵魂,它决定了当流量触发某条规则时,应该交由哪个国家的节点、哪条专线、还是直接拦截。

1. 手动选择组 (select) 配合正则自动过滤

YAML

  - name: 🤖 OpenAI
    type: select
    proxies:
      - 🇺🇸 美国节点
      - 🇯🇵 日本节点
      - DIRECT
    include-all: true
    filter: "(?i)美国|USA|UnitedStates|US"
    icon: https://fastly.jsdelivr.net/gh/Koolson/Qure@master/IconSet/Color/ChatGPT.png
  • type: select:手动选择型。允许你在面板里随心所欲地点选。

  • include-all: truefilter 的黄金组合

    • 小白惊叹细节:很多小白最烦心的是机场订阅每次更新,节点名字都在变。而这里的 filter: "(?i)美国|USA|UnitedStates|US" 会通过正则表达式,自动把机场订阅里所有名字带“美国/US”的节点全部自动抓取并塞进这个组里。不管机场主怎么改名,美国节点永远会自动更新,再也不用手动一行行去写节点名了!

2. 故障自动切换组 (fallback)——永不断流的秘诀

YAML

  - name: ♻️ 故障切换
    type: fallback
    url: http://www.gstatic.com/generate_204
    interval: 60
    timeout: 3000
    include-all: true
    exclude-type: DIRECT
  • type: fallback:顺位故障切换。

  • 工作原理:内核每隔 60 秒(interval: 60)会自动去访问谷歌的测速网址 generate_204。如果排在第一位的节点突然超时(超过 3000 毫秒没响应,timeout: 3000)或者挂掉了,内核会瞬间无缝把流量切到下一个健康的节点上,你甚至在看视频或打游戏时都不会觉察到中断。

🚦 第六章:路由规则 (rules)——决定命运的交通指挥官

万事俱备,最后来到 rules。规则是整个配置文件的“最后一道关卡”,指挥着每一个数据包的去向。

核心铁律:自上而下,命中即停止!

内核在处理你的网络请求时,会像查户口一样从上到下挨个比对规则。只要你的访问请求命中了某一条规则,内核立刻停止向下匹配,直接把流量送往对应的策略组。

YAML

rules:
  - RULE-SET,adobecc,☠️ AdobeCrack
  - RULE-SET,adblock4limbo_surge,🛑 广告拦截
  - RULE-SET,openai,🤖 OpenAI
  - RULE-SET,youtube,🇾 YouTube
  - RULE-SET,local_rules,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,🐟 final
  • - RULE-SET,openai,🤖 OpenAI:如果你访问的网址命中了前面 rule-providers 载入的 OpenAI 列表,立刻交由 🤖 OpenAI 策略组处理。

  • - GEOIP,CN,DIRECT:如果目标服务器的 IP 地址归属在中国大陆(CN),直接走本地直连(DIRECT),绝不浪费宝贵的机场流量。

  • - MATCH,🐟 final(绝对不能少的核心兜底)

    • 小白致命大坑MATCH 兜底规则必须永远放在配置文件的最底部!它的意思是“前面所有规则都没匹配上的未知流量,统统走这里”。

    • 如果你不小心把 MATCH 写到了第一行,那么恭喜你,你的所有网页、广告、国内国外流量都会在第一行被全部拦截或统统送进同一个地方,导致全局瘫痪。

⚠️ 进阶避坑指南补充:filter 策略组与主流分流规则源的正确打开方式

在实际修改和自定义 proxy-groups(策略组)以及挑选分流规则时,往往有几个连老手也容易踩坑的细节。

一、 filter 过滤器的避坑要点与血泪教训

在编写策略组时,通过 filter 配合正则表达式自动抓取节点是非常爽的功能,但如果不注意以下几点,轻则导致策略组空空如也、网页无法打开,重则引发内核报错。

  1. 核心铁律:一个策略组里只能有一个 filter
  • 错误写法:试图在一个策略组里写多个 filter 或多行正则条件。

  • 后果:YAML 解析器或内核会直接忽略后面的 filter,或者因为键名重复导致配置文件直接解析失败拒绝启动

  • 正确做法:如果需要匹配多个关键词,必须在同一个 filter 字符串里用管道符 |(代表“或”)连起来。例如:

    YAML

    filter: "(?i)美国|USA|UnitedStates|US"
  1. 区分大小写与贪婪匹配的坑
  • (?i) 的妙用:正则表达式最前面加上 (?i) 代表忽略大小写。如果不加,机场节点如果写的是 us 01US 01,而你的正则写的是 us,就会漏掉大写的节点。

  • 谨防误伤:如果你想过滤“香港”节点,只写 是很危险的,可能会把“新加坡(Singapore)”里面包含某些奇怪字符的节点也误抓进来。建议使用规范的简写组合:

    YAML

    filter: "(?i)(香港|HK|HongKong|Hong)"
  1. filter 匹配不到任何节点时会发生什么?
  • 如果你的正则表达式写错了,导致机场里没有任何一个节点的名称能被它选中,该策略组就会变成空。

  • 此时如果有流量打入这个策略组,内核会直接报错或抛出 Proxy group [xxx] has no available proxies(策略组没有可用代理)的致命错误,导致断网。

  • 安全建议:在 proxies 列表里,除了靠 filter 自动抓取外,最好手动兜底写一个 DIRECT♻️ 故障切换,防止极端情况下策略组完全瘫痪。

二、 去哪里找主流、高质量的 Clash 分流规则?

如果你想自己添加新的分流(比如想单独分流某个冷门软件或游戏),绝不能随便去网上乱搜。业界公认最权威、更新最勤、生态最完整的 Clash/Surge 分流规则库,首推 blackmatrix7 大佬开源的 iOS Rule Script 项目

如何在实战中使用它?

点开上面的链接,你会发现里面按各大主流服务商(如 OpenAI、GitHub、Bilibili、Steam 等)分门别类整理好了 .yaml.list 格式的规则文件。

以添加 GitHub 分流为例,你只需要在你的配置文件中这样配置:

  1. 第一步:在 rule-providers 里登记远程链接

YAML

  rule-providers:
   github:
     type: http
     behavior: classical
     interval: 86400
     format: text
     url: https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/GitHub/GitHub.list
     path: ./ruleset/github.list
  1. 第二步:在 proxy-groups 里建一个对应的专属策略组(或者让它直接走“✈️ 机场专线”)

  2. 第三步:在 rules 路由规则里加上一行(注意:必须放在 MATCH 兜底的前面!)

YAML

  rules:
   - RULE-SET,github,✈️ 机场专线
   - MATCH,🐟 final

通过这种标准的模块化引入方式,你的配置文件不仅体积轻巧(保持在 30KB 左右),而且能够每天自动通过云端同步最新的网址黑白名单,真正实现“一次配置,永久省心”!

📝 总结:小白的 YAML 修改实战演练

现在,当你再次打开一份 mihomo / Clash 配置文件时,你可以自信地进行以下微调:

  1. 想加个新软件的分流?去网上找个 Surge/Clash 格式的 .list 链接,在 rule-providers 里照葫芦画瓢加一段,然后在 rules 里写一行 - RULE-SET,你的名字,你想走的策略组

  2. 想让某个国家的节点自动归类?复制一个 proxy-groups 模块,改改 namefilter 里面的正则表达式即可。

只要守住 “空格缩进、冒号空格、短横线列表、兜底放底部” 这四大金刚法则,你就能轻松驾驭属于自己的个性化网络分流世界!

最后修改:2026 年 09 月 17 日 12 : 48 AM