通过您自己的 Linux 硬件进行广告拦截

Pi- hole®是一个DNS 沉洞服务器,无需安装任何客户端软件即可保护您的设备免受有害内容的侵害

  • 易于安装:安装程序将引导您完成整个过程,并且只需不到十分钟的时间
  • 强大:不仅是网页去广告,还能去除 APP 内置广告和智能电视广告
  • 响应式:通过缓存 DNS 查询来无缝地加快日常网络加载的速度
  • 轻巧:运行平稳,对硬件的性能要求很小
  • 全能:拥有一个命令行界面,有稳定操作性的保证
  • 优雅的 UI:一个漂亮的响应式 Web 界面仪表板,可查看和控制您的 Pi-hole
  • 多功能:可以选择用作DHCP 服务器,自动保护局域网内的所有设备
  • 可扩展性:安装在服务器级硬件上时能够处理数亿个查询
  • 现代:能够阻止 IPv4 和 IPv6 上的广告
  • 免费:开源软件,你的隐私只在你的手里

需要准备的材料

  • 一个树莓派(以 3B+ 为例)
  • USB 电源适配器(5V,不小于 2A)
  • USB 电缆
  • 8G 以上的高速 TF 卡
  • 电脑(以 Windows 为例)
  • 网线
  • 互联网连接(推荐使用 真 · 互联网)

开始安装

首先我们需要将树莓派接入路由器,有线或无线均可,然后 SSH 远程登录到树莓派上:

不会的同学请先去看上一篇文章,本文不再赘述如何初始化、连接到树莓派。

使用官方的一键安装脚本即可快速安装(我额外加了以 root 运行):

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

等待一会,然后一路回车即可,个人认为默认的设置就很不错了。如果你想搞特殊,也可以停下来用 Google 翻译看看,根据自己想需要调整设置。

因为众所周知的原因,安装过程可能需要魔法!

如果你和我一样在这里卡了很久或者直接 error 了,说明你需要使用魔法。

至于具体操作请自己 Google 一下吧,我这里也不太好直接向麻瓜们直接展示对吧。(搜索关键词:树莓派 + 魔法名称)

安装完毕,记下访问地址和密码。

调整 Pi-hole 的设置

用浏览器访问刚刚的地址就能看到主页了,或者也可以访问 http://pi.hole/admin

主页展示的是 Pi-hole 的实时运行状态,点击 Login 输入记下的密码即可登录到控制台。

控制台就是这样的,现在可以开始调整 Pi-hole 的设置来获得更好的体验了:

添加 hosts 源

实际上,Pi-hole 使用的是 hosts 方式对广告进行过滤(类似 AdAway),所以 hosts 源的好坏直接决定了用户体验。自带的 host 对于我国网络环境来说可能会水土不服,下面推荐几个知名 hosts 源,可以到 Settings - Blocklists 里面添加自定义源,添加一个之后按 Save 保存,全部添加完成后按 Save and Update 来更新 host 并保存设置。

  • yhosts:可以说是国内比较老牌的知名 hosts,定期有更新,但作者主观屏蔽了一些非广告网站,可以用下面的命令手动添加白名单来解决不够客观的问题:
pihole -w `curl -sSL https://raw.githubusercontent.com/vokins/yhosts/master/data/moot/cps.txt https://raw.githubusercontent.com/vokins/yhosts/master/data/moot/error.txt https://raw.githubusercontent.com/vokins/yhosts/master/data/moot/hate.txt | sed '/^@/d; /^#/d; s/127.0.0.1 //' | tr "\n" " "`
  • neoHosts:比较小众的 hosts,但也口碑不错,看介绍貌似是不满于上面那位而弄出来的。
  • AdAwayYoyosMVPS:知名去广告软件 AdAway 的默认源,有些水土不服。
  • 大圣净化:Android 平台知名去广告软件大圣净化的规则,针对视频网站优化。
  • GoogleHosts:一个能帮助你访问 404 网站的 hosts。

更多 hosts 可以去 GitHub 上搜索,或者到 AdAway 的 Wiki 看看:https://github.com/AdAway/AdAway/wiki/HostsSources

相较于通常的过滤方式(如 Adblock Plus、KoolProxy 等),利用 hosts 过滤有自己的优缺点。优点是不会拖累网速(甚至可能有一定提升),缺点是过滤效果不尽如人意。

添加国内 DNS 服务器

