社区讨论LinuxDo 最新
软路由及 shadowrocket 的配置优化过程,更好的解决了 dns 防泄漏
前天又折腾了一天的软路由网络,主要是 DNS 泄露问题,发现之前在一些检测网站上测出来没有泄露,其实完全是在掩耳盗铃。 起因是我在 Linux.do 上看一篇别人介绍如何使用 Claude 不被风控的教程,里面提到了一个检测 IP 和 DNS 解析的网站,网址是 ip.net.coffee。这个网站我一直都知道,我以前一直都是在 ipleak.net 以及 browserleaks 上测,每次检测都显示没有泄露;唯独在这个 ip.net.coffee 上,每次都会提示 DNS 泄露,而且我无论怎么修改都没用。以前…
内容摘要
作者:#ljz
板块:#开发调优
前天又折腾了一天的软路由网络,主要是 DNS 泄露问题,发现之前在一些检测网站上测出来没有泄露,其实完全是在掩耳盗铃。
起因是我在 Linux.do 上看一篇别人介绍如何使用 Claude 不被风控的教程,里面提到了一个检测 IP 和 DNS 解析的网站,网址是 ip.net.coffee。这个网站我一直都知道,我以前一直都是在 ipleak.net 以及 browserleaks 上测,每次检测都显示没有泄露;唯独在这个 ip.net.coffee 上,每次都会提示 DNS 泄露,而且我无论怎么修改都没用。以前的话,我还在想是不是 ip.net.coffee 这个网站检测有问题,为什么别的检测都没有泄露,只有它有泄露?但今天我突然意识到肯定还是我的配置有问题,我决定深究一下。
于是我就开始在网上找教程,最先想到的还是 YouTube 上的不良林,便去看了看他关于 DNS 泄露的视频。刚打开第一个视频没多久,他就提到有些人会把一些常见的 dns 泄漏检测的网站域名直接加进代理软件的配置文件里,给它们指定的规则就是走代理,这样一来无论怎么测都不会检测出泄露。
我突然意识到,我的 Shadowrocket 配置里之前好像就包含这一段规则,我之前让 AI 帮我整理配置时它还专门把这几条特意做了标注。我又去问了 Codex,也确认了这样做确实会掩盖真实的泄露问题。因为我 Shadowrocket 的规则就是根据 OpenClash 配置文件修改来的,所以可想而知,我的 OpenClash 同样存在这个问题。之前一直测不出泄露,并不是真的没有泄露,属实是在掩耳盗铃了。
同时我还发现,这几条“防止dns泄漏的规则”是 shadowrocket 默认配置文件 default.conf 自带的。 使用 shadowrocket 的大家也可以自己看一下,在最下面,我也贴一下吧:
# DNS Leak
DOMAIN-SUFFIX,dnsleaktest.com,PROXY
DOMAIN-SUFFIX,dnsleak.com,PROXY
DOMAIN-SUFFIX,expressvpn.com,PROXY
DOMAIN-SUFFIX,nordvpn.com,PROXY
DOMAIN-SUFFIX,surfshark.com,PROXY
DOMAIN-SUFFIX,ipleak.net,PROXY
DOMAIN-SUFFIX,perfect-privacy.com,PROXY
DOMAIN-SUFFIX,browserleaks.com,PROXY
DOMAIN-SUFFIX,browserleaks.net,PROXY
DOMAIN-SUFFIX,browserleaks.org,PROXY
DOMAIN-SUFFIX,vpnunlimited.com,PROXY
DOMAIN-SUFFIX,whoer.net,PROXY
DOMAIN-SUFFIX,whrq.net,PROXY
我把上面这些全部删除,重新运行后再去测,果然存在 DNS 泄露。我常用的几个检测网站如下:
https://ipleak.net/
https://browserleaks.com/dns
https://browserleaks.com/webrtc
现在再加一个
https://ip.net.coffee/
我又查阅了一些教程,才发现自己之前对不良林提到的白名单模式理解一直是错的。最关键的设置其实是在分流规则的最末尾几条兜底规则上加上 no-resolve:
对于那些不匹配已有规则的域名,客户端不要率先在本地发起 DNS 解析,而是通通由最后的规则兜底,直接交给代理服务器解析。
很多配置文件最后会有一批针对局域网常用 IP 段的规则,这些局域网 IP 对应的规则后面也同样需要加上 no-resolve。
之所以局域网 IP 规则也必须加 no-resolve,是因为当一个域名与前面的规则都不匹配、一路匹配到局域网 IP 段时,规则并不知道这些 IP 仅仅是局域网在用。它只知道域名还没匹配成功,但无法确定这个域名解析后的 IP 是否命中这些局域网网段,于是就会在客户端主动发起一次 DNS 解析来进行比对,这样依然会导致客户端发起解析,从而造成 DNS 泄露。
把这些地方加上 no-resolve 之后,DNS 就彻底不再泄露了。其实改动非常简单,但彻底解决了问题。
但是昨天我老婆和我说,她第一次打开淘宝和小红书的时候,都加载了很久才刷出图片和内容。
我想了一下,应该是因为我昨天做完配置后重启了家里的软路由,加上改成了白名单模式。这些域名在规则里没有特别规定,所以第一次都走代理服务器进行了 DNS 解析,速度就比较慢;之后访问就恢复正常了。
但我琢磨着这肯定还是不对的,于是继续和 Claude 深入探讨了这个问题。本来他给的方案是在 OpenClash 里面做一些设置,但我想用配置文件来解决,因为我希望 Shadowrocket 的配置能和 OpenClash 保持同步。如果只改软路由,Shadowrocket 这边就跟不上了。
最后是通过加了一个国内域名的规则集来解决的问题。同样,Shadowrocket 也做了相应调整。与此同时,claude 还把以前很多重复、已被包含的一些规则全删了,现在看起来简洁舒服了很多,也更好维护了。
下面是我的两份配置文件,仅供参考,如有错误,也希望大家帮忙指出,以便改进。
此文件只是 openclash 的 yaml 模版,也适用于其他 clash 系软件,需要注意的是,proxies 和 proxy-groups 都是空的。需要要先填上节点,再把「你的代理名」全部替换成自己的策略组名,否则加载会报错。 (click for more details)
这个可以直接导入 shadowrocket 中使用。 (click for more details)
资讯来源
LinuxDo