7月22日更新
57楼 井芹仁菜大佬给出了一个 clash meta 内核配置,有效防止 DNS 泄露,且比我原始给出的更好。唯一可惜的是没法做到电脑端和手机端同时使用,因为 ios 的 stash 暂时不支持 nameserver-policy
,会导致 stash 无法导入订阅链接。
在评论区各位大佬的指导下,终于摸索出了一个兼容配置,如下【完整配置文件请下载最新更新版】:
dns:
enable: true
ipv6: false
default-nameserver:
- 223.5.5.5
- 223.6.6.6
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- 'localhost.ptlogin2.qq.com'
- 'dns.msftncsi.com'
- 'www.msftncsi.com'
- 'www.msftconnecttest.com'
### 中间省略亿点点内容 ###
rules:
- RULE-SET,collection,DIRECT,no-resolve
- GEOIP,CN,DIRECT,no-resolve
- MATCH,↪️ 漏网之鱼
rule-providers:
collection:
type: http
behavior: classical
format: yaml
path: ./rules/collection.yaml
url: "https://gist.githubusercontent.com/cnfree8964/0864fd1d2e88936a095fb40d74ce4993/raw/collection.yaml"
重点:配合 collection
这个规则集,可以更为顺畅。
—————————————————— 分割线 ——————————————————
7月21日更新
经过评论区各位大佬的指导,作为小白终于明白我原始配置上的问题,对于日常用户,确实有点伤敌一百自损一千,但也确实完全避免的 DNS 泄露,因为我的原始配置直接就让你置身于国外,起到了真代理的效果,但原始配置也是做到了——1,真正的 DNS 防泄露;2,达到了我追求的电脑端 Clash 和移动端 Clash(stash)共同使用一套配置的效果。
以下是通过各位大佬的指导下优化的 dns 配置,但还是有两个问题:1,没法从配置上直接做到防泄露;2,stash 暂时不支持nameserver-policy
,因此没法做到多平台使用,各位看需要替换:
dns:
enable: true
ipv6: false
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- 114.114.114.114
- 223.5.5.5
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
nameserver-policy:
"geosite:cn": [114.114.114.114, 223.5.5.5]
default-nameserver:
- 1.1.1.1
- 8.8.8.8
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
这个配置的关键点解释如下:
nameserver
: 保持国际DNS服务器作为主要DNS服务器。fallback
: 使用国内DNS服务器作为后备。fallback-filter
:
geoip: true
和geoip-code: CN
确保只有中国IP的查询会使用fallback DNS。
nameserver-policy
: 为中国域名(geosite:cn)指定使用国内DNS服务器。default-nameserver
: 用于初始DNS查询和内部DNS查询,防止DNS泄露。enhanced-mode: fake-ip
: 启用Fake-IP模式,进一步防止DNS泄露。fake-ip-range
: 指定Fake-IP的IP范围。
这个配置的工作方式:
- 对于国外域名,将使用1.1.1.1和8.8.8.8进行解析。
- 对于解析结果是中国IP的域名,会使用114.114.114.114和223.5.5.5重新解析。
- 明确的中国域名(geosite:cn)会直接使用国内DNS服务器解析。
- Fake-IP模式和default-nameserver的设置可以有效防止DNS泄露。
—————————————————— 分割线 ——————————————————
DNS 泄露是指在使用 VPN 或其他翻墙软件时,你的 DNS 请求没有通过加密隧道,而是直接发送到了你的互联网服务提供商 (ISP)的DNS 服务器。这可能会暴露你正在访问的网站信息。
DNS 泄露可能带来以下风险和后果:
- 隐私泄露:你访问的网站信息可能被 ISP 或其他第三方获知。
- 审查规避失效:如果你使用翻墙软件访问被屏蔽的网站,DNS 泄露可能会暴露这一行为。
- 定位风险:通过 DNS 请求,可能会暴露你的真实 IP 地址和位置信息。
- 安全威胁:恶意攻击者可能利用 DNS 泄露进行中间人攻击或钓鱼攻击。
- 网络审查:在某些地区,DNS 泄露可能导致访问某些网站时遭遇更严格的审查或限制。
省流版,可直接下载配置文件【7月22日更新版】:
freeworld.yaml.txt (5.3 KB)
本配置文件为【订阅链接】的聚合版,可以把你自己购买的或在网上收集到的订阅链接聚合到一起进行使用,数量不限,无论是一条或无数条,无需自己填写任何参数,小白式复制粘贴即可无痛享用。小白请继续往下看,会有使用教程,保证一看就懂,简单易用
给小白解释:使用时把“.txt”删掉,格式是 yaml,完整文件名称+格式后缀为【freeworld.yaml】
请传播,无需注明出处与作者,当然,能注明 https://linux.do 也不错
clash 防止 DNS 泄露功能缺失
现时网络上关于 clash 简单、省心的不开全局+tun 模式的,防止 Clash DNS 泄露的配置文件一个都没有,已有的也是不完全起作用。在我的日夜研究与压力测试下,终于有了这个配置文件,既可以防止 DNS 泄露,也能顺畅浏览国内的网站与 APP,真正的做到小白一键使用,无需多余的设置。
以下内容可跳过
https://linux.do/t/topic/133942/20
之前分享的方法都有一些不足之处,比如电脑端可以使用脚本方法,但手机端使用 stash 还是会 DNS 泄露;如果使用我之前分享的配置文件,虽然能起到防止泄露的作用,但会对一些国内网站或 APP 造成访问障碍,需要自己单独添加直连规则,这对小白不友好。
以下是防止 DNS 泄露的原因解析,不感兴趣的可以略过,主要是为互联网留下有用的记录。
我之前分享的配置文件起到防止 DNS 泄露的原因,主要是两个部分同时设置所形成的效果。一个是“- GEOIP,CN,DIRECT”添加“no-resolve”,另一个是“MATCH”走代理,配置如下:
- GEOIP,CN,DIRECT,no-resolve
- MATCH,PROXY
【给小白解释:如果你的代理名称是“🌏️ 节点选择”,那么“PROXY”则改成“🌏️ 节点选择”,如图1】
这个配置组合可以防止 DNS 泄露,但对国内 APP 或网站不友好,主要原因是我前面分享的配置文件的前置规则(图2),这其中具体是什么原理,我不是程序员,所以我不清楚。
这里进入主题
因此我让 Claude 帮我写了一个防止 DNS 泄露的配置,其前置的 dns 规则如下:
原始版本,已抛弃
dns:
enable: true
ipv6: false
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
ipcidr:
- 240.0.0.0/4
dns:
enable: true
ipv6: false
default-nameserver:
- 223.5.5.5
- 223.6.6.6
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- 'localhost.ptlogin2.qq.com'
- 'dns.msftncsi.com'
- 'www.msftncsi.com'
- 'www.msftconnecttest.com'
这个规则比我之前分享的要简洁,就是这短短几行,顺利让我找出了最好的配置规则搭配,如下:
dns:
enable: true
ipv6: false
default-nameserver:
- 223.5.5.5
- 223.6.6.6
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- tls://1.1.1.1:853
- tls://8.8.8.8:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- 'localhost.ptlogin2.qq.com'
- 'dns.msftncsi.com'
- 'www.msftncsi.com'
- 'www.msftconnecttest.com'
### 中间省略亿点点内容 ###
rules:
- GEOIP,CN,DIRECT,no-resolve
- MATCH,↪️ 漏网之鱼
【给小白解释:如果你的代理名称是“🌏️ 节点选择”,那么“PROXY”则改成“🌏️ 节点选择”,如前面的图1】
“- GEOIP,CN,DIRECT”不需要添加“no-resolve”了,这就让国内网站和 APP 可以顺畅访问,兜底一律走代理,实现了真正的隐身访问效果。只要你用这个配置规则,无论是在电脑端还是手机端的 Clash ,都能一劳永逸解决 DNS 泄露的问题,而无需任何对小白来说高深莫测的软件设置。
界面友好的 Clash+一套简洁的规则,就是好用+安全。
以下是测试的配置规则,可以看到只需简单的 dns 规则和两条 rules,就实现了 DNS 的防泄露效果:
检测 DNS 泄露网址
给小白解释:用以下网站进行检测而没有出现国旗,就表示没有出现 DNS 泄露,反之则有 DNS 泄露风险
关于配置文件的使用方法【小白必读】
配置文件一共由以下部分组成
用法示例
如果你是小白或有不超过 8 条订阅链接,可以直接在我的配置文件上填入链接,比如你只有一条"http://free.com
"链接,并且完全不懂规则的写法,则在 proxy-providers 中进行如下修改,订阅 2 到 8 为空,这样就可以直接使用了:
proxy-providers: # Meta支持机场通用订阅
订阅 1: # 某某订阅(可自定义名称)
<<: *p
url: "http://free.com"
订阅 2: #
<<: *p
url: ""
订阅 3: #
<<: *p
url: ""
订阅 4: #
<<: *p
url: ""
订阅 6: #
<<: *p
url: ""
订阅 7: #
<<: *p
url: ""
订阅 8: #
<<: *p
url: ""
写给小白的参数解释
锚点是定义一系列参数,以供订阅部分和功能分组直接调用,之后只要修改锚点即可。比如你填入了三个订阅链接,分别是订阅 1、订阅 3、订阅 5,其他为空,那么在锚点部分的“解锁 AI”处,由于订阅 1 的节点都不支持解锁 AI,你只想保留订阅 3、订阅 5,那么可以直接修改成:
# 解锁 AI
ai: &ai {type: url-test, url: "http://www.google.com/generate_204", interval: 120, tolerance: 50, lazy: true, use: [订阅 3, 订阅 5], filter: "(?i)(us|unitedstates|united states|usa|jp|sg|zgo|tw|sjc|中转 US|中转 TW|中转 JP|GPT|解锁)(?i)(?!.*(hong kong|hk|香港|香|港))"}
注意,所有标点符号都要用英文格式的,并且",'之后都要加空格:
订阅 3,订阅 5 错误
订阅 3, 订阅 5 正确
其他部分的书写格式或逻辑关系,只要你能看懂配置文件并稍微思考下,应该都能搞明白,有不明白的可以询问 AI,我作为一个小白,也是在 AI 的帮助下,完全掌握了 Clash 的配置规则写法,这很容易,一点都不难。
希望这个简单而有用的防止 DNS 泄露的规则对你有帮助。
爱护自己的隐私,保护好自己。