在 PC 上,屏蔽浏览器广告可以用 Adblock 之类的插件,但手机上各种 APP 总有层出不穷的广告。我们可以用树莓派搭建一个自己的 DNS 服务器,把广告域名解析进黑洞,于是眼不见心不烦了。本文主要参考资料:
安装 Pi-hole
首先,由于 Git 基本上是被墙了的状态,我们没法直接用官方提供的那句指令来安装。我本地有 v2ray,先把它设置为允许局域网连接,然后我们在树莓派上走代理。采用 proxychains:
在 [ProxyList]
里面加入 socks5 代理地址。最后如下:
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5 192.168.0.105 10808 # 笔记本电脑上的 socks5
运行 proxychains curl www.google.com
成功获取网站内容,说明我们 proxychains 配置成功了。接下来下载安装脚本并运行:
proxychains curl -sSL https://install.pi-hole.net -o install-pi-hole.sh
chmod +x install-pi-hole.sh
proxychains ./install-pi-hole.sh
期间所有的配置按 recommended 做即可。把 web UI 打开,方便我们之后的管理。最后就成功了,图如下:
我安装完成之后的图与上面的不太一样,还提供了初始的 admin 密码,这里我们先记下来。另外,web UI 默认起在 80 端口,仅允许通过 IP 或者 http://pi.hole
访问;但我 80 端口是被 nginx 占用的,因此暂且起不来 web UI.
解决方法是,由于 Pi-hole 是用 lighthttpd 起的 web UI 服务,我们只需要把端口号改成别的,再反代就行了。改端口的指令如下:
cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.backup
sed -ie 's/= 80/= 8093/g' /etc/lighttpd/lighttpd.conf
/etc/init.d/lighttpd restart
此时,用 192.168.0.101:8093
已经可以访问 Pi-hole 的管理界面了,不过我们反代一下,用 pi.hole
域名访问。nginx 配置如下:
改掉笔记本电脑上的 hosts,我们进入管理界面:
配置拦截域名
Pi-hole 是国外软件,默认带几条规则表,不太适合中国特色互联网。我们需要换用国内常用的广告域名列表。一番搜索之后我们找到了两个比较全的:
https://gitee.com/privacy-protection-tools/anti-ad/raw/master/domains.txt
https://share.is26.com/subscribe/adblock.hosts
在 Group Management -> Adlists
里面,为 Default
规则组添加这两个表,并关闭其余的(因为更新起来非常耗时,且效果不大):
在 Tools -> Update Gravity
里面点一下“Update”,开始更新屏蔽域名表:
于是导入了 67782 条规则。
实际测试
手机连接 Wifi,把 DNS 服务器设为树莓派的 IP 地址,也就是 192.168.0.101
之后,即可体验 Pi-hole 的去广告、DNS缓存服务。
DNS 去广告不仅适用于浏览器,也适用于各种 APP。想去广告,只需要找几个靠谱的广告域名表、把内网的树莓派作为 DNS 服务器,还是很方便的。