smartdns icon indicating copy to clipboard operation
smartdns copied to clipboard

默认情况下国内网站是否需要开启speed-check-mode

Open yuxuan0107 opened this issue 3 years ago • 9 comments

问题现象
简要描述问题出现的现象

运行环境

  1. 固件型号
    x86-64 Debian11
  2. 运营商
    china unicom 重现步骤
  3. 上游DNS配置。
    223 114 dnspod
  4. 访问的域名。
    any

信息收集

  1. 将/var/log/smrtdns.log日志作为附件上传。
  2. 如进程异常,请将coredump功能开启,上传coredump信息文件。
    在自定义界面,开启设置->自定义设置->生成coredump配置,重现问题后提交coredump文件 coredump文件在/tmp目录下

请问默认情况下正常浏览网络,无特殊翻墙等需求下,是否要开启speed-check-mode测速功能,如果需要的话建议开启443还是80? 如果不需要开启的话,保持默认此项的配置配置还是需要指定命令speed-check-mode none? 另外无论是否指定 speed-check-mode 命令none的话是否还会反回最快ip?反回最快ip的依据是什么?感谢

yuxuan0107 avatar Apr 30 '22 15:04 yuxuan0107

看运营商和你的网络地址,以及你访问网络的诉求。

一、如果是如下情况:

  1. 仅访问国内网站。
  2. 有公网IP地址。
  3. 无IPv4,IPv6双栈诉求。

基本上可以不需要测速,服务器返回的IP地址一般都是最佳IP,测速是无用的 大部分情况是ECS的部署和CDN的部署。

当然国内部分网站域名配置不合理,测速也是有一定作用的,比如qq.com(不是www.qq.com),解析的时候,返回4个地址,就有快,有慢,如果第一个是慢的,那么你访问的速度就慢,这是测速就有用了,但这种情况,对国内的网站应该不多见。 如下面的结果:203.205.254.157是HK的IP,并且返回在了第一个结果,那你用浏览器打开页面就慢了。

dig qq.com @223.5.5.5

;; ANSWER SECTION:
qq.com.                 548     IN      A       203.205.254.157
qq.com.                 548     IN      A       123.151.137.18
qq.com.                 548     IN      A       183.3.226.35
qq.com.                 548     IN      A       61.129.7.47

二、除了上面说的,下面的情况,smartdns都是有用的。

  1. 需要直连访问国外网络: 一般国内DNS服务器对国外支持较差,查询国外网站的IP地址不一定是最好的,这时类似8.8.8.8的就比较好用了。但8.8.8.8对国内支持一般。这种情况,就靠smartdns测速返回结果。
    • 无smartdns方法:在不用smartdns的情况下,可以采用分流解决,国内域名用国内DNS,国外域名用国外DNS。但分流要手工配置域名,比较麻烦。
    • 用smartdns优势:同时配置国内外DNS服务器,smartdns就是动态检查,找最快,避免配置。
  2. 部分游戏要求。 比如PS,switch等,部分DNS服务器返回的IP地址比较好,这时可以给游戏主机单独配置,或分流。光靠国内域名是不行的。
    • 无smartdns方法:在不用smartdns的情况下,可以采用分流,配置HOST解决。但分流要手工配置域名,比较麻烦。
    • 用smartdns优势:smartdns就是动态检查,找最快,避免配置。
  3. DNS或服务器down掉的容错。
    • 无smartdns方法:无解,等服务器恢复,或自己配置HOST。
    • 用smartdns优势:smartdns会找到能工作的服务器,基本无感知。
  4. 国内移动网络,或处于运营商NAT网络。
    • 无smartdns方法:要看运营商NAT路由出口,有块有慢,最好是用运营商的DNS,运营商有本地CDN。
    • 用smartdns优势:找到最快的地址。
  5. IPv4,IPv6双栈同时存在的诉求。
    • 无smartdns方法:可以粗暴关闭IPv6解析解决。
    • 用smartdns优势:V4,V6共存,并且不影响访问速度。

关于参数: speed-check-mode默认情况下就是推荐的配置,无需修改。80和443没有区别。除非某些服务将80设置了黑洞。 配置none的话,是返回的最早回应的DNS结果里面的IP地址。

pymumu avatar Apr 30 '22 16:04 pymumu

感谢您的详细答复,基本把我最近2年来所有对smartdns的疑惑解答了,非常感谢,感觉其他用户也可以参照此答案,再次感谢!

yuxuan0107 avatar May 01 '22 09:05 yuxuan0107

qq.co 有好多个IP,我一度以为我的配置出问题了

lhuanyun avatar May 29 '22 12:05 lhuanyun

看运营商和你的网络地址,以及你访问网络的诉求。

