记录一下我在配置smartdns上遇到的坑
写在最前面:这个方案出于某些原因暂时弃用,虽然原有的会卡,但是smartdns更卡。此文仅作流程参考。
这次将路由器上的dns由
dnsmasq
替换为smartdns
主要是为了使用 dot (dns over TLS),除此之外,smartdns
还提供了多路查询dns的功能。本文主要记录了我在部署到梅林路由器上是遇到的坑。
开发者教程和文件链接:https://github.com/pymumu/smartdns
进入路由器的ssh环境 #
在路由器设置里打开ssh开关,或者和我一样从软件中心里安装shellinabox
,使用网页端的ssh。进入shellinabox
后输入路由器帐号和密码。
安装entware (opkg) #
- 系统管理 > 系统设置
| Enable SSH | 是 |
| Enable JFFS custom scripts and configs | 是 | - 在ssh环境中:
|
|
不同于官方在Tool
中提供的方法,以上脚本将entware
安装在本体的jffs
里,不需要额外的u盘挂载。
安装smartdns #
作者教程 & 软件包下载
按照路由器架构 (armv7) 和安装环境 (entware/optware) 选择安装包,我用的是smartdns.xxx.arm-optware-all.ipk
。
|
|
安装过程中,我遇到了路由器证书服务openssl
协议太旧的问题,opkg在安装的过程中会根据依赖下载其他软件包,由于服务端协议版本比较高,所以最后我还是手动一个一个下载安装依赖。
配置smartdns #
默认情况下,
smartdns
工作在模式1,即通过iptables将53端口发向原有dnsmasq
的请求转发到535端口。工作模式可以通过修改/opt/etc/smartdns/smartdns-opt.conf
中SMARTDNS_WORKMODE
参数来调整。
安装完成后nano /opt/etc/smartdns/smartdns.conf
,修改以下内容:
修改为 | 原有 | 说明 |
---|---|---|
conf-file smartdns-list.conf | - | 上游dns的地址 |
bind :535 | bind [::]:53 | 原作者的启动脚本有问题,需要这里手动修改 |
bind-tcp :535 | - | 同上 |
cache-size 40960 | cache-size 4096 | 如果jffs空间不够的话可改小 |
cache-file /tmp/smartdns.cache | - | 暂存文件应放在ram里 |
serve-expired yes | - | 防止上游dns卡顿 |
prefetch-domain yes | - | 自动刷新过期dns |
force-AAAA-SOA yes | - | 有影响,所以先关闭ipv6解析 |
rr-ttl-min 60 | - | 从上游dns返回的ttl至少为60s |
log-level warn | log-level info | 这个可以试完了以后改 |
在/opt/etc/smartdns/smartdns-list.conf
添加:
|
|
去除原启动脚本中会错误修改端口的bug,修改/opt/etc/init.d/S50smartdns
:
|
|
在开机启动脚本/jffs/post-mount
添加:
|
|
重启路由器
测试 #
nslookup -querytype=ptr smartdns
或者通过nslookup
查询任意一个域名,如果返回ip只有一个,说明部署成功。
时空乱流记录