PikuZheng
PikuZheng
显然您用nslookup 并不是smartdns在应答了
~~从lede的应答来看,您lede的ipv4 53端口对应的dns服务没有正确的上游;此时windows用nslookup查询最有可能的情况是ipv6 dns。我怀疑在smartdns和ipv6 dns中间存在过滤器,导致了上述结果~~ bug可以重现,6月25日的版本是正常的 @pymumu
>现在是无论如何请求都会返回1.1.1.1和1.1.1.2, 后面两个DNS的结果并不会插入到后续的请求中 能确定后续请求的结果 是从cache来的还是从预先获取(prefetch-domain)来的?
我的理解中 第一次查询结果写入缓存 此后查询从缓存读取 这个结果应该不变。如果涉及到多线路需要获取尽可能多的不同结果,可以考虑把缓存时间调短
>按照我的理解 prefetch-domain 应该是在smartdns启动时将历史域名重新请求一遍并放入 cache 中 正确 但cache过期前不会重新向上游发起查询啊
所有结果合并 似乎不太符合逻辑 我能想到的场景就是网关是不同运营商的多线路 这样重新查询测速获取新的结果 比cache保持更有意义
>一但开启测速,我对于国外的服务器的连接会再某个阈值超过后被全部掐断一段时间 并发连接限制 之前有issue提到过这个现象 但即使是合并结果 客户端还是会选用获取到的第一个。。。结果合并后只要顺序不变 那么和单一结果没有区别的
cf的dns有自己的想法。。。我自己是不用的 按您的环境,最快应答和最快访问,得有所取舍。。
对于需要从代理出去的域名不进行测速,我很赞同。这部分我建议附加edns信息,使上游返回结果尽可能靠近代理所在位置。 合并不同上游返回的不同结果,能缓解个别结果无法访问的情形。但这部分不应该是代理出去了吗,为什么会无法访问?
#967 也提到,对于个别网站 应答快的上游返回soa 应答慢的上游返回结果 这样的场景下合并查询结果是有意义的 @pymumu 这块可能考虑加个开关,在不测速的情况下将所有结果写入cache