Clash Meta 配置详解:从基础到高级的全方位指南
Clash,作为一款基于 Go 语言开发的多平台代理软件,以其强大的规则引擎和灵活的配置能力赢得了广大用户的青睐。而 Clash Meta(通常指的是基于 Clash 内核构建的各种增强版本,如 Clash.Meta 或 OpenClash 使用的内核等),在继承 Clash 强大功能的基础上,进一步引入了对更多现代代理协议(如 Hysteria、TUIC、VLESS 等)的支持,以及可能包含更高级的路由规则、DNS 功能或性能优化。
理解 Clash Meta 的配置文件是充分发挥其潜力的关键。本文将深入解析 Clash Meta 的 YAML 配置文件,从基础的端口、模式设置,到核心的代理、代理组和规则配置,再到 Clash Meta 特有的高级功能,进行全面细致的讲解。无论您是初次接触 Clash Meta 的新手,还是希望深入了解其高级用法的进阶用户,本文都将为您提供有价值的参考。
一、Clash Meta 配置文件的基础结构
Clash Meta 的配置信息存储在一个 YAML 格式的文件中,通常命名为 config.yaml
。YAML 是一种人类友好的数据序列化格式,其结构清晰、易于阅读和编辑。
一个典型的 Clash Meta 配置文件包含以下几个主要顶级部分:
port
,socks-port
,redir-port
,tproxy-port
,mixed-port
: 定义 Clash 监听的端口。mode
: 定义 Clash 的工作模式(全局、规则、直连)。log-level
: 定义日志级别。allow-lan
: 是否允许局域网设备访问。bind-address
: 绑定监听的地址。ipv6
: IPv6 支持设置。dns
: DNS 服务器和相关配置。external-controller
: 外部控制器(API)地址和端口。secret
: 外部控制器访问密钥。proxies
: 定义所有可用的代理服务器(节点)。proxy-groups
: 定义代理组,用于组织和切换代理。rules
: 定义流量的分流规则。rule-providers
: 定义外部规则集。proxy-providers
: 定义外部代理集。
接下来的章节将对这些核心部分进行详细解读。
二、核心基础设置
这些设置定义了 Clash Meta 的基本运行方式。
“`yaml
监听端口设置
port: 7890 # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
mixed-port: 7890 # 可同时支持 HTTP 和 SOCKS5 的混合端口,与 port/socks-port 二选一或三选一
redir-port: 7892 # Redir 代理端口 (Linux/macOS 内核透明代理)
tproxy-port: 7893 # Tproxy 代理端口 (Linux 内核透明代理)
工作模式
rule: 规则模式,根据规则分流
global: 全局模式,所有流量通过代理
direct: 直连模式,所有流量不通过代理
mode: rule
日志级别
silent, error, warning, info, debug
log-level: info
允许局域网连接
allow-lan: true
绑定监听地址,’*’ 表示所有网卡,127.0.0.1 只允许本地连接
bind-address: ‘*’
IPv6 支持
ipv6: true
外部控制器 (API)
external-controller: 127.0.0.1:9090
secret: ” # 空表示无需密钥,建议设置以保证安全
用于仪表盘的外部 UI 目录
external-ui: dashboard
external-ui-url: https://example.com/ui.zip # 或者一个 URL
external-ui-lite: dashboard # 或者 external-ui-meta: dashboard
全局 Clash 内核参数 (可能根据具体 Meta 版本有所不同)
tcp-concurrent: true # TCP 连接是否并行处理
unified-delay: true # 在 url-test/fallback 中使用统一的延迟测试结果
profile:
store-selected: true # 是否记住上次选择的节点
store-provider-selected: true # 是否记住 provider 中的节点选择
“`
解释:
port
,socks-port
,mixed-port
,redir-port
,tproxy-port
: 这些定义了 Clash Meta 监听不同类型代理请求的端口。mixed-port
更为常见,一个端口同时提供 HTTP 和 SOCKS5 代理服务。redir-port
和tproxy-port
主要用于配置透明代理。mode
:rule
模式是最常用和推荐的模式,流量根据预设规则进行分发。global
模式简单粗暴,所有流量都走代理(除了强制直连的 IP)。direct
模式则完全不走代理。log-level
: 用于控制输出的日志详细程度,方便调试。allow-lan
: 如果希望局域网内的其他设备通过运行 Clash Meta 的设备代理上网,需要将此设置为true
。bind-address
: 决定 Clash Meta 监听哪个网络接口的地址。设置为*
允许来自任何网卡的连接请求。ipv6
: 是否启用 IPv6 流量的代理和处理。external-controller
,secret
: 配置外部 API 接口,用于连接 GUI 控制面板(如 Clash Dashboard)。secret
是连接 API 的密码,务必设置一个复杂的密码以防未经授权的访问。external-ui
,external-ui-url
,external-ui-lite
,external-ui-meta
: 用于配置内置的 Web 控制面板。可以指定本地目录或一个远程 URL 来加载 Web UI 文件。
三、DNS 配置详解
DNS 配置在代理软件中至关重要,它关系到域名解析的速度、准确性以及防止 DNS 污染。Clash Meta 的 DNS 配置非常灵活和强大。
“`yaml
dns:
enable: true # 是否启用内置 DNS 服务器
listen: 0.0.0.0:53 # DNS 监听地址和端口,0.0.0.0 允许局域网设备使用
# 增强模式
# redir-host: 将所有 DNS 解析结果劫持到 Clash 本地,由 Clash 进行代理后再访问目标IP。
# fake-ip: 生成虚假 IP 地址,用于处理规则和统计,更适合大量规则和复杂场景。
enhanced-mode: fake-ip # 推荐 fake-ip 模式
# fake-ip 相关设置 (仅在 enhanced-mode: fake-ip 时有效)
fake-ip-range: 198.18.0.1/16 # 用于生成虚假 IP 的网段,标准范围
# DNS 服务器列表
# nameserver 用于正常解析,fallback 用于当 nameserver 查询失败或被污染时使用
nameserver:
– 114.114.114.114 # 境内常用 DNS
– 223.5.5.5 # 境内常用 DNS
– “tls://dns.alidns.com:853” # DoT (DNS over TLS)
– “https://doh.pub/dns-query” # DoH (DNS over HTTPS)
fallback:
– 8.8.8.8 # 境外公共 DNS
– 1.1.1.1 # 境外公共 DNS
– “tls://dns.google:853”
– “https://cloudflare-dns.com/dns-query”
# fallback 过滤器 (用于判断何时使用 fallback DNS)
fallback-filter:
geoip: true # 当查询结果是保留 IP (如局域网 IP) 时,强制使用 fallback (或直连 DNS)
# ipcidr: # 当查询结果落在这些 IP 段时,强制使用 fallback
# – 240.0.0.0/4
# domain: # 当查询的域名匹配这些规则时,强制使用 fallback
# – +.google.com
# – +.facebook.com
# DNS over Proxy (通过代理访问 DNS 服务器) – Clash Meta 特有或增强
# proxy-server-nameserver:
# – 1.1.1.1
# – 8.8.8.8
# proxy-server-fallback:
# – 9.9.9.9
# proxies: # 指定哪些 DNS 服务器通过哪些代理组访问
# – https://doh.pub/dns-query@ProxyGroupName # 例如:通过名为 ProxyGroupName 的代理组访问该 DoH 服务器
# – tls://dns.google:853@FallbackDNSGroup # 通过名为 FallbackDNSGroup 的代理组访问该 DoT 服务器
# 其他可能的 DNS 设置 (Clash Meta 可能支持)
# hosts: # 本地 hosts 映射
# example.com: 1.2.3.4
# google.com: [2.3.4.5, 2.3.4.6] # 可以映射到多个 IP
# trusted-nameserver: # 信任的 Nameserver,Fake-IP 模式下,这些服务器的解析结果不会被 Fake-IP 替换 (慎用)
# – 223.5.5.5
“`
解释:
enable
,listen
: 启用内置 DNS 服务器并指定监听地址。推荐监听0.0.0.0:53
,这样局域网内的设备可以将 DNS 指向运行 Clash Meta 的设备的 IP 地址。enhanced-mode
:fake-ip
是更先进和推荐的模式,它为每个被规则命中的域名生成一个唯一的虚假 IP。这样做的好处是规则匹配是基于这些虚假 IP 进行的,效率更高,且能更好地处理复杂的规则和大量的域名。redir-host
模式会将所有解析结果重定向到本地,然后 Clash 自己根据域名去解析和代理,在某些场景下可能与系统或其他应用的 DNS 请求冲突。fake-ip-range
:fake-ip
模式下用于生成虚假 IP 的地址段。标准建议使用198.18.0.1/16
。nameserver
,fallback
: 配置正常 DNS 服务器列表和备用 DNS 服务器列表。Clash 会优先使用nameserver
中的服务器进行解析。如果解析失败或被判断为 DNS 污染,Clash 会尝试使用fallback
中的服务器。为了应对 DNS 污染,通常将境内 DNS 放在nameserver
,将境外 DoH/DoT 或公共 DNS 放在fallback
。fallback-filter
: 定义何时触发使用fallback
DNS。geoip: true
是非常实用的选项,它可以识别境内 IP 地址,对于这些 IP 地址,即使nameserver
返回了结果,也会强制使用fallback
(或直接跳过代理)来避免境内 IP 走代理。proxy-server-nameserver
,proxy-server-fallback
,proxies
(in dns section): 这些是 Clash Meta 可能支持的更高级 DNS 功能,允许通过指定的代理或代理组去访问某些 DNS 服务器。这对于访问位于防火墙后的 DoH/DoT 服务器非常有用。hosts
: 允许在配置文件中定义静态的域名到 IP 地址映射,类似于操作系统的 hosts 文件。trusted-nameserver
: 在fake-ip
模式下,来自这些 nameserver 的解析结果不会被fake-ip
替换,而是返回真实的 IP。通常用于保证某些特定域名的解析准确性,但需要谨慎使用。
正确的 DNS 配置能够显著提升 Clash Meta 的性能和稳定性,尤其是在面对复杂的网络环境时。
四、Proxies(代理节点)配置
proxies
部分是配置所有可用的代理服务器的地方。每项配置都代表一个独立的节点。Clash Meta 在标准 Clash 支持的协议基础上,增加了对更多协议的支持。
“`yaml
proxies:
# Shadowsocks (SS)
– name: “Example SS”
type: ss
server: example.com
port: 443
cipher: aes-256-gcm
password: “your-password”
udp: true # 是否开启 UDP 转发 (用于 QUIC, Game 等)
# ShadowsocksR (SSR)
# – name: “Example SSR”
# type: ssr
# server: ssr.example.com
# port: 443
# password: “your-password”
# cipher: origin
# protocol: origin
# protocol-param: “”
# obfs: plain
# obfs-param: “”
# udp: true
# VMess (V2Ray)
– name: “Example VMess”
type: vmess
server: vmess.example.com
port: 443
uuid: “your-uuid”
alterId: 0 # VMessAEAD 已废弃 alterId,通常设为 0
cipher: auto # 或 aes-128-gcm, chacha20-poly1305
network: ws # 或 tcp, grpc, h2
tls: true
skip-cert-verify: false # 是否跳过证书验证,建议为 false
servername: vmess.example.com # 对应证书上的域名
ws-opts: # WebSocket 选项
path: /your-vmess-path
headers:
Host: vmess.example.com
# grpc-opts: # gRPC 选项 (当 network: grpc 时)
# grpc-service-name: “your-grpc-service”
# h2-opts: # HTTP/2 选项 (当 network: h2 时)
# host: vmess.example.com
# path: /
# Trojan
– name: “Example Trojan”
type: trojan
server: trojan.example.com
port: 443
password: “your-password”
tls: true
skip-cert-verify: false
sni: trojan.example.com # SNI 域名
alpn: # TLS ALPN 列表 (Clash Meta 支持)
– http/1.1
# ws-opts: # WebSocket 选项 (Trojan-Go)
# path: /your-trojan-ws-path
# headers:
# Host: trojan.example.com
# grpc-opts: # gRPC 选项 (Trojan-Go)
# grpc-service-name: “your-grpc-service”
# h2-opts: # HTTP/2 选项 (Trojan-Go)
# host: trojan.example.com
# path: /
# HTTP/HTTPS
# – name: “Example HTTP”
# type: http
# server: http.example.com
# port: 8080
# username: “user” # 如果需要认证
# password: “pass”
# – name: “Example HTTPS”
# type: https
# server: https.example.com
# port: 8443
# username: “user”
# password: “pass”
# tls: true
# skip-cert-verify: false
# Snell (通用代理协议)
# – name: “Example Snell”
# type: snell
# server: snell.example.com
# port: 443
# psk: “your-psk” # Pre-Shared Key
# version: 3 # Snell 协议版本
# — Clash Meta 特有/增强协议 —
# Hysteria v1/v2 (基于 QUIC 的协议)
– name: “Example Hysteria”
type: hysteria # 或 hysteria2 (取决于版本和配置)
server: hysteria.example.com
port: 443
auth: “your-password” # 或 obfs: “obfs-secret” (v1)
# auth: # v2 使用认证对象
# mode: password
# value: “your-password”
# auth: # v2 使用证书认证
# mode: cert
# cert: “base64-encoded-cert”
tls: true
skip-cert-verify: false
sni: hysteria.example.com
alpn:
– h3 # Hysteria v2 通常使用 h3
# obfs: # Hysteria v1 Obfuscation
# mode: wechat-video # 或 others
# password: “obfs-password”
# up: 50 # v1 上行带宽限制 (Mbps)
# down: 100 # v1 下行带宽限制 (Mbps)
# bandwidth: # v2 带宽设置
# up: 50Mbps
# down: 100Mbps
# udp: true # v1 是否启用 UDP 转发
# resolve-preference: ipv4 # 解析优先权 (ipv4, ipv6, prefer-ipv4, prefer-ipv6)
# TUIC v5 (基于 QUIC 的协议)
– name: “Example TUIC”
type: tuic
server: tuic.example.com
port: 443
uuid: “your-uuid”
password: “your-password”
# version: 5 # TUIC v5
congestion-controller: bbr # 拥塞控制算法 (bbr, cubic, newreno)
zero-rtt: true # 是否启用 0-RTT
tls: true
skip-cert-verify: false
sni: tuic.example.com
alpn:
– h3 # TUIC v5 使用 h3
# disable-udp-relay: false # 是否禁用 UDP 中继
# VLESS (V2Ray 协议)
# – name: “Example VLESS”
# type: vless
# server: vless.example.com
# port: 443
# uuid: “your-uuid”
# network: ws # 或 tcp, grpc, h2
# tls: true
# skip-cert-verify: false
# servername: vless.example.com
# # flow: “xtls-rprx-vision” # VLESS flow (XTLS)
# ws-opts:
# path: /your-vless-ws-path
# headers:
# Host: vless.example.com
# grpc-opts: …
# h2-opts: …
“`
解释:
- 每个代理项都是一个 YAML 列表元素,以
-
开头。 name
: 代理的名称,用于在代理组或规则中引用。必须唯一。type
: 代理协议类型,如ss
,ssr
,vmess
,trojan
,http
,https
,snell
等。Clash Meta 的主要优势在于增加了hysteria
,tuic
,vless
等类型。server
,port
: 服务器地址和端口。cipher
,password
: Shadowsocks/SSR/Trojan 等协议的加密方式和密码。uuid
,alterId
: VMess/VLESS/TUIC 协议的用户 ID 和 alterId(对于 VMess AEAD alterId 通常为 0)。tls
: 是否启用 TLS 加密传输。对于大多数现代协议(VMess, Trojan, VLESS, Hysteria, TUIC)搭配ws
,grpc
,h2
或直接传输时非常重要。skip-cert-verify
: 是否跳过 TLS 证书验证。出于安全考虑,建议设置为false
。只有在非常确定服务器证书无效且风险可控时才设置为true
。servername
,sni
: 在 TLS 握手时使用的服务器名称,用于 SNI (Server Name Indication) 和证书验证。通常与服务器地址对应的域名相同。alpn
: TLS Application-Layer Protocol Negotiation。例如h2
,http/1.1
,h3
等,用于协商应用层协议。Clash Meta 对此支持较好。network
: VMess/VLESS 协议的网络底层传输方式,如tcp
,ws
(WebSocket),grpc
,h2
(HTTP/2)。*-opts
: 针对特定network
的详细配置,如ws-opts
,grpc-opts
,h2-opts
。通常包含path
和headers
(Host
)。udp
: 是否启用 UDP 流量的转发。对于需要 UDP 的应用(如在线游戏、视频会议、QUIC 协议)很重要。auth
/password
(Hysteria): Hysteria 的认证方式。obfs
(Hysteria v1, SSR): 混淆设置。up
,down
,bandwidth
(Hysteria): 带宽限制设置。congestion-controller
,zero-rtt
(TUIC): TUIC 协议特有的设置。flow
(VLESS): VLESS 的 flow 控制,特别是用于 XTLS。
配置代理时,需要根据您订阅或搭建的服务器信息填写对应的参数。Clash Meta 对协议参数的支持比标准 Clash 更全面。
五、Proxy Groups(代理组)配置
代理组用于将多个代理节点组织在一起,并定义如何从这些节点中选择一个进行使用。这是 Clash Meta 实现负载均衡、故障转移和手动切换的基础。
“`yaml
proxy-groups:
# 手动选择组
– name: “手动选择”
type: select
proxies:
– “Example SS”
– “Example VMess”
– “Example Trojan”
– “Example Hysteria”
– “Example TUIC”
– DIRECT # 直接连接
– REJECT # 拒绝连接
– “自动选择” # 组可以引用其他组
# URL 测试组 (自动选择延迟最低的节点)
– name: “自动选择”
type: url-test
proxies:
– “Example SS”
– “Example VMess”
– “Example Trojan”
# url-test 仅适用于支持 TCP 的协议,QUIC 协议 (Hysteria, TUIC) 通常不参与延迟测试,可以放在 fallback 或单独组
# – “Example Hysteria” # 如果 Hysteria 监听 TCP 端口也可以
# – “Example TUIC” # 如果 TUIC 监听 TCP 端口也可以
url: http://www.gstatic.com/generate_204 # 用于测试延迟的 URL,应选择一个墙外且速度快的地址
interval: 300 # 测试间隔 (秒)
# tolerance: 50 # 延迟容忍度,新节点延迟低于当前节点延迟 + tolerance 才切换
# 故障转移组 (按顺序尝试,直到找到可用的)
– name: “故障转移”
type: fallback
proxies:
– “Example Hysteria”
– “Example TUIC”
– “Example VMess” # 可以混合 TCP 和 QUIC 节点
url: http://www.gstatic.com/generate_204 # 用于测试可用性的 URL
interval: 600 # 测试间隔 (秒)
# 负载均衡组 (不常用,按策略分发流量)
# – name: “负载均衡”
# type: load-balance
# proxies:
# – “Example SS”
# – “Example VMess”
# strategy: round-robin # 分发策略,如 round-robin (轮询)
# url: http://www.gstatic.com/generate_204 # 测试可用性
# 继电器组 (链式代理)
# – name: “链式代理”
# type: relay
# proxies:
# – “ProxyA” # 流量先到 ProxyA
# – “ProxyB” # 再到 ProxyB
# – “ProxyC” # 最后到 ProxyC
“`
解释:
- 每个代理组都是一个 YAML 列表元素,以
-
开头。 name
: 代理组的名称,用于在规则中引用。必须唯一。type
: 代理组的类型,决定了如何从proxies
列表中选择节点。select
: 手动选择。用户可以通过 GUI/API 手动切换组内节点。url-test
: 自动选择。Clash 会定期测试组内节点的延迟,并自动选择延迟最低的可用节点。fallback
: 故障转移。Clash 会按proxies
列表中节点的顺序尝试连接,使用第一个可用的节点。当当前节点不可用时,自动切换到下一个。load-balance
: 负载均衡。按照特定策略(如轮询)将流量分发到组内的多个节点。通常用于提高吞吐量,但对于单个连接是随机选择节点。relay
: 继电器模式。将流量顺序通过组内的多个代理节点。
proxies
: 组内包含的代理节点或代理组的名称列表。可以使用DIRECT
表示直连,REJECT
表示拒绝连接。url
,interval
(forurl-test
,fallback
): 定义用于测试节点延迟或可用性的 URL 和测试间隔。url
应该是一个期望能够通过代理访问的外部地址。tolerance
(forurl-test
): 在url-test
模式下,用于判断是否切换节点的延迟阈值。
合理组织代理组能够方便地管理大量节点,并实现自动优选或故障转移,提升使用体验。通常会设置一个 select
组作为主入口,并在其中包含 url-test
或 fallback
子组。
六、Rules(规则)配置
rules
部分是 Clash Meta 配置文件中最核心、最复杂的部分之一。它定义了如何根据流量的特征(如目标域名、IP 地址、源进程等)决定使用哪个代理组或采取何种处理方式(直连或拒绝)。规则按照列表顺序从上往下匹配,一旦匹配成功即停止。
“`yaml
rules:
# 常用规则示例 (从上往下匹配)
# 强制拒绝特定域名或 IP
– DOMAIN-SUFFIX,ads.google.com,REJECT # 拒绝广告域名
– IP-CIDR,192.168.1.0/24,DIRECT,no-resolve # 局域网 IP 直连 (no-resolve 避免解析,提高速度)
– IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
– IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
– IP-CIDR,127.0.0.1/8,DIRECT,no-resolve # 本地回环 IP 直连
# GEOIP 规则 (基于 IP 地址的地理位置判断)
# GEOSITE 规则 (Clash Meta/Premium 支持,基于域名所属 IP 的地理位置判断)
– GEOIP,CN,DIRECT # 国内 IP 直连 (非常重要,避免国内流量绕远)
# – GEOSITE,cn,DIRECT # GEOSITE 版本
# 特定应用走直连 (仅部分客户端/OS 支持 PROCESS 规则)
# – PROCESS-NAME,WeChat.exe,DIRECT
# – PROCESS-NAME,DingTalk.exe,DIRECT
# 特定域名走代理
– DOMAIN-SUFFIX,google.com,自动选择 # Google 域名及子域名走“自动选择”代理组
– DOMAIN-SUFFIX,youtube.com,自动选择
– DOMAIN-KEYWORD,twitter,自动选择 # 域名中包含 twitter 的走代理
– DOMAIN,github.com,自动选择 # 精确匹配 github.com
# 特定 IP 段走代理 (较少用,容易变动)
# – IP-CIDR,8.8.8.8/32,自动选择
# GEOSITE/GEOIP 走代理
# – GEOIP,US,自动选择 # 美国 IP 走代理
# – GEOSITE,netflix,自动选择 # Netflix 域名走代理 (GEOSITE)
# 高级规则 (Clash Meta 可能支持的逻辑规则)
# – AND,((DOMAIN-SUFFIX,twitter.com),(DST-PORT,443)),自动选择 # 逻辑与:twitter.com 且目标端口 443 走代理
# – OR,((GEOIP,CN),(PROCESS-NAME,Thunder.exe)),DIRECT # 逻辑或:国内 IP 或迅雷进程直连
# RULE-SET 引用 (Clash Meta 支持,用于引用外部规则文件)
# rule-providers 部分定义了 how to fetch rule sets
– RULE-SET,applications,DIRECT # 引用名为 applications 的规则集,结果为直连
– RULE-SET,reject-list,REJECT # 引用 reject-list 规则集,结果为拒绝
– RULE-SET,media,自动选择 # 引用 media 规则集,结果走自动选择组
– RULE-SET,gfwlist,自动选择 # 引用 gfwlist 规则集
– RULE-SET,private,DIRECT # 引用 private 规则集 (如包含自定义直连域名)
# 最终规则 (必须是最后一条规则)
# MATCH: 匹配所有未被前面规则匹配的流量
# 这里的 DIRECT 或 代理组名 决定了剩余流量的去向
– MATCH,手动选择 # 将所有未匹配流量导向“手动选择”代理组,用户可以手动切换直连或代理
# – MATCH,DIRECT # 将所有未匹配流量直连
# – MATCH,自动选择 # 将所有未匹配流量自动选择代理
“`
解释:
- 每条规则都是一个 YAML 列表元素,以
-
开头。 - 规则的基本格式:
- RULE-TYPE,PARAMETER,PROXY-OR-GROUP-NAME[,OPTIONS]
RULE-TYPE
: 规则类型,如DOMAIN-SUFFIX
,IP-CIDR
,GEOIP
,PROCESS-NAME
等。Clash Meta 支持更多类型,特别是RULE-SET
和逻辑规则。PARAMETER
: 规则类型的参数,如域名、IP 地址、国家代码、进程名等。PROXY-OR-GROUP-NAME
: 匹配该规则的流量将被导向的代理组名称,也可以是DIRECT
(直连) 或REJECT
(拒绝)。OPTIONS
: 可选参数,如no-resolve
(对 IP-CIDR 规则,表示不进行域名解析)。
- 规则类型详解:
DOMAIN-SUFFIX
: 匹配指定域名及其所有子域名。例如DOMAIN-SUFFIX,google.com
匹配google.com
,mail.google.com
,docs.google.com
等。DOMAIN-KEYWORD
: 匹配域名中包含指定关键字的。例如DOMAIN-KEYWORD,twitter
匹配twitter.com
,mobile.twitter.com
等。DOMAIN
: 精确匹配指定域名。例如DOMAIN,github.com
只匹配github.com
,不匹配gist.github.com
。FULL
: 匹配完整的 URL (不常用作规则)。IP-CIDR
,IP-CIDR6
: 匹配 IPv4 或 IPv6 地址是否在指定的 CIDR 网段内。GEOIP
: 匹配目标 IP 地址所属的国家/地区。参数为两个字母的国家代码(如CN
,US
,JP
)。GEOIP,CN,DIRECT
是常用规则,用于将国内 IP 流量直连。GEOSITE
: Clash Meta/Premium 支持,基于域名所属的 IP 地址进行匹配,规则参数是预定义的网站列表名称(如google
,netflix
,cn
)。SRC-IP-CIDR
: 匹配流量的源 IP 地址。PROCESS-NAME
: 匹配发起连接的进程名称。并非所有操作系统或 Clash GUI 都支持此规则。DST-PORT
,SRC-PORT
: 匹配目标端口或源端口。RULE-SET
: 引用外部规则集。这是组织大量规则的推荐方式,下文详细解释。AND
,OR
,NOT
: 逻辑运算符,允许组合多个规则进行匹配。例如,AND,((RULE1),(RULE2))
表示只有当 RULE1 和 RULE2 都匹配时才应用该规则。这是 Clash Meta 提供的高级规则能力。
- 规则顺序: 规则按列表顺序从上往下依次匹配,第一个匹配成功的规则决定了流量的处理方式。因此,更具体或需要优先处理的规则应放在前面,更宽泛的规则放在后面。
MATCH
规则必须放在最后。 DIRECT
和REJECT
:DIRECT
表示不通过任何代理,直接连接目标地址。REJECT
表示阻止连接。MATCH
: 必须是rules
列表中的最后一条规则。它匹配所有前面没有匹配成功的流量。这是确保所有流量都有处理方式的关键。
编写高效且准确的规则集需要时间和经验。可以参考社区维护的常用规则列表,并根据自己的需求进行调整。
七、Rule Providers & Proxy Providers(规则/代理提供者)
对于复杂的配置或需要频繁更新的节点/规则列表,直接在 config.yaml
中手动维护会非常麻烦。Clash Meta 支持使用 Provider 功能,从外部文件或 URL 动态加载规则集和代理列表。
“`yaml
rule-providers:
# 外部规则集定义
reject-list: # 提供者名称
type: http # 获取方式,通常是 http
behavior: domain # 规则集类型:domain (域名), ipcidr (IP), classical (混合), compatible (兼容模式)
url: “https://raw.githubusercontent.com/Example/clash-rules/master/reject.yaml” # 规则文件 URL
interval: 86400 # 更新间隔 (秒),例如一天更新一次
path: ./rules/reject.yaml # 下载后保存到本地的文件路径 (相对于配置目录)
# health-check: # 健康检查 (Clash Meta 可能支持)
# enable: true
# interval: 600
# lazy: true
# url: http://www.gstatic.com/generate_204
applications:
type: http
behavior: classical
url: “https://raw.githubusercontent.com/Example/clash-rules/master/applications.yaml”
interval: 86400
path: ./rules/applications.yaml
media:
type: http
behavior: domain
url: “https://raw.githubusercontent.com/Example/clash-rules/master/media.yaml”
interval: 86400
path: ./rules/media.yaml
proxy-providers:
# 外部代理集定义 (Clash Meta 特有或增强功能)
my-proxies: # 提供者名称
type: http # 获取方式
url: “https://raw.githubusercontent.com/Example/clash-nodes/master/nodes.yaml” # 代理节点文件 URL
interval: 3600 # 更新间隔 (秒),例如一小时更新一次
path: ./proxies/nodes.yaml # 下载后保存到本地的文件路径
health-check: # 对 provider 内的节点进行健康检查
enable: true
interval: 600 # 健康检查间隔
lazy: true # 懒惰检查,只检查当前活跃的节点
url: http://www.gstatic.com/generate_204
# expected-status: 204 # 期望的状态码
# filter: “.(US|JP).” # 正则表达式过滤节点名称,只保留包含 US 或 JP 的节点
# vehicle-type: wireguard # Meta 特有,指定 provider 内节点的协议类型 (用于协议转换)
# tls-fingerprint: “chrome” # Meta 特有,指定 TLS 指纹
# # 其他 Meta 特有 Provider 参数,如 tls-ja3, client-fingerprint 等
“`
解释:
rule-providers
: 定义外部规则集。- 每个提供者项都有一个名称 (
reject-list
,applications
,media
),这个名称用于在rules
部分通过RULE-SET,provider-name,...
引用。 type
: 获取方式,通常是http
从 URL 获取。behavior
: 定义规则集的类型。domain
只包含域名规则,ipcidr
只包含 IP 规则,classical
可以包含混合规则,compatible
兼容旧版本格式。Clash Meta 推荐使用domain
或ipcidr
行为以获得最佳性能。url
: 规则文件的下载地址。interval
: 自动更新规则文件的间隔时间。path
: 下载的规则文件在本地保存的位置。health-check
: 对规则集中的 IP 进行健康检查(如果规则集包含 IP)。
- 每个提供者项都有一个名称 (
proxy-providers
: 定义外部代理集。这是 Clash Meta 相比标准 Clash 更重要的增强功能之一。标准 Clash 通常通过订阅链接生成整个 config 文件,而 Meta 可以将订阅链接配置为一个proxy-provider
。- 每个提供者项有名称 (
my-proxies
)。 type
: 获取方式,通常是http
。url
: 代理节点文件的下载地址(可以是订阅链接,Meta 可以解析多种格式)。interval
,path
: 与rule-providers
类似。health-check
: 对 provider 内的所有节点进行健康检查,用于在代理组中进行优选或故障转移。filter
: 非常实用的 Meta 功能,可以使用正则表达式过滤 provider 中的节点,只保留符合特定条件的节点。vehicle-type
,tls-fingerprint
,tls-ja3
,client-fingerprint
: 这些是 Clash Meta 高级特性,允许在 provider 层面指定一些通用的协议参数或指纹,简化配置,有助于应对封锁。
- 每个提供者项有名称 (
使用 Provider 可以极大地简化配置文件的管理,特别是当您有大量规则或节点需要维护时。将规则和节点与主配置文件分离,通过 URL 自动更新,可以确保您的规则和节点信息始终是最新且正确的。
八、Clash Meta 的一些高级特性(可能根据具体版本有所不同)
除了上述核心配置外,Clash Meta 的不同版本可能还支持一些更高级或实验性的功能:
- 逻辑规则 (
AND
,OR
,NOT
): 如规则部分所述,允许组合多个条件进行复杂匹配。 fake-ip
增强: 更精细的fake-ip
控制,如trusted-nameserver
。- DNS over Proxy 增强: 更灵活地配置哪些 DNS 查询通过哪些代理进行。
- TCP / UDP 并发设置: 可能在
profile
或全局参数中控制连接处理方式。 - TLS Fingerprint / JA3: 伪装 TLS 握手时的指纹,使其看起来像主流浏览器或应用,增强抗检测能力。这通常可以在
proxy-providers
或 individualproxies
中配置。 - QUIC / HTTP/3 支持: 对
hysteria
,tuic
等协议的支持本身就依赖于这些底层传输协议。 - 更多协议支持: 如 WireGuard, VLESS XTLS 等。
- 脚本功能: 一些 Meta 内核支持使用 Javascript 或 Lua 脚本进行更复杂的规则处理或流量修改(非常高级,不常用)。
- 流量统计和日志增强: 提供更详细的连接信息和更灵活的日志输出。
这些高级特性通常在配置文件的特定位置或新增的顶级字段中体现,具体用法需要参考您使用的 Clash Meta 版本的官方文档或发布说明。
九、配置文件的组织与最佳实践
一个清晰、易于维护的配置文件至关重要。以下是一些建议:
- 使用 Provider: 将规则和代理列表通过
rule-providers
和proxy-providers
加载,而不是直接写在config.yaml
中。这让主配置文件保持简洁,且易于更新。 - 合理组织代理组: 根据用途(如速度测试、故障转移、特定协议组)或地理位置组织代理组,并在
select
组中引用它们。 - 规则顺序: 将最常用、最具体的规则放在前面,将
GEOIP,CN
等通用直连规则放在中间,将需要走代理的常用规则放在后面,最后是MATCH
规则。将REJECT
规则放在需要拒绝访问的域名/IP 前面。 - 利用注释: 在配置文件中添加注释(以
#
开头),解释每个部分的用途和配置项的含义,方便日后回顾和修改。 - YAML 语法检查: YAML 对缩进非常敏感。使用 YAML Lint 工具检查语法错误。
- 逐步添加规则: 如果您从一个非常基础的配置开始,建议一条条或一小段一小段地添加规则,每添加一部分就进行测试,确保没有引入错误。
- 善用外部控制面板: 使用 Clash Dashboard 或其他 GUI 工具,可以通过图形界面查看日志、连接信息、切换节点、测试延迟,极大地简化配置和调试过程。
- 备份配置文件: 在进行重大修改前,务必备份当前的
config.yaml
文件。
十、总结
Clash Meta 的配置文件 config.yaml
是其强大功能的核心载体。通过详细配置 port
, mode
, dns
, proxies
, proxy-groups
, rules
以及 rule-providers
, proxy-providers
等各个部分,用户可以构建出高度定制化、灵活且高效的代理解决方案。Clash Meta 在标准 Clash 的基础上,通过支持更多现代代理协议和提供更高级的规则/Provider 功能,进一步提升了其应对复杂网络环境的能力。
理解并掌握 Clash Meta 的配置,特别是 fake-ip
DNS 模式、各类代理协议参数、不同类型的代理组及其测试逻辑、规则的匹配顺序和类型(包括 RULE-SET
和逻辑规则),以及 Provider 的使用方法,是充分发挥其性能的关键。希望本文能帮助您深入理解 Clash Meta 的配置,并根据自身需求构建出最适合您的代理系统。在配置过程中,耐心、细致和不断测试是成功的保障。