本帖最后由 shenmuecn 于 2022-8-6 17:33 编辑
特别说明:
smartdns为免费开源软件,未收取任何费用,如有问题,请移步github提交issue或提交相关代码patch。
如软件对自己有用,可以github上点赞支持下。
如无用,选择不用即可,请不要谩骂或带节奏。
作者并没有从此软件获益,开发此软件为作者本身使用需要,作者也没有义务或责任为smartdns的使用问题负责,也不会收取所谓的智商税。
国内开源不易,多谢各位的理解和支持。
作者建议使用默认配置,仅需增加上游服务器地址,默认配置已经优化最佳,此模式已经适配大部分场景。
Lu ICP No. 2024070997-2
阿里云公共DNS 223.5.5.5/223.6.6.6因不支持tcp的pipeline模式,会导致查询异常,不建议使用其tcp/tls模式。
2022-8-6更新内容详见更新日志。
SmartDNS

SmartDNS是一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回个客户端,提高网络访问速度。同时支持指定特定域名IP地址,并高性匹配,达到过滤广告的效果。 支持树莓派,openwrt,华硕路由器,Windows 10 WSL等设备。
smartdns是移动宽带,长城宽带用户的福音。
下载路径:https://github.com/pymumu/smartdns/releases
使用指导及安装配套表:https://pymumu.github.io/smartdns/
效果展示
以百度为例,分别用阿里DNS 223.6.6.6和SmartDNS对比。
阿里DNS结果:
SmartDNS结果:
可以看到,在未使用SmartDNS时,访问百度时延在30ms左右,使用smartdns后,时延在6ms。
QQ contact- 多DNS上游服务器
支持配置多个上游DNS服务器,并同时进行查询,即使其中有DNS服务器异常,也不会影响查询。 - 返回最快IP地址
支持从域名所属IP地址列表中查找到访问速度最快的IP地址,并返回给客户端,提高网络访问速度。 - 支持非标准端口
支持非53端口查询,支持TCP查询。 - 特定域名IP地址指定
支持指定域名的IP地址,达到广告过滤效果。 - 域名高性能后缀匹配
支持域名后缀匹配模式,简化过滤配置,过滤20万条记录时间<1ms - Linux/Windows多平*支持
支持标准Linux系统(树莓派),openwrt系统各种固件,华硕路由器原生固件,同时支持Windows 10 WSL系统。 - 支持IPV4, IPV6双栈
支持IPV4,IPV6网络,支持查询A, AAAA记录,支持IPV4,IPV6双栈IP优选策略。 - 高性能,占用资源少
多线程异步IO模式,cache缓存查询结果。
功能说明
- SmartDNS接收本地网络设备的DNS查询请求,如PC,手机的查询请求。
- SmartDNS将查询请求发送到多个上游DNS服务器,可采用标准UDP查询,非标准端口UDP查询,及TCP查询。
- 上游DNS服务器返回域名对应的Server IP地址列表。SmartDNS检测与本地网络访问速度最快的Server IP。
- 将访问速度最快的Server IP返回给本地客户端。
界面预览
post下载配套安装包
下载配套版本的SmartDNS安装包,对应安装包配套关系如下。(请访问https://pymumu.github.io/smartdns/查看最新配套表)
publish
| Thank you for your company~ | Quick login | 标准Linux系统(树莓派) | smartdns.xxxxxxxx.armhf.deb | 支持树莓派Raspbian stretch,Debian 9系统。 | 标准Linux系统(x86_64) | smartdns.xxxxxxxx.x86_64.tar.gz | 支持x86_64 Linux 系统。 | Windows 10 WSL (ubuntu) | smartdns.xxxxxxxx.x86_64.tar.gz | 支持Windows 10 WSL ubuntu系统。 | 华硕原生固件(optware) | smartdns.xxxxxxx.mipsbig.ipk | 支持MIPS大端架构的系统,如RT-AC55U, RT-AC66U. | 华硕原生固件(optware) | smartdns.xxxxxxx.mipsel.ipk | 支持MIPS小端架构的系统。 | 华硕原生固件(optware) | smartdns.xxxxxxx.arm.ipk | 支持arm小端架构的系统,如RT-AC68U。 | Padavan | smartdns.xxxxxxx.mipselsf.ipk | padavan固件。 | openwrt 15.01 | smartdns.xxxxxxxx.ar71xx.ipk | 支持AR71XX MIPS系统。 | openwrt 15.01 | smartdns.xxxxxxxx.ramips.ipk | 支持MT7260小端等路由器 | jzsdoipjfa author homepage | smartdns.xxxxxxxx.ramips_24kec.ipk | 支持MT762X等小端路由器 | jzsdoipjfa author homepage | smartdns.xxxxxxxx.ramips_24kec.ipk | 支持MT7620系列的潘多拉固件 | openwrt 18.06 | smartdns.xxxxxxxx.mips_24kc.ipk | 支持AR71XX MIPS系统。 | openwrt 18.06 | smartdns.xxxxxxxx.mipsel_24kc.ipk | 支持MT7260小端等路由器 | openwrt 18.06 | smartdns.xxxxxxxx.x86-64.ipk | 支持x86-64路由器 | openwrt 18.06 | smartdns.xxxxxxxxxxx.arm_cortex-a9.ipk | 支持arm A9核心CPU的路由器 | openwrt 18.06 | smartdns.xxxxxxxxx.arm_cortex-a7_neon-vfpv4.ipk | 支持arm A7核心CPU的路由器 | openwrt LUCI | luci-app-smartdns.xxxxxxxxx.xxxx.all.ipk | openwrt管理统一界面 |
openwrt系统CPU架构比较多,请查看CPU架构后下载,CPU架构可在路由器管理界面找到,查看方法:
- 登录路由器,点击System->Software,点击Configuration Tab页面,在opkg安装源中可找到对应软件架构,下载路径中可找到,如下,架构为ar71xx
src/gz chaos_calmer_base http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base
使用说明
https://pymumu.github.io/smartdns/
Commented on:下载链接
版本说明:
如果没有你要的版本,请在回复中留言,注明一下信息:
【路由器型号】:
【CPU型号】:
【openwrt适用的固件路径】:(https://downloads.openwrt.org/releases/目录中给出)
【opkg的安装源信息】:(登录路由器,点击System->Software,点击Configuration Tab页面的内容)
更新日志
【2022/8/6】
更新内容:
功能:
1. 支持返回多IP地址,优化下载、视频播放体验。
第一个IP地址仍然为最快,保证大部分软件体验,并支持设置返回IP个数,参数:max-reply-ip-num(此功能需要开启cache)
2. 支持读取dnsmasq dhcp文件,解析局域网主机功能,参数:dnsmasq-lease-file [/path/to/lease-file]。
3. 支持设置首次请求响应模式,参数:response-mode, 值:
* first-ping:最快ping响应地址模式,DNS上游最快查询时延+ping时延最短,查询等待与链接体验最佳。(当前默认)
* fastest-ping: 最快IP地址模式,查询到的所有IP地址中ping最短的IP。DNS查询时间最长,IP链接最短。(之前模式)
* fastest-response: 最快响应的DNS结果,DNS查询等待时间最短。 User cover page
5. speed-mode支持设置三种测速模式,之前版本为两种。
6. 优化docker镜像大小为3MB。
7. 双栈优选支持主动优选IPV6地址避免链接V4地址:参数:dualstack-ip-allow-force-AAAA yes。(实验性功能)
8. 双栈优选支持设置预取周期,参数:serve-expired-prefetch-time [second]
9. 支持非root模式运行,提升服务安全性,参数:user [username]
10. 支持缓存除A,AAAA类型的其他结果,如SRV,TXT,NXDOMAIN等。提升查询性能。
11. 优化并行查询性能,合并同类型查询。
12. 支持查询smartdns服务的IP地址,用于检测smartdns服务是否正常。如:`dig smartdns`返回路由IP。
13. 支持自动检测IPV6运行环境,自动开启/关闭IPV6相关功能。
14. Auditlog支持记录多IP地址。
15. 支持无PID文件启动smartdns多实例,`-pid -`进程启动参数。
16. 优化smartdns日志打印,避免无效打印,和收到无效数据包的打印,以及优化配置错误的提示。
BUG修复:
1. 解决TTL某些场景下不变化的BUG。
2. 解决IPSET在某些场景下丢失问题。
3. 解决日志打印引发的进程死锁和IP冲突问题
4. 解决其他若干crash问题。
5. 解决华硕路由器中,cache无法持久化的BUG。
6. 解决openwrt中,提示端口冲突的BUG。
7. 解决smartdns github版本和debian版本冲突的问题。
8. 解决双栈优选的一些BUG。
9. 解决其他crash问题。
10. 清理代码中潜在的问题。
11. 避免查询风暴。
注意:
1. 此版本默认情况下,会启用多IP能力,会出现第一次查询返回一个IP,后面再次查询返回多个IP的情况,属于正常的功能。注意和之前版本区分。
2. cache建议开启,并保证持久化功能开启,这样才能获得多IP查询能力。
3. smartdns是否正常,可用`dig smartdns`或`ping smartdns.`检查(注意,windows下后面的.是必须)
【2019/12/15】
1. GPL V3协议开源。
2. 解决一些BUG。
【2019/11/2】
- 支持设置测速模式speed-check-mode功能,可任意选择ping测速或tcp测速。
- bind支持绑定多个端口,且支持不同端口的请求应用不同的规则。参考bind flags参数。
- Luci支持第二DNS服务器。
- TLS校验支持检查主机名,而不需要校验SPKI。
- 优化prefetch性能。
- -v参数支持查询版本号。
- 解决父子规则包含导致规则失效的问题。
- 解决一些BUG和提高稳定性。
【2019/4/1】
- 增加DOH https的支持。(wireformat格式)
- 增加端口占用检测。
- 优化双栈IP优选的性能。
- 增加上游重试机制,避免网络异常失败。
- 支持域名分流功能(nameserver配置项和-group参数)。
- 支持TLS使用SPKI校验(-spki-pin参数)。
- conf-file支持相对路径。
- 文档增加FAQ说明。
- 修正一些小错误。
- 新增armbian arm64 debian stretch系统的支持。
【2019/2/18】
- addres配置项支持指定#,#4,#6,-分别表示域名返回SOA, A地址返回SOA, AAAA地址返回SOA以及忽略规则。
- ipset配置项支持指定-,忽略配置规则。
- 支持padavan固件
- 支持AR71xx的潘多拉固件
- 支持ignore-ip指定丢弃结果中的IP地址。
- 解决IP双栈优选下的几个错误。
- 增加配置选项:打印加载时的错误到syslog或终端,方便定位配置错误。
- 优化性能以及可靠性。
- 解决一些crash异常。
- 新增windows 10 WSL支持。
【2019/1/8】
- 增加IP黑名单支持,支持使用IP黑名单过滤特定DNS服务器返回的结果
- 增加IPSET的支持,配合ipset使用。
- bogus-domain,ipset,blacklist支持IP子网。
- 支持过滤特定DNS服务器的伪造域名。
- 支持IPV4, IPV6之间IP地址优选策略。
- Contact the author QQ: 181682233
- 优化查询超时机制,保证查询超百度云间1.1s内。
- 提升Luci界面配置保存速度。
- 支持启用或停用上游服务器。
- 解决crash的BUG。
- 解决一些BUG。
- 增加异常定位能力。
- 优化Luci界面配置。
- 优化baidu DNS回应错误包时的日志打印。
【2018/12/1】
- 增加TCP查询服务器。
- 增加openwrt下的重定向模式配置。
- 增加dns查询审计日志功能,记录dns查询请求。(请在自定义配置中增加配置项)
- 修改几处BUG。
【2018/11/3】
- 增加TLS查询支持。
- 增加X86版本的支持。
- 升级配套openwrt18.06
- 修改进程可能死循环的BUG。
- 修改进程可能异常退出的BUG。
【2018/9/4】
【2018/8/17】
- 增加伪造毒IP地址过滤功能(bogus-nxdomain参数)
- 增加支持arm_cortex-a15_neon-vfpv4
- 修正一处代码BUG。
- 修正潜在的一个并发问题。
【2018/8/9】- LUCI界面增加smartDNS自定义参数界面。
- 增加conf-file参数。
- 修改address匹配规则a,按域名匹配(之前版本后缀匹配)
- 解决X86-64系统下定时器失效的错误。
- 解决openwrt错误日志打印问题。
【2018/8/7】
1. 解决LEDE系统下,重启后,redirect未生效的问题。
2. 增加IPV6场景下的端口重定向。
3. 增加重定向是否生效的检测。并提示。
【2018/8/3】
1. 解决华硕路由器中服务重启问题。
2. 优化,当域名只有一个IP的情况下,不做检测。
3. 增加arm_cortex-a9_vfpv3的支持
4. 解决界面服务状态显示未刷新的问题
5. 优化指导书,刷新检查服务是否生效的方法
6. 界面默认启用redirect
注意:之前版本升级到此版本,需要重启路由器,否则服务状态将获取失败。
【2018/7/31】
1. 增加配置smartdns服务器名字,完善帮助。
2. 增加中文界面.
【2018/7/30】
1.增加x86_64, arm_cortex_a9, arm_cortex_a7的支持
【2018/7/25】
1. 解决smartdns服务在路由器重启时没启动的问题。
【2018/7/24】
1. 解决LEDE安装时的segment falut错误。
2. 支持X86-64系统
|