Openwrt SmartDNS 插件的安装、更新教程
- 实用技巧
- 2024-04-17
- 328热度
- 0评论
- Openwrt Wireguard 安装与配置
- Openwrt 软件路由空间扩容
- 家用服务器(Dell T630)All In Boom – 安装 Openwrt 软路由系统
- Openwrt SmartDNS 插件的安装、更新教程
- Openwrt SmartDNS 及相关配置
- Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
- Openwrt 旁路由设置的三种方式
- Openwrt 软件路由空间扩容
- 红米 AX6S 性能远超想象,解锁 SSH,刷 openwrt 教程
- Adguardhome 配置、优化教程
- 群晖 Docker系列 搭建QBitttorrent
- 群晖 Docker系列 搭建密码管理应用bitwarden
- 黑群晖NAS 基本安全加固
- 家用服务器(Dell T630)All In Boom – Exsi 8.0 安装 Debian 12
- OpenClash 内核更新失败解决方法
目录
Openwrt 下 SmartDNS 插件的安装、更新教程
一、什么是 SmartDNS,有什么用?
- 比较官方的说法是:
SmartDNS 是一个运行在路由器上的 DNS 服务器,然后从多个上游 DNS 服务器获取 DNS 查询结果,并将访问速度最快的结果返回给客户端,以此提高网络访问速度。
- 比较小白的说法是:
SmartDNS 就是预先配置多个 DNS 服务器供其选择,自动完成 DNS 解析(缓存)。正确设置就能加快本地的网页打开速度,以及防止 DNS 被污染(就是更清爽,解决 DNS 被运营商劫持的问题)。
网上对 SmartDns 的作用评论那是褒贬不一,有说傻白甜 + 秀智商的。当然也有说 SmartDns 就是神作,非常好用的。
SmartDns 无用论就不在本文讨论范围,本文针对的是还没折腾够的朋友。
经众多测试过的玩家总结,SmartDNS 最大作用其实是替换了 dnsmasq+pdsnd,实现对流量的精准分流。请务必清楚" 精准分流 " 才是 SmartDns 的精髓所在。
而 "返回最快的结果" 反而是附带的甜点。
SmartDNS 的应用场景:支持树莓派、OpenWrt、华硕路由器原生固件和 Windows 系统等。
二、安装完成后,SmartDNS 在路由器中出现的位置
不管是安装还是更新,本文皆以 OpenWrt 操作系统为例:
正确安装的 SmartDNS 位于 OpenWrt 的 " 服务 " 菜单下即可找到:
三:OpenWrt 下,如何安装 SmartDNS 插件?
假设你的 openwrt 固件默认并没有安装 smartdns 插件,在 服务菜单
下没找到相应连接,那么你也许要对 smartdns 进行全新安装。
Smartdns 全新安装步骤可分为二种:
1.在线安装服务
OpenWrt 固件集成有软件包在线安装服务,在 OPKG 配置执行安装即可。
A.检查配置信息
先检查配置,有 helloword,passwall 的软件源要先删除掉,不然刷新列表会报错
软件源地址:
src/gz openwrt_core https://mirrors.cloud.tencent.com/lede/snapshots/targets/x86/64/packages
src/gz openwrt_base https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/base
src/gz openwrt_luci https://mirrors.cloud.tencent.com/lede/releases/18.06.8/packages/x86_64/luci
src/gz openwrt_packages https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/packages
src/gz openwrt_routing https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/routing
src/gz openwrt_telephony https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/telephony
更改完提交一下。
安装前先卸载原有固件,旧版本的 Smartdns(可以跳过此步直接安装,有新版本的话,会自动更新)。
Ps: 这里随便点击其中一个卸载 Smartdns,刷新后你会发现两个已经安装的都找不到了。
B.在线安装
先刷新列表,等代完成后,过滤器里填入 smartdns,在线安装即可。
如下图,很清晰。有软件包名称,smartdns 的版本,及 ipk 的大小等等。
情况不同,你那是也许不是这个版本,直接安装 smartdns 就行。
过滤器中输入相关关键词,如:"smartdns",会列出所有可用的软件包,这里是 "luci-app-smartdns" 和 "smartdns",luci-app-smartdns 的文件大小为 0K,smartdns 的文件大小为 105658k。
至于 " 下载并安装软件包 " 选项:如果你有想要下载的相关服务软件包详细下载地址,可以直接输入并下载。
这里不知道是显示文件大小有问题还是什么原因,luci-app-smartdns是 SmartDns 的操作界面(就是上面说过的显示在服务菜单位置的 UI),原则上是不可能为 0K 的。不过不必深究,这不影响后面的操作。
2.putty 连接 openwrt,使用命令行进行安装
A.手动下载合适的 SmartDns 版本
SmartDns 安装包的开源仓库下载地址为:https://github.com/pymumu/smartdns/releases。
选择版本提示:
- Openwrt 18.XX 及之前的版本,安装
luci-app-smartdns.1.yyyy.MM.dd-REL.all-luci-compat-all.ipk
界面。 - 反之 Openwrt 19.07 后的版本,安装
luci-app-smartdns.1.yyyy.MM.dd-REL.all.ipk
界面。
B.安装 SmartDns 用到的主要命令有
#SmartDns 卸载命令
opkg remove luci-app-smartdns
opkg remove smartdns
#SmartDns 安装命令
opkg update
opkg install smartdns.1.xxx.ipk
opkg install luci-app-smartdns.1.xxxL.all.ipk
#如果不知道什么版本,直接选all版本
#opkg install luci-app-smartdns.1.xxx.all-luci-compat-all.ipk
C.Putty 连接路由,命令行操作
wget 命令下载 SmartDns 最新版(这里以 2023 年 2 月 4 日,最新版本为 Release40 版本为例):
wget https://github.com/pymumu/smartdns/releases/download/Release40/luci-app-smartdns.1.2023.01.02-1537.all-luci-all.ipk
wget https://github.com/pymumu/smartdns/releases/download/Release40/smartdns.1.2023.01.02-1537.aarch64-openwrt-all.ipk
SmartDns 版本更新如下:
- 优化 luci 界面,支持域名分流配置和定时更新规则。使用 参考这里
- 支持上游服务器配置 socket mark(-set-mark)。
- 支持设置日志文件的默认权限。
- 支持禁用特定域名的过期缓存。
- 支持日志个数为 0 时,禁用日志。
- 优化一些 log 打印。
- 解决一些 BUG。
使用命令安装:
#一定要更新,不然会存在报错的可能
opkg update
#安装SmartDns,注意修改刚下载的文件名
opkg install smartdns.1.2023.01.02-1537.aarch64-openwrt-all.ipk
opkg install luci-app-smartdns.1.2023.01.02-1537.all-luci-all.ipk
安装完成后,即可在 服务菜单 下找到 SmartDNS 的选项。
四、关于更新 SmartDns 的版本(版本升级)
SmartDns 老旧版本的更新升级方法,其实和安装方法一模一样,只时跳过卸载原来 SmartDns 这一步,新的安装包,安装完成后会自动更新 SmartDns 的版本。
但要注意新的配置文件所在位置与原配置文件有所区别,弄错会出现很多莫名其妙的 bug。
而 SmartDns 配置文件位置,一般在安装的时候有提示的,通常以 smartdns_opkg
为文件名,安装过程中要多留意。
五、安装 SmartDNS 插件过程中可能出现的问题
1.SmartDNS 安装/升级中出现 'Package mismatch' 错误
1.1 问题描述
不论是在线安装,或者是用命令安装,原理都一样。
如果在安装过程中出现:smartdns opkg_install_pkg: Package size mismatch: smartdns is xxx bytes, expecting xxx bytes
的错误提示。
而你又选择了正确的安装包,也能安装,但就是报错。即便你多次重复卸载,但还是会在安装 luci 界面安装失败。
1.2 错误出现原因
那么这里要先考虑是不是自带命令 opkg
的问题。
站长就遇到了这样的问题,经过一翻搜索,找到了造成Package mismatch 错误的原因,就是没更新 opkg
命令。
具体讨论可以在 gitub 仓库中的 issues 10847 中找到答案,以下是简单截取。
To be more clear:
- in this issue, an old package index is used to check the size/checksum of newer packages. Failure is expected.
- in the imagebuilder, a new package index is used to check the size/checksum of old packages that had been downloaded before. This is a bug, opkg should delete the old packages in this case (see ticket).
就是死循环的用两不同的 "package index"。
1.3 'Package mismatch' 错误解决办法
解决办法就是在安装前,必须用 'opkg update' 命令,更新一下,这很重要,会为你省去很多不必要的麻烦。
2.解决 openwrt 下安装 smartdns 不显示问题
2.1 问题描述
倘若,上面所有 smartdns 安装/更新过程,都能正常进行,但 OpwnWrt 的服务菜单下就是死活不显示 "SmartDns" 的选项怎么办?
如果一切安装过程都是正确的,但菜单下就是无法显示 SmartDns 的菜单条,没有 常规设置
,也没有 设置上游服务器查询
的选项,如下图所示:
2.2 不显示错误出现的原因
出现不显示的问题,这就是 Openwrt 安装服务时,典型的 Luci 不显示的错误。
这是在 Openwrt 下,用命令安装服务会经常会出现的错误之一,大体原因是不兼容,或者漏装了某个依赖。
而众多原因中,最可能诱发 Openwrt下没有SmartDns服务菜单
的原因,大概率就是你以前旧版本的 SmartDns 配置文件没删除,而新版本的又生成为其他文件名,如 smartdns_opkg
。
这造成SmartDns 读不到配置文件造成在采单栏无法显示的错误。
2.3 SmartDns 不显示的解决办法
知道原因,解决 成功安装SmartDns后仍然不显示
的问题就非常简单了。
删除旧文件,把新生成的 smartdns_opkg
.config 文件改成 smartdns
。如果没有,随便复制一个文件,改名文件名为 smartdns
,确保里面的内容如下:
config smartdns
option enabled '0'
option old_port '53'
option old_enabled '0'
option old_auto_set_dnsmasq '1'
本文固件提示的配置文件位置:
/etc/config/smartdns
总结
SmartDns 的安装分手动下载和自动下载 2 种方式,安装的关键是安装前要确保 "opkg update" 先行。
然后就确保旧版的 SmartDns 配置不会影响到新的 SmartDns 安装,不然容易出现 "openwrt 下安装 smartdns 不显示问题 " 的错误。
本文主要解决 smartdns 插件在路由器下的安装与更新问题,更详细的设置,可参考以下文章: