网上看了很多对 dns 泄露的讨论,为了防止 dns 泄露,很多人对 dns 模块进行了复杂的自定义设置。
但我都是直接把配置文件中 dns 模块删除!只需在配置文件设置国内常用域名的白名单走直连,其他所有域名用 match 兜底走代理,ipcidr 和 geoip 规则全设置 no-resolve ,就不会有 dns 泄露。
国内常用网站走国内 dns ,其他网站都在代理服务器端远程解析,这样既安全又不用配置 dns ,为什么不用?
这样看来,那么多人都在追求的 dns 精细设置是否多此一举,有什么意义?

有人提到,白名单里国内域名不全导致国内小众网站被迫走代理,这种情况存在但很少发生,就算发生也可以通过搭配 swithyomega 之类的扩展快速放行,国外应直连而走代理的域名同样可如此操作。

重大发现:当 edge 浏览器 switchyomega 开启 sock5 转发+clash/singbox 不开系统代理和 tun 模式时,dns 竟然会泄露!用 ipleak 和 dnsleak 等网站检测显示无泄露,用 wireshark 抓包证实 dns 泄露无疑!但换成谷歌浏览器时无泄露,或者依旧用 edge 浏览器,clash 开启系统代理模式时也无 dns 泄露。太奇怪了,sock5 协议为什么不会转发 dns 到 clash ?

如果不设置,isp 的 dns 服务器会知道你访问了什么网站,校园网什么的对这种大都有审计的

国内白名单域名走国内 dns ,知道了也无妨,不在白名单中的域名都在代理服务器远程解析了,并不经过运营商 dns ,也就不存在泄露

clash 的 dns 逻辑有点奇怪,我记得不设置 dns 是会本地先解析的,你说的设置 no resolve 能否只让远端解析我可能没有做过什么测试,最近都在用 singbox ,singbox 的解析逻辑比较清晰。我的理解是,精细设置 dns 可以让你访问网站吃到离代理服务器近的 cdn(如果你的设置能做到只让远端解析,这一点当我没说),还有就是校园网环境下让一些内网网址走校园网 dns

各人喜欢。我家里的 dns 是 DoH 到 dnspod 去解析的,理论上运营商要看的话也比较麻烦。

需要没有 IP 类规则(或者全部都 no-resolve )才可以做到不解析

只要对 ip 规则设置了 no-resolve ,直连白名单以外的域名都不会在本地解析,测试过。singbox 的 dns 逻辑虽然清晰,但太复杂了

是的,ip 规则用到的机会很少

圈 X: no-system

你用的是 clash 还是 singbox 啊, “其他所有域名用 match 兜底走代理”,问一下:你把 DNS 模块都删了,那么其他网站是怎么在远端解析的?

这是腾讯的 dns 吧,被腾讯知道了和被运营商知道了有区别吗

dns 模块删了不影响,其他域名自动加密发送了代理服务器,这就是兜底的意义

不了解苹果

有人觉得白名单走运营商明文 dns 就算泄露了,你觉得不算那也没办法

  • GEOIP,CN,DIRECT - GEOSITE,cn,DIRECT - IP-ASN,132203,DIRECT # 微信 - IP-ASN,6185,DIRECT # Apple 中国 - IP-ASN,714,DIRECT # Apple 中国 - IP-ASN,13414,推特策略,no-resolve,no-track # Twitter - IP-ASN,35995,推特策略,no-resolve,no-track # Twitter - IP-ASN,63179,推特策略,no-resolve,no-track # Twitter

有 GEOIP,CN,和 GEOSITE,cn 两个规则直连,基本可以囊括所有大陆常用网站,再不放心就添加中国所有 IP-ASN 使用直连,以及 DOMAIN-KEYWORD,.cn,DIRECTcnn 和 cnbc 另外添加策略最后兜底走代理,MATCH,proxy

这个配置明显导致 dns 泄露,IP 段和 GEOIP 只要有一处未设置 no-resolve ,就会出现 dns 泄露

clash 用这个配置明显会导致 dns 泄露,IP 段和 GEOIP 只要有一处未设置 no-resolve ,就会出现 dns 泄露

贴一下你的配置看看

no-resolve ,国内的 ip 不让本地 dns 解析,怎么判断是国内,国内的必须 resolve 。国外的 ip 必须 no-resolve

如果设置 IP 段为 “no-resolve” ,Clash 就不会对该规则进行 DNS 解析,而是直接将其交给海外代理服务器的 DNS 进行解析。国内的交给国外解析,速度变慢

