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

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

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

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

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

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

    Stash 作者的说法,谁懂这个说法代表什么意思?
    devswork
        8
    devswork  
       161 天前
    @RiverMud 因为存在 udp dns 劫持,实际上 dns 响应并不是 8888 1111 给你返回的真正的解析结果
    JiaNa
        9
    JiaNa  
    OP
       161 天前
    @devswork @showgood163 @diskerjtr
    国内自建 DNS server 要不要备案?最近几个帖子都因为备案被警察打电话。
    rrfeng
        10
    rrfeng  
       161 天前 via Android
    @RiverMud
    因为出梯子之后远端还是会查询真正要连的地址。所以要爬梯的域名,在本地解析没有任何意义。
    JiaNa
        11
    JiaNa  
    OP
       161 天前
    多人提到自建 DNS ,有没有人(比如机场主)提供无污染 DNS 服务的?缺点是 DNS 服务商能看到你的 DNS 查询记录,而不是运营商了,但这对于使用机场翻墙的人差别不大。
    Merrkry
        12
    Merrkry  
       161 天前 via Android
    clash 用 nameserver-policy 分流国内域名到国内 dns ,设置 nameserver 为境外 dns 并且走代理访问
    devswork
        13
    devswork  
       161 天前
    yaott2020
        14
    yaott2020  
       161 天前 via Android
    @JiaNa dot/doh 躲在 tls 后面检测不出来的
    billlee
        15
    billlee  
       161 天前
    没用过 clash, 但我用过的其他客户端都可以按分流规则分流 DNS
    JiaNa
        16
    JiaNa  
    OP
       161 天前
    @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
       161 天前
    @devswork 这个还是要自己先分流,而不是 DNS 服务器做分流。
    “DNS 客户端只需做简单分流,将无污染的常见域名使用运营商或大厂的公共 DNS 解析,其余域名调用这个 API/DoH 处理分流”
    Merrkry
        18
    Merrkry  
       161 天前
    @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  
       161 天前
    @JiaNa

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

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

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

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

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

    只有 clash meta 和 sing-box 可以 dns 按规则集分流,可能 ray 也支持吧。
    Free3
        31
    Free3  
       160 天前
    @devswork 试用了一下,感觉还是有点慢。比起直接用阿里的 dns 。
    RiverMud
        32
    RiverMud  
       160 天前 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  
       160 天前
    @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  
       160 天前 via iPhone
    @xpn282 你说的第 1 点我刚发现了,奇怪的是黑名单模式下,DNS 日志里只能看到直连本地 DNS 的解析记录,白名单模式下所有记录都能看到,我这边看还都挺正常,该本地的本地,该走配置文件的走配置文件。

    反正现在对我来说是行了,就是小火箭没有文档,查不到没个命令具体的含义有点着急。
    datocp
        35
    datocp  
       160 天前 via Android
    目前找到的 socks5 最好的是 andproxy ,一个根据 app 进行分流的软件。安卓平台,浏览器翻墙,微信不翻。N 年前就搞不定中外路由表。。。
    xwybss
        36
    xwybss  
       160 天前 via Android
    adguardhome for magisk ,里面导入一下分流规则就 ok
    coffeesun
        37
    coffeesun  
       160 天前 via Android
    我说下安卓的,用的 shelter ,国产软件全装进 workprofile 去,外面的 user profile 装国外软件,clash 全局代理,这样国内外分开。
    dode
        38
    dode  
       160 天前
    搞个 vpn 连回家
    yyysuo
        39
    yyysuo  
       160 天前
    家里开 wireguard ,全局回家,也不光是 dns 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2494 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:10 · PVG 00:10 · LAX 09:10 · JFK 12:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.