树莓派3安装Pi-Hole & DNSCrypt

之前折腾HomeAssistant时候入过两个树莓派3,后来决定新家完全使用米家方案布置之后这玩意就废弃了。今天看家里的乐视电视的时候发现乐视电视又偷偷的往电视里安装软件了,很气。所以决定重启树莓派3安装Pi-Hole来屏蔽一些广告。

简单来说,Pi-hole算是局域网内的DNS劫持服务,通过DNS解析时把特定的一些域名给出错误的信息,从而防止一些域名对网络的访问。

安装Pi-hole

如果你的树莓派是安装过Raspbian系统的,那么其实安装Pi-hole只需要一条命令。

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

安装过程需要在界面上配置一些选项,如果不知道怎么修改可以保持默认。 安装完成之后你可以通过浏览器访问下面的地址来管理你的Pi-hole:

http://<your pi’s IP address>/admin

如果需要重置Pi-hole管理密码,可以使用

sudo pihole -a -p newpassword

其中‘newpassword’是你需要设置的新密码。

使用Pi-hole

安装好之后的Pi-hole本身就自带一些订阅规则(可能需要科学上网更新),如果你想获得更多的中文广告规则可以自行添加网友维护的hosts。比如neoHosts。 同时如果要让Pi-hole生效,你需要在你的路由器里将DNS地址更改成树莓派的IP地址。

常用命令

#更新Pi-hole
pihole -up
#重装Pi-hole
pihole -r
#监控Pi-hole状态
pihole -c
#更新广告规则
pihole -g
#查看Pi-hole服务状态
pihole status
#获取更多命令
pihole -h

使用DNSCrypt来防止DNS污染

DNS污染是很常见的互联网攻击方式,原理就是在你向DNS服务器请求的时候攻击者伪装成DNS服务器向发出请求主机发送虚假的响应报文,或者干脆你使用的DNS服务器就直接给你返回受到污染的DNS查询结果。而DNSCrypt就是OpenDNS发明的一个可以加密 DNS 请求的工具,可加密DNS流量,阻止常见的DNS攻击,这样便从根本上杜绝了 DNS 污染问题。

在你的树莓派3上安装DNSCrypt

首先是下载最新版的DNSCrypt到/opt 文件夹

cd /opt
sudo wget https://github.com/jedisct1/dnscrypt-proxy/releases/download/2.0.19/dnscrypt-proxy-linux_arm-2.0.19.tar.gz
解压并重命名解压出来的文件
sudo tar -xf dnscrypt-proxy-linux_arm-2.0.19.tar.gz
sudo mv linux-arm dnscrypt-proxy
创建一个配置文件,并修改配置里的端口信息
cd dnscrypt-proxy
sudo cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml
sudo nano dnscrypt-proxy.toml
因为53端口是Pi-Hole使用的默认端口,所以需将这里的端口信息修改成54或者其他
listen_addresses = ['127.0.0.1:54', '[::1]:54']
然后运行安装脚本安装并启动DNSCrypt服务
sudo ./dnscrypt-proxy -service install
sudo ./dnscrypt-proxy -service start
最后还需要在Pi-Hole的管理设置页面将DNS更换为我们刚刚安装好的127.0.0.1#54并保存设置。

参考:

https://github.com/pi-hole/pi-hole

https://github.com/jedisct1/dnscrypt-proxy/releases

https://github.com/pi-hole/pi-hole/wiki/DNSCrypt-2.0