“smartdns”+”pi-hole” 实现dns智能解析和缓存

实现的功能

smartdns负责智能解析出访问域名最快的IP地址,然后将这些信息储存进pihole中作为缓存。这样我们访问网站或其他地址就不用每次都需要解析了,而是直接从pihole中选择最优线路。

配置debian

apt-get install wget vim curl

安装配置smartdns

安装

wget https://github.com/pymumu/smartdns/releases/download/Release33/smartdns.1.2020.09.08-2235.x86_64-linux-all.tar.gz
tar xvf smartdns.1.2020.09.08-2235.x86_64-linux-all.tar.gz
chmod +x ./smartdns/install
./smartdns/install -i

配置

配置文件

nano /etc/smartdns/smartdns.conf

修改smartdns的监听端口号

找到”bind [::]:53“,将53端口改为其他任意端口号,比如5380

修改缓存大小

将缓存大小”cache-size 512“改为0,也就是”cache-size 0“,因为我们不需要smartdns的自带缓存,待会要将缓存设到pihole中去

禁止查询解析IPv6

将”#force-AAAA-SOA [yes/no]“改为”force-AAAA-SOA yes“

添加UDP类型上游dns

添加UDP类型上游dns,用于国内解析。前3条是我这里本地电信的DNS,可以替换成你们本地的(需要自行百度查找)。后3条是公共的dns。

添加TLS类型的上游dns

添加TLS类型的上游dns,用于国外解析。我这里用的都是国外的公共dns,如8.8.8.8、8.8.4.4、1.1.1.1

启动smartdns

systemctl start smartdns

将smartdns添加为开机自动启动

systemctl enable smartdns

安装pi-hole

curl -sSL https://install.pi-hole.net | bash

修改pihole的密码

pihole -a -p

debian的本地dns

cat /etc/resolv.conf

配置pi-hole

将smartdns设置为pihole的上游dns settings–》DNS–》google一行取消打勾–》Upstream DNS Servers–》custom1 IPv4 填入127.0.0.1#smartdns的端口 10053就是上面再smartdns中设置的监听端口。