代理工具

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rules:
- RULE-SET,applications,DIRECT
- DOMAIN,clash.razord.top,DIRECT
- DOMAIN,yacd.haishan.me,DIRECT
- RULE-SET,private,DIRECT
- RULE-SET,reject,REJECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,DIRECT
- RULE-SET,google,GOOGLE
- RULE-SET,proxy,PROXY
- RULE-SET,direct,DIRECT
- RULE-SET,lancidr,DIRECT
- RULE-SET,cncidr,DIRECT
- RULE-SET,telegramcidr,Telegram
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY

dashboard

yacd
metacubexd
以Linux为例:
git下来后移动到/home/username/.config/clash,重命名为dashboard

1
2
3
4
5
6
7
external-controller: 0.0.0.0:9090
#设置所使用控制面板的绝对路径
external-ui: /home/username/.config/clash/dashboard
experimental:
ignore-resolve-fail: true
#RESTful API 的口令
secret: 'your-password'

外网访问 http://服务器ip:9090/ui/#/proxies

nginx反向代理

1
2
3
4
5
location /mihomo/ {
proxy_pass http://127.0.0.1:9090/;
proxy_set_header Host $http_host;
proxy_set_header Remote-Addr $remote_addr;
}

开机自启

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=clash service
After=network.target

[Service]
Type=simple
Restart=on-abort
ExecStart=/usr/bin/clash -d /home/username/.config/clash/
[Install]
WantedBy=multi-user.target
1
2
3
4
5
sudo vim /etc/systemd/system/clash.service #将上述内容粘贴
sudo systemctl daemon-reload # 刷新配置
sudo systemctl start clash # 启动clash
sudo systemctl enable clash # 设置开机启动
sudo systemctl status clash # 查看clash状态

设置代理

写在~/.bashrc

1
2
3
4
5
6
7
8
9
10
11
12
13
#Open proxy
proxy_on() {
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
echo "HTTP/HTTPS Proxy on"
}

#Close proxy
proxy_off() {
unset http_proxy
unset https_proxy
echo "HTTP/HTTPS Proxy off"
}

dns配置

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "geosite:connectivity-check"
- "geosite:private"

default-nameserver:
- 223.5.5.5
- 119.29.29.29

proxy-server-nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query

# 只有命中 DIRECT 规则的域名,才用这组 DNS
direct-nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query

# 命中 PROXY 或未命中的域名,走这里
nameserver:
- https://dns.cloudflare.com/dns-query#PROXY
- https://dns.google/dns-query#PROXY
- https://101.101.101.101/dns-query#PROXY # 台湾网络资讯中心运营的公共 DNS
- https://9.9.9.9/dns-query#PROXY # Quad9 安全 DNS
- https://doh.dns.sb/dns-query#PROXY # 隐私性极好,推荐
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver-policy:
geosite:cn:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
nameserver:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
# 目前国外DOH无法使用(已被防火墙精准识别),故使用DOT
fake-ip-filter:
- "*.lan"
- localhost.ptlogin2.qq.com
- dns.msftncsi.com
- www.msftncsi.com
- www.msftconnecttest.com

enable
是否启用 DNS 功能。若设为 false,则使用系统 DNS 进行解析。

cache-algorithm
支持的缓存算法:

  • lru:Least Recently Used(默认)
  • arc:Adaptive Replacement Cache

prefer-h3
DoH 请求优先使用 HTTP/3 协议。

listen
DNS 服务监听地址,支持 udptcp 协议。

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-ip
  • whitelist:仅匹配的域名才返回 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
2
3
default-nameserver:
- 223.5.5.5
- 119.29.29.29

nameserver-policy
为特定域名指定解析服务器,支持 geosite,优先级高于 nameserverfallback
键支持通配符,值可为字符串或数组。

1
2
3
4
5
6
7
8
9
10
nameserver-policy:
# 匹配 geosite:cn 列表中的所有域名 (如 baidu.com, taobao.com)
# 使用 阿里DNS 和 腾讯DNSPod 进行解析
'geosite:cn':
- 'https://dns.alidns.com/dns-query'
- 'https://doh.pub/dns-query'

# 匹配 microsoft.com 和 *.microsoft.com
'+.microsoft.com':
- 'tls://1.1.1.1:853'

proxy-server-nameserver
专用于解析代理节点域名的 DNS 服务器。
若未设置,则沿用 nameserver-policynameserverfallback 的配置。

direct-nameserver
用于 direct 出站策略域名解析的 DNS 服务器。
若未设置,则沿用 nameserver-policynameserverfallback 的配置。

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)

  1. 应用请求 & 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
  2. Clash拦截请求 & 开始真实DNS查询
    • 浏览器拿到假IP后,向 198.18.0.10 发起连接请求。
    • Clash 拦截了这个指向假IP的请求,并通过内部映射关系得知,浏览器真正想访问的是 www.baidu.com
    • 现在,Clash 开始为 www.baidu.com 查询真实IP。
  3. nameserver-policy 规则匹配
    • Clash 会用 www.baidu.com 这个域名去匹配 nameserver-policy 列表中的规则。
    • 发现 www.baidu.com 属于 geosite:cn 这个域名集合,规则匹配成功!
  4. 使用指定的国内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地址。
  5. 应用规则 & 建立连接
    • Clash 拿到了百度的真实国内IP。
    • 接着,Clash 会根据您的主规则 rules 部分(未显示,但通常会有 geosite:cn, DIRECT),决定此连接应该**直连 (DIRECT)**。
    • 最终,Clash 建立一条从您的电脑到百度真实IP的直接连接。

场景二:访问国外网站 (例如:www.github.com)

  1. 应用请求 & Clash返回“假IP”
    • 此步骤与访问国内网站完全相同。浏览器为 www.github.com 获得了一个假IP(比如 198.18.0.11)。
  2. Clash拦截请求 & 开始真实DNS查询
    • 此步骤也完全相同。Clash 拦截后得知,浏览器真正想访问的是 www.github.com
  3. nameserver-policy 规则未匹配
    • Clash 用 www.github.com 这个域名去匹配 nameserver-policy 列表中的规则。
    • 发现 www.github.com 不属于 geosite:cn,并且没有其他策略规则可以匹配。
  4. 使用默认的 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地址。
  5. 应用规则 & 建立连接
    • Clash 拿到了 GitHub 的真实国外IP。
    • 接着,Clash 会根据您的主规则 rules 部分(例如 FINAL, PROXY),决定此连接应该**走代理 (PROXY)**。
    • 最终,Clash 通过您设定的代理节点,建立一条到 GitHub 真实IP的连接。

链式代理

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
proxies:
-
name: 落地节点 1 - 家宽
server:
port: 8080
type: ss
cipher: aes-128-gcm
password:
dialer-proxy: dialer

-
name: 机场节点 1
server:
port: 9090
client-fingerprint: chrome
type: trojan
password:
sni: itunes.apple.com
skip-cert-verify: true
udp: true

-
name: 机场节点 2
server:
port: 9090
client-fingerprint: random
type: trojan
password:
sni: www.bing.com
skip-cert-verify: true
udp: true

proxy-groups:

- name: dialer
type: select
proxies:
- 机场节点 1
- 机场节点 2

- name: 🔰 手动选择
type: select
proxies:
- 落地节点 1 - 家宽