国内 dns 解析国外域名竟然这么慢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
geniusy
V2EX    DNS

国内 dns 解析国外域名竟然这么慢

  •  
  •   geniusy 2024-09-01 17:31:49 +08:00 7673 次点击
    这是一个创建于 473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来用的 AdGuardHome 白名单模式分流国内外域名,腾讯系域名用的 dnspod ,国内其他域名用的 alidns ,其他域名用的 quad9 、cloudflare 、opendns 等国外 dns ,今天突然改成黑名单模式,少数域名用国外 dns ,剩下的腾讯系继续用 dnspod ,其他的都用 alidns 。结果发现打开很多国外网站特别慢,一看查询日志,原来 alidns 解析很多国外域名都是 1000ms+,这不慢才怪了,看来还是白名单模式更适合,虽然会存在部分错杀(部分国内域名由于用了默认的国外 dns 解析到了非最优的国内 ip 上)。

    第 1 条附言    2024-09-01 20:33:50 +08:00
    暂时解决办法:少数已知被和谐域名走国外 dns ,腾讯系域名走 dnspod ,已知国内域名走 alidns ,剩余域名走默认:阿里 dns 、dnspod 和国外 dns ,设置的并行请求,这样国内 dns 解析特别慢的域名会走国外 dns 解析。
    第 2 条附言    2024-09-04 14:22:35 +08:00
    mosdns 的确 yyds ,基本上能完全实现我的需求,由于本来就有分流域名和 IP 的名单,基本上做到了无缝转换
    49 条回复    2024-09-04 14:24:11 +08:00
    xiaomoxian
        1
    xiaomoxian  
       2024-09-01 19:29:06 +08:00 via Android
    先过一遍饭炸系统
    JensenQian
        2
    JensenQian  
       2024-09-01 21:47:39 +08:00
    哥们别折腾了
    国内直接走运营商的拉到了,国外走 8888 和 1111 ,完事
    Atomo
        3
    Atomo  
       2024-09-01 22:34:49 +08:00   1
    听劝,国内统一走运营商,国外统一走 1111
    geniusy
        4
    geniusy  
    OP
       2024-09-01 22:36:03 +08:00 via Android
    @JensenQian 关键问题是你如何能确定完整的国内域名名单?如果能有全名单,那我除国内域名外的其他域名走国外 dns 就简单了。而且运营商 dns 有个挺致命的问题,HTTPS 解析,也就是 type 65 要么没结果,要么就是错的,这算是我国内用 alidns 最大的原因吧,当然成都电信 alidns 的速度本来也就跟电信 dns 差不多,5ms 左右吧
    R4rvZ6agNVWr56V0
        5
    R4rvZ6agNVWr56V0  
       2024-09-01 22:45:18 +08:00
    @52acca 如果你不是在经营机场,那么盲猜你访问的国内站点是非常有限的有限集,除非后缀为 GOV.CN / .CN 外大概不会超过 40 个 (日常访问 [国内站点不超过 10+ 个] ,每个站点有 3 个不同的 CDN 域,这么计算) 这个国内的站点列表,有相关的开源项目 htps://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash/China
    geniusy
        6
    geniusy  
    OP
       2024-09-01 23:03:57 +08:00
    @GeekGao 我是将 https://github.com/felixonmars/dnsmasq-china-list 项目中的所有中国域名用 alidns 解析的,但总会有一些漏网之鱼,而打开一个 app 或者网站的速度很多时候是由那个 app 或网站访问的所有域名解析+连接速度决定的,也就是短板效应,由于其中部分域名解析慢或者更可能是解析到了慢的 IP 上,就可能导致访问慢。
    geniusy
        7
    geniusy  
    OP
       2024-09-01 23:16:20 +08:00
    @GeekGao 而且你不用 AdGuardHome 这种软件估计对自己一天的 dns 解析数量没太大概念,我也是用了之后才大吃一惊,我一个人在家的时候一天的解析量就有 5w 左右吧,这还是没开屏蔽的情况下,如果开了屏蔽会窜到将近 10W (有些 app 在得不到相应的情况下会重复请求)。虽然这其中绝大多数是重复的,但其中不重复的也有几百上千个域名吧,很多 app 和网站一打开就会请求两位数域名的。
    jsGnVO6q0zVF7B6c
        8
    jsGnVO6q0zVF7B6c  
       2024-09-02 00:54:47 +08:00
    你为什么不用 adh 加 mosdns 方案,mosdns 国内外分流解析,还能缓存,国内外网页一般都秒开,我觉得很好用
    Terminl
        9
    Terminl  
       2024-09-02 03:10:07 +08:00
    alidns 和 dnspod 开始限速了你居然不知道,现在只支持个人使用,家里设备一多请求速上来不卡才怪嘞。
    R4rvZ6agNVWr56V0
        10
    R4rvZ6agNVWr56V0  
       2024-09-02 03:14:46 +08:00
    @52acca 没什么银弹,除非你在低延迟墙外地区(例如 HK )自己搭建 DoH 服务器,负面作用就是成本高。
    geniusy
        11
    geniusy  
    OP
       2024-09-02 07:25:31 +08:00 via Android
    @Terminl 我当然知道要开始限速了,不过不是还没开始吗,而且我除了用公共的外,还都用了个人账户的,并不是这个原因,应该是国外域名在 alidns 和 dnspod 服务器上没缓存,导致访问缓慢
    lw4free
        12
    lw4free  
       2024-09-02 08:51:08 +08:00
    我一般是 黑名单走国外 dns 其他走国内 dns 查询结果匹配国内 IP 不匹配的继续走国外 dns 国内 IP 是有限的 哪怕用的是 mmdb 数据库 我估计匹配准确率也超过 99.9% 遇上某些特殊的域名就单独处理 如果加上白名单只走国内 dns 就基本不会错了(我的 openswrt 内存不足 没搞白名单)
    yyysuo
        13
    yyysuo  
       2024-09-02 09:07:41 +08:00
    1:Adguard Home 不要开屏蔽,没效果还能整疯一些 app
    2:国内域名国内 dns 解析,国外域名国外 dns 解析,不在列表中的域名,统一带 ecs (所在城市 IP )发到 8888 解析。
    3:阿里的 api ,已经有实现了: https://github.com/mili-tan/ArashiDNS.Aha
    geniusy
        14
    geniusy  
    OP
       2024-09-02 10:10:32 +08:00 via Android
    @yyysuo 这跟我以前差不多吧,不过我是除了少数不需要 ecs 的国外域名用 cloudflare 和其它不支持 ecs 的国外 dns 解析,不在名单内的默认走国外支持 ecs 的 dns 。alidns 每月一千万额度,即使 doh 或者 dot 暂时也够用了,dnspod 每月三百万额度是真不够,只敢用来解析腾讯系域名,这样做 7 月份都还超了,额外付了费。只是这样存在一个问题我,就是不在国内名单中走了默认的国外支持 ecs 的域名被解析成国内 ip 但是非最优 ip 的情况不可避免,而解析成国外 ip 反倒不用担心,这部分会流入科学软件中做了进一步分流,先国内 dns 解析,如果不是国内 ip 会走不支持 ecs 的国外 dns 。
    geniusy
        15
    geniusy  
    OP
       2024-09-02 10:12:08 +08:00 via Android
    @lw4free AdGuardHome 实现不了这个功能啊,不能根据解析结果再做判断。
    nonfxck
        16
    nonfxck  
       2024-09-02 10:23:23 +08:00
    这个题目我知道,我周末刚用 mosdns ,体验效果非常好,比以前 smartdns 简单多了
    nonfxck
        17
    nonfxck  
       2024-09-02 10:29:34 +08:00   1
    adguardhome 使用 53 替换 dnsmasq
    adguardhome 上游 dns 使用 openclash dns 端口
    openclash dns 设置上游仅保留 mosdns
    mosdns 配置腾讯阿里谷歌 CF dns
    yyysuo
        18
    yyysuo  
       2024-09-02 10:30:46 +08:00   1
    @52acca 怎么区分一个域名是不是需要带 ecs 解析呢,另外像你标题中说的,国内的 dns 对小众域名的支持不好,解析也慢,准确度也不好说,我用 8888 带 ecs 解析,目前看来准确度很好,原来解析出中国 ip 还用国内 dns 再解析一次,现在干脆直接采用了。
    geniusy
        19
    geniusy  
    OP
       2024-09-02 10:35:41 +08:00 via Android
    @yyysuo 少数已知被和谐或者我希望走代理的域名走不带 ecs 的国外 dns ,其他都走带 ecs 的。本来昨天替换成默认走国内 dns 是想减少这种国外 dns 因为 ecs 解析到国内非最优 ip 的情况,但偶然发现国内 dns 解析国外小众域名速度太慢的问题,所以又想改回去了。
    geniusy
        20
    geniusy  
    OP
       2024-09-02 10:36:38 +08:00 via Android
    @nonfxck 这个思路貌似不错,我也研究一下 AdGuardHome 的上游使用 xray 的 dns 解析
    nonfxck
        21
    nonfxck  
       2024-09-02 10:42:15 +08:00
    https://doh.apad.pro/dns-query 不在家在外面临时用下还可以用这个 doh ,做了自动分流
    mytsing520
        22
    mytsing520  
    PRO
       2024-09-02 10:51:24 +08:00
    阿里 DNS 的限频针对非热度域名,热度域名如 baidu.com 是不会有限频的,技术上做不到
    geniusy
        23
    geniusy  
    OP
       2024-09-02 11:03:27 +08:00 via Android
    @mytsing520 但我访问这些冷门域名的频率也不高,不可能超过限制啊,而且不只是 dns.dlidns.com ,个人账户带前缀的解析也慢,应该主要还是服务器上没缓存的原因
    geniusy
        24
    geniusy  
    OP
       2024-09-02 11:04:26 +08:00 via Android
    @nonfxck 我有公网 ip ,在外也可以用家里面的 AdGuardHome
    2000wcw
        25
    2000wcw  
       2024-09-02 11:12:10 +08:00
    你觉得 GFW 是吃素的?访问国外域名先来个全身大检查.....
    geniusy
        26
    geniusy  
    OP
       2024-09-02 11:18:00 +08:00 via Android
    @2000wcw 以前是真没想到国内 dns 解析国外域名比直接从国外 dns 解析还慢的,访问多外 dns 多出那几十上百 ms 跟国内 dns 解析慢的上千 ms 比起来真不算啥
    Jinnrry
        27
    Jinnrry  
       2024-09-02 11:19:43 +08:00
    mosdns +1 体验太好了
    Andim
        28
    Andim  
       2024-09-02 12:14:15 +08:00
    用了几年的 dnscrypt-proxy 解析外网,速度还可以,不过 dnscrypt-proxy 默认包含了阿里,奇虎,腾讯,要把这些屏蔽了

    jackOff
        29
    jackOff  
       2024-09-02 12:24:26 +08:00
    adguardhome1:劫持全局 dns ,上游整个分流容器 1
    adguardhome2:局部 dns ,比如给 openclash 调用,上游整个分流器 2
    adguardhome3:国内上游查询,阿里百度。是分流器 1 和 2 的国内 dns 查询
    adguardhome4:国外上游查询,8888,1111 ,是分流器 2 的国外 dns 查询
    分流器 1 的国外 dns 查询接 openclash 的 dns 端口
    jsGnVO6q0zVF7B6c
        30
    jsGnVO6q0zVF7B6c  
       2024-09-02 13:05:46 +08:00 via iPhone
    mosdns 上游国内外分流
    AdGuardhome 上游 moddns
    passwall 上游 AdGuardhome
    yyws2012
        31
    yyws2012  
       2024-09-02 13:27:03 +08:00 via Android
    v2ray/xray 有一个功能是根据返回 ip 判断取这个结果或者往后 fallback 。我现在的策略是,先域名列表 cn 直接用国内,然后都走国外,如果解析出的 ip 是国内的再回落到国内。这样只会有两种情况回落不生效:一是 geoip 不全,这个找 chinamax 库的应该不多见;二是在海外有服务器,这种直接走代理就完事。可以试试用这个做 adguard 的上游。
    Nyarime
        32
    Nyarime  
       2024-09-02 14:30:37 +08:00
    可以用这两个,实测无污染
    162.14.21.178
    162.14.21.56
    lw4free
        33
    lw4free  
       2024-09-02 15:21:34 +08:00
    @52acca 我用的是 routedns 用 mosdns 也行 不能判断的话很难实现 dns 完美分流
    geniusy
        34
    geniusy  
    OP
       2024-09-02 15:40:40 +08:00 via Android
    @yyws2012 你这样还是会有个问题,有些有国内 ip 的域名会被国外 DNS 解析成国外 ip 而不会回落
    geniusy
        35
    geniusy  
    OP
       2024-09-02 15:41:34 +08:00 via Android
    @lw4free AdGuardHome 没有根据解析结果判断后进一步处理的功能,的确很难做到完美分流
    geniusy
        36
    geniusy  
    OP
       2024-09-02 15:43:31 +08:00 via Android
    @Andim dnscrypt-proxy 也用过一段时间,功能其实跟 AdGuardHome 差不多,都只能通过 upstream 文件指定哪些域名走哪些 dns ,但相比于 AdGuardHome 不支持 dot
    geniusy
        37
    geniusy  
    OP
       2024-09-02 15:47:08 +08:00 via Android
    @jackOff 你这比我之前的还复杂,我以前是两台机器上分别运行了两个 AdGuardHome (一个全局,一个作为国内域名的上游),然后是软路由上的 dnsmasq 分别同时查询这两台机器
    jackOff
        38
    jackOff  
       2024-09-02 15:53:22 +08:00
    @52acca 这个方案在于可以一个机器解决 dns 泄露的问题,也不会造成国内网络卡顿。尤其是 adguardhome 的设计很轻量,多部署几个也没有什么负担
    geniusy
        39
    geniusy  
    OP
       2024-09-02 16:11:32 +08:00
    @maxus 没研究过 mosdns ,但既然 mosdns 都已经分流了,还套 AdGuardHome 干啥呢?
    geniusy
        40
    geniusy  
    OP
       2024-09-02 16:15:53 +08:00
    @jackOff AdGuardHome 不算轻量啊,软路由多跑几个没问题,但硬路由的内存就很捉急了。套多了还有个问题,其中某一环出了问题可能全都挂了。所以自从 AdGuardHome 支持在 upstream 文件中在一串域名后列出多个 dns 后我就改成一层了,同时在软路由和一台 debian 虚拟机上都运行了 AdGuardHome 来做负载均衡。
    crysislinux
        41
    crysislinux  
       2024-09-02 16:24:42 +08:00 via Android
    规则还是简单点好。国内域名就走运营商 dns ,剩下的全部 ecs 走 Google dns 。Google 的 ecs 还是比较准的,要是实在不放心就再判断下 ip ,国内 IP 再走一遍运营商的 dns
    geniusy
        42
    geniusy  
    OP
       2024-09-02 17:03:50 +08:00
    @yyws2012 刚才摸索了一下,并没有找到适合将 xray 用作上游 dns 的入站连接方式,Dokodemo-Door 不返回数据,你有这么操作吗?
    jsGnVO6q0zVF7B6c
        43
    jsGnVO6q0zVF7B6c  
       2024-09-02 18:18:16 +08:00
    @52acca agh 屏蔽广告,还能看访问了什么网站,通过 agh ,发现有个 docker 异常自动访问一些网站
    Jack927
        44
    Jack927  
       2024-09-02 23:14:22 +08:00
    > 本来用的 AdGuardHome 白名单模式分流国内外域名,腾讯系域名用的 dnspod ,国内其他域名用的 alidns ,其他域名用的 quad9 、cloudflare 、opendns 等国外 dns ,今天突然改成黑名单模式,少数域名用国外 dns ,剩下的腾讯系继续用 dnspod ,其他的都用 alidns

    ---

    刚用 AdGuardHome 的新手求问,目前只用上了它自带的屏蔽功能。请问下这个怎么配的? 能简单说下,或者贴下文档地址吗?
    geniusy
        45
    geniusy  
    OP
       2024-09-02 23:49:23 +08:00 via Android
    Jack927
        46
    Jack927  
       2024-09-03 08:11:41 +08:00
    #45 @52acca 感谢
    anytk
        47
    anytk  
       2024-09-03 08:45:46 +08:00
    mosdns+++ 用了真的比以前丝滑
    geniusy
        48
    geniusy  
    OP
       2024-09-04 14:23:07 +08:00 via Android
    @anytk 确实是好东西
    geniusy
        49
    geniusy  
    OP
       2024-09-04 14:24:11 +08:00 via Android
    @maxus 用上 mosdns 后还真是秒开了,mosdns yyds !
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1431 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:49 PVG 00:49 LAX 08:49 JFK 11:49
    Do have faith in what you're doing.
    ubao msn 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