翻译:使用Pi-hole和树莓派部署网络广告拦截器

如果您曾经对网络广告,恶意软件和其他恶意间谍软件以及在线跟踪软件感到沮丧,并且想知道是否有阻止它的解决方案,那么这是适合您的项目。我们将设置一个运行Pi-hole的Raspberry Pi,以在15分钟内阻止整个网络中不需要的内容!

介绍

对于您所有想要将无广告的幸福扩展到您家中其他居民的用户,您可能(也可能没有)听说过Pi-hole,这是一个免费的开源软件项目,阻止在DNS级别运行的整个局域网的有害Internet广告。我们将在Raspberry Pi上运行该软件,以创建一个小型低功耗设备,以添加到网络中并提供广告拦截功能,而无需客户端扩展或插件。

本教程利用了将Pi-hole安装在balenaOS设备上的项目,使您可以远程管理和更新独立的广告拦截设备,使该设备始终与最新的广告拦截保持最新状态。

我们已经编写了本指南,以便即使您不熟悉网络术语也可以继续学习,并且提供了说明和指向资源的链接以了解更多信息。您绝对不需要了解网络即可了解Pi-hole的好处,但是如果您很好奇,我们已将所有信息链接在一起,以了解其工作原理。


它是如何工作的?

Pi-hole是DNS Sinkhole,这意味着它在您的网络上用作DNS服务器,并且在任何浏览器或其他客户端软件尝试从已知广告商加载内容时,Pi-hole都将使用错误的地址进行响应。Pi-hole维护了一组“阻止列表”,此外,我们还用WaLLy3K和firebog.net的其他阻止列表对其进行了补充。

例如,DNS是一种系统,用于balena.io在尝试加载网页时将服务器主机名解析为位于其后的服务器的IP地址,例如52.210.75.180。对于诸如的广告服务器internetadvertising.com,Pi-hole将使用诸如0.0.0.0真实地址之类的错误地址进行响应,这意味着广告将不会加载。

如果您好奇,可以在Pi-hole文档中阅读有关系统工作原理的更多信息。


所需硬件

由于这主要是一个软件项目,因此您不需要大量的硬件。这次只需要基础知识:

  • Raspberry Pi 2、3B,3B +,4B(不是1/0)
  • 8GB(或更大)Micro-SD卡(我们建议使用Sandisk Extreme Pro SD卡)
  • 电源和微型USB电缆
  • 您在建造时喜欢的饮料(不要告诉我以前的老板,我偷了他们公司的一个杯子!)

可选的:

  • Raspberry Pi的保护套
  • 以太网电缆

所需软件

我们在这里部署完全开发的软件包,因此我们要做的就是设置它们。一个名为Kyle Harding(@klutchell)的balenaCloud用户已经在GitHub上发布了一个项目,这使得部署和设置此项目非常简单。我们将使用balenaCloud设置新设备并部署Kyle的项目,因此,您需要:

  • 用来刷新SD卡的工具,例如balenaEtcher
  • 一个balenaCloud帐户
  • 从GitHub复制或下载Kyle的项目
  • 访问网络路由器或DHCP服务器以更改设置(如果仅打算将Pi-hole与自己的个人设备一起使用,则不需要此操作)

作为一个侧面说明,本指南中,我们正在考虑部署丕孔的树莓派,但你不具备对!Pi-hole可以直接安装到一些不同的Linux操作系统上,也可以使用Docker部署为容器(这是我们在balenaCloud上所做的事情)。您还可以使用balenaCloud部署到所有受支持的设备。


讲解

1.设置Raspberry Pi

我们将通过从仪表板上进行下载,使用balenaOS刷新SD卡,并将该​​设备添加到balenaCloud中,以推送Kyle的项目,并进行设置,以便以后可以轻松更新。

我们建议使用Raspberry Pi的以太网接口,设置一个静态IP地址并将设备硬连线到路由器中,尽管如果这样做不可行,无线也可以使用,只需确保在下面的OS下载步骤中对其进行配置。

首先要做的是设置balenaCloud帐户;这意味着要注册(如果尚未注册),添加应用程序和添加设备。

注册balenaCloud

您需要做的第一件事就是注册一个帐户。如果您已经拥有GitHub或Google帐户,则可以使用该帐户登录并绕过注册过程。

创建一个应用程序

使用Raspberry Pi 3默认设备类型添加应用Starter程序,然后选择作为应用程序类型,然后点击Create New Application

这将带您进入新创建的应用程序的仪表板,在这里可以继续进行下一步并添加设备。

添加设备并下载操作系统

创建应用程序后,您可以通过单击“添加设备”按钮在该应用程序中设置和添加设备。添加设备时,请指定设备类型(在本例中为Raspberry Pi 3),如果要连接到无线网络,则也可以在此处设置WiFI SSID和密码。

此过程将创建为您的应用程序和设备类型配置的自定义映像,并包括网络设置(如果已指定)。

注意:刚入门时,开发映像将非常有用,因为它允许进行许多测试和故障排除功能。有关显影和生产图像之间差异的更多详细信息,请参见此处。如果您有信心,可以继续进行并立即部署生产映像,这就是我正在运行的。

刷新SD卡并启动设备

下载完操作系统映像后,就该刷新SD卡了。您可以为此使用balenaEtcher。

刷新过程完成后,将SD卡插入Raspberry Pi中并连接电源。

设备首次启动时,它会连接至仪表板,之后您将可以看到该设备已列为在线并继续进行下一步。

故障排除:只需几分钟,新设备便会出现在仪表板上。如果几分钟后仍未在设备上显示您的设备,则说明出现了问题。有一个广泛的故障排除指南文档中,有很多的信息,这可能是为什么,但如果你仍然不能得到你的设备在线,请到论坛,我们将能够提供帮助。


2.设置配置选项

注意:此部分已于2019年4月22日进行了修订-所有变量现在都是环境变量。

为了在Pi-hole上运行,我们需要在balenaCloud中设置一些配置选项。我们将所有这些都指定为应用程序环境变量

名称 目的
TZ 例如Europe/London 为了同时通知您所在位置的时区piholednscrypt-proxy服务,以便在应用程序中正确设置时间和日期。
DNS1 127.0.0.1#5053 告诉Pi-hole在哪里转发未被阻止的DNS请求。我们在这里使用dnscrypt-proxy项目(在端口5053上运行),但是您可以指定自己的项目。
DNS2 127.0.0.1#5053 备用DNS服务器-参见上文。
DNSMASQ_LISTENING eth0 我们将其设置eth0为表明我们希望DNSMASQ在Raspberry Pi的以太网接口上进行侦听。如果您要通过WiFi连接到网络,请替换为wlan0
INTERFACE eth0 如上
WEBPASSWORD mysecretpassword 用于访问Pi-hole的基于Web界面的密码-如果不在此处定义密码,则无法访问管理面板。注意:在首次启动Pi孔之前,请务必进行此设置。否则,将生成一个随机密码。

 

 


3.部署软件

现在您的Raspberry Pi已配置完毕,已启动并已连接到balenaCloud,您可以将应用程序代码推送到设备上了。

安装balena CLI工具

如果您的计算机上已经有(或可以设置)npm,则这很可能是快速启动和运行CLI工具的最简单方法。但是,也有适用于Windows,macOS和Linux的独立二进制文件。

CLI工具的文档是最佳入门,它涵盖了npm软件包和独立二进制文件的安装和设置。

安装并运行CLI后,第一步是通过发出以下balena login命令登录balenaCloud :

一旦达到这一点,并且已经可以正常使用的CLI登录到您的帐户,您就可以开始将代码推送到Raspberry Pi了。

从Github下载项目

下一步是从GitHub下载该项目的代码。转到:https : //github.com/klutchell/balena-pihole并下载该项目。

绿色按钮将下载项目的.zip文件,您需要将其解压缩,但是如果您已经熟悉Git,则可以git clone按常规方式使用。

将项目代码推送到您的Raspberry Pi

有了CLI设置并下载了最新代码后,您现在可以执行一个命令将该代码推送到balenaCloud,这又将构建Docker映像并处理在设备上设置并运行它的过程。

在解压缩的项目目录中,执行balena push <appName>,其中appName是您在指南开头设置的应用程序名称。例如:balena push balenaPi-hole

如果一切正常,几分钟后,仪表板中的设备信息屏幕应如下所示,显示正在运行的2个服务,每个软件组件一个。

首次输入代码时,可能需要花几分钟的时间下载(取决于您的Internet连接速度),但之后仅下载容器中的更改,因此可以更快地进行操作。


4.设置您的路由器/客户端

我们必须处理的下一件事是更改网络配置,以便所有DNS请求都通过新的Pi-hole设备而不是路由器或ISP。

我们需要在路由器或客户端设备上设置DNS服务器设置,以指向Pi-hole的本地IP地址。

