Clash config.yaml 完整指南
深入理解 Clash 配置文件的每个字段含义,掌握代理节点、代理组、规则分流、DNS 的完整写法,自己动手写出最符合需求的配置。
什么是 config.yaml
config.yaml 是 Clash 的核心配置文件,采用 YAML 格式编写。它告诉 Clash 内核:
监听哪些端口
HTTP 代理、SOCKS5 代理、透明代理各自用哪个端口
有哪些代理节点
所有节点的服务器地址、协议类型、认证信息
如何分组与切换
节点按策略分组:手动选择、自动测速、故障转移
流量分流规则
哪些域名直连、哪些走代理、哪些拒绝
配置文件默认位置
%APPDATA%\clash-verge\profiles\
~/.config/clash-verge/profiles/
~/.config/clash-verge/profiles/
~/.config/mihomo/config.yaml
YAML 语法速查
在写配置文件之前,先了解 YAML 的几个核心规则,避免格式错误导致 Clash 无法启动:
# 正确:用 2 个空格缩进
proxies:
- name: "节点A"
type: ss
# 错误:不能用 Tab 键
proxies:
- name: "节点A" # ← Tab,会报错
- 开头# 字符串列表
nameserver:
- 223.5.5.5
- 119.29.29.29
# 对象列表(每项多个字段)
proxies:
- name: "节点A"
type: ss
- name: "节点B"
type: vmess
# 含特殊字符时必须加引号
password: "p@ss:word#123"
# 纯字母数字可不加
log-level: info
# 布尔值不加引号
allow-lan: true
udp: false
## 整行注释
port: 7890 # 行末注释
# 注释可以帮你记录每项配置的用途
mode: rule # rule/global/direct
基础配置参数
端口设置
Clash 通过本地端口对外提供代理服务,应用程序将代理地址指向这些端口。
# 方案一:分开设置(兼容性最好)
port: 7890 # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
redir-port: 7892 # 透明代理端口(Linux/macOS,TUN 模式相关)
# 方案二:混合端口(推荐,HTTP+SOCKS5 合一)
mixed-port: 7890
# 与方案一互斥,选其一即可
port整数HTTP 代理端口,浏览器代理填此端口
socks-port整数SOCKS5 端口,适用于游戏、命令行工具
mixed-port整数HTTP+SOCKS5 混合端口,推荐使用
redir-port整数透明代理端口,TUN/iptables 场景使用
allow-lan布尔是否允许局域网其他设备使用此代理,默认 false
代理模式与日志
mode: rule # rule(规则)| global(全局)| direct(直连)
log-level: info # silent | error | warning | info | debug
ipv6: false # 是否允许内核接受 IPv6 流量
rule规则模式日常使用首选,按规则自动分流
global全局代理所有流量走代理,临时调试使用
direct全局直连所有流量不走代理,等同关闭
外部控制接口(RESTful API)
Clash 提供 RESTful API 用于外部控制,Web 管理面板(如 Metacubexd)通过此接口查看流量、切换节点。
external-controller: 127.0.0.1:9090 # API 监听地址
secret: "" # API 访问密钥(建议设置)
external-ui: ui # Web 面板文件目录(可选)
external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip"
external-controller 改为 0.0.0.0:9090 可允许局域网内其他设备访问 Web 面板,但务必同时设置 secret 防止未授权访问。DNS 配置详解
Clash 内置 DNS 模块,接管系统 DNS 解析后,可以实现更精准的分流和防止 DNS 泄漏。强烈建议开启,尤其是规则模式和 TUN 模式下。
enhanced-mode:核心 DNS 工作模式
dns:
enable: true # 开启内置 DNS
listen: 0.0.0.0:53 # DNS 监听地址
ipv6: false # 是否解析 IPv6
enhanced-mode: fake-ip # fake-ip(推荐)或 redir-host
fake-ip-range: 198.18.0.1/16 # Fake-IP 地址池范围
fake-ip返回虚假 IP,连接请求立即发出,Clash 按域名匹配规则推荐
redir-host正常 DNS 解析后,按真实 IP 匹配 IP-CIDR 规则兼容性好
上游 DNS 服务器配置
dns:
# 国内 DNS(用于解析国内域名)
nameserver:
- 223.5.5.5 # 阿里 DNS
- 119.29.29.29 # 腾讯 DNS
- system # 跟随系统 DNS
# 境外 DNS(用于解析非国内域名,防止污染)
# 使用加密 DNS(DoT/DoH)避免被运营商劫持
fallback:
- tls://8.8.8.8:853 # Google DNS over TLS
- tls://1.1.1.1:853 # Cloudflare DNS over TLS
- https://dns.google/dns-query # Google DoH
# fallback 触发条件:被判定为非国内 IP 时使用 fallback DNS
fallback-filter:
geoip: true
geoip-code: CN # 非 CN IP 触发 fallback
ipcidr:
- 240.0.0.0/4 # 保留地址段也触发 fallback
fake-ip-filter:排除不走 Fake-IP 的域名
某些本地服务(如 NAS 发现、mDNS、QQ 登录验证)依赖真实 IP,需要从 Fake-IP 中排除:
dns:
fake-ip-filter:
- '*.lan' # 局域网域名直连
- '*.local' # 本地 mDNS
- localhost.ptlogin2.qq.com # QQ 登录验证
- +.stun.*.* # STUN 服务(WebRTC)
- +.stun.*.*.*
- time.*.com # NTP 时间同步
- time.*.gov
- ntp.*.com
proxies — 代理节点配置
proxies 是一个列表,每个条目代表一个代理节点。以下是四种主流协议的完整写法:
Shadowsocks
proxies:
- name: "🇭🇰 香港-SS" # 节点名称,可自定义
type: ss
server: hk.example.com # 服务器域名或 IP
port: 443
cipher: aes-256-gcm # 加密方式(常见:aes-256-gcm / chacha20-ietf-poly1305)
password: "your-password"
udp: true # 开启 UDP 转发(游戏必开)
# 带 obfs 混淆插件的 SS(增强抗封锁能力)
- name: "🇯🇵 日本-SS-obfs"
type: ss
server: jp.example.com
port: 80
cipher: chacha20-ietf-poly1305
password: "your-password"
plugin: obfs
plugin-opts:
mode: http # http 或 tls
host: bing.com # 伪装的目标域名
VMess
# VMess + WebSocket + TLS(最常见搭配)
- name: "🇺🇸 美国-VMess-WS"
type: vmess
server: us.example.com
port: 443
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
alterId: 0 # 新版协议固定填 0
cipher: auto
network: ws # 传输协议:ws / grpc / tcp / h2
tls: true
servername: us.example.com # SNI,与 server 一致或 CDN 域名
ws-opts:
path: /vmess # 与服务端 path 一致
headers:
Host: us.example.com
# VMess + gRPC(低延迟,穿透性强)
- name: "🇸🇬 新加坡-VMess-gRPC"
type: vmess
server: sg.example.com
port: 443
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
alterId: 0
cipher: auto
network: grpc
tls: true
grpc-opts:
grpc-service-name: "vmess-grpc"
Trojan
- name: "🇯🇵 日本-Trojan"
type: trojan
server: jp.example.com
port: 443
password: "your-password"
sni: jp.example.com # TLS SNI(通常与 server 相同)
udp: true
skip-cert-verify: false # 生产环境保持 false,勿跳过证书验证
# Trojan + WebSocket(用于 CDN 中转)
- name: "🇰🇷 韩国-Trojan-WS"
type: trojan
server: kr.example.com
port: 443
password: "your-password"
network: ws
ws-opts:
path: /trojan
headers:
Host: kr.example.com
Hysteria 2
基于 QUIC 的新一代协议,专为高丢包环境优化,适合国际线路提速。
- name: "⚡ 美国-Hysteria2"
type: hysteria2
server: us.example.com
port: 443
password: "your-password"
sni: us.example.com
skip-cert-verify: false
# 上传/下载带宽限速(单位 Mbps,按实际带宽填写)
up: "50 Mbps"
down: "200 Mbps"
up / down 填写的是您本地的上传/下载带宽,不是节点带宽。填写准确值有助于 QUIC 发挥最佳性能,填写过大反而会拥塞。proxy-groups — 代理组详解
代理组是 Clash 最强大的特性之一。它将多个节点按照策略组合,让流量规则可以指向「一组节点」而非单个节点。
select — 手动选择
最基础的代理组类型,由用户在客户端界面手动选择当前激活的节点。
proxy-groups:
- name: "🚀 节点选择"
type: select
proxies:
- "⚡ 自动选择" # 引用其他代理组
- "🛡️ 故障转移"
- "🇭🇰 香港-SS" # 引用单个节点(名称必须与 proxies 中一致)
- "🇺🇸 美国-VMess-WS"
- "🇯🇵 日本-Trojan"
- DIRECT # 特殊值:直连,不走任何代理
- REJECT # 特殊值:拒绝连接(用于广告拦截)
url-test — 自动选速
定期对所有节点发起延迟测试,自动切换到延迟最低的节点。
- name: "⚡ 自动选择"
type: url-test
proxies:
- "🇭🇰 香港-SS"
- "🇺🇸 美国-VMess-WS"
- "🇯🇵 日本-Trojan"
- "⚡ 美国-Hysteria2"
url: 'http://www.gstatic.com/generate_204' # 测速目标 URL
interval: 300 # 测速间隔(秒)
tolerance: 50 # 切换容忍度(ms),差距超过此值才切换
lazy: true # 懒测速:有流量时才测,省资源
fallback — 故障转移
按 proxies 列表顺序优先使用第一个节点,当第一个节点不可用时自动切换到下一个,保证连通性。
- name: "🛡️ 故障转移"
type: fallback
proxies:
- "🇭🇰 香港-SS" # 首选节点
- "🇯🇵 日本-Trojan" # 备用一
- "🇺🇸 美国-VMess-WS" # 备用二
url: 'http://www.gstatic.com/generate_204'
interval: 60 # 检测间隔(秒),比 url-test 更短以快速感知故障
load-balance — 负载均衡
将不同的连接分散到多个节点上,适合多连接并发的下载场景,可提升整体吞吐量。
- name: "⚖️ 负载均衡"
type: load-balance
strategy: consistent-hashing # round-robin(轮询)| consistent-hashing(哈希,同域名走同节点)
proxies:
- "🇭🇰 香港-SS"
- "🇯🇵 日本-Trojan"
- "🇺🇸 美国-VMess-WS"
url: 'http://www.gstatic.com/generate_204'
interval: 300
rules — 规则配置详解
规则决定了每一条网络请求的去向:直连、走哪个代理组,还是直接拒绝。规则按从上到下的顺序匹配,命中第一条即执行,不再继续往下匹配。
规则类型一览
DOMAIN
DOMAIN,google.com,策略
精确匹配完整域名
DOMAIN-SUFFIX
DOMAIN-SUFFIX,google.com,策略
匹配域名及其所有子域名
DOMAIN-KEYWORD
DOMAIN-KEYWORD,google,策略
域名包含关键词即匹配
IP-CIDR
IP-CIDR,192.168.0.0/16,策略
匹配目标 IP 地址段
IP-CIDR6
IP-CIDR6,::1/128,策略
匹配 IPv6 地址段
GEOIP
GEOIP,CN,策略
按目标 IP 的地理位置(国家)匹配
GEOSITE
GEOSITE,CN,策略
按预置域名数据库匹配(Mihomo 扩展)
PROCESS-NAME
PROCESS-NAME,steam.exe,策略
按发起请求的进程名匹配(桌面端)
RULE-SET
RULE-SET,规则集名称,策略
引用外部规则集文件(批量规则)
MATCH
MATCH,策略
兜底规则,匹配所有未命中的请求(必须放最后)
规则匹配优先级
DOMAIN)放越前面,越宽泛的规则(如 GEOIP)放后面,MATCH 必须放最后一行。DOMAIN 精确域名最高DOMAIN-SUFFIX 域名后缀DOMAIN-KEYWORD 域名关键词IP-CIDR / GEOIP IP 地址规则MATCH 兜底(放最后)必须最后常用规则写法示例
rules:
# ===== 广告与恶意域名拦截 =====
- DOMAIN-KEYWORD,adservice,REJECT
- DOMAIN-SUFFIX,doubleclick.net,REJECT
- DOMAIN-SUFFIX,googlesyndication.com,REJECT
# ===== 开发者工具走代理(精确匹配优先) =====
- DOMAIN-SUFFIX,github.com,🚀 节点选择
- DOMAIN-SUFFIX,githubusercontent.com,🚀 节点选择
- DOMAIN-SUFFIX,npmjs.com,🚀 节点选择
- DOMAIN-SUFFIX,docker.io,🚀 节点选择
- DOMAIN-SUFFIX,docker.com,🚀 节点选择
# ===== 按进程名规则(仅桌面端支持) =====
- PROCESS-NAME,steam.exe,🚀 节点选择
- PROCESS-NAME,git,🚀 节点选择
# ===== 私有地址直连 =====
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
# ===== 中国大陆 IP 直连 =====
- GEOIP,CN,DIRECT
# ===== 兜底规则(未匹配的全部走代理) =====
- MATCH,🚀 节点选择
完整 config.yaml 示例
以下是一份结构完整、注释详尽的 Clash 配置文件,包含三种协议节点、四种代理组类型和完整的规则分流,可直接复制后按需修改:
# ============================================================
# Clash config.yaml 完整示例
# ============================================================
# --- 基础配置 ---
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
external-controller: 127.0.0.1:9090
secret: ""
# --- DNS 配置 ---
dns:
enable: true
listen: 0.0.0.0:53
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- '*.local'
- localhost.ptlogin2.qq.com
- +.stun.*.*
- time.*.com
- ntp.*.com
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- tls://8.8.8.8:853
- tls://1.1.1.1:853
fallback-filter:
geoip: true
geoip-code: CN
# --- 代理节点 ---
proxies:
- name: "🇭🇰 香港-SS"
type: ss
server: hk.example.com
port: 443
cipher: aes-256-gcm
password: "your-ss-password"
udp: true
- name: "🇺🇸 美国-VMess"
type: vmess
server: us.example.com
port: 443
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
alterId: 0
cipher: auto
network: ws
tls: true
servername: us.example.com
ws-opts:
path: /vmess
headers:
Host: us.example.com
- name: "🇯🇵 日本-Trojan"
type: trojan
server: jp.example.com
port: 443
password: "your-trojan-password"
sni: jp.example.com
udp: true
# --- 代理组 ---
proxy-groups:
- name: "🚀 节点选择"
type: select
proxies:
- "⚡ 自动选择"
- "🛡️ 故障转移"
- "🇭🇰 香港-SS"
- "🇺🇸 美国-VMess"
- "🇯🇵 日本-Trojan"
- DIRECT
- name: "⚡ 自动选择"
type: url-test
proxies:
- "🇭🇰 香港-SS"
- "🇺🇸 美国-VMess"
- "🇯🇵 日本-Trojan"
url: 'http://www.gstatic.com/generate_204'
interval: 300
tolerance: 50
- name: "🛡️ 故障转移"
type: fallback
proxies:
- "🇭🇰 香港-SS"
- "🇯🇵 日本-Trojan"
- "🇺🇸 美国-VMess"
url: 'http://www.gstatic.com/generate_204'
interval: 60
- name: "🎬 流媒体"
type: select
proxies:
- "🇺🇸 美国-VMess"
- "🇯🇵 日本-Trojan"
- "🚀 节点选择"
# --- 规则 ---
rules:
# 广告拦截
- DOMAIN-KEYWORD,adservice,REJECT
- DOMAIN-SUFFIX,doubleclick.net,REJECT
# 流媒体
- DOMAIN-SUFFIX,netflix.com,🎬 流媒体
- DOMAIN-SUFFIX,nflxso.net,🎬 流媒体
- DOMAIN-SUFFIX,disneyplus.com,🎬 流媒体
- DOMAIN-SUFFIX,spotify.com,🎬 流媒体
# 开发者工具
- DOMAIN-SUFFIX,github.com,🚀 节点选择
- DOMAIN-SUFFIX,githubusercontent.com,🚀 节点选择
- DOMAIN-SUFFIX,npmjs.com,🚀 节点选择
- DOMAIN-SUFFIX,docker.io,🚀 节点选择
# 私有地址直连
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
# 中国大陆直连
- GEOIP,CN,DIRECT
# 兜底:其余走代理
- MATCH,🚀 节点选择