本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux。
「运维之美」是一个有情怀、有态度,专注于 Linux 运维相关技术文章分享的公众号。公众号致力于为广大运维工作者分享各类技术文章和发布最前沿的科技信息。公众号的核心理念是:分享,我们认为只有分享才能使我们的团体更强大。如果你想第一时间获取最新技术文章,欢迎关注我们!
公众号作者 Mike,一个月薪 3000 的杂工。从事 IT 相关工作 15+ 年,热衷于互联网技术领域,认同开源文化,对运维相关技术有自己独特的见解。很愿意将自己积累的经验、心得、技能与大家分享交流,篇篇干货不要错过哟。如果你想联系到我,可关注公众号获取相关信息。
什么是 AdGuard Home
AdGuard Home
是一款全网广告拦截与反跟踪软件,AdGuard Home
项目是著名广告拦截器提供商 AdGuard
开源的一个 DNS Server
版本。AdGuard Home
可以将广告与追踪相关的域名屏蔽,同时你不再需要安装任何客户端软件。AdGuard Home
的工作原理是在 DNS
的域名解析过程里拦截网页上的广告。
简单来说 AdGuard Home
是一个支持广告过滤和家长控制的开源公共 DNS
服务,如同 Google 的公共 DNS 服务 8.8.8.8。AdGuard Home
同时也支持 DNS over TLS
和 DNS over HTTPS
。
项目地址:https://github.com/AdguardTeam/AdGuardHome
AdGuard Home 的主要功能介绍
- 拦截随处可见的广告
- 注重隐私保护
- 家庭保护模式
- 自定义过滤规则
在继续讲解前,我们先来看一看 AdGuard Home
强大的功能演示和管理后台。
安装 AdGuard Home
AdGuard Home
使用 Golang
开发,具有良好的原生跨平台性。它可以部署在 X86
架构的各种操作系统上,也可以部署在树莓派上,甚至你还可以借助 Docker
部署在群晖 NAS
上。
使用预编译的二进制版本安装
这里我们以 Linux
系统为例,其它系统可参考官方帮助文档:https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#installation 。
# 下载并解压 AdGuard Home
$ wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.98.1/AdGuardHome_linux_amd64.tar.gz
$ tar -zxvf AdGuardHome_linux_amd64.tar.gz
# 为了方便使用,我们将二进制文件拷贝到 PATH 所包含的位置
$ cd AdGuardHome_linux_amd64
$ cp ./AdGuardHome /usr/local/bin/
# 启动 AdGuard Home
$ AdGuardHome
上面的方法,很显然是在前台运行的。前台运行必然还是存在一些弊端的,比如:当前 SHELL
中断必然会引起程序中断等。如果你想长期稳定的运行 AdGuard Home
,最后好方法必然是将 AdGuard Home
运行成一个服务。要想将 AdGuard Home
在各平台部署为服务也是很简单的,只需运行下面这一条命令就可实现。
# Linux 下使用的服务管理器是 systemd 、Upstart 或 SysV,macOS 下使用的服务管理器是 Launchd。
$ AdGuardHome -s install
AdGuard Home
服务安装后好,你可以使用以下命令来管理它。
# 启动 AdGuardHome 服务
$ AdGuardHome -s start
# 停止 AdGuardHome 服务
$ AdGuardHome -s stop
# 重启 AdGuardHome 服务
$ AdGuardHome -s restart
# 查看 AdGuardHome 服务状态
$ AdGuardHome -s status
# 卸载 AdGuardHome 服务
$ AdGuardHome -s uninstall
使用 Docker 来安装
如果你会一点点 Docker
知识的话,我们当然还是建议你直接使用 Docker
来安装。虽然通过预编译的二进制版本安装已经很简单了,但如果使用 Docker
来安装,你会发现仅仅只需一条指令就可以搞定了。
$ docker pull adguard/adguardhome
# -v 参数后面指定的宿主机上的目录主要用作永久保存 AdGuard Home 的数据文件和配置文件,可自行根据实际情况修改。
$ docker run --name adguardhome -v /home/mike/workdir:/opt/adguardhome/work -v /home/mike/confdir:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -d adguard/adguardhome
你可能会发现上面一共是两条指令,前面不是说好了是一条指令的吗?是不是发现被骗了,我怎么可能骗你呢,这绝对是不可能的!其实这两条指令,你只需直接执行第 2 条指令就可以完成所有安装操作了。这里分开写出来仅仅是为了完整演示 Docker
整个运行过程,能让一些还不会 Docker
的同学能更容易理解一些。前面既然啰嗦了这么多,这里就再延伸说一点 Docker
容器的基本管理操作。
# 启动 AdGuard Home 容器
$ docker start adguardhome
# 停止 AdGuard Home 容器
$ docker stop adguardhome
# 删除 AdGuard Home 容器
$ docker rm adguardhome
使用 AdGuard Home
使用默认配置来设置 AdGuard Home
运行 AdGuard Home
后,我们需要通过浏览器打开 http://IP:3000
对 AdGuard Home
进行初始化设置。首次初始化会要求设置服务运行端口、账号、密码等信息,配置过程中设置的密码一定请牢记,下次登录管理后台时需要使用。
首先,我们点击 “开始配置” ,来设定网页管理界面和 DNS
服务的端口。
其次,点击 “下一步” 后,为 AdGuard Home
网页管理界面设置一个用户名和密码。
最后,点击 “下一步” 后,AdGuard Home
会展示以上配置的汇总信息。
至此,使用 AdGuard Home
默认配置的设置就算大功告成了。
使用 AdGuard Home
默认配置设置完成后,我们可以在「仪表盘」上看到 DNS
查询次数、被过滤器封锁的网站、查询 DNS
请求的客户端 IP
地址等等信息。
AdGuard Home 配置进阶
AdGuard Home
默认的配置比较简单,为了更强力地拦截广告,我们可以对 AdGuard Home
配置进行一些优化。
- 常规设置
AdGuard Home
默认配置的情况下只勾选了「使用过滤器和 Hosts 文件以拦截指定域名」这一个选项,你可以根据自身情况决定是否启用「使用 AdGuard 浏览安全网页服务」、「使用 AdGuard 家长控制服务」和「强制