搜索 K
深色模式
深色模式
直接答案:Clash 的 YAML 配置文件本质上是一份严格遵循数据树结构的声明式流量路由图谱。一个标准且高可用的生产级配置,由 全局通用基础参数、DNS 模块、TUN 虚拟网卡、Proxies 单节点数组、Proxy-Groups 策略组调度池、Rule-Providers 远程规则集 以及 Rules 路由分流列表 这七大核心模块自顶向下组织而成。只要理清了这七大模块的数据依赖与执行顺序,就能从根本上解决 90% 以上的配置解析错误与分流异常。
以下为在生产级 Mihomo 内核上经过完整静态语法校验的标准架构模板。全景展示了七大顶级块在 YAML 树形结构中的相对位置与父子缩进关系:
# ========================================================
# 模块 1:全局基础网络与控制参数 (General Settings)
# ========================================================
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
ipv6: false
unified-delay: true
tcp-concurrent: true
find-process-mode: strict
global-client-fingerprint: chrome
# ========================================================
# 模块 2:本地 DNS 调度与防污染引擎 (DNS Engine)
# ========================================================
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- 'localhost.ptlogin2.qq.com'
- '+.msftconnecttest.com'
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
# ========================================================
# 模块 3:系统级透明代理接管 (TUN Virtual Interface)
# ========================================================
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
strict-route: true
# ========================================================
# 模块 4:出站代理单节点声明 (Proxies / Outbound Nodes)
# ========================================================
proxies:
- name: "香港 IEPL 原生 01"
type: vless
server: hk01.example.com
port: 443
uuid: "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d"
network: tcp
tls: true
udp: true
flow: xtls-rprx-vision
servername: hk01.example.com
client-fingerprint: chrome
# ========================================================
# 模块 5:外部节点提供商解耦 (Proxy Providers)
# ========================================================
proxy-providers:
Airport-Subscription:
type: http
url: "https://example.com/api/v1/client/subscribe?token=secret"
interval: 86400
path: ./profiles/proxies/airport.yaml
health-check:
enable: true
interval: 300
url: http://www.gstatic.com/generate_204
# ========================================================
# 模块 6:策略组路由池设计 (Proxy Groups)
# ========================================================
proxy-groups:
- name: PROXY
type: select
proxies:
- AUTO-FASTEST
- "香港 IEPL 原生 01"
- DIRECT
use:
- Airport-Subscription
- name: AUTO-FASTEST
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
use:
- Airport-Subscription
- name: AI-Services
type: select
proxies:
- PROXY
- "香港 IEPL 原生 01"
# ========================================================
# 模块 7:规则提供商与分流规则链 (Rule Providers & Rules)
# ========================================================
rule-providers:
reject-rules:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
rules:
- RULE-SET,reject-rules,REJECT
- DOMAIN-SUFFIX,openai.com,AI-Services
- DOMAIN-SUFFIX,chatgpt.com,AI-Services
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY顶级参数决定了 Clash 核心在操作系统中的监听姿态与控制权限:
mixed-port(混合监听端口):现代 Clash 推荐统一使用 mixed-port(如 7890 或 7892),它同时兼备 HTTP 与 SOCKS5 双协议代理能力,废弃了以往分别定义 port 与 socks-port 的冗余做法;mode(工作模式):必须显式设为 rule(规则模式),核心才会执行路由表的匹配逻辑;若设为 global(全局)则所有流量均直接走单一选定节点,direct 则全量直连;unified-delay(统一延迟计算):建议开启。该参数会统一消除各客户端对 TCP 握手 RTT 计算的算法差异,反映节点最真实的往返耗时;find-process-mode:在桌面端推荐设为 strict,以支持 PROCESS-NAME 对应用程序进程名的高精度抓取。DNS 解析是整个代理链路中最容易被运营商嗅探与劫持的环节:
enhanced-mode: fake-ip 机制:内核充当本地 DNS 服务器,收到客户端发起的 DNS 解析时,不向远端查询,而是秒级返回一个保留网段(如 198.18.0.0/16)的虚拟 IP;<虚拟 IP, 真实域名> 的映射表。当浏览器后续发起 TCP SYN 连接时,核心从内存中提取真实域名,直接转发给海外节点由远端节点代为解析。此过程省去了一次完整的跨洋 DNS 查询 RTT;nameserver vs fallback:常规查询由国内高效 DNS(如 223.5.5.5)响应;针对触发污染的域名,通过 fallback 中的加密 DoH(DNS-over-HTTPS)管道在境外解析,结合 fallback-filter 杜绝投毒。传统 HTTP/SOCKS 代理依赖客户端应用主动适配系统代理配置,而像 UWP 应用、命令行终端、原生 Docker 容器与联机对战游戏往往忽略系统代理:
Mihomo 或 Clash 的虚拟网卡;stack: system:调用操作系统的原生 TCP/IP 协议栈,性能优异且在高吞吐下开销可控;针对需要精细数据包过滤的场景,可切换为 gvisor 用户态协议栈;auto-route: true:自动将系统默认网关流量重定向至虚拟网卡,搭配 dns-hijack 截获局域网所有 53 端口流量。proxies 是一个包含具体节点服务器参数的列表对象:
name;type(如 vless、trojan、ss)、服务器地址 server 与端口 port;flow: xtls-rprx-vision、Reality 的 public-key 与 short-id 等。以往直接在配置文件中粘贴数百个服务商节点,会导致单个 YAML 文件动辄数千行,一旦节点名称变动,后续引用的策略组全部失效:
type: http 声明机场订阅链接,内核将其作为外部资源独立下载并存放在本地 path 缓存中;interval: 86400 让订阅在后台每日自动拉取,即使服务商增减节点,主配置架构纹丝不动;health-check 字段,节点状态在 Provider 内部维护,不阻塞主线程。策略组向上承接规则引擎匹配到的出站决策,向下分发到具体的单节点或 Provider 节点池:
select(手动选择):由用户在 Web 仪表盘或客户端界面上手动指定出口;url-test(自动选择):内核后台按设定周期向测试 URL(如 http://www.gstatic.com/generate_204)发送心跳,动态将流量调度至延迟最低的节点;fallback(故障转移):严格按照列表顺序选路,主力节点存活时 100% 走主力;主力断线后秒级降级至第二备用节点;load-balance(负载均衡):通过散列哈希或轮询将连接并发分摊到多个节点,大幅拓宽总并发吞吐。规则引擎根据预设规则行,决定每个网络请求该交给哪个策略组、直连还是丢弃:
要将一份混乱的旧版配置重构为符合 2026 规范的现代化架构,可按以下标准步骤执行:
打开原配置文件,检查 proxies: 数组。如果里面堆叠了大量服务商提供的节点,将其全部清空,并在 proxy-providers 下声明一个外部订阅提供商。
在 proxy-groups 下,将原本写死节点名的 proxies: 列表精简,改用 use: 字段直接引用刚刚定义的 Provider 名称:
proxy-groups:
- name: PROXY
type: select
use:
- Airport-Subscription在配置顶部补充完整的 dns 与 tun 配置块,确保 enhanced-mode: fake-ip 正常开启,并设置合理的 fake-ip-filter 排除名单(避免内网打印机与局域网服务失联)。
检查 rules: 列表末尾。确保最后一条规则为 MATCH,PROXY 作为兜底出站;确保 GEOSITE,cn,DIRECT 位于 MATCH 之前,避免国内流量被误代理。
配置保存后,如何判断配置文件是否被正确解析且架构健康?可通过以下三项可观测性指标验证:
mihomo -t -f config.yamlconfiguration test is successful,代表 YAML 缩进、字段类型与依赖校验 100% 通过。ip.sb 或 myip.la):回显 IP 必须为本地运营商直连公网 IP;chat.openai.com):连接必须走选定的代理节点,且连接日志中明确命中 DOMAIN-SUFFIX,openai.com,AI-Services 规则行。mapping values are not allowed here? 答:这是最经典的 YAML 语法缩进错误。通常是因为冒号 : 后面缺少了一个英文空格,或者在多层嵌套中使用了 Tab 制表符而非标准的 2 个空格缩进。YAML 标准严格禁止使用 Tab 键进行对齐。
proxies 与 proxy-providers 能在同一个配置文件中并存吗? 答:完全可以。在生产级架构中,许多进阶用户习惯将自己租用的专属 VPS 独立节点手写在 proxies 中,而将商业服务商的大量动态节点放在 proxy-providers 中。在策略组中可以通过 proxies 和 use 同时混用两者:
proxy-groups:
- name: Hybrid-Pool
type: select
proxies:
- "我的搬瓦工自建VPS"
use:
- Commercial-Provider答:Clash 规则引擎采用短路求值逻辑。如果您在规则靠前的位置配置了宽泛的规则(例如 GEOIP,CN,DIRECT 或未加限定的通用规则),且目标请求的 IP 被提前识别命中,则后续更具体的精细规则永远没有被执行的机会。请务必将具体的 DOMAIN 和 DOMAIN-SUFFIX 规则置于通用 IP 规则之上。
答:旧版 Clash 的 port、socks-port 建议整合为 mixed-port;DNS 模块的旧字段 redir-host 已被全面弃用;同时 Mihomo 扩展了对 VLESS、Reality、Hysteria2 以及 MRS 二进制规则提供商的支持,字段层级均遵循严格的大小写规范。