Linuxword Global
当前位置: 通信协议 > 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:DNS 端口。即其他设备访问 AdGuard Home 进行 DNS 解析的默认端口。因为部分系统不支持自定义 DNS 端口,所以不建议自定义。部署前务必要查看是否有其它程序占用。
  • 67, 68: DHCP 端口。除非想代替你路由上的 DHCP 服务器,否则用不到。
  • 80: 管理页面默认 HTTP 端口。可忽略,在初始化页面设置管理端口为 3000 端口即可。
  • 443:HTTPS 和 DoH 端口。本地内网环境不需要。
  • 853:DoT 端口。不使用相关功能可忽略。
  • 3000:初始化设置端口。除非通过配置文件去设置,否则必须开启。

如果只是本地局域网使用一般只需要映射 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 为了安全性做了隔离处理),如果宿主机想要使用可能需要进行一些特殊的设置,或者通过路由器转发的方式使用。

  • 创建 macvlan 网络(根据实际情况替换参数,并删除注释)

    docker network create \
        -d macvlan \ # 使用 macvlan 网络驱动
        --subnet=10.0.0.0/24 \ # 指定网段
        --gateway=10.0.0.1 \ # 指定网关 IP
        -o parent=eth0 \ # 指定网卡
        openwrt # 网络名称,随意,自己记得就行

    TIPS: 据博主的了解,用 Docker 使用 Open­Wrt 容器的小伙伴一般都创建过 macvlan 网络,还有 un­Raid 会默认创建一个 macvlan 网络。那么很大概率网段就已经被使用了,就不需要再重复创建了。执行docker network ls | grep macvlan命令可以查看已有的 macvlan 网络。

  • 启动容器(根据实际情况替换参数,并删除注释)

    docker run -d \
        --name adguardhome \
        --restart unless-stopped \
        --log-opt max-size=1m \
        --network openwrt \ # 使用之前创建的 macvlan 网络
        --ip 10.0.0.53 \ # 设置本容器的 IP
        -v $PWD/adguardhome/work:/opt/adguardhome/work \
        -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
        adguard/adguardhome

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

 

20201020030203

 

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

  • Bridge 网络模式:前面提到过在不映射80端口的情况下可以改管理界面端口为3000。
  • macvlan 网络模式:无需任何修改。
  • Host 网络模式:在多 IP 的 VPS 环境可能需要选择监听接口。端口方面,当提示占用时需要根据实际情况进行调整,是更改端口还是关闭相关占用端口的服务取决于你的最终使用场景。

 

20201020030204

 

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

 

20201020031138

 

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

 

20201020030206

 

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

在设备上使用 AdGuard Home DNS

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

 

20201020045636

 

尾巴

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

前言

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

设置

常规设置

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

  • 使用 AdGuard【家长控制】服务:如果家中有尚未成年的孩子,建议开启,屏蔽成人内容。
  • 强制安全搜索:在 Bing、Google、Yandex、YouTube 等网站上强制使用安全搜索,屏蔽 NSFW 内容。

 

20201021160826

 

DNS 设置

 

20201020032250

 

上游 DNS 服务器

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

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

  • 中国大陆网络环境推荐选择腾讯 (DNSPod) 和阿里云的公共 DNS 。使用它们你会惊奇的发现偶尔某些不存在的网站都是能正常解析的,只不过解析的结果并不是离你的代理服务器最近的 IP ,所以效果并不理想,而且非常不稳定。

    TIPS: 中国大陆不推荐使用任何海外的 DNS ,因为延迟很高且都受到了不同程度的干扰,可用性不高,强行设置只会得到减速效果或者报错。

    tls://dns.pub
    https://dns.pub/dns-query
    tls://dns.alidns.com
    https://dns.alidns.com/dns-query
  • 国际网络环境,比如海外的 VPS 或者给科学魔法爱国上网软件做 DNS ,则推荐使用 Google 和 Quad9 的公共 DNS。给科学魔法爱国上网软件使用的前提是它们必须在魔法名单中。

    tls://dns.google
    https://dns.google/dns-query
    tls://dns11.quad9.net
    https://dns11.quad9.net/dns-query

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

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

  • 负载均衡:使用加权随机算法来选择最快的服务器。用到了算法,这就很玄学了。实际其实就是随机选择一个上游 DNS 服务器中的一个进行解析请求,哪个延迟低就更偏向于用哪一个。
  • 并行请求:同时请求所有上游 DNS 服务器,取最快给出的响应结果,所以解析速度很快。在上游 DNS 服务器设置合理的情况下属于万金油方案,解析速度和访问速度都很快。所以也非常适合上游 DNS 服务器连接延迟大和不稳定的情况,就比如科学魔法爱国上网使用场景。
  • 最快的 IP 地址:同时请求所有上游 DNS 服务器,在所有响应结果中选出延迟最低且可用的 IP。因为要等待所有上游 DNS 服务器响应结果,而且还要测试 IP 延迟及可用性,所以解析速度会很慢。只适合上游 DNS 服务器延迟特别低且网络非常稳定的场景,否则实际使用中可能会遇到首次打开网页非常慢,甚至可能打不开,要多刷新几次。再者低延迟 IP 不一定速度就快,还要看实际负载情况,所以这个方案的实际可用性是最差的。

Bootstrap DNS 服务器

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

 

20201020032251

 

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

  • 中国大陆

    119.29.29.29
    119.28.28.28
    223.5.5.5
    223.6.6.6
  • 国际

    8.8.8.8
    8.8.4.4
    9.9.9.11
    149.112.112.11

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

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

DNS 服务设定

  • 速度限制:0
  • 使用 EDNS :前面提及的上游 DNS 服务器都是支持 EDNS (ECS) 的,它有助于获取到更合适的 CDN 节点,建议勾选。
  • 使用 DNSSEC : 用于效验 DNS 记录的签名,防止 DNS 缓存被投毒,建议勾选。勾选后会在日志页面请求列显示小绿锁图标。
  • 禁用 IPv6 :丢弃 IPv6 的 DNS 查询。在本地网络和网站都支持 IPv6 会优先使用 IPv6 去访问网站,但目前 IPv6 的建设还处于初级阶段,大多数地区的 IPv6 网络体验都一般。还有一些代理软件对 IPv6 支持不佳,开启后可能会影响国际互联网的访问。如果对此没有特殊需求,那么直勾选即可,这样既不影响 BT 软件连接 IPv6 网络,又可以优先使用 IPv4 来上网。如果只有 IPv4 ,那么是否勾选没有区别。

 

20201020032252

 

DNS 缓存配置

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

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

  • 覆盖最小 TTL 值:600
  • 覆盖最大 TTL 值:3600

 

20201020032253

 

加密设置

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

 

20201021160403

 

客户端设置

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

 

20201021160404

 

DHCP 设置

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

 

20201021160405

 

过滤器

DNS 封锁清单

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

 

20201020033102

 

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

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

 

规则列表 | 点击查看

 

     
     
     
     
     
     
     
     
     
     
     
     
     
     

 

DNS 允许清单

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

 

20201021161521

 

DNS 重写

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

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

 

20210423045545

 

已阻止服务

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

 

20201021161524

 

自定义过滤规则

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

 

20201021161523

 

尾巴

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

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(1) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2314 篇
  • 草稿数目: 12 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 5878 个
  • 注册用户: 139 人
  • 访问总量: 8,648,051 次
  • 最近更新: 2024年4月24日