想要在手机上实现 DNS 分流,查到的资料都是在路由器上安装各种 DNS 分流软件,但手机一定会在路由器之外使用。Clash 等翻墙客户端会同时查询所有 DNS ,让国内运营商知道你经常访问翻墙的域名,这让我感觉不舒服。在反诈逐渐加强的情况下,未来可能因为这个让反诈找上门。我知道要完全隐藏访问记录,应该用虚拟机和 Tor ,但能少暴露信息还是更好的,并且上述功能还可以加快访问速度。

家里用 adguardhome 作为去广告和自定义 block ,它的上级为 mosdns 。mosdns 使用大陆白名单域名,doh 走向 223.5.5.5 和腾讯 1.12.12.12 ,开启乐观缓存。白名单外统一使用 doh 请求 8888 和 1111 ,并且通过代理来请求以保证稳定性和速度。家里有公网 ip ,adguardhome 开启 doh ,在自己域名下申请免费证书,配置到 adguardhome 。nginx 开启反代,自己想个不是 dns-query 的路径来反代到 adguardhome 上,并且只允许你运营商的 IP 网段 ICDR ,其他直接 deny 。nginx 如果访问不是你自定义的路径,直接 302 到 mi.com 上,伪装成路由器,这样可以防止墙发起主动探测。

这样做的好处就是无论是你在家里,还是在外头,都是同一个控制源,不需要两头折腾。维护家里的 adguardhome 就够了。所有设备,所有 dns 请求一览无余,想 block 哪个域名就全设备立刻生效。

对了,ios 上 quanx 可以配置在家里 wifi 下用一个 dns ,除此之外蜂窝流量和其他 wifi 下走 doh ,无感切换。

Clash 可以实现 DNS 分流啊

自建无污染 DNS server ,注册个域名指向 DNS server最后用安卓自带安全 dns 设置连上就行

天翼云 vps 建一个去污染 dns ,也不会封 53 端口直接用公网 DNS

“ Stash 会使用 Fake IP 来避免需要代理的请求进行本地 DNS 查询。对于中国用户建议使用国内 DNS ,配置 8.8.8.8 / 1.1.1.1 等国外 DNS 服务没任何意义。”Stash 作者的说法,谁懂这个说法代表什么意思?

因为存在 udp dns 劫持,实际上 dns 响应并不是 8888 1111 给你返回的真正的解析结果

国内自建 DNS server 要不要备案?最近几个帖子都因为备案被警察打电话。

因为出梯子之后远端还是会查询真正要连的地址。所以要爬梯的域名,在本地解析没有任何意义。

多人提到自建 DNS ,有没有人(比如机场主)提供无污染 DNS 服务的?缺点是 DNS 服务商能看到你的 DNS 查询记录,而不是运营商了,但这对于使用机场翻墙的人差别不大。

clash 用 nameserver-policy 分流国内域名到国内 dns ,设置 nameserver 为境外 dns 并且走代理访问

#11 看这个 apad.pro/dns-doh/

dot/doh 躲在 tls 后面检测不出来的

没用过 clash, 但我用过的其他客户端都可以按分流规则分流 DNS

只有 Clash Meta 才有 nameserver-policy ?查到的:默认用国外 DNS ,指定国内或特殊服务用国内 DNSdefault-nameserver: - 223.5.5.5/dns-query - 1.12.12.12/dns-query nameserver: - tls://dns.google - cloudflare-dns.com/dns-query proxy-server-nameserver: - dns.alidns.com/dns-query - doh.pub/dns-query nameserver-policy: 'geosite:microsoft@cn,apple-cn,google-cn,category-games@cn': [ dns.alidns.com/dns-query, doh.pub/dns-query] 'geosite:cn,private': [ dns.alidns.com/dns-query, doh.pub/dns-query] github.com/DustinWin/clash-tutorials/blob/main/%E6%95%99%E7%A8%8B%E5%90%88%E9%9B%86/%E8%BF%9B%E9%98%B6%E7%AF%87/ShellClash%20%E4%BD%BF%E7%94%A8%20Clash.Meta%20%E5%86%85%E6%A0%B8%E8%BF%9B%E8%A1%8C%20DNS%20%E5%88%86%E6%B5%81%E6%95%99%E7%A8%8B%20geox%20%E6%96%B9%E6%A1%88.md#2-dns-%E6%A8%A1%E5%BC%8F%E4%B8%BA-redir-host

