smartdns icon indicating copy to clipboard operation
smartdns copied to clipboard

cloudflare dns 解析结果处理不佳

Open yoshyv opened this issue 2 years ago • 3 comments

问题现象
用 cloudflare dns 解析cdn域名时候,第一次解析结果和第二次以后的结果不同。高概率第二次以后的解析结果才是最佳结果,低概率存在第一次解析结果才是最优解的情况。 但是smartdns测速似乎仅基于第一次返回的结果来对比,大概率返回不够优化的解析结果。

运行环境 ubuntu 22.04 LTS 3. smartdns来源以及版本 release 43 4. 涉及的配置(注意去除个人相关信息) 默认配置,没有配置 speed-check-mode 和 response-mode

重现步骤 dig google.com @1.1.1.1 执行两次,第一次返回结果和之后的返回的A,AAAA结果不相同。

ping第一次与之后的解析结果。发现大概率情况下第一次结果不佳,第二次之后的结果低延迟无丢包。小概率相反情况。

smartdns仅配置1.11.1上游,然后再用本地dns执行dig,发现返回的结果是第一次的解析结果。多次解析后均为该结果。

以上步骤在buyvm卢森堡服务器上可以重现(经常首次解析到了东欧或者伦敦的cdn边缘服务器上,之后解析到法兰克福) 是否在与多个有cdn边缘节点国家相邻,但是国内没有边缘节点的地方会发生这种情况?

对于cloudflare dns(也许还有其他不支持ecs的dns)能否考虑比较测速结果时候,解析两次(可能的话甚至多次,因为第三次和之后结果也可能不同)并且把多次返回结果进行比较?这样在用smartdns 本地dns解析,第二次之后也能返回更优的结果?

yoshyv avatar Aug 31 '23 12:08 yoshyv

  1. 开启缓存
  2. response-mode 改成 fastest-ip

PikuZheng avatar Aug 31 '23 13:08 PikuZheng

缓存一直是开的。 现在默认是first ping。不是第一次解析先用最快返回结果,之后再按测速结果排序吗?上游最快查询时延+ping时延最短,在上游只有一个时候,难道不就是只对比ping么?另外响应模式不是只影响smartdns第一次返回的结果吗?

现在问题是测速选用的是cloudflare dns第一次返回的结果测速的。

另外smartdns的测速模式和响应模式,还有默认模式貌似会根据版本发生变化。这个文档里面也不是写的很清楚。issue搜到相关的也是过去的回答,也不确定新版是否一致。

https://github.com/pymumu/smartdns/issues/1028#issuecomment-1224191833 这里的回答是说默认测速响应模式搭配 none+first ping = fastest response。但是新版下默认会返回多个(2个)A记录,fastest好像只返回一个。 顺便问下有什么办法让smartdns缓存所有域名的ttl过期重新查询呢?目前还得等ttl到0后才能看到改动配置的影响。

另外 @pymumu 能改配置的名称吗?像 speed check 根本就没这说法,这个应该是 speed test。还有 cache checkpoint 也不知道是什么东西。

yoshyv avatar Aug 31 '23 14:08 yoshyv

顺便问下有什么办法让smartdns缓存所有域名的ttl过期重新查询呢?目前还得等ttl到0后才能看到改动配置的影响。

清空缓存?停止smartdns,删持久缓存文件,再开启smartdns

现在默认是first ping。不是第一次解析先用最快返回结果,之后再按测速结果排序吗?上游最快查询时延+ping时延最短,在上游只有一个时候,难道不就是只对比ping么?另外响应模式不是只影响smartdns第一次返回的结果吗?

没理解。如果是单一上游,第一次的结果和之后的结果应该是一致的,不会有第一次(未缓存)是一个,第二次(有缓存后)是另一个

另外smartdns的测速模式和响应模式,还有默认模式貌似会根据版本发生变化。这个文档里面也不是写的很清楚。issue搜到相关的也是过去的回答,也不确定新版是否一致。

就我所知最近一年没有改变过。文档总是对应最新版本。

PikuZheng avatar Aug 31 '23 23:08 PikuZheng