Pi-hole 在安装时已经设置过一次 DNS 服务器了,但因为是国外的 DNS 服务,速度可能会比较慢,通过添加国内的 DNS 服务可以提高速度。

进入 Settings - DNS - Upstream DNS Servers 就可以添加 DNS 服务器了。

国内常见公共 DNS 服务

腾讯 DNSPod

https://www.dnspod.cn/Products/Public.DNS

Anycast:上海、天津、广州、香港

IPv4:119.29.29.29 / 119.28.28.28

这是 DNSPod 建立的公共 DNS,之后 DNSPod 被腾讯收购以后由腾讯云负责运营。腾讯 DNSPod 公共 DNS 配置了 Anycast,节点囊括了腾讯云所有可用区的节点(包括海外),所以速度还是不错的,并且除了支持 ECS 以外还有一些关于 DNS 出口选择优化的加成,所以 CDN 解析结果相对准确很多。但是 SLA 却并不优秀 —— 曾经 经常遭遇 DDoS 攻击导致无法解析。除此以外,由于相对出名、使用人数较多,是运营商重点劫持的对象。

值得一提的是,DNSPod 的公共 DNS 是免费提供 HTTPDNS 的,Demo 可以看 这里

阿里云公共 DNS

http://www.alidns.com

Anycast:成都、深圳、杭州

IPv4:223.5.5.5 / 223.6.6.6
IPv6:2400:3200::1 / 2400:3200:baba::1

阿里建立的公共 DNS。和腾讯一样,阿里公共 DNS 也是搭建在自家的云服务 —— 阿里云上。虽然也配置了 Anycast,不过不包括海外节点,国内也就浙江阿里云和深圳阿里云两个节点, 而且华北地区都是隧道穿透回深圳,响应速度略逊于 DNSPod 提供的公共 DNS;阿里公共 DNS 不支持 ECS,有 DNS 出口的优化 (一般都是广东出口),。关于阿里的公共 DNS 没有听说太多宕机、无法使用相关的报告。,但是倒是听说阿里公共 DNS 时常有返回 NXDOMAIN 影响使用体验。 NSDOMAIN 问题已得到一定缓解。阿里云 DNS 是国内首个支持 IPv6 的 DNS 服务。

南京信风公共 DNS

https://www.114dns.com/

Anycast:南京、济南、芝加哥

IPv4:114.114.114.114 / 114.114.115.115

无疑是国内最著名的公共 DNS,但是显然不是最好的。有 Anycast,国内有南京和青岛济南两个节点、海外有芝加哥节点,响应速度不敢恭维。国内最著名的公共 DNS、使用的人很多,SLA 非常可靠,因此也是运营商重点劫持的对象。但是考虑到南京信风为运营商旁路广告劫持提供技术和硬件支持,对他们提供的公共 DNS 服务还是戴着有色眼镜来看吧。

CNNIC 公共 DNS

http://www.sdns.cn/ 北京、杭州、香港

IPv4:1.2.4.8 / 210.2.4.8

CNNIC 名声并不好(CNNIC Root CA 的故事),因此有些许人相对都有些对 CNNIC 的抵触心理。CNNIC 的公共 DNS(SDNS)国内仅双点部署、Anycast 配得一塌糊涂、速度堪忧,解析结果没有 CDN 优化。至于撇开 CNNIC 来谈 SDNS 推不推荐使用?SLA 比 DNSPod 的公共 DNS 还惨,解析请求时不时超时,嗯。

百度公共 DNS

北京、南京、深圳 https://dudns.baidu.com/

IPv4:180.76.76.76
IPv6:2400:da00::6666

百度的名声现在怕是比 CNNIC 还要臭得多,他们的公共 DNS 于 2017 年上线,现在也不被太多人知道,不过还是简单提两笔:百度也为公共 DNS 也配置了 Anycast,国内是单点百度北京数据中心北京、南京、深圳三点,海外是单点百度香港数据中心。用的人少,也许不容易被运营商劫持,有兴趣的可以试一试看。

Enjoy it

到这里,你已经完成了树莓派的安装与初始化设置,你可以开始使用你的树莓派,做出令人惊叹的作品了!

希望你喜欢这篇文章,如果对你有帮助的话,别忘了点赞、收藏、分享和点击订阅,并留意更新动态。

Stay creative, and I will see you next time!


本作品采用知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议进行许可。

参考文献: