SmartDNS
SmartDNS 是一个运行在本地的 DNS 服务器,它接受来自本地客户端的 DNS 查询请求,然后从多个上游 DNS 服务器获取 DNS 查询结果,并将访问速度最快的结果返回给客户端,以此提高网络访问速度。 SmartDNS 同时支持指定特定域名 IP 地址,并高性匹配,可达到过滤广告的效果。
与 DNSmasq 的 all-servers 不同,SmartDNS 返回的是访问速度最快的解析结果。
支持树莓派、OpenWrt、华硕路由器原生固件和 Windows 系统等。
项目地址: https://github.com/pymumu/smartdns
使用Entware安装
Entware 包管理器里就有,直接安装就行
sudo opkg install smartdns
安装好了在 /opt/etc/smartdns/smartdns.conf
修改配置文件
我是直接把配置文件复制到 home 目录下,然后建立软链接
这样方便直接在电脑上用编辑器打开修改
mkdir /share/home/用户名/config/smartdns/
cd /opt/etc/smartdns/
cp smartdns.conf /share/home/用户名/config/smartdns/smartdns.conf
mv smartdns.conf smartdns.conf.bak
ln -s /share/home/用户名/config/smartdns/smartdns.conf smartdns.conf
使用docker安装
推荐使用 docker 方式,管理起来和自动启动都比较方便
来规矩,在 /share/Coutainer/softwares/smartdns
下创建 docker-compose.yml
文件,内容如下
version: '3.1'
services:
smartdns:
image: ghostry/smartdns
container_name: smartdns
restart: always
volumes:
- ./smartdns:/smartdns
ports:
- 53:53/udp
然后 docker-compose up -d
启动,搞定
我在第一次部署的时候提示53端口被占用,使用命令 sudo lsof -i:53
检查了一下,发现是系统自带的 dnsmasq 服务占用了
搜了很久都没找到这玩意要怎么关,好像是跟威联通默认的DHCP服务有关
这东西的配置文件在 /etc/dnsmasq.conf
,可以在里面把端口改成别的,不过众所周知,威联通的 /etc/
目录修改了是没用的,重启就还原了
所以只好 killall -9 dnsmasq
杀掉进程。
然后再次启动 docker 版的 smartdns,搞定
启动之后会在当前目录的 smartdns
下生成配置文件,默认配置文件已经够用了,如果要添加自定义映射,再根据官网文档配置即可。
配置
简单配置一下
# 上游DNS配置
server 192.168.1.1
server 8.8.8.8
server 8.8.4.4
server 114.114.114.114
server 223.5.5.5
server 223.6.6.6
server 119.29.29.29
server-tcp 8.8.8.8
server-tls 8.8.8.8
server-https https://cloudflare-dns.com/dns-query
参考资料
- docker部署smartdns加速dns解析 - https://blog.dswang.ga/learning/325/
- 官方github - https://github.com/pymumu/smartdns