折腾修改公共 DNS 的意义,以及 DNS 同时并发 query 在 surge 上的实现疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
neiltroyer849
V2EX    宽带症候群

折腾修改公共 DNS 的意义,以及 DNS 同时并发 query 在 surge 上的实现疑问

  •  
  •   neiltroyer849 2021-07-17 18:03:59 +08:00 2361 次点击
    这是一个创建于 1546 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在折腾修改公共 DNS ( DNSPod 119.29.29.29/AliDNS 223.5.5.5 之类的)到底还有没有意义?老帖( https://www.v2excom/t/714955 )报告 raw 仓库地址 raw.githubusercontent.com 在三大运营商 DNS 已经被投毒,但国内公共 DNS 问题还不大,所以这样看来改为公共 DNS 还可以避免一些运营商的小操作。但我今天自己测试发现 DNSPod 解析改地址也是返回无效 ip 了,只有 AliDNS 还正常:

    ; <<>> DiG 9.10.6 <<>> @223.5.5.5 raw.githubusercontent.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1932
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;raw.githubusercontent.com. IN A

    ;; ANSWER SECTION:
    raw.githubusercontent.com. 707 IN A 185.199.109.133
    raw.githubusercontent.com. 707 IN A 185.199.110.133
    raw.githubusercontent.com. 707 IN A 185.199.108.133
    raw.githubusercontent.com. 707 IN A 185.199.111.133

    ;; Query time: 52 msec
    ;; SERVER: 223.5.5.5#53(223.5.5.5)
    ;; WHEN: Sat Jul 17 17:41:08 CST 2021
    ;; MSG SIZE rcvd: 107
    ----------------------------------------------------------------------------------------------------------------------
    ; <<>> DiG 9.10.6 <<>> @119.29.29.29 raw.githubusercontent.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16038
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;raw.githubusercontent.com. IN A

    ;; ANSWER SECTION:
    raw.githubusercontent.com. 3600 IN A 0.0.0.0

    ;; Query time: 55 msec
    ;; SERVER: 119.29.29.29#53(119.29.29.29)
    ;; WHEN: Sat Jul 17 17:39:26 CST 2021
    ;; MSG SIZE rcvd: 70

    Surge 的一个好处是自己写的 DNS client 可以绕开运营商的 53 端口抢答实现走公共 DNS 。不过目前的网络环境下,我明白更多时候只能是走白名单代理开完,只是在 surge 配置文件改参数时还在犹豫怎么操作 DNS 。Surge 据称是实现类似于 dnsmasq 的同时并发询问各 DNS 服务器以最快 respond 的为结果。不过如上所示,我自己做了实验后有个小小的疑问:抓包显示 surge 响应 baidu 用的是 DNSPod,但用 dig baidu.com 却可以发现明显本地运营商响应得要比 DNSPod 快得多( 9ms 对 57ms ):

    ; <<>> DiG 9.10.6 <<>> baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3161
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;baidu.com. IN A

    ;; ANSWER SECTION:
    baidu.com. 308 IN A 39.156.69.79
    baidu.com. 308 IN A 220.181.38.148

    ;; Query time: 9 msec
    ;; SERVER: 192.168.1.1#53(192.168.1.1)
    ;; WHEN: Sat Jul 17 17:47:48 CST 2021
    ;; MSG SIZE rcvd: 59

    ------------------------------------------------------------

    ; <<>> DiG 9.10.6 <<>> @119.29.29.29 baidu.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8538
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;baidu.com. IN A

    ;; ANSWER SECTION:
    baidu.com. 64 IN A 220.181.38.148
    baidu.com. 64 IN A 39.156.69.79

    ;; Query time: 57 msec
    ;; SERVER: 119.29.29.29#53(119.29.29.29)
    ;; WHEN: Sat Jul 17 17:47:24 CST 2021
    ;; MSG SIZE rcvd: 70


    所以实际上是更慢的 DNS query 被采用了?还是说这是个协议误差问题( UDP/TCP ) or 其他因素使 dig 的时间不能反映真实 DNS query 结果。

    综上所述,所以现在到底改公共 DNS 有多大意义呢?这么实验和分析下来可能改了公共 DNS 可能还是负优化……(比如解析 baidu 的时候本地运营商 DNS 会把本运营商机房的 ip 放在前而 DNSPod 的优先顺序并不然……)
    7 条回复    2021-07-19 04:54:07 +08:00
    xmlf
        1
    xmlf  
       2021-07-17 18:11:15 +08:00 via Android
    安卓端设置私密 dns 后,ss 无法联网
    BlackGlory
        2
    BlackGlory  
       2021-07-17 21:44:39 +08:00
    这是 DNS 轮询, 顺序对客户端来说是随机的.
    neiltroyer849
        3
    neiltroyer849  
    OP
       2021-07-17 22:48:15 +08:00
    @BlackGlory 不是轮询,也不是随机,翻译的 Surge Manual 是这么描述 DNS 功能的:
    “Surge 通过并发查询提高性能,会使用返回结果最快的服务器,这类似于 dnsmasq 命令的 --all-servers 选项。Surge iOS 版和 macOS 版的 Dashboard 会显示返回结果最快的那个服务器地址。如果 Surge 在 2 秒内没有收到任何响应,它将再次查询所有预设的 DNS 服务器。重试 4 次后如果还没有结果,Surge 将放弃查询并报告 DNS 错误。 某些域名可能具有性能较差的权限域名服务器,导致上游 DNS 服务器由于服务器端超时或其他连接问题返回空结果。如果所有上游 DNS 服务器确实都返回空的 DNS 查询结果,或者某些服务器返回空的结果,但其他服务器在 2 秒内没有响应,那 Surge 也将返回 DNS 查询结果为空的错误。 当 IPv6 可用并启用时,Surge DNS 客户端将向上游 DNS 服务器同时发送 A 和 AAAA 查询。将使用返回的第一个 A 或 AAAA 查询结果。”
    BlackGlory
        4
    BlackGlory  
       2021-07-17 23:50:36 +08:00
    @neiltroyer849 啊, 我以为你问的是响应结果那部分, 不好意思. 第一个响应的速度更快可能是因为 Optimistic DNS 机制, 先返回了旧的响应. 不过说到底国内的公共 DNS 都是被污染的, 并发查询多个被污染的服务器确实没有意义, 实际价值也不如 Optimistic DNS 吧.
    xenme
        5
    xenme  
       2021-07-18 07:11:38 +08:00 via iPhone
    1. 建议开 doh,避免污染,公共 wifi 避免监控和探测
    2. 并发 dns 没有特别大的意义
    neiltroyer849
        6
    neiltroyer849  
    OP
       2021-07-19 04:52:26 +08:00 via iPhone
    @xenme doh 的话我知道性能影响不会很明显但总是有心理就会不爽;真遇到需要保护隐私的时候就虚拟机前置代理tor 了
    neiltroyer849
        7
    neiltroyer849  
    OP
       2021-07-19 04:54:07 +08:00 via iPhone
    @BlackGlory 查了一下确实很有可能是 optimistic dns 的原因。而且某个版本更新后之后用了 Network Extension 会自动开启 Optimistic DNS 所以…. 这样想想并发 dns 还是被污染过的确实意义不是很大就是了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3099 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:00 PVG 19:00 LAX 04:00 JFK 07:00
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86