前几天发现家里的DNS被劫持,电脑、手机收到了一大堆广告推送很是心烦。突然想起为何不自己搭个DNS服务器给自己的设备做解析。事不宜迟说干就干。
首先安装dnsmasq,顺带安装dnsutils,dnsutils安装后可以简单测试DNS是否配置有效,执行命令如下:
apt install -y dnsmasq dnsutils
修改dnsmasq配置文件,修改前先备份一下,养成一个良好的习惯。
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
nano /etc/dnsmasq.conf
dnsmasq配置文件里面有好多内容,主要修改如下几个条目:
resolv-file=/etc/resolv.dns.conf
strict-order
listen-address=127.0.0.1,192.168.10.100
address=/test.red/127.0.0.1
cache-size=10000
其中resolv-file表示从哪里获取上游DNS服务器,默认是/etc/resolv.conf,但是这个配置文件在每次重启后会被重置,所以我自己弄一个。
strict-order表示严格按照resolv-file的顺序从上往下进行DNS解析。
listen-address表示服务监听的地址,其中192.168.10.100就是我树莓派在局域网中的地址,其他DNS客户端设备配置DNS服务器时就填这个地址。
address表示自定义解析A记录,这里主要用来测试DNS是否配置且启用。实际这个参数用处很多,这里就不多说了,需要了解的自行百度。
cache-size表示缓存条目数量。
这样dnsmasq配置文件修改完成,现在需要新建之前我说的那个resolv-file。
cp /etc/resolv.conf /etc/resolv.dns.conf
nano /etc/resolv.dns.conf
修改内容。
nameserver 127.0.0.1
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 180.76.76.76
223开头的两条为阿里云公共DNS,180开头的为百度公共DNS,建议不要添加运营商的DNS,很多广告行为实际都是运营商干的。其他的公共DNS可以根据自己的需求添加。 至此基本配置已经完成,将dnsmasq添加到自启动并启动服务。
systemctl enable dnsmasq --now
查看dnsmasq状态
systemctl status dnsmasq
一般得到如下图信息即代表服务正在运行。
然后可以执行一下dig test.red简单的测试DNS解析是否已经配置正确。
从图中信息中可以看出test.red的解析地址是127.0.0.1,这和我之前配置的自定义解析A记录相同,说明DNS解析已经配置成功。
至此树莓派自建DNS服务器完成。