一、如果是如下情况:

  1. 仅访问国内网站。
  2. 有公网IP地址。
  3. 无IPv4,IPv6双栈诉求。

基本上可以不需要测速,服务器返回的IP地址一般都是最佳IP,测速是无用的 大部分情况是ECS的部署和CDN的部署。

当然国内部分网站域名配置不合理,测速也是有一定作用的,比如qq.com(不是www.qq.com),解析的时候,返回4个地址,就有快,有慢,如果第一个是慢的,那么你访问的速度就慢,这是测速就有用了,但这种情况,对国内的网站应该不多见。 如下面的结果:203.205.254.157是HK的IP,并且返回在了第一个结果,那你用浏览器打开页面就慢了。

dig qq.com @223.5.5.5

;; ANSWER SECTION:
qq.com.                 548     IN      A       203.205.254.157
qq.com.                 548     IN      A       123.151.137.18
qq.com.                 548     IN      A       183.3.226.35
qq.com.                 548     IN      A       61.129.7.47

二、除了上面说的,下面的情况,smartdns都是有用的。

  1. 需要直连访问国外网络: 一般国内DNS服务器对国外支持较差,查询国外网站的IP地址不一定是最好的,这时类似8.8.8.8的就比较好用了。但8.8.8.8对国内支持一般。这种情况,就靠smartdns测速返回结果。

    • 无smartdns方法:在不用smartdns的情况下,可以采用分流解决,国内域名用国内DNS,国外域名用国外DNS。但分流要手工配置域名,比较麻烦。
    • 用smartdns优势:同时配置国内外DNS服务器,smartdns就是动态检查,找最快,避免配置。
  2. 部分游戏要求。 比如PS,switch等,部分DNS服务器返回的IP地址比较好,这时可以给游戏主机单独配置,或分流。光靠国内域名是不行的。

    • 无smartdns方法:在不用smartdns的情况下,可以采用分流,配置HOST解决。但分流要手工配置域名,比较麻烦。
    • 用smartdns优势:smartdns就是动态检查,找最快,避免配置。
  3. DNS或服务器down掉的容错。

    • 无smartdns方法:无解,等服务器恢复,或自己配置HOST。
    • 用smartdns优势:smartdns会找到能工作的服务器,基本无感知。
  4. 国内移动网络,或处于运营商NAT网络。

    • 无smartdns方法:要看运营商NAT路由出口,有块有慢,最好是用运营商的DNS,运营商有本地CDN。
    • 用smartdns优势:找到最快的地址。
  5. IPv4,IPv6双栈同时存在的诉求。

    • 无smartdns方法:可以粗暴关闭IPv6解析解决。
    • 用smartdns优势:V4,V6共存,并且不影响访问速度。

关于参数: speed-check-mode默认情况下就是推荐的配置,无需修改。80和443没有区别。除非某些服务将80设置了黑洞。 配置none的话,是返回的最早回应的DNS结果里面的IP地址。

补充提问:在上述之前描述的环境下,如果没有开启双栈优选,开启测速speed-check-mode ping,tcp:80 的情况下会返回几个地址?是ipv4/6各一个?还是最快的那个

yuxuan0107 avatar Jul 13 '22 06:07 yuxuan0107

看运营商和你的网络地址,以及你访问网络的诉求。

一、如果是如下情况:

  1. 仅访问国内网站。
  2. 有公网IP地址。
  3. 无IPv4,IPv6双栈诉求。

基本上可以不需要测速,服务器返回的IP地址一般都是最佳IP,测速是无用的 大部分情况是ECS的部署和CDN的部署。

当然国内部分网站域名配置不合理,测速也是有一定作用的,比如qq.com(不是www.qq.com),解析的时候,返回4个地址,就有快,有慢,如果第一个是慢的,那么你访问的速度就慢,这是测速就有用了,但这种情况,对国内的网站应该不多见。 如下面的结果:203.205.254.157是HK的IP,并且返回在了第一个结果,那你用浏览器打开页面就慢了。

dig qq.com @223.5.5.5

;; ANSWER SECTION:
qq.com.                 548     IN      A       203.205.254.157
qq.com.                 548     IN      A       123.151.137.18
qq.com.                 548     IN      A       183.3.226.35
qq.com.                 548     IN      A       61.129.7.47

