通过您自己的 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,但也口碑不错,看介绍貌似是不满于上面那位而弄出来的。
- AdAway、Yoyos、MVPS:知名去广告软件 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
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
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 国际许可协议进行许可。
参考文献: