cover-img
avatar

托码特人

创作者的知识库

一个关注技术与人文的科技博客

对SmartDNS本地应用的一点补充

如果你之前看过本站《DNS 玩法知多少》这篇文章,也正常搭建了本地 DNS 服务,但是遇到国内某些网站访问速度变慢的问题,那本文可能会给你一些解决思路。

最近发现针对京东淘宝阿里云乃至必应搜索使用本地 DNS 服务访问非常的慢,于是简单做了下背调:发现 SmartDNS 对于拥有国际业务的站点返回的都是国际 IP。比如下图的必应,可以看到通过 SmartDNS 返回的是13.107.21.200,而这个 IP 通过ip138查到归属地在美国华盛顿的微软云那里,因此国内正常访问这个 IP,能快才怪了…

不同DNS下解析Bing的结果

而类似的情况也在前一阵发生,只是当时没有意识到会是这个问题:正常访问www.aliyun.com,总是会跳到www.alibabacloud.com
由于没有全局代理、浏览器也都正常,所以当时觉得很奇怪。但毕竟不是经常用阿里云,所以就没纠结。直到最近一直用必应老出问题才回过神来思考这个问题,后来改成DNSPod后,立马正常了,查了下结果发现指向了北京…

DNSPod下的Bing地址

一些补充说明和设置更新

声明

假设默认情况下,不会一直开着全局代理,也没有精妙的所谓规则设定,因为这种情况不会出现访问延迟的现象,除非代理本身有问题。
因此,如果读者习惯开全局或者配置了针对性的进出口规则,那以下内容就不用看了!

macOS 关于 53 端口的问题

如果通过 docker 启动,发现因为 53 端口占用,无法启动,请移步这里

调整姿势

因为直接使用 SmartDNS 作为本地 DNS 服务,一定程度上必然会出现上文所述的问题!
尽管在之前那篇文章有提到通过dnsmasq-china-list进行内外分离,但由于当时配置不当造成查询错误…

如果不想太麻烦,最简单快捷的方法就是,默认情况一律走国内大厂的公共 DNS 解析服务。但需要注意的是阿里公共 DNS 将在 2024 年 9 月末进行限速,这是先前刷smartdns issues发现的,所以如果严重依赖阿里家的这项服务,需要注意一下!

smartdns 配置

原来那份配置下,通过分析 docker logs 发现针对内外分离的规则没有生效…

result: cn.bing.com, client: 192.168.10.1, qtype: 1, id: 51332, group: default, time: 0ms
request: cn.bing.com, qtype: 1, id: 46522, group: default
result: cn.bing.com, id: 0, index: 1, rtt: -0.1 ms, 204.79.197.200
result: cn.bing.com, id: 0, index: 2, rtt: -0.1 ms, 13.107.21.200

经过分析和实测,整理出以下核心配置 👇

smartdns 与 dnsmasq-china-list 最终整合配置

bind [::]:53

server-name smartdns

log-num 5
log-size 2M
log-level warn
log-console yes

speed-check-mode none

# 启用双栈优选
dualstack-ip-selection yes

# 域名预先获取功能
prefetch-domain yes
cache-size 8192

# ----- Default Group(解析国外) -----
server 1.0.0.1
server 8.8.4.4
server 9.9.9.9
server-tls 1.1.1.1 -bootstrap-dns
server-tls 8.8.8.8 -bootstrap-dns

# ----- Domestic Group(解析国内) -----
## DNSPod
server 119.29.29.29 -group domestic -exclude-default-group
## 阿里
server 223.5.5.5 -group domestic -exclude-default-group
server 223.6.6.6 -group domestic -exclude-default-group
## 114 DNS、使用 TCP 查询
server-tcp 114.114.114.114 -group domestic -exclude-default-group
server-tcp 114.114.115.115 -group domestic -exclude-default-group
## 腾讯 DNSPod IP DoT
server-tls 1.12.12.12:853 -group domestic -exclude-default-group
server-tls 120.53.53.53:853 -group domestic -exclude-default-group

# 分流配置
conf-file /etc/smartdns/domestic/accelerated-domains.china.domain.smartdns.conf
conf-file /etc/smartdns/domestic/apple.china.domain.smartdns.conf

配置文件通过make SERVER=domestic SMARTDNS_SPEEDTEST_MODE=tcp:80 smartdns-domain-rules生成,可以考虑把dnsmasq-china-list全部下载到本地维护,定期 pull-make

注意:config-file 后不能加-group domestic,否则规则无效,这在上一篇文章中记录有误,此处特别提醒!

好了,以上就是SmartDNS 本地应用的一些使用体验和更新说明,祝大家玩的开心 🏄

赞赏

声明: 本文内容由托码斯创作整理,由于知识水平和时效性问题,行文可能存在差错,欢迎留言交流。读者若需转载,请保留出处,谢谢!