二、除了上面说的,下面的情况,smartdns都是有用的。

  1. 需要直连访问国外网络: 一般国内DNS服务器对国外支持较差,查询国外网站的IP地址不一定是最好的,这时类似8.8.8.8的就比较好用了。但8.8.8.8对国内支持一般。这种情况,就靠smartdns测速返回结果。

    • 无smartdns方法:在不用smartdns的情况下,可以采用分流解决,国内域名用国内DNS,国外域名用国外DNS。但分流要手工配置域名,比较麻烦。
    • 用smartdns优势:同时配置国内外DNS服务器,smartdns就是动态检查,找最快,避免配置。
  2. 部分游戏要求。 比如PS,switch等,部分DNS服务器返回的IP地址比较好,这时可以给游戏主机单独配置,或分流。光靠国内域名是不行的。

    • 无smartdns方法:在不用smartdns的情况下,可以采用分流,配置HOST解决。但分流要手工配置域名,比较麻烦。
    • 用smartdns优势:smartdns就是动态检查,找最快,避免配置。
  3. DNS或服务器down掉的容错。

    • 无smartdns方法:无解,等服务器恢复,或自己配置HOST。
    • 用smartdns优势:smartdns会找到能工作的服务器,基本无感知。
  4. 国内移动网络,或处于运营商NAT网络。

    • 无smartdns方法:要看运营商NAT路由出口,有块有慢,最好是用运营商的DNS,运营商有本地CDN。
    • 用smartdns优势:找到最快的地址。
  5. IPv4,IPv6双栈同时存在的诉求。

    • 无smartdns方法:可以粗暴关闭IPv6解析解决。
    • 用smartdns优势:V4,V6共存,并且不影响访问速度。

关于参数: speed-check-mode默认情况下就是推荐的配置,无需修改。80和443没有区别。除非某些服务将80设置了黑洞。 配置none的话,是返回的最早回应的DNS结果里面的IP地址。

当前遇到的一个问题,在使用如下配置时,nslookup会返回多个地址,包含ip4/6(已确保清空客户端缓存的情况下)

server-name smartdns

server 223.5.5.5 -check-edns server 202.102.128.68 -check-edns server 202.102.134.68 -check-edns server 119.29.29.29 -check-edns server 1.2.4.8 -check-edns server 114.114.114.114 -check-edns bind [::]:53 bind-tcp [::]:53 cache-size 51200 cache-persist yes cache-file /root/smartdns.cache prefetch-domain yes serve-expired yes serve-expired-ttl 0 speed-check-mode ping,tcp:80 log-level warn log-file /tmp/log/smartdns.log log-size 128k

yuxuan0107 avatar Jul 13 '22 06:07 yuxuan0107

补充提问:在上述之前描述的环境下,如果没有开启双栈优选,开启测速speed-check-mode ping,tcp:80 的情况下会返回几个地址?是ipv4/6各一个?还是最快的那个

新版本会返回包含测速最快结果在内的完整结果。可以使用 max-reply-ip-num 限制返回结果的数量

PikuZheng avatar Jul 13 '22 06:07 PikuZheng

补充提问:在上述之前描述的环境下,如果没有开启双栈优选,开启测速speed-check-mode ping,tcp:80 的情况下会返回几个地址?是ipv4/6各一个?还是最快的那个

新版本会返回包含测速最快结果在内的完整结果。可以使用 max-reply-ip-num 限制返回结果的数量

感谢提醒,如果max-reply-ip-num 2 那么会返回最快的2个地址,并不会区分ip4/6是吗

yuxuan0107 avatar Jul 13 '22 06:07 yuxuan0107

当前遇到的一个问题,在使用如下配置时,nslookup会返回多个地址,包含ip4/6(已确保清空客户端缓存的情况下)

这块后来改了不少 我平时不开ipv6 双栈的结果我不了解

如果max-reply-ip-num 2 那么会返回最快的2个地址,并不会区分ip4/6是吗

新版会把测速最快的结果作为返回的首个结果 至于第二个 目前没有相关资料 猜测是会按上游应答结果的顺序取下一个

PikuZheng avatar Jul 13 '22 06:07 PikuZheng

当前遇到的一个问题,在使用如下配置时,nslookup会返回多个地址,包含ip4/6(已确保清空客户端缓存的情况下)

这块后来改了不少 我平时不开ipv6 双栈的结果我不了解

如果max-reply-ip-num 2 那么会返回最快的2个地址,并不会区分ip4/6是吗

新版会把测速最快的结果作为返回的首个结果 至于第二个 目前没有相关资料 猜测是会按上游应答结果的顺序取下一个

简单测试了一下 当参数max-reply-ip-num 1 同时启用测速时 会返回一个ip4和一个ip6 当max-reply-ip-num未设置 并启用测速时 会反回多个ip4和多个ip6 例如www.iqiyi.com www.cctv.com 测试版本[Release 37 RC1] 测试不够严谨,仅作参考吧

yuxuan0107 avatar Jul 13 '22 07:07 yuxuan0107

最新版本验证,有问题reopen issue

pymumu avatar Oct 20 '22 12:10 pymumu