我们需要的主要是您的新Pi-hole设备的IP地址。如果您在本指南的前面部分将其设置为固定/静态IP,您将知道它已经是什么。如果不是,您可以通过访问balenaCloud仪表板中的应用程序或设备列表页面来查找。

为了进行初始测试,您可能只想更改网络上的一台设备(例如您的计算机或笔记本电脑)来进行尝试。对事物的运行方式感到满意后,可以通过更改路由器或DHCP服务器上的设置将网络上的所有设备/客户端自动指向Pi-hole ,从而在整个网络范围内进行部署。动态主机配置协议(DHCP)是一种在许多网络上使用的方法,用于在计算机,智能手机和其他设备连接后自动使用正确的网络设置对其进行自动设置。默认情况下,您的路由器将发出DNS设置,指向路由器本身或ISP;我们将对其进行更改,以便您的DNS设置指向Pi-hole,以便它在请求到达您的计算机之前对其进行过滤。

在路由器上,查找与DHCP及其相关选项有关的任何内容。您正在寻找与下面类似的屏幕。如果您不确定自己在做什么,请在进行任何更改之前记下笔记或截屏,以便在出错时恢复设置。

某些路由器可能具有仅用于DNS设置的页面,而不是将它们包括在DHCP设置页面中。

路由器有数百种不同的制造商和型号,所有这些允许您使用略有不同的用户界面来配置DNS,但是基本前提是相同的。对于某些ISP提供的路由器,甚至可能甚至无法实现,在这种情况下,您将不得不单独更改所有设备上的设置,或者更改为对DHCP服务器使用Pi-hole-请参阅本指南末尾的故障排除。


windows

在Windows中,您可以通过以下方式访问连接的DNS设置:首先找到连接状态,然后转到属性,然后Internet Protocol Version 4 (TCP/IPv4)再次突出显示并单击属性,如下面的屏幕快照所示。不同版本的Window可能看起来略有不同,但原理始终相同。


苹果系统

在macOS中,找到“系统偏好设置”,然后打开“网络”窗格。左列将显示您的所有网络接口。选择您正在使用并已连接的那个,然后单击Advanced按钮,这将弹出一个类似于下面的面板,您可以在其中选择DNS选项卡并在网络上手动输入Pi-hole的IP地址。


iOS

使用iOS时,转到“设置”>“ Wi-Fi”,然后点击i所连接网络右侧的。这将打开一个新页面,您可以在其中点击Configure DNS以进入以下屏幕:


安卓系统

使用Android设备时,用于更改DNS设置的方法因版本而异。OpenDNS有一个执行此操作的指南,只要记得使用您自己的Pi-hole IP地址而不是OpenDNS。


Pi-hole还具有广泛的论坛主题,告诉您如何针对各种设备和操作系统进行设置。


5.测试!

配置DNS设置后,您现在应该已启动并正在运行。您可以运行测试以确保具有以下链接。执行此操作时,请确保已禁用所有广告块扩展程序或插件,以免导致错误的结果。

默认情况下,Pi-hole会阻止超过112,000个已知的广告域,因此无需执行其他设置工作。


下一步是什么?

查看统计

现在您的Pi-hole已启动并正在运行,您可以在内置Web界面上查看统计信息。全面的界面显示了来自网络的所有DNS请求中有多少百分比在进行广告宣传,以及网络上哪些主机提出的请求最多,所请求的最常见的广告主机是什么,等等。

如果您位于同一网络上,则可以通过在浏览器中访问新设备的本地IP地址来访问Web界面。如果您不知道设备的IP,最简单的方法是在balenaCloud仪表板上。

使用balenaCloud部署设备的一大好处是,您无需任何其他路由器配置即可立即获得远程访问设备Web界面的机会。为此,启用公共URL功能:

启用公共设备URL后,单击链接以打开Web界面。注意:您需要将其附加/admin到设备网址的末尾才能访问统计信息和管理界面。

要访问详细信息,您需要WEBPASSWORD按照指南前面所述设置服务变量,如果尚未登录,请登录。

如果您想在本地访问设备,则取决于您是否已连接一个或两个接口,此处将显示一个或两个IP地址,但该接口应能在任一接口上工作。

在上面的示例中,我将访问http://10.19.0.89/adminWeb界面-根据您自己的网络配置,您的界面将有所不同。


将网域列入白名单

现在您已经开始使用Pi-hole,几乎没有什么可做的了。享受您全新的浏览体验!

