简介
smartdns 是一个运行在本地的 dns 服务器,它接受来自本地客户端的 dns 查询请求,然后从多个上游 dns 服务器获取 dns 查询结果,并将访问速度最快的结果返回给客户端,以此提高网络访问速度。 smartdns 同时支持指定特定域名 ip 地址,并高性匹配,可达到过滤广告的效果; 支持dot(dns over tls)和doh(dns over https),更好的保护隐私。
与 dnsmasq 的 all-servers 不同,smartdns 返回的是访问速度最快的解析结果。
支持树莓派、openwrt、华硕路由器原生固件和 windows 系统等。
smartdns github页面:https://github.com/pymumu/smartdns
smartdnsag真人官方网官网:https://pymumu.github.io/smartdns
安装
访问github release页面进行下载:https://github.com/pymumu/smartdns/releases
找到自己对应的架构版本:
将其下载到本地。
还是通过【系统】的【软件包】进行上传安装,先安装依赖,再安装程序文件。
安装完成后刷新页面,在【服务】中可以看到smartdns。
配置
常规设置
高级设置
什么是 ttl?
ttl是 time to live
(生存时间)的缩写。主要指在 dns 解析中,dns服务器缓存解析记录的时间。例如:ttl = 600秒,意味着 dns 服务器缓存解析记录 600 秒(十分钟),在这十分钟内更改 dns 解析的记录值是不会生效的,需要等十分钟后,dns 服务器缓存更新才可以生效。
设置的时间长短对网站有什么影响?
- ttl值大 = 减少dns递归查询过程,提升域名解析速度。
稳定的网站,其 dns 的解析记录发生变更的频率比较低。
如果 ttl 值比较大, dns 的解析结果在全国各地 localdns 中的缓存时间很长,这样当用户访问网站时,就无需经过复杂的 dns 的递归解析过程。通过最近的本地 dns 返回域名的解析结果,解析速度变快。
-
ttl值小 = 更新速度快。
网站在新创阶段,因为需要频繁测试,其 dns 的解析记录发生变更的频率比较高。如果 ttl 值比较小,解析速度很快就会生效。
第二dns服务器
该组服务器基本上用于以后解析国外地址使用,所以限定【服务器组】简称为 en
。规则都可以跳过。
上游服务器
这边比较关键,可以访问 免费公共 dns 服务器大全 进行填写。如果使用ipv6的话,也不用填写ipv6的dns。
建议填写10个-15个,不用填太多,因为发送信息给dns服务器也要时间。
在添加dns时,【服务器组】最好区分开来,国内的就用 cn
,国外的简称为 en
。
全部填写完成后点击底部的【保存并应用】。
小tips
如果是为了追求速度,那么可以按照上述方法将udp这类dns填写进去,解析速度会快那么稍微亿点点;
如果是为了安全无污染,那么只要填写https
和 tls
这两类dns,解析速度相对会降低,但是几乎感觉不到,这样做的好处也是比较明显的:手机app打开时的各种广告会屏蔽掉80%左右(估算值,测试下来10款app,只有2款还能看到开启的广告,其余都是直接进入到应用界面),然后也能正常访问一些被污染的网站了(类似google这种完全屏蔽的还是不行)。
使用https和tls的好处
- 隐私保护: https和tls加密dns可以确保dns查询的隐私,防止第三方监视者或互联网服务提供商(isp)跟踪dns活动。这意味着你的dns查询不会被用于广告跟踪或其他潜在的隐私侵犯行为。
-
数据完整性: tls加密dns可以确保查询结果在传输过程中不被篡改或损坏。这有助于防止dns污染或恶意劫持攻击,确保获取的是真正的dns响应。
-
安全性提升: 通过加密dns,可以减少受到dns欺骗和dns投毒等攻击的风险。这使得恶意攻击者更难以操纵dns解析,从而提高了互联网安全性。
-
绕过内容过滤和审查: 在某些地区,gov或互联网服务提供商可能会对dns进行审查或过滤,以阻止访问特定网站。使用加密dns可以绕过这些封锁,可以更自由地访问互联网。
-
域名验证: tls加密dns提供了额外的域名验证层,确保dns查询连接到了正确的dns服务器,而不是恶意伪装成合法服务器的攻击者。
在自由上网的同时,请谨记:互联网不是法外之地!
没完的结尾
其中到这一步并没有结束,因为它只是运行起来了,但是并没有发生作用。
计划在下一章安装 adguardhome ,配合smartdns来进行广告过滤。
如果不想安装 adguardhome 就想直接使用的话,在【常规设置】中,勾选【自动设置dnsmasq】即可。
最后
网上其实对于smartdns也是褒贬不一,在我实际体验下来,解析速度也确实没有一个明显的提升(纯个人感官,没有数据支撑),而且在使用的过程中,经常会出现莫名其妙【未运行】或者显示【已运行】,但是实际不产生作用的情况,网上查询下来,可能的原因是弃用了 dnsmasq
改用 dnsmasq-full
导致的,但是dnsmasq-full又是必须的,所以目前本人已经弃用 smartdns。。。
顺便说一下,最近有点火的 mosdns ,和smartdns差不多,感兴趣的小伙伴可以自行研究一下。