一个乐于分享的博客
关注互联网折腾服务器分享码农的日常

Docker搭建家用去广告DNS服务器

先说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.010.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去广告,所以广告虽然过滤掉了,广告位还留着,在页面上多多少少有些碍眼,这一点远不如浏览器插件体验好。但对于不能装插件的手机来说,也不错了。

转载务必注明出处:岩兔站 » Docker搭建家用去广告DNS服务器
赞 (1) or 打赏

讨论区 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    越玩越高级。不过我记得好像有一个公共的去广告DNS服务器。

    奶爸de笔记5年前 (2019-06-05)回复
    • 是有个公用的https://adguard.com/zh_cn/adguard-dns/overview.html,试了试好像没什么效果。
      自己弄一个纯属瞎折腾

      岩兔站5年前 (2019-06-06)回复