在某些情况下,Pi-hole会阻止您需要访问的内容;报告和分析服务(例如Google Analytics(分析))就是其中的一些例子。如果您运行或管理网站,则可能需要访问此类内容。Pi-hole具有内置功能,可将特定站点列入白名单(或黑名单),您可以通过基于Web的管理页面进行访问。

以手动添加域,也可以从日志中选择被阻止的条目并快速添加它们。

 

有一些有趣的项目,例如PADD,它实现了统计显示,可以在连接到Raspberry Pi的微型TFT屏幕上使用。这将有一个很好的情况下工作,例如,因为这从Thingiverse。下次我们可能会考虑扩展该项目以将其包括在内-让我们知道您是否希望看到这一点。

2019年3月6日更新:我们现在已经在PiTFT显示器上发布了设置PADD的指南


更新

Pi-hole会维护域阻止列表,并将自动检查并下载最新版本。

发布更新后,更新设备(或整个舰队!)就像推送项目代码的最新版本一样简单。balenaCloud会处理更新过程,并仅在成功构建映像后切换到您推送的新版本,以防止停机。


部署更多的Pi孔

您刚刚使用balenaCloud创建的设置的巨大好处意味着,如果您想设置第二台(或更多!)设备来为家人或朋友做同样的事情,那真的很简单。

为了使第二台设备运行相同的应用程序,仅需要刷新另一张具有与第一台设备相同的映像的SD卡,然后启动Raspberry Pi。第二台设备将出现在相同的应用程序中,并自动运行相同的软件。

各设备时要考虑的主要问题是,每个设备可能需要不同的网络设置。balenaCloud仪表板中存在执行此操作的功能,使您可以按设备覆盖设备变量。例如,如果您想为每个设备使用不同的密码,则可以在此处设置该密码而不会影响已经设置的任何其他设备。

使用balenaCloud,您可以轻松地在其他物理位置和网络中为其他家庭成员的房屋添加更多设备,同时仍然保持远程管理和维护它们的能力。


需要帮忙?

故障排除

尽管这是一个仅包含几个组件的简单项目,但是DNS是一项关键服务,因此有些事情可能会出错,从而使您无法连接到Internet。

我找不到在路由器上设置DNS设置的位置

某些路由器(通常是ISP免费提供的路由器)不允许您更改DNS设置。根据您的观点,您可能会发现这很可疑或令人讨厌,但是,在这种情况下,您可以关闭路由器上的DHCP功能,而改用Pi-hole内置的服务。Pi-hole提供了有关此设置的指南。

一切正常一段时间后停止

确保Pi-hole具有指南中所述的静态IP。这可以通过在balenaOS中设置静态IP或在路由器或DHCP服务器上为设备分配静态DHCP租约来实现。我们在文档中提供了有关设置静态IP的信息。

一旦我将DNS设置更改为Pi-hole,我的Internet访问就会停止工作

只要您设置了正确的IP地址并确认可以在浏览器中使用相同IP地址访问Pi-hole Web界面,一切就可以正常进行。在这种情况下,请检查Pi-hole设置中的上游DNS服务器是否正确。如果在此项目中使用dnscrypt-proxy,则它们应显示如下,并镜像您先前在服务变量中定义的内容。

无法登录Pi-hole网络管理界面

Web管理员界面的密码是在服务变量中定义的,WEBPASSWORD如本指南前面所述。但是,如果由于某种原因不再起作用,可以通过pihole从balenaCloud仪表板内登录服务并执行以下命令来将密码重置为您选择的其他方式pihole -a -p

我无法访问Pi-hole网络管理界面

如果您无法通过设备的本地IP地址或公共URL工具访问Pi-hole Web界面,则通常意味着Pi-hole应用由于某种原因无法完全启动。我们发现此问题的最常见原因是Pi-hole本身无法解析DNS,因此请检查您的上游服务器-是您自己的ISP服务器还是dnscrypt,其次,如果您使用Windows部署Windows Server 2003,则出现行尾问题项目。如果您使用的是Windowsgit clonebalena push则由于行尾更改,使用和可能会导致问题;我们建议您结合使用项目的zip下载,balena push或者如果您想使用,请git clone同时使用git部署方法 git push代替balena push

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 翻译:使用Pi-hole和树莓派部署网络广告拦截器 (https://www.lxx1.com/4311)

如果博客对您有帮助,请给我 赞助


热度:352℃

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据