如何将Pi-hole与OpenVPN配对以在Ubuntu/Debian Linux上阻止广告并增加隐私

时间:2020-01-09 10:45:40  来源:igfitidea点击:

我在Ubuntu服务器上安装了OpenVPN。
如何在同一Debian或者Ubuntu Linux服务器上安装Pi-hole来阻止广告,减少4G/3G/LTE流量?

Pi-hole是免费的开源软件,可以阻止广告和跟踪域。
它是根据GNU通用公共许可证发行的。
最大的优势是广告可以在网络上从智能手机到平板电脑(包括所有台式机)的所有设备上屏蔽。
它甚至会阻止iOS和Android/Windows设备上的应用广告。
好处如下:

  • 使用基于网络级DNS的阻止功能来阻止所有广告。
  • 无论使用什么操作系统,都可以与应用程序和网站一起使用。
  • 您可以将Pi-hole与VPN软件(如OpenVPN)配对以进行实时广告拦截,并节省3G/4G/LTE数据成本。
  • 由于广告和跟踪代码的阻止,您可以获得更好的隐私和安全性。

本教程提供"在包含Pi-hole广告拦截功能的Debian或者Ubuntu Linux v14.04/16.04 LTS上配置OpenVPN服务器的逐步说明"。
步骤如下。

安装OpenVPN

执行以下两个命令:

$ wget https://git.io/vpn -O openvpn-install.sh
$ sudo bash openvpn-install.sh

只需按照屏幕上的说明安装OpenVPN服务器。
有关在Linux上设置OpenVPN服务器的更多详细信息,请参见我们的分步指南。

在Linux服务器上安装Pi-hole

在此阶段,我假设您有一台可用的OpenVPN服务器。
客户端还配置为在OSX/Windows/Linux/FreeBSD/iOS/Andriod设备上使用OpenVPN。

记下您的OpenVPN服务器IP地址

执行以下命令:

$ ip a show dev tun0

输出示例:
找出您的OpenVPN服务器IP地址

请记下10.8.0.1/24 IP地址。
您还需要提供tun0作为接口名称,包括您的默认网关IP地址,例如192.168.1.254:

$ ip r | grep default
`default via 192.168.1.254 dev br0 onlin`

我们的样品设置

我们的示例设置/网络

Pi-hole是为Raspberry PI硬件设计的,但可与基于Ubuntu和Debian的Linux发行版一起使用。
在此示例中,我在Ubuntu 16.04 LTS服务器上进行设置。

安装PI-HOLE

运行安装命令,如下所示:

$ wget -O basic-install.sh https://install.pi-hole.net
$ sudo bash basic-install.sh

您将在屏幕上看到进度,如下所示:
Pi-Hole安装程序正在运行

此安装程序会将您的设备转换为网络范围的广告拦截器。

Pi孔是一个服务器,因此它需要一个静态IP地址才能正常运行。

选择Pi-hole的接口

选择OpenVPN服务器的接口,例如tun0

选择DNS服务器的协议

您必须至少为所有dns查询选择IPv4

设置静态IP地址(选择否)

您必须设置一个静态IP地址,并且必须与tun0/OpenVPNs静态IP地址匹配

接下来输入OpenVPNs服务器的IP地址,如下所示:

在此处输入您的tun0接口IP地址

最后输入您的默认路由器/网关IP地址:

设置默认路由器IP

确认设置:

静态IP设置正确吗?
是。

设置上游DNS IP地址

选择上游DNS提供商,例如Google DNS

这样就完成了:

安装完成

测试一下

在Pi-hole上执行以下命令以查看DNS是否正常运行:

$ host theitroad.local 10.8.0.1

输出示例:

Using domain server:
Name: 10.8.0.1
Address: 10.8.0.1#53
Aliases: 

theitroad.local has address 75.126.153.202
theitroad.local mail is handled by 1 aspmx.l.google.com.
theitroad.local mail is handled by 10 aspmx2.googlemail.com.
theitroad.local mail is handled by 10 aspmx3.googlemail.com.
theitroad.local mail is handled by 5 alt1.aspmx.l.google.com.
theitroad.local mail is handled by 5 alt2.aspmx.l.google.com.

现在,尝试查找广告服务器的IP地址:

$ host pagead2.googlesyndication.com 10.8.0.1

输出示例:

Using domain server:
Name: 10.8.0.1
Address: 10.8.0.1#53
Aliases: 

pagead2.googlesyndication.com has address 10.8.0.1

如您所见,10.8.0.1不是有效的公共IP地址,因此所有来自pagead2.googlesyndication.com的广告都将由我们的Pi-hole投放。

更新OpenVPN配置以推送我们的PI-hole DNS服务器

执行以下命令:

$ sudo vi /etc/openvpn/server.conf

删除或者注释掉现有的DNS条目:

#Stop using Google DNS for our OpenVPN
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"

接下来添加我们的PI-Hole DNS IP地址:

push "dhcp-option DNS 10.8.0.1"

保存并关闭文件。
重新启动OpenVPN服务器:

$ sudo systemctl restart openvpn@server

打开我们的OpenVPN子网的端口53和80

执行以下命令:

$ ufw allow proto tcp from 10.8.0.0/24 to 10.8.0.1 port 80
$ ufw allow proto tcp from 10.8.0.0/24 to 10.8.0.1 port 53
$ ufw allow proto udp from 10.8.0.0/24 to 10.8.0.1 port 53

现在,重新连接所有OpenVPN客户端,您应该能够浏览所有内容,而无需在移动设备上投放广告。
您可以使用以下网址查看PI漏洞统计信息:

http://10.8.0.1/admin/

您可以将某些域列入白名单或者黑名单。