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

72 天前
 52acca

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

5238 次点击
所在节点    DNS
49 条回复
xiaomoxian
72 天前
先过一遍饭炸系统
JensenQian
72 天前
哥们别折腾了
国内直接走运营商的拉到了,国外走 8888 和 1111 ,完事
Atomo
72 天前
听劝,国内统一走运营商,国外统一走 1111
52acca
72 天前
@JensenQian 关键问题是你如何能确定完整的国内域名名单?如果能有全名单,那我除国内域名外的其他域名走国外 dns 就简单了。而且运营商 dns 有个挺致命的问题,HTTPS 解析,也就是 type 65 要么没结果,要么就是错的,这算是我国内用 alidns 最大的原因吧,当然成都电信 alidns 的速度本来也就跟电信 dns 差不多,5ms 左右吧
GeekGao
72 天前
@52acca 如果你不是在经营机场,那么盲猜你访问的国内站点是非常有限的有限集,除非后缀为 GOV.CN / .CN 外大概不会超过 40 个 (日常访问 [国内站点不超过 10+ 个] ,每个站点有 3 个不同的 CDN 域,这么计算) 这个国内的站点列表,有相关的开源项目 https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash/China
52acca
72 天前
@GeekGao 我是将 https://github.com/felixonmars/dnsmasq-china-list 项目中的所有中国域名用 alidns 解析的,但总会有一些漏网之鱼,而打开一个 app 或者网站的速度很多时候是由那个 app 或网站访问的所有域名解析+连接速度决定的,也就是短板效应,由于其中部分域名解析慢或者更可能是解析到了慢的 IP 上,就可能导致访问慢。
52acca
72 天前
@GeekGao 而且你不用 AdGuardHome 这种软件估计对自己一天的 dns 解析数量没太大概念,我也是用了之后才大吃一惊,我一个人在家的时候一天的解析量就有 5w 左右吧,这还是没开屏蔽的情况下,如果开了屏蔽会窜到将近 10W (有些 app 在得不到相应的情况下会重复请求)。虽然这其中绝大多数是重复的,但其中不重复的也有几百上千个域名吧,很多 app 和网站一打开就会请求两位数域名的。
maxus
72 天前
你为什么不用 adh 加 mosdns 方案,mosdns 国内外分流解析,还能缓存,国内外网页一般都秒开,我觉得很好用
Terminl
72 天前
alidns 和 dnspod 开始限速了你居然不知道,现在只支持个人使用,家里设备一多请求速上来不卡才怪嘞。
GeekGao
72 天前
@52acca 没什么银弹,除非你在低延迟墙外地区(例如 HK )自己搭建 DoH 服务器,负面作用就是成本高。
52acca
71 天前
@Terminl 我当然知道要开始限速了,不过不是还没开始吗,而且我除了用公共的外,还都用了个人账户的,并不是这个原因,应该是国外域名在 alidns 和 dnspod 服务器上没缓存,导致访问缓慢
lw4free
71 天前
我一般是 黑名单走国外 dns 其他走国内 dns 查询结果匹配国内 IP 不匹配的继续走国外 dns 国内 IP 是有限的 哪怕用的是 mmdb 数据库 我估计匹配准确率也超过 99.9% 遇上某些特殊的域名就单独处理 如果加上白名单只走国内 dns 就基本不会错了(我的 openswrt 内存不足 没搞白名单)
yyysuo
71 天前
1:Adguard Home 不要开屏蔽,没效果还能整疯一些 app
2:国内域名国内 dns 解析,国外域名国外 dns 解析,不在列表中的域名,统一带 ecs (所在城市 IP )发到 8888 解析。
3:阿里的 api ,已经有实现了: https://github.com/mili-tan/ArashiDNS.Aha
52acca
71 天前
@yyysuo 这跟我以前差不多吧,不过我是除了少数不需要 ecs 的国外域名用 cloudflare 和其它不支持 ecs 的国外 dns 解析,不在名单内的默认走国外支持 ecs 的 dns 。alidns 每月一千万额度,即使 doh 或者 dot 暂时也够用了,dnspod 每月三百万额度是真不够,只敢用来解析腾讯系域名,这样做 7 月份都还超了,额外付了费。只是这样存在一个问题我,就是不在国内名单中走了默认的国外支持 ecs 的域名被解析成国内 ip 但是非最优 ip 的情况不可避免,而解析成国外 ip 反倒不用担心,这部分会流入科学软件中做了进一步分流,先国内 dns 解析,如果不是国内 ip 会走不支持 ecs 的国外 dns 。
52acca
71 天前
@lw4free AdGuardHome 实现不了这个功能啊,不能根据解析结果再做判断。
nonfxck
71 天前
这个题目我知道,我周末刚用 mosdns ,体验效果非常好,比以前 smartdns 简单多了
nonfxck
71 天前
adguardhome 使用 53 替换 dnsmasq
adguardhome 上游 dns 使用 openclash dns 端口
openclash dns 设置上游仅保留 mosdns
mosdns 配置腾讯阿里谷歌 CF dns
yyysuo
71 天前
@52acca 怎么区分一个域名是不是需要带 ecs 解析呢,另外像你标题中说的,国内的 dns 对小众域名的支持不好,解析也慢,准确度也不好说,我用 8888 带 ecs 解析,目前看来准确度很好,原来解析出中国 ip 还用国内 dns 再解析一次,现在干脆直接采用了。
52acca
71 天前
@yyysuo 少数已知被和谐或者我希望走代理的域名走不带 ecs 的国外 dns ,其他都走带 ecs 的。本来昨天替换成默认走国内 dns 是想减少这种国外 dns 因为 ecs 解析到国内非最优 ip 的情况,但偶然发现国内 dns 解析国外小众域名速度太慢的问题,所以又想改回去了。
52acca
71 天前
@nonfxck 这个思路貌似不错,我也研究一下 AdGuardHome 的上游使用 xray 的 dns 解析

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX