先说AdGuard,借官方的宣传,叫做“世界上最高级的广告拦截程序!”,岩兔站第一次接触AdGuard是使用它推出的Chrome插件,装到Chrome上真是美滋滋,已经很多年没看到过广告了。
但是现在用手机的比例远远超过电脑,奈何手机Chrome不支持插件,所以手机去广告成了一大困难。虽然AdGuard也是支持手机的,但需要安装客户端,开启dai`理才能去广告,非常不方便。于是就想着其他无感去广告方法。
这次用到的是AdGuard推出的AdGuard Home允许用户在家中部署一套DNS服务器,借助黑名单机制,过滤广告。由于软件运行环境部署比较复杂,所以这次使用Docker完成AdGuard Home 安装
环境准备
- 路由器(IP:192.168.1.1)
- CentOS 7服务器( IP:192.168.1.2)
- CentOS中安装Docker(虚拟IP段:10.0.0.0/24)
- AdGuard Home Docker Hub
准备工作
由于DNS服务的特殊性,需要局域网内访问Docker容器,所以运行容器之前需要做一些准备工作。
添加静态路由
为了让192.168.1.0
与10.0.0.0
通信,需要在路由器中添加一条静态路由表
路由器中添加路由表相当于“全局”更新,如果只想用测试机进行测试,可以在windows命令行中执行
route add -p 10.0.0.0 mask 255.255.255.0 192.168.6.2
其中192.168.6.2
是Linux虚拟机的IP地址。
开启Linux路由转发
将Linux宿主机当成“路由器”使到192.168.1.2
的请求能转发到docker网段。
/etc/sysctl.conf
中插入一行net.ipv4.ip_forward = 1
,并重启网络服务
[root@centos ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@centos ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@centos ~]# service network restart
安装Docker
详见Docker官方教程:
https://docs.docker.com/install/linux/docker-ce/centos/
Docker中运行AdGuard Home
Docker运行默认会自动分配一个IP地址,但我们希望用做DNS服务的是个固定IP地址,所以首先要创建网络。
创建网络
[root@centos ~]# docker network create --subnet=10.0.0.0/24 lan
创建网络,命名为lan
,网段是10.0.0.0/24
运行Docker
[root@centos ~]# docker run -d --net=lan --ip="10.0.0.53" --restart=always adguard/adguardhome
- -d:表示后台运行
- –net:使用新建的
lan
网络 - –ip:设置IP地址为10.0.0.53
- –restart=always:总是随机启动
启动完成之后以,局域网内任意电脑打开浏览器输入http://10.0.0.53:3000
进入安装流程。
去广告效果
去广告效果岩兔站亲测,如果Chrome插件去广告效果是10分的话,DNS去广告效果也就6-7分。
第一因为它是国外软件,去本地广告略显水土不服,去国外广告公司的广告非常精确。但是后台支持自定义去广告规则,也算能满足需求。
第二因为是借助DNS去广告,所以广告虽然过滤掉了,广告位还留着,在页面上多多少少有些碍眼,这一点远不如浏览器插件体验好。但对于不能装插件的手机来说,也不错了。
越玩越高级。不过我记得好像有一个公共的去广告DNS服务器。
是有个公用的https://adguard.com/zh_cn/adguard-dns/overview.html,试了试好像没什么效果。
自己弄一个纯属瞎折腾