V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JiaNa
V2EX  ›  DNS

移动端有没有 DNS 分流方案?

  •  1
     
  •   JiaNa · 2023-11-08 17:17:06 +08:00 · 6281 次点击
    这是一个创建于 386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想要在手机上实现 DNS 分流,查到的资料都是在路由器上安装各种 DNS 分流软件,但手机一定会在路由器之外使用。

    Clash 等翻墙客户端会同时查询所有 DNS ,让国内运营商知道你经常访问翻墙的域名,这让我感觉不舒服。在反诈逐渐加强的情况下,未来可能因为这个让反诈找上门。

    我知道要完全隐藏访问记录,应该用虚拟机和 Tor ,但能少暴露信息还是更好的,并且上述功能还可以加快访问速度。
    40 条回复    2024-07-05 13:22:10 +08:00
    devswork
        1
    devswork  
       2023-11-08 17:35:14 +08:00   ❤️ 1
    家里用 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 上,伪装成路由器,这样可以防止墙发起主动探测。
    devswork
        2
    devswork  
       2023-11-08 17:36:32 +08:00
    @devswork 这样做的好处就是无论是你在家里,还是在外头,都是同一个控制源,不需要两头折腾。维护家里的 adguardhome 就够了。所有设备,所有 dns 请求一览无余,想 block 哪个域名就全设备立刻生效。
    devswork
        3
    devswork  
       2023-11-08 17:38:59 +08:00
    对了,ios 上 quanx 可以配置在家里 wifi 下用一个 dns ,除此之外蜂窝流量和其他 wifi 下走 doh ,无感切换。
    bjzhou1990
        4
    bjzhou1990  
       2023-11-08 17:41:20 +08:00
    Clash 可以实现 DNS 分流啊
    showgood163
        5
    showgood163  
       2023-11-08 18:36:00 +08:00
    自建无污染 DNS server ,注册个域名指向 DNS server

    最后用安卓自带安全 dns 设置连上就行
    diskerjtr
        6
    diskerjtr  
       2023-11-08 18:38:57 +08:00
    天翼云 vps 建一个去污染 dns ,也不会封 53 端口直接用公网 DNS
    RiverMud
        7
    RiverMud  
       2023-11-08 19:02:26 +08:00 via iPhone
    “ Stash 会使用 Fake IP 来避免需要代理的请求进行本地 DNS 查询。对于中国用户建议使用国内 DNS ,配置 8.8.8.8 / 1.1.1.1 等国外 DNS 服务没任何意义。”

    Stash 作者的说法,谁懂这个说法代表什么意思?
    devswork
        8
    devswork  
       2023-11-08 19:41:55 +08:00
    @RiverMud 因为存在 udp dns 劫持,实际上 dns 响应并不是 8888 1111 给你返回的真正的解析结果
    JiaNa
        9
    JiaNa  
    OP
       2023-11-08 19:57:36 +08:00
    @devswork @showgood163 @diskerjtr
    国内自建 DNS server 要不要备案?最近几个帖子都因为备案被警察打电话。
    rrfeng
        10
    rrfeng  
       2023-11-08 19:59:39 +08:00 via Android
    @RiverMud
    因为出梯子之后远端还是会查询真正要连的地址。所以要爬梯的域名,在本地解析没有任何意义。
    JiaNa
        11
    JiaNa  
    OP
       2023-11-08 20:01:06 +08:00
    多人提到自建 DNS ,有没有人(比如机场主)提供无污染 DNS 服务的?缺点是 DNS 服务商能看到你的 DNS 查询记录,而不是运营商了,但这对于使用机场翻墙的人差别不大。
    Merrkry
        12
    Merrkry  
       2023-11-08 20:02:25 +08:00 via Android
    clash 用 nameserver-policy 分流国内域名到国内 dns ,设置 nameserver 为境外 dns 并且走代理访问
    devswork
        13
    devswork  
       2023-11-08 20:09:59 +08:00
    yaott2020
        14
    yaott2020  
       2023-11-08 20:11:37 +08:00 via Android
    @JiaNa dot/doh 躲在 tls 后面检测不出来的
    billlee
        15
    billlee  
       2023-11-08 20:14:14 +08:00
    没用过 clash, 但我用过的其他客户端都可以按分流规则分流 DNS
    JiaNa
        16
    JiaNa  
    OP
       2023-11-08 20:24:21 +08:00
    @Merrkry 只有 Clash Meta 才有 nameserver-policy ?

    查到的:默认用国外 DNS ,指定国内或特殊服务用国内 DNS
    ```
    default-nameserver:
    - https://223.5.5.5/dns-query
    - https://1.12.12.12/dns-query
    nameserver:
    - tls://dns.google
    - https://cloudflare-dns.com/dns-query
    proxy-server-nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
    nameserver-policy:
    'geosite:microsoft@cn,apple-cn,google-cn,category-games@cn': [https://dns.alidns.com/dns-query, https://doh.pub/dns-query]
    'geosite:cn,private': [https://dns.alidns.com/dns-query, https://doh.pub/dns-query]
    ```
    https://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
    JiaNa
        17
    JiaNa  
    OP
       2023-11-08 20:40:40 +08:00
    @devswork 这个还是要自己先分流,而不是 DNS 服务器做分流。
    “DNS 客户端只需做简单分流,将无污染的常见域名使用运营商或大厂的公共 DNS 解析,其余域名调用这个 API/DoH 处理分流”
    Merrkry
        18
    Merrkry  
       2023-11-08 20:41:37 +08:00
    @JiaNa

    我是这么写的,匹配到 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":
    - "https://223.5.5.5/dns-query"
    - "https://223.6.6.6/dns-query"
    nameserver:
    - "https://1.0.0.1/dns-query#DNS"
    - "https://8.8.4.4/dns-query#DNS"
    proxy-server-nameserver:
    - "https://223.6.6.6/dns-query"
    ```
    showgood163
        19
    showgood163  
       2023-11-08 21:25:49 +08:00
    @JiaNa

    不。搭纯净 dns 就是为了能正常解析任何域名。
    xpn282
        20
    xpn282  
       2023-11-08 22:23:13 +08:00
    路由端:
    如果平时是使用 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 解析。
    malagebidi
        21
    malagebidi  
       2023-11-08 22:27:35 +08:00
    @JiaNa 配置差不多是这样,clash meta 可以实现无污染。
    RiverMud
        22
    RiverMud  
       2023-11-08 22:35:01 +08:00 via iPhone
    @xpn282 老哥能详细说说小火箭怎么实现的吗?

    没找到小火箭的文档。
    xpn282
        23
    xpn282  
       2023-11-08 22:40:14 +08:00
    @RiverMud
    小火箭的配置文件,按住配置文件不放,弹出菜单,选择“纯文本编辑”,找到 dns-direct-system ,如果没有这项,那就直接添加即可,dns-direct-system = true
    xpn282
        24
    xpn282  
       2023-11-08 22:46:20 +08:00
    @malagebidi 21#
    对啊,clash Meta 就可以实现 dns 国内外分流、代理 dns 解析无污染。Meta=翻墙+dns 服务器。不需要再搞其他的 dns 工具了
    win11
        25
    win11  
       2023-11-08 22:48:50 +08:00 via Android
    安卓本身 = 魔改的 Linux
    因此可以使用 Magisk 挂载 Adguard Home
    https://github.com/410154425/AdGuardHome_magisk
    RiverMud
        26
    RiverMud  
       2023-11-08 22:49:40 +08:00 via iPhone
    @xpn282 老哥,这部分我明白,我知道怎么改的。

    我的理解是,选了 true 不就是所有的请求就全部到 system 了,完全不去找配置文件了吗。没找到小火箭文档,所以你说的选了 true 国内请求到 system ,国外情况到配置文件 dns 这部分是怎么实现的没太理解。
    xpn282
        27
    xpn282  
       2023-11-08 22:59:24 +08:00
    @RiverMud
    就是说小火箭的 dns 你填国外 dns ,然后修改 dns-direct-system = true

    结果是:
    国内直连域名走 system ,比如蜂窝环境下,system 就是运营商的 dns 。
    国外会走你配置的国外 dns ,你可以打开 dns 记录日志看一下

    至于为什么这样能实现,那是开发者问题,我也不懂。。。反正就是这样实现的。。。。。。。
    RiverMud
        28
    RiverMud  
       2023-11-08 23:03:34 +08:00 via iPhone
    @xpn282 收到,我去研究下,感谢!
    xpn282
        29
    xpn282  
       2023-11-08 23:09:20 +08:00
    @RiverMud 这个直连域名,小火箭到底是根据什么判断的,我也不了解,或许是根据你分流规则( direct )来判断?或许是小火箭其实也内置了一个大陆白名单这样的文件?
    你可以打开 dns 日志来观察一下判断是否正确。。。。。。
    popzuk
        30
    popzuk  
       2023-11-08 23:37:02 +08:00
    iOS 主流 surge 、shadowrocket 、loon 、stash 、Qx 的 dns 分流都不大行,不支持规则集,一个一个域名写入 dns 分流不现实。如果用 fakeip ,不如直接敏感域名规则集强制远程解析就是了,只不过未知域名还是需要本地解析一次再通过 geoip 来判断。
    shadowrocket 时不时有版本会发生加密 dns 经常失败回落到系统 dns (现在可以自定回落使用的 dns ,稍微缓解了这个问题)。几个月前修复了 dns 问题,我就停在这个版本,后面看别人说好像又有遇到这个问题。

    只有 clash meta 和 sing-box 可以 dns 按规则集分流,可能 ray 也支持吧。
    Free3
        31
    Free3  
       2023-11-09 00:32:34 +08:00
    @devswork 试用了一下,感觉还是有点慢。比起直接用阿里的 dns 。
    RiverMud
        32
    RiverMud  
       2023-11-09 00:55:27 +08:00 via iPhone
    @xpn282 改成 true 试了半天,你的猜想应该是正确的。

    黑名单模式下,直连走本地 DNS ,代理不知道走什么,DNS 日志里完全看不到,whoer 看 DNS 是机场服务器 IP 。

    白名单模式下,直连走的都是本地 DNS ,代理走的都是配置文件设定的 8888 ,DNS 里都能看到,whoer 看 DNS 的地址都是谷歌 ASN 的 IP 。

    不知道为什么黑名单和白名单为什么会有这种差别,严格来说除了 FINAL 其他代码也没什么本质上的区别。

    配置文件里写国外的 DoT 、DoH ,不管哪家,都完全没有作用,写阿里云和腾讯云的 DoT 、DoH 有用。这又让我怀疑 DNS 日志里写的 8888 是不是真的 8888 。


    @popzuk 最新版本的小火箭,刚试了很久,国外 dot doh 几乎不可用,国内 dot doh 可用,这个就是你说的版本问题吧?

    @popzuk 老哥了解 dns-direct-system 这个参数吗?我写成 ture 后试了很久,在 DNS 日志里看,的确所有代理请求都去了配置文件里写的 8888 或者 1111 ,就是不知道这个 8888 或者 1111 是不是真的 8888 或者 1111 。
    xpn282
        33
    xpn282  
       2023-11-09 01:38:16 +08:00
    @RiverMud
    我 rule 分流规则一般是国内直连,国外全部代理。
    我以前观察小火箭的 dns 分流的时候,用也发现了一些问题,比如说,
    1 ,有时候看不到被墙的域名的 dns 解析记录,有时候又能看到。不知道是不是 fake-ip 的原因,小火箭没记录被墙的 dns 解析记录。。。。但是没被墙的国外域名基本都能看到 dns 记录。
    2 ,有时候很明显的国外域名竟然是 system 来解析(备用 dns 并没有填写“system”),有时候淘宝的域名却被国外 dns 解析。。。

    dns 这个东西,很懵逼的,无法理解。有时候我就怀疑,其实根本就不用过多的注意 dns 这个东西,dns 直接 system 完事,这些代理 app 都是 fake-ip 模式,fake IP 模式对被墙的域名不进行本地解析,算是对敏感域名的 dns 解析进行了隐私保护吗?如果算是保护了,那其他没被墙的域名的 dns 解析记录泄漏是否显得那么重要?搞不懂。。。。。
    RiverMud
        34
    RiverMud  
       2023-11-09 01:43:33 +08:00 via iPhone
    @xpn282 你说的第 1 点我刚发现了,奇怪的是黑名单模式下,DNS 日志里只能看到直连本地 DNS 的解析记录,白名单模式下所有记录都能看到,我这边看还都挺正常,该本地的本地,该走配置文件的走配置文件。

    反正现在对我来说是行了,就是小火箭没有文档,查不到没个命令具体的含义有点着急。
    datocp
        35
    datocp  
       2023-11-09 07:00:38 +08:00 via Android
    目前找到的 socks5 最好的是 andproxy ,一个根据 app 进行分流的软件。安卓平台,浏览器翻墙,微信不翻。N 年前就搞不定中外路由表。。。
    xwybss
        36
    xwybss  
       2023-11-09 09:01:59 +08:00 via Android
    adguardhome for magisk ,里面导入一下分流规则就 ok
    coffeesun
        37
    coffeesun  
       2023-11-09 09:54:21 +08:00 via Android
    我说下安卓的,用的 shelter ,国产软件全装进 workprofile 去,外面的 user profile 装国外软件,clash 全局代理,这样国内外分开。
    dode
        38
    dode  
       2023-11-09 12:20:06 +08:00
    搞个 vpn 连回家
    yyysuo
        39
    yyysuo  
       2023-11-09 14:18:36 +08:00
    家里开 wireguard ,全局回家,也不光是 dns 了。
    luistrong
        40
    luistrong  
       146 天前
    @xpn282 #33
    @RiverMud #34
    请教两位老哥, 我对 dns 一直没理解, 问下我在小火箭里面把 DNS 覆写改成阿里的 223.5.5.5 (还有人改成 tls://223.5.5.5, 不知有何区别), 然后去 DNS 日志里看到的比如下面 3 个:
    1. extshort.weixin.qq.com
    A-117.89.176.31-16ms
    192.168.118.161:53
    前面旗是中国

    2. blacklist.tampermonkey.net
    A-81.169.152.96-23ms
    192.168.118.161:53
    前面旗是德国

    3. filters.adtidy.org
    A-143.244.51.249-21ms
    192.168.118.161:53
    前面旗是美国

    可以看到 192.168.118.161:53 是不变的, 这个 DNS 是我本机的 DNS 吗? 其中中间的 DNS 是变化的, 这是解析后的 DNS 吗? 还有阿里的 223.5.5.5 没在 DNS 日志里任何地方找到, 那覆写成功了吗? 还有每条 DNS 前面的"A"是什么意思呢? 谢谢! 小白对 DNS 的疑问有点多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3446 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 04:52 · PVG 12:52 · LAX 20:52 · JFK 23:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.