站点图标 Linux-技术共享

AdGuard Home 自建DNS防污染,去广告教程

前言

Ad­Guard Home 部署的方式有很多种,一般二进制文件部署和直接编译到 Open­Wrt 系统中是大家所常用的。而博主个人倾向于使用 Docker 部署,主要是考虑到其更新维护成本低、玩法多样、配置灵活。就比如对于科学上网的需求而言,需要对 DNS 进行分流,那么就可能需要使用 Docker 进行多容器部署与管理。这篇文章除了 Ad­Guard Home 的部署,还有一些与 Docker 相关的网络知识,认真看完这篇教程你会收获大量的知识和启发。

安装部署 AdGuard Home

Docker 部署涉及到网络模式的选择,小伙伴们可以根据自己的实际情况选择适合自己的。

Bridge 网络模式

博主个人并不推荐使用 Bridge 网络模式部署,因为要预先设定端口,考虑端口占用情况,且一旦固定后续只能通过重建容器进行更改,限制多、灵活度差。由于它是 Docker 默认的网络模式,且很多教程存在误导性质,所以还是简单说明一下部署方法,顺便科普一下 Ad­Guard Home 每个端口的作用。

官方提供的容器启动命令示例格式化后如下:

docker run -d \
    --name adguardhome \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/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 \
    adguard/adguardhome

从示例中可以得知 Ad­Guard Home 所需要用到的端口,但实际情况并不是都会用到,这需要根据自身的需求来决定,以下是这些端口的作用:

如果只是本地局域网使用一般只需要映射 53 和 3000 端口:

docker run -d \
    --name adguardhome \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    -p 53:53/tcp \
    -p 53:53/udp \
    -p 3000:3000/tcp \
    adguard/adguardhome

macvlan 网络模式

TIPS: 准确来说应该叫“macvlan 网络下的 bridge 模式”,因为说起来太拗口,而且 macvlan 其他模式很少使用,同时也为了和默认的 bridge 网络模式做区分,所以博主习惯将它称之为“macvlan 网络模式”。

使用 macvlan 网络模式的好处是容器相当于是一个独立的设备,可以拥有一个独立且固定的 IP 和 MAC 地址,不需要理会任何端口的状态,所有端口都可以使用默认的,兼容性更好。你甚至可以部署多个 Ad­Guard Home ,用作不同的用途,灵活度非常高。非常适合在本地局域网下的使用,就比如你可以部署在 NAS 上。macvlan 网络模式唯一缺点是宿主机无法与容器直接通讯(Docker 为了安全性做了隔离处理),如果宿主机想要使用可能需要进行一些特殊的设置,或者通过路由器转发的方式使用。

Host 网络模式

Host 网络模式直接使用宿主机的网络,没有网络隔离,不需要考虑容器端口的映射,在容器启动后可以自由调整被占用的端口。适合在本机使用 (lo­cal­host),或者直通外网的设备对外开放服务,就比如 VPS 、主路由。

docker run -d \
    --name adguardhome \
    --restart unless-stopped \
    --log-opt max-size=1m \
    --network host \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    adguard/adguardhome

AdGuard Home 初始化设置

使用网页浏览器访问 IP + 3000 端口即可进入到 Ad­Guard Home 的初始化界面,比如 IP 是 10.0.0.53,那么就访问 http://10.0.0.53:3000

 

 

接着是监听接口(网卡)和端口设置,根据不同的网络模式和实际情况需要作出不同的修改:

 

 

然后是设置管理用户名和密码,后面都是直接下一步。

 

 

完事之后输入用户名和密码登录,就来到了仪表盘页面。

 

 

至此 Ad­Guard Home 就部署完成了。

在设备上使用 AdGuard Home DNS

最后你可以在 Ad­Guard Home 的设置指导页面找到相应系统的 DNS 设置方法,先不要着急在路由器上使用,建议先设置电脑或手机,通过访问一些网站来测试是否能正常解析。正常的情况下在仪表盘界面会有统计信息,在查询日志界面你会看到解析的详细记录信息。

 

 

尾巴

不要以为到这里就结束了,一切都还只是刚刚开始。有关 DNS 防污染以及去广告等优化增强设置博主将会在后面的教程中进行详细说明。

前言

这篇教程来详细讲解如何正确的设置 Ad­Guard Home ,来更有效的防止 DNS 污染以及去广告。与其它 Ad­Guard Home 教程的只讲方法、不讲逻辑的胡乱设置不同,认真看完这篇教程你会收获大量的知识和启发。

设置

常规设置

文字介绍已经很好理解了,按需设置即可。重点是以下几个,如果你尚处于单身状态,那么就不要开启,否则会影响生理卫生知识的学习。

 

 

DNS 设置

 

 

上游 DNS 服务器

AdGuard 文档中给出了一些知名的 DNS 服务器供选择。

根据所在网络环境的不同推荐以下两组支持 ECS 功能的 DNS 服务器。如果有科学魔法爱国上网需求,你应该部署两个 Ad­Guard Home ,通过 DNS 分流才能达到较为理想的防污染和去广告效果。