所有复杂操作都是为了实现一个根据域名或者 ip 进行不同的 dns 域名服务器的解析请求这个操作,所以如果公网里存在一个 dns 服务器具备这种能力,你的代理软件的确不用进行任何复杂设置,挂一下代理配置直接用这个特殊的 dns 服务器就可以解决 dns 泄漏问题,那么在中国境内有没有这种特殊的 dns 服务器呢?

clashyun.com/303.html 参考

常用网站不好定义

😀 为了防止泄漏,clash DNS 引入 fakeip 模式,在此模式下,Clash 会为每个请求生成一个假的、不存在的 IP 地址( ip 段 198.18.0.1/16 ) ,然后在内部解析这个 IP 到正确的域名。这样,外部的网络监控者只能看到假的 IP 地址,而无法通过 DNS 请求来了解你的网络活动。配置是这样的dns: enable: true ipv6: true enhanced-mode: fake-ip listen: 0.0.0.0:53 fake-ip-range: 198.18.0.1/16 default-nameserver: - 119.29.29.29 nameserver: - 119.29.29.29 - 182.254.116.116

使用 fake ip 模式后,- GEOIP,CN,DIRECT 不要加 no-resolve ,直接交给内部解析,外部看到的是假的 fake ip 地址,也就不存在 dns 泄漏。国外的加上 no-resolve ,直接交给海外 dns 解析,加快速度。

surge 默认就是这种策略

白名单中的直连域名自动用系统默认 dns 就行,不需额外设置 dns 。 国内 IP 段设置 “no-resolve” 后,只要白名单包括了对应的国内域名,国内域名只会在本地解析,并不会交国外解析。

感觉这是最简单还最安全的策略了,把 dns 想复杂反而百密一疏

错,我试过了,国内 IP 段加 no resolve ,是交给国外解析的,人民网解析到国外的 ip

那是因为人民网不在直连域名白名单内,常用的加入白名单就好了,不常用的偶尔交国外解析影响不大,保证境外域名安全才是最重要的

你提到“使用 fake ip 模式后,- GEOIP,CN,DIRECT 不要加 no-resolve ,直接交给内部解析,外部看到的是假的 fake ip 地址,也就不存在 dns 泄漏。”,这不对啊,只要 GEOIP,CN,DIRECT 没加 no-resolve ,你设置了 fakeip 照样泄露 dns 。仅靠 fakeip 根本防止不了 dns 泄露

目前我是使用 mosdns + clash 的 Redir+Host 模式测试没有 dns 泄露 imgur.com/gLdbI4A

有没有详细教程参考下