这个还是要自己先分流,而不是 DNS 服务器做分流。“DNS 客户端只需做简单分流,将无污染的常见域名使用运营商或大厂的公共 DNS 解析,其余域名调用这个 API/DoH 处理分流”

我是这么写的,匹配到 nameserver-policy 就走阿里 dns ,否则就通过代理(#<策略组>)走谷歌 / cf 的 dns 。fcm 和 微软之类的走直连个人觉得没什么必要,时不时抽风,一并代理了省事。dns: enable: true prefer-h3: true listen: "0.0.0.0:1053" ipv6: true enhanced-mode: fake-ip fake-ip-range: 28.0.0.1/8 fake-ip-filter: - "*" - "+.lan" - "+.local" nameserver-policy: "geosite:cn, private": - " 223.5.5.5/dns-query" - " 223.6.6.6/dns-query" nameserver: - " 1.0.0.1/dns-query#DNS" - " 8.8.4.4/dns-query#DNS" proxy-server-nameserver: - " 223.6.6.6/dns-query"

不。搭纯净 dns 就是为了能正常解析任何域名。

路由端:如果平时是使用 OpenClash 的话,想 dns 分流,其实不需要自借助其他 dns 工具的。OpenClash 用 Meta 内核,nameserver-policy 组用 geosite 类别进行国内域名分流,设置国内 dns 。nameserver 组用国外 dns ,这样就实现了 dns 分流。同时还可以用把国外 dns 用策略组进行代理解析(具体见 Meta 文档),这样代理 dns 解析后,那些所谓的 dns 泄漏测试都可以全过。移动端:可以用小火箭进行国内外 dns 分流的,配置文件用纯文本编辑里,设置:dns-direct-system = true ,这样国内域名会用系统 dns 解析。然后配置文件的 dns 填国外的 dns 。这样就实现国内用系统 dns 解析,国外会使用国外的 dns 解析。

配置差不多是这样,clash meta 可以实现无污染。

老哥能详细说说小火箭怎么实现的吗?没找到小火箭的文档。

小火箭的配置文件,按住配置文件不放,弹出菜单,选择“纯文本编辑”,找到 dns-direct-system ,如果没有这项,那就直接添加即可,dns-direct-system = true

21#对啊,clash Meta 就可以实现 dns 国内外分流、代理 dns 解析无污染。Meta=翻墙+dns 服务器。不需要再搞其他的 dns 工具了

安卓本身 = 魔改的 Linux因此可以使用 Magisk 挂载 Adguard Home github.com/410154425/AdGuardHome_magisk

老哥,这部分我明白,我知道怎么改的。我的理解是,选了 true 不就是所有的请求就全部到 system 了,完全不去找配置文件了吗。没找到小火箭文档,所以你说的选了 true 国内请求到 system ,国外情况到配置文件 dns 这部分是怎么实现的没太理解。

就是说小火箭的 dns 你填国外 dns ,然后修改 dns-direct-system = true结果是:国内直连域名走 system ,比如蜂窝环境下,system 就是运营商的 dns 。国外会走你配置的国外 dns ,你可以打开 dns 记录日志看一下至于为什么这样能实现,那是开发者问题,我也不懂。。。反正就是这样实现的。。。。。。。

收到,我去研究下,感谢!

这个直连域名,小火箭到底是根据什么判断的,我也不了解,或许是根据你分流规则( direct )来判断?或许是小火箭其实也内置了一个大陆白名单这样的文件?你可以打开 dns 日志来观察一下判断是否正确。。。。。。

iOS 主流 surge 、shadowrocket 、loon 、stash 、Qx 的 dns 分流都不大行,不支持规则集,一个一个域名写入 dns 分流不现实。如果用 fakeip ,不如直接敏感域名规则集强制远程解析就是了,只不过未知域名还是需要本地解析一次再通过 geoip 来判断。shadowrocket 时不时有版本会发生加密 dns 经常失败回落到系统 dns (现在可以自定回落使用的 dns ,稍微缓解了这个问题)。几个月前修复了 dns 问题,我就停在这个版本,后面看别人说好像又有遇到这个问题。只有 clash meta 和 sing-box 可以 dns 按规则集分流,可能 ray 也支持吧。

试用了一下,感觉还是有点慢。比起直接用阿里的 dns 。

改成 true 试了半天,你的猜想应该是正确的。黑名单模式下,直连走本地 DNS ,代理不知道走什么,DNS 日志里完全看不到,whoer 看 DNS 是机场服务器 IP 。白名单模式下,直连走的都是本地 DNS ,代理走的都是配置文件设定的 8888 ,DNS 里都能看到,whoer 看 DNS 的地址都是谷歌 ASN 的 IP 。不知道为什么黑名单和白名单为什么会有这种差别,严格来说除了 FINAL 其他代码也没什么本质上的区别。配置文件里写国外的 DoT 、DoH ,不管哪家,都完全没有作用,写阿里云和腾讯云的 DoT 、DoH 有用。这又让我怀疑 DNS 日志里写的 8888 是不是真的 8888 。 最新版本的小火箭,刚试了很久,国外 dot doh 几乎不可用,国内 dot doh 可用,这个就是你说的版本问题吧? 老哥了解 dns-direct-system 这个参数吗?我写成 ture 后试了很久,在 DNS 日志里看,的确所有代理请求都去了配置文件里写的 8888 或者 1111 ,就是不知道这个 8888 或者 1111 是不是真的 8888 或者 1111 。

我 rule 分流规则一般是国内直连,国外全部代理。我以前观察小火箭的 dns 分流的时候,用也发现了一些问题,比如说,1 ,有时候看不到被墙的域名的 dns 解析记录,有时候又能看到。不知道是不是 fake-ip 的原因,小火箭没记录被墙的 dns 解析记录。。。。但是没被墙的国外域名基本都能看到 dns 记录。2 ,有时候很明显的国外域名竟然是 system 来解析(备用 dns 并没有填写“system”),有时候淘宝的域名却被国外 dns 解析。。。dns 这个东西,很懵逼的,无法理解。有时候我就怀疑,其实根本就不用过多的注意 dns 这个东西,dns 直接 system 完事,这些代理 app 都是 fake-ip 模式,fake IP 模式对被墙的域名不进行本地解析,算是对敏感域名的 dns 解析进行了隐私保护吗?如果算是保护了,那其他没被墙的域名的 dns 解析记录泄漏是否显得那么重要?搞不懂。。。。。

你说的第 1 点我刚发现了,奇怪的是黑名单模式下,DNS 日志里只能看到直连本地 DNS 的解析记录,白名单模式下所有记录都能看到,我这边看还都挺正常,该本地的本地,该走配置文件的走配置文件。反正现在对我来说是行了,就是小火箭没有文档,查不到没个命令具体的含义有点着急。

目前找到的 socks5 最好的是 andproxy ,一个根据 app 进行分流的软件。安卓平台,浏览器翻墙,微信不翻。N 年前就搞不定中外路由表。。。

adguardhome for magisk ,里面导入一下分流规则就 ok

我说下安卓的,用的 shelter ,国产软件全装进 workprofile 去,外面的 user profile 装国外软件,clash 全局代理,这样国内外分开。

搞个 vpn 连回家

家里开 wireguard ,全局回家,也不光是 dns 了。