clash
代理工具
clash备份
clash · GitHub Topics
MetaCubeX mihome, ClashX.meta, metacubexd, Yacd-meta, ClashMetaForAndroid
mihomo-party
clash-verge-rev A Clash Meta GUI for Windows, Linux and MacOS
clash_singbox 更新 mihomo 内核、sing-box 内核、sing-box PuerNya 版内核、Clash dashboard 面板和 AdGuard Home
OpenClash A Clash client for Openwrt
v2rayN A GUI client for Windows
v2rayNG A V2Ray client for Android
hiddify-next A multi-platform proxy client
error:Can’t find MMDB, start download:
Country.mmdb
规则配置
默认配置目录是 $HOME/.config/clash
clash-rules
1 | rules: |
dashboard
yacd
metacubexd
以Linux为例:
git下来后移动到/home/username/.config/clash,重命名为dashboard
1 | external-controller: 0.0.0.0:9090 |
外网访问 http://服务器ip:9090/ui/#/proxies
nginx反向代理
1 | location /mihomo/ { |
开机自启
1 | [Unit] |
1 | sudo vim /etc/systemd/system/clash.service #将上述内容粘贴 |
设置代理
写在~/.bashrc
1 | #Open proxy |
dns配置
示例:
1 | dns: |
1 | dns: |
enable
是否启用 DNS 功能。若设为 false,则使用系统 DNS 进行解析。
cache-algorithm
支持的缓存算法:
lru:Least Recently Used(默认)arc:Adaptive Replacement Cache
prefer-h3
DoH 请求优先使用 HTTP/3 协议。
listen
DNS 服务监听地址,支持 udp 和 tcp 协议。
IPV6
是否解析 IPv6 地址。若设为 false,对 AAAA 查询将返回空响应。
enhanced-mode
可选值:fake-ip / redir-host(默认 redir-host)
指定 mihomo 的 DNS 处理模式。
fake-ip-range
在 fake-ip 模式下使用的 IP 段设置,同时作为 TUN 模式下默认 IPv4 地址的参考范围。
fake-ip-filter
在 fake-ip 模式下,匹配此列表的域名不会下发 fake-ip 映射用于连接。
支持域名通配符及引用域名集合。
fake-ip-filter-mode
可选值:blacklist(默认)/ whitelist
blacklist:匹配的域名不返回 fake-ipwhitelist:仅匹配的域名才返回 fake-ip
use-hosts
是否响应配置文件中定义的 hosts 条目,默认为 true。
use-system-hosts
是否查询系统 /etc/hosts 文件,默认为 true。
respect-rules
DNS 查询是否遵守路由规则。启用时需配置 proxy-server-nameserver。
⚠️ 强烈不建议与 prefer-h3 同时使用。
default-nameserver
用于解析 DNS 服务器自身域名的默认 DNS。
必须为 IP 地址,支持加密 DNS(如 DoH/DoT)。
1 | default-nameserver: |
nameserver-policy
为特定域名指定解析服务器,支持 geosite,优先级高于 nameserver 和 fallback。
键支持通配符,值可为字符串或数组。
1 | nameserver-policy: |
proxy-server-nameserver
专用于解析代理节点域名的 DNS 服务器。
若未设置,则沿用 nameserver-policy、nameserver 或 fallback 的配置。
direct-nameserver
用于 direct 出站策略域名解析的 DNS 服务器。
若未设置,则沿用 nameserver-policy、nameserver 或 fallback 的配置。
direct-nameserver-follow-policy
是否让 direct-nameserver 遵循 nameserver-policy。
仅在 direct-nameserver 非空时生效,默认为 false(不遵循)。
nameserver
默认域名解析服务器列表。
fallback
后备域名解析服务器,通常配置为境外 DNS,确保结果可信。
配置 fallback 后,默认启用 fallback-filter,且 geoip-code 默认为 CN。
fallback-filter
对后备 DNS 结果进行筛选,满足条件时优先或仅使用 fallback 的结果。
geoip
是否启用 GeoIP 判断功能。
geoip-code
国家代码,默认为 CN。
- 非此国家的 IP 结果视为“污染”,将采用
fallback结果 - 此国家的 IP 结果直接采用
geosite
匹配 geosite 集合中的域名被视为已污染,将仅使用 fallback 解析,跳过 nameserver。
ipcidr
填写格式为 IP/掩码。
匹配这些网段的解析结果视为污染,将采用 fallback 的结果。
domain
列出的域名被视为已污染,匹配时直接使用 fallback 解析,跳过 nameserver。
dns流程
场景一:访问国内网站 (例如:www.baidu.com)
- 应用请求 & Clash返回“假IP”
- 您的浏览器向操作系统请求
www.baidu.com的 IP 地址。 - 操作系统将请求转交给作为系统DNS的Clash。
- Clash 的
enhanced-mode: fake-ip模式立即生效,不会马上去查询真实IP,而是直接返回一个198.18.0.1/16网段内的假IP(比如198.18.0.10)给浏览器。同时,Clash内部会记录下映射关系:198.18.0.10->www.baidu.com。
- 您的浏览器向操作系统请求
- Clash拦截请求 & 开始真实DNS查询
- 浏览器拿到假IP后,向
198.18.0.10发起连接请求。 - Clash 拦截了这个指向假IP的请求,并通过内部映射关系得知,浏览器真正想访问的是
www.baidu.com。 - 现在,Clash 开始为
www.baidu.com查询真实IP。
- 浏览器拿到假IP后,向
nameserver-policy规则匹配- Clash 会用
www.baidu.com这个域名去匹配nameserver-policy列表中的规则。 - 发现
www.baidu.com属于geosite:cn这个域名集合,规则匹配成功!
- Clash 会用
- 使用指定的国内DNS解析
- 因为规则匹配成功,Clash 将直接使用该规则下指定的DNS服务器,也就是
'https://dns.alidns.com/dns-query'或'https://doh.pub/dns-query',来解析www.baidu.com。 - (技术细节:Clash 会使用
default-nameserver中的223.5.5.5等去获取dns.alidns.com自身的IP地址,这个过程叫“引导”。) - 阿里或腾讯的DNS服务器快速返回了百度在国内的真实IP地址。
- 因为规则匹配成功,Clash 将直接使用该规则下指定的DNS服务器,也就是
- 应用规则 & 建立连接
- Clash 拿到了百度的真实国内IP。
- 接着,Clash 会根据您的主规则
rules部分(未显示,但通常会有geosite:cn, DIRECT),决定此连接应该**直连 (DIRECT)**。 - 最终,Clash 建立一条从您的电脑到百度真实IP的直接连接。
场景二:访问国外网站 (例如:www.github.com)
- 应用请求 & Clash返回“假IP”
- 此步骤与访问国内网站完全相同。浏览器为
www.github.com获得了一个假IP(比如198.18.0.11)。
- 此步骤与访问国内网站完全相同。浏览器为
- Clash拦截请求 & 开始真实DNS查询
- 此步骤也完全相同。Clash 拦截后得知,浏览器真正想访问的是
www.github.com。
- 此步骤也完全相同。Clash 拦截后得知,浏览器真正想访问的是
nameserver-policy规则未匹配- Clash 用
www.github.com这个域名去匹配nameserver-policy列表中的规则。 - 发现
www.github.com不属于geosite:cn,并且没有其他策略规则可以匹配。
- Clash 用
- 使用默认的
nameserver组解析- 因为没有任何策略规则匹配成功,Clash 将会使用顶层的、默认的
nameserver组来解析www.github.com。 - 也就是您配置的
'tls://1.1.1.1:853'或'tls://8.8.8.8:853'。 - Clash 通过 DoT 协议向 Cloudflare 或 Google 的DNS服务器查询,并获得了 GitHub 在国外的真实IP地址。
- 因为没有任何策略规则匹配成功,Clash 将会使用顶层的、默认的
- 应用规则 & 建立连接
- Clash 拿到了 GitHub 的真实国外IP。
- 接着,Clash 会根据您的主规则
rules部分(例如FINAL, PROXY),决定此连接应该**走代理 (PROXY)**。 - 最终,Clash 通过您设定的代理节点,建立一条到 GitHub 真实IP的连接。
链式代理
示例:
1 | proxies: |
