最近在使用DietPi这个魔改版Raspbian系统时意外的发现了这个神奇的软件(软件主页:https://pi-hole.net/,正如标题所说,它可以帮你过滤整个家中的广告,但不需要繁琐地针对每台设备进行设置,算是对非智能路由及低性能路由无法过滤广告的一种解决方案。
下面就讲解一下具体的安装方法咯。
注:同样适用于其他Linux设备
0.开始之前
首先你需要为你的树莓派安装好系统,然后你可能需要针对自家的网络环境为你的树莓派设置好静态IP,不同的路由器设置方法有一定差别,具体方法自行百度(关键词:路由品牌 静态IP)。
例如我刷了LEDE的路由器的设置在这里:
不过近几年的路由器大多会针对不同的设备设置固定的IP地址,所以如果你确定自己树莓派的IP地址不会变动,不设置也是OK的。
1.安装Pi-hole
Pi-hole的安装过程比较简单,只需在终端中输入一条命令即可:
curl -sSL https://install.pi-hole.net | bash
安装过程中你可以喝杯咖啡,看会儿书,刷会儿微博,直到你进入这个界面:
一路Enter,直到这里:
选择其中一个DNS提供商,或者选择最后一项自定义:
选好之后接着一路Enter,然后你继续可以喝杯咖啡,看会儿书,刷会儿微博,直到这里:
这时就已经安装完成了,访问上面给出的网址,输入密码即可进入后台。
如果需要修改密码,在终端中输入:
pihole -a -p newpassword
2.配置路由
光设置好树莓派是没卵用的,毕竟我们要过滤的是整个局域网的广告,所以我们要针对路由器进行配置。
Pi-hole采用的是使用本地DNS服务器的方式在局域网中进行过滤,所以我们需要设置Pi-hole为当前网络的DNS。
方法1
这种方法适用于大部分路由器,直接将DNS设置在路由器上。但需要注意的是,应当将DNS设置在LAN接口上(区别于WAN),在我这里是这样的:
方法2(推荐)
这种方法适用于一些刷了OpenWRT(LEDE),DD-WRT,Tomato等自定义程度较高固件的路由器,推荐使用该方式
在DHCP选项中填入:6,树莓派IP地址
注:若使用该方式,建议将上游DNS设置为路由器
方法3
如果这些选项在你的路由器里都没有,Pi-hole也内置了一个DHCP服务器,具体设置方法不多阐述。
方法4
如果你愿意的话,你也可以针对每一台设备进行设置,方便针对不同的设备进行过滤,具体设置方法不多阐述,自行百度。
不管你使用的哪一种方式,设置完之后都建议重启一下路由器或开关一下飞行模式,让设备使用新的DNS。
3.配置Pi-hole
实际上进行完上面的步骤就已经可以使用了,下面就针对一些常用的功能进行说明。
过滤规则
过滤的规则在这里,可以看到已内置了一些规则:
实际上,Pi-hole使用的是hosts方式对广告进行过滤(类似AdAway),默认的规则对于国内环境不太友好,下面就附上适用于国内环境的一些hosts:
- 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,看介绍貌似是不满于上面那位而弄出来的。
- MWSL-hostslist:恶意网站实验室可能没多少人知道,不过其提供的OneDNS可就算是比较有名的了,这个hosts正是OneDNS中所用于屏蔽恶意网站的规则。
- AdAway:也就是安卓上的AdAway所使用的规则,不过针对中国误杀现象严重,慎用。
如果还有哪些不错的去广告hosts,欢迎在评论区中留言。
相较于通常的过滤方式(如Adblock Plus、KoolProxy等),利用hosts过滤有自己的优缺点。优点是不会拖累网速(甚至可能有一定提升),缺点是过滤效果不尽如人意。
不过如果你要是想要利用这个做一些有违我国国情的事情,放心,那样的话就相当于在你家里再上了一道防火长城(Pi-hole只能将规则中的网站解析到自身以进行屏蔽)。
黑白名单
顾名思义就是对过滤规则的手动调整,黑名单分为匹配和通配两种,建议那些整天说退游的同学可以试试。白名单主要是针对一些有防过滤广告或被误杀的网站。
隐私设置
在这里你可以设置让一些不想在日志中出现的网站或设备隐藏起来,至于有什么用嘛……那各位自己心里的B数都很清楚啊……
Pi-hole上的一些其他高级功能这里就不多赘述了,有待自行探索。
4.Enjoy it!
到这里关于Pi-hole的全部设置就完成了,打开浏览器访问一些广告较多的网站,看看广告是否被屏蔽了、仪表盘上的数字是否增加,如果没有再仔细按照上面的步骤检查一遍,尤其是关于DNS设置的部分。
好了,和广告Say Goodbye吧!
本文来自:树莓派实验室
自从装了pi-hole,我的owncloud和wordpress就死了,怎么办?
因为他们都共享web啊.你可以改一下其中一个服务器的端口.
先说解决的方法有两个。假设你装pihole和OC的设备IP是192.168.0.2,且站点文件都存放在/var/www/html目录下。那么访问pihole是192.168.0.2:80,此时OC也是用:80端口,并且在/var/www/html目录下只有一个index,这个index就像一个引导文件,一旦覆盖只会访问后安装的那个站点。(注:80端口是访问网页默认端口,不需要输入也不会显示)。解决的方法,如下
方法一:在apache里设置两个站点,站点文件存放在不同文件夹(注意权限),设置不同的端口(比如:8080)。我不推荐。。因为分站点设置繁琐,且访问的时候要敲端口192.168.0.2:8080。。
方法二:同站点不同目录访问。例如我的OC在/var/www/html/owncloud,pihole在/var/www/html/pi-hole目录。这样互相的index文件不会覆盖,/var/www/html这个首页还可以设计一个导航主页,想去OC,想去pihole,想去私人FM,去任何站。。也可以直接访问192.168.0.2/owncloud,和192.168.0.2/pi-hole(另外pihole在目录里新增一个admin的超链接,类似win的快捷方式,可以通过192.168.0.2/admin直接访问pihole)。。这个方法在我一个树莓派十几个站点的时候非常实用,不可能一个个端口去记它对应什么站,端口会忘。用目录直接访问会好一点点。