Without DNS leaks, but slower (1.9.0-alpha.2+){ "dns": { "servers": [ { "tag": "google", "address": "tls://8.8.8.8" }, { "tag": "local", "address": " 223.5.5.5/dns-query", "detour": "direct" } ], "rules": [ { "outbound": "any", "server": "local" }, { "clash_mode": "Direct", "server": "local" }, { "clash_mode": "Global", "server": "google" }, { "rule_set": "geosite-geolocation-cn", "server": "local" }, { "type": "logical", "mode": "and", "rules": [ { "rule_set": "geosite-geolocation-!cn", "invert": true }, { "rule_set": "geoip-cn" } ], "server": "google", "client_subnet": "114.114.114.114/24" // Any China client IP address } ] }, "route": { "rule_set": [ { "type": "remote", "tag": "geosite-geolocation-cn", "format": "binary", "url": " raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-cn.srs" }, { "type": "remote", "tag": "geosite-geolocation-!cn", "format": "binary", "url": " raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs" }, { "type": "remote", "tag": "geoip-cn", "format": "binary", "url": " raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs" } ] }, "experimental": { "cache_file": { "enabled": true, "store_rdrc": true }, "clash_api": { "default_mode": "Enhanced" } }} sing-box.sagernet.org/manual/proxy/client/#traffic-bypass-usage-for-chinese-users

fake-ip 的出现不是防泄漏吧,是 redir-host 的映射或者反查的问题(当然后来可以通过 sniff 解决),现在普遍讨论的 DNS “泄漏” 只是如果有个网站用来检查用户 DNS 解析的域名没有命中规则就不会走远程解析从而通过国内 DNS 解析就造成了所谓 “泄漏”。以及 “外部的网络监控者” 是啥,你用到 fake-ip 要么本机撑死了在局域网内。

好吧,我这就拔网线。

域名的 DNS 请求并没有通过加密发送给代理服务器远程解析,clash 处理 UDP 的协议要发起 DNS 请求(软件设计问题)曾经的讨论: www.hesudu.com/t/957464(而 v2ray 系列的可以开启节点嗅探进行远程 DNS 解析),除非使用 DoT 或者 DoH ,否则1 、clash 的 redirhost 模式(目前已弃用)会发起 DNS 请求来进行分流2 、现在的 clash 内核使用的是 fake-ip 模式会因为 Windows 的多宿主 DNS 也会发起 DNS 请求如果想要使用 clash 代理又不进行曾经的讨论: cn.hesudu.com/t/829447 global.hesudu.com/t/1034325

如果想要使用 clash 代理又不产生 DNS 泄露,最好的办法就是本地配置 DoH/DoT ,即便 clash 代理软件设置了 no-resolve ,chrome 使用 QUIC 协议的流量还是会使 clash 发起 DNS 请求,需要在 chrome 里面配置安全的 DNS (开启 DoH/DoT )

国内域名并不完整,没有在规则列表内的都会走代理查询,geoip,cn,direct 会失效

我的意思是如果域名没有匹配直连规则,则会将域名加密发给代理服务器远程解析,这样不会出现 dns 泄露。我完全删除了 dns 模块,配置文件不对 dns 做任何设置,除了国内域名白名单走直连,其他所有域名都不会被以加密数据的形式发给代理服务器远程解析,就算采用 quick 协议也不会在本地解析

更正:我的意思是如果域名没有匹配直连规则,则会将域名加密发给代理服务器远程解析,这样不会出现 dns 泄露。我完全删除了 dns 模块,配置文件不对 dns 做任何设置,除了国内域名白名单走直连,其他所有域名都会被以加密数据的形式发给代理服务器远程解析,就算采用 quick 协议也不会在本地解析

自己内网做一个就行。

更正:我的意思是如果域名没有匹配直连规则,则会将域名加密发给代理服务器远程解析,这样不会出现 dns 泄露。我完全删除了 dns 模块,配置文件不对 dns 做任何设置,除了国内域名白名单走直连,其他所有域名都会被以加密数据的形式发给代理服务器远程解析,就算采用 quick 协议也不会在本地解析

多打了一个不字,更正:我的意思是如果域名没有匹配直连规则,则会将域名加密发给代理服务器远程解析,这样不会出现 dns 泄露。我完全删除了 dns 模块,配置文件不对 dns 做任何设置,除了国内域名白名单走直连,其他所有域名都会被以加密数据的形式发给代理服务器远程解析,就算采用 quick 协议也不会在本地解析

是不是回错人了

用网上 clash 能用的国内常用域名列表啊

你没解决问题,如何让 geoip,cn,direct 生效?你用网上的域名列表,那列表里没有的怎么办呢?实际上别人也是慢慢收集的国内域名,并不是很全,我已经贡献了六七千个没有在 geosite,cn 里边的

你提出的删除 dns 模块,那么怎么按照域名分流不同规则呢?这件事的正确做法是内网做一个 dns 服务器,dns 模块的上游 dns 都设置成这个 dns(不管国内国外),然后,在这个内网 dns 上下功夫,解决分流解析的问题。国内的直接就 foeward isp 的 dns ,一般都在猫上,国外直接 doh 。或者就建成一个缓存 dns ,从根域开始解析,至于 udp 怎么出去,都会吧?

udp53 不加密就有可能泄露,不管代理还是直连。没代理的话用 doh(dns over https)可以解决一些。代理软件可以用 fakeip ( clash ),fakedns(xray)等缓解。

只需要最常用的几百的国内网站直连就可以满足 99%的场景了,不匹配直连规则而被迫走代理的国内小众网站可以安装 swithysmega 之类的扩展来放行,不麻烦

只需要最常用的几百的国内网站直连就可以满足 99%的场景了,不匹配直连规则而被迫走代理的国内小众网站可以安装 swithysmega 之类的扩展来放行,不麻烦

所以你的答案是 不知道 吗?

dns 分流并不是为了不泄露,而是为了更好的体验,分流越精确,体验越好,当然不泄露也是很好的。

简单来说,楼主这种模式就是"绕过大陆"路由模式,也就是所谓的白名单机制。本来就是这么简单即可杜绝 Dns 泄露了。

既然白名单解决了 99%的场景,swithysmega 解决了剩下的 1%绕路的问题,geoip,cn,direct 这条规则就多余甚至碍事

对啊,返璞归真,最简单的反而是最安全的

switchyomega

我要是没理解错的话,我记得 clash DNS 解析那部分的模块是给 TUN 模式用的,不开 TUN 模式本身就没有启用 clash 内核作 DNS 解析,不知道你说的 DNS 泄漏指的是什么情况下的泄漏,如果是开透明代理/系统代理,那 socks5 是会代理 UDP 请求的,UDP 流量肯定是从 clash 发出去的呀,clash premium 内核处理 UDP 数据会发起一次 DNS 请求(具体来源忘了在哪看到的),而且 clash 应该不能把 DNS 请求交给远程服务器解析吧?(没有这个功能),好久没有关注 clash 内核的更新了 lol

记错啦,刚看了一下确实 dns 模块可以删除,dns 请求直接被节点加密发到远程去解析了,理论上说抓包看不到明文国外 dns 请求,应该就算没泄漏?

我认为这个问题首先要讨论的应该是 DNS 泄漏的焦虑是怎么流行起来的,能避免自然是好事,有部分泄漏也不见得有多大问题,信不过运营商可以用公共 DNS ;而且代理中 DNS 的作用本来就是为了更准确的分流,要更好的体验自然需要更精确的 DNS 配置,要是担心 DNS 隐私问题那更简单了,自建前置 DNS 一举两得。

所以你喷了半天,还是不理解为什么要 DNS 分流。请问一个代理支持大带宽但不支持 chatgpt ,一个支持 chatgpt 不支持 Netflix 。你访问这俩怎么做?手工切代理?

同好奇 dns 泄漏的焦虑是怎么流行起来的,除了 ipleak 跑分不好看有实际影响吗

DOMAIN-KEYWORD,.cn,DIRECT 这个写的好像不准确,访问 cnbeta.com.tw 也会匹配到了。

基于域名的规则是不可靠的,因为客户端可能内置了加密 dns ,分流基于 IP 规则才是合理的。

不同人对 DNS 泄漏的定义不太一样,网上不良林那种是很苛刻的防 DNS 泄漏。其实一般来说只需要防止部分黑名单域名(如 Google 等)泄漏给运营商就行了。

#33 github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenClash-%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B 这是 fakeip 的,我当前用的,之前不泄露现在泄露了,按照帖子一步步设置也不知道问题所在,如果大佬发现问题可否告知。谢谢。

最后一个规则没看懂,dns 规则里面匹配 cn ip ? dns 不就是用来解析 ip 的吗,有 ip 了就用不着 dns 了吧

是的 不准确,用 geo ip cn 和 geo site cn 完全够用

dns 泄漏 国内 dns 提供方 可以看到你访问了哪些翻墙网站😀 他的 dns 在解析了这些域名

#33 泄露已解决。不过你可以试试这个,作为小白我觉得相当省心且好用~

dns: cache-algorithm: arc enable: true prefer-h3: true listen: 0.0.0.0:7874 ipv6: false enhanced-mode: redir-host nameserver: - " 223.5.5.5/dns-query" - " 1.12.12.12/dns-query" nameserver-policy: "geosite:!cn": - " 1.0.0.1/dns-query#proxy" - " 8.8.8.8/dns-query#proxy"geodata-mode: truegeox-url: geoip: " testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.dat" geosite: " testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"geo-auto-update: truegeo-update-interval: 24rules: [省略一些配置] - 'GEOSITE,geolocation-!cn,Proxy' - 'DOMAIN-SUFFIX,cn,DIRECT' - 'DOMAIN-KEYWORD,-cn,DIRECT' - 'GEOSITE,cn,DIRECT' - 'GEOIP,CN,DIRECT' - 'MATCH,Final'不用那么麻烦。类似这样设置,就不漏了。小众网站也会根据 IP 分流,国内 IP 走直连,国外 IP 走代理。

有大神可以出个 passwall2 的具体设置么?

你这白名单不是地雷?

怎么算 DNS 泄漏啊,运营商知道了你的 DNS 请求吗

拿这个网站测试下呢 browserleaks.com/dns

不用 clash 解千愁

这个可行,但 rule 部分每次都要手动配置?

我从 PW2 转 Clash 都不到半个月,仔细阅读了不少官方文档,不过没怎么仔细研究覆写设置能否完全覆盖订阅的 rules我是手动把鸡场配置文件的节点信息提出来,参考别人的配置手搓整个配置文件。还另外把某个地区的节点弄成一组,用 type: load-balance 这个负载均衡的分组就可以当成一个节点来使用,已测试可以网速可以叠加