实验(Surge iOS 5.8.3):
1、在空白配置下,随便开几个网页后,在『工具>DNS结果』中看到『时间开销』可低至12ms;
2、清理DNS缓存,在[General]段添加dns-server = 8.8.8.8, system
,时间开销最低只能到190ms;
3、再次清理DNS缓存,将[General]修改为dns-server = 8.8.8.8, 7.7.7.7, system
,此时所有DNS查询的时间开销都会超过1000ms,同时『路径』信息全部为空。
这下应该可以确定这个问题的原因了:在ipv6 = true
时,[fe80::1]会添加到系统DNS中,而这个服务器对无记录的AAAA查询不作回应,拖累整个DNS查询。
如果Surge依赖 empty DNS answers 的原因是 TCP并发连接机制依赖完整DNS查询结果,那么是否可以让DNS查询和TCP并发连接同时进行?即每获取到一个IP地址,就立即向对应的IP发起连接,这样就可以不再依赖DNS服务器对空结果发送错误信息了!