如果你看过《AdGuard Home 是什么?为什么无法去广告?》那篇文章,那么你一定还记得 DoT/​DoH 技术。所以这里的上游 DNS 自然是要选择 DoT/​DoH 加密技术的服务器的,可以防止 DNS 解析记录被劫持、篡改以及跟踪。缺点是可能对解析速度会有些许影响,毕竟 TCP 协议不如 UDP 来得有效率,且加解密需要一点时间,不过在机器性能不错且网络通畅的情况下其实是可以忽略的,都是毫秒级别的差距。

上游 DNS 服务器输入框下面有几个单选项,字面理解应该是解析策略、模式之类的选项,官方暂时没有给出详细介绍,所以博主根据字面含义和自身实际体验总结如下:

Bootstrap DNS 服务器

Boot­strap DNS 服务器(引导 DNS 服务器)的作用只是解析上游 DoT/​DoH 技术 DNS 服务器的域名,所以这里需要填写使用 UDP 协议的传统 DNS 服务器 IP 地址。

 

 

同样的这里根据网络环境的不同推荐两组:

设置完点击测试上游服务器,没有问题点保存即可。

TIPS: 这里也可以留空,使用后面将要提到的 DNS 重写功能把 DoT/​DoH DNS 服务器的域名直接指向它的 IP 是一种更优雅的使用方式。

DNS 服务设定

 

 

DNS 缓存配置

先简单科普一下 TTL ,它是英语 Time To Live 的简称,中文翻译为 “存活时间”。放在 DNS 解析中意为一条域名解析记录在 DNS 服务器中的存留时间,单位是秒。

正常情况下 TTL 默认 0 即可,即从上游 DNS 服务器获取 TTL 值。如果你所部署的网络环境到上游 DNS 服务器的延迟比较高,那么可以适当增加 TTL 值,让缓存更持久,短时间内请求同样域名的解析会直接从缓存中读取,实现秒解析。不过 TTL 值不宜过大,不然会导致记录不能及时更新,结果是网站无法正常打开。据博主观察目前多数域名的 TTL 值普遍在 300 以内,所以给出以下设置参考值:

 

 

加密设置

设置管理页面使用 HTTPS 加密以及 Ad­Guard Home 自身的 DoH/​DoT 功能,如果不对外开放服务,只是在本地局域网使用是用不到的。对外开放 DNS 服务在中国大陆可能会有 “法律” 风险,而部署在国外网络速度缓慢,所以对于普通用户而言加密设置就成了摆设。

 

 

客户端设置

在这里可以单独设置每个设备单独使用的上游 DNS 及过滤规则,需要将设备 DNS 设置为 Ad­Guard Home 服务器的在 IP ,或者使用下面将要提到的 DHCP 设置。每个人的需求不一样,所以这个部分就不详细说明了。

 

 

DHCP 设置

使用 Ad­Guard Home 作为 DHCP 服务器去代替路由器上的 DHCP 服务器,这个功能的主要作用是自动分配 Ad­Guard Home 的 DNS 给到设备,然后配合客户端设置去做精细化 DNS 和过滤规则设置。除非是你的路由设备的 DHCP 功能缺斤少两,否则一般是用不到的。目前这个功能处于实验阶段,稳定性还有待考证。有兴趣的小伙伴可以自己去深入研究,这里不做过多赘述。

 

 

过滤器

DNS 封锁清单

这里是人民群众喜闻乐见的去广告环节。

 

 

吐槽:封锁清单这个词严重怀疑是机翻,而下面的绿色按钮是添加阻止列表。博主在查看 Ad­Guard Home 的源码后发现简体中文的翻译有很多不统一的地方,然后花了几个小时帮助他们改进了大量的翻译,可能在后续的版本中就不再叫封锁清单了。

使用官方默认的 AdGuard DNS filter 规则的效果对于中国大陆的网络而言属于聊胜于无,所以需要添加一些其它的规则。然而规则并不是越多越好,多了会影解析速度,真正需要的是高质量。博主个人比较推荐 anti-AD 和 halflife 这两个规则。

 

规则列表 | 点击查看

 

     
     
     
     
     
     
     
     
     
     
     
     
     
     

 

DNS 允许清单

在这里你可以设置排除封锁清单中的被屏蔽的域名。比如做淘宝客、广告联盟之类的人群可能会用得到,毕竟封锁清单基本涵盖了他们的业务范围。

 

 

DNS 重写

在这里你可以方便的把一个域名指向一个 IP ,简单来说这个功能相当于 hosts 。

最典型的一个使用场景是把 DoH/​DoT DNS 服务器的域名直接指向它们的 IP ,这样就不再需要进行我查我自己这样浪费时间的迷惑操作了,可进一步加快解析的速度。一般来说 DoT/​DoH DNS 服务器的 IP 是固定的,而且 IP 地址和它们自家的传统 DNS 服务器的 IP 是一致的。这里需要注意的是处在公测阶段的 DNS­Pod 是个例外 (难怪腾讯云做不过阿里云,这种细节上的东西很能体现出是否专业)。

 

 

已阻止服务

在这里你可以一键禁止访问一些热门网站和服务,比如 Face­book 、Twit­ter 。

 

 

自定义过滤规则

在这里你可以自定义符合 ad­block 语法或 Hosts 语法的规则,以及检查过滤域名是否被过滤。具体如何使用可以参考页面上的示例和官方文档。

 

 

尾巴

到这里 Ad­Guard Home 的设置就算是介绍完了,有简体中文,而且 UI 逻辑很清晰,很容易上手。

退出移动版