Xymmh
Xymmh
重启了一下路由器,模拟刚开Smartdns的时候,待IPv4/v6上游均接通后,我nslookup了数次dgss3.bdstatic.com,始终未能解析到IPv6地址(使用114DNS可以解析到),问题成功复现,log如下: [smartdns.log](https://github.com/pymumu/smartdns/files/8928648/smartdns.log)
实在是不太会编译,一直用的是@PikuZheng所编译的,故没法测试修改代码,如果可以的话,能否帮忙编译一个openwrt x64的呢? 可以确定的是,5月17日的版本在同样的配置下,也解析dgss3.bdstatic.com,第一次就会返回V6结果。解析其他域名时,也会有第一次无V6地址的情况,但第二次就会有,和目前6月17日的版本情况不完全相同。 我注意到,那个通过ping来检测是否ipv6 ready的功能,貌似在我这里并没有运行成功,显示没有权限?不知道和这个有没有关系
我设备是绝对有IPv6的,而且可以ping通,开机后能进openwrt的luci界面时,IPv4和IPv6上游都还未连接,要等待30秒左右才能连上

Ping是生效的,问题就是那个检测IPv6连通的功能会让测试非常麻烦,如果不是看log,谁能知道开机的时候Smartdns没有启动测速呢
问题就是,即使恢复测速后,dgss3.bdstatic.com也无法一次解析出IPv6地址。当我首次访问这样的网页时,是不会使用IPv6的
> 这是两个不同的问题了。在关闭双栈ip优选的情况下,smartdns将包含ipv4测速最快的上游结果原样返回。如果这个结果是没有ipv6(上游就没给下来ipv6),那么自然就没ipv6结果。 在开启了双栈ip优选的情况下,刚开机没有ipv6会导致ipv6测速禁用,那么的确符合你遇到的”首次没有ipv6结果,过了一会儿有ipv6结果“。 至于后来ipv6恢复后的几分钟内也没有ipv6结果,是因为有缓存命中。 为什么关闭双栈优选是将包含ipv4测速最快的上游结果原样返回啊?这不符合逻辑啊,不应该是关闭了以后就不在V4和V6之间比较速度吗,然后两个结果都返回,这样设备就可以首先使用V6了
我觉得我使用Smartdns的目标很简单啊,就是尽可能多的返回V6地址,同时在仅有V4地址的域名启用测速。 实际上我添加的上游DNS中,114DNS就是IPV6结果返回最多的,而添加其他DNS服务器的原因,一是为了访问那些有IP限制的内网资源,二是获取更多的IPV6地址。 我觉得关闭双栈优选,就应当能达到这个目标,但目前反而是因为一些权重、检测等功能导致了返回不稳定。
确实是我的需求有些过分了,仔细想了想,目前我使用SmartDNS解决的问题还是比我对IPv6的过分需求更重要。 那些绝大部分上游都能解析出V6的域名解析没什么问题,对于绝大部分用户来说,这已经是非常好的解决方案了。 只是希望SmartDNS能多出一些给用户的选项,让那一少部分用户能满足更多的需求,毕竟接触到SmartDNS的人,多少还是对网络有些偏执的。
还有一个问题,就是一开机的时候如果路由器的V6还未连接,那么上游DNS中的V6DNS就被禁止了,之后的请求中就不使用了,而同样未连接的V4,上游DNS中的V4DNS只是closed,并未被禁止。 V6: [2022-06-17 22:59:36,697][DEBUG][ dns_client.c:2844] send query to server 2001:da8::666 [2022-06-17 22:59:36,697][DEBUG][ dns_client.c:2889] send query to 2001:da8::666 failed, Permission denied, type: 0 [2022-06-17 22:59:36,697][ INFO][ dns_client.c:2895] server 2001:da8::666 not alive,...