AdGuard Home 中文指南

前言#

为什么写这篇文章呢？答案是，我想分享我的 AdGuard Home 实践经验，希望成为中文版本最全面的指南。

初识 AdGuard Home#

一般来说，AdGuard Home 由以下几个界面组成，我将逐一介绍它们：

仪表盘（Dashboard）#

该界面有如下内容：

统计概况：描述了 AdGuard Home 在一段时间内的 DNS 查询水平，一般认为平均处理时间越低越好。

客户端排行：一段时间内连接了 AdGuard Home 中，请求比较多的客户端。

请求域名排行：一段时间内 AdGuard Home 响应最多的域名排行。

被拦截域名排行：一段时间内，被拦截的域名排行。

经常请求的上游服务器：一段时间内，请求打到上游 DNS 的排行。

平均处理时间：一段时间内，上游 DNS 处理 AdGuard Home 的响应时间排行，一般认为响应时间越低越好。

同时该页面可以开关 AdGuard Home 的拦截器。

设置（Settings）#

设置下面有四个子项目，常规设置（General settings），DNS 设置（DNS settings），加密设置（Encryption settings），客户端设置（Client settings），DHCP 设置（DHCP settings）；先介绍常规设置

常规设置#

在该设置项里面，仅仅需要设置一下使用 过滤器和 Hosts 文件拦截指定域名 该配置项规定了更新过滤器的时间，通常我们认为 24 小时是一个合理的区间，你可以根据自己的需求进行增大或者缩小。

剩下的安全搜索，家长控制，浏览安全，则是没有必要的功能，因为境内使用体验不佳。

关于日志，你需要根据你的存储空间大小，来选择一个比较合理的区间，举个例子：

通常设备类型 | 通常存储大小 | 建议日志保留时间
小存储设备 | 256 MiB / 512 MiB / etc. | 建议日志不要过大，建议只保留一天
服务器 | > 10 Gib | 根据你的存储使用情况，可以七天以上，我个人选择直接保留 90 天

被忽略的网域选项：它适用于大量无用查询的情况。举个例子，如果您通过查询日志发现有大量的 dataflow.biliapi.com 查询，这些查询是无用的，并且会占用日志空间，那么您可以将其添加到忽略网域列表中，以减少日志空间的浪费。

DNS 设置#

这是 AdGuard Home 的功能核心，该项会极大地影响你的 AdGuard Home 使用体验。在指南中，只选择支持 ECS 功能的上游 DNS，望悉知。

上游 DNS 选项#

针对上游 DNS 的选择，如果你的选项内包含解析国外域名，那么请把上游 DNS 全替换为国外的公共 DNS；如果你仅仅想解析国内域名，但是想加密你的 DNS 请求，那么请选择国内 DNS，使用 DoT，DoH，H3，DoQ 等方案来加密 DNS 查询。如果你两者需求都没有，不建议使用 AdGuard Home 来增加你的网络复杂度。关于加密协议，我的文章也是有详细的介绍，这里就简单带过了。1

DoT（DNS-over-TLS）：通常书写为 tls://dns.example.org

DoH（DNS-over-HTTPS）：通常书写为 https://dns.example.org

H3（DNS-over-H3）：通常书写为 h3://dns.example.org

DoQ（DNS-over-QUIC）：通常书写为 quic://dns.example.org

在理想情况下：

速度表现：DoQ > H3 > DoT > DoH（首次）/ DoQ > H3 > DoH（keep-alive 保持连接） > DoT

抗 QoS：DoT = DoH > H3 = DoQ

隐蔽性：DoH = H3 > DoQ = DoT

假设我的需求是解析国外的域名，没有污染，还得能解析国内的域名，尽量调度到比较合适的 CDN 节点。那么我可能会选择如下上游 DNS：

Copy
# 下面的 DNS 组合供选择，选择延迟较低的
# Google DNS
tls://8888.google
tls://dns.google
tls://dns.google.com
https://dns.google/dns-query
https://dns.google.com/dns-query
https://8888.google/dns-query
h3://dns.google/dns-query
h3://dns.google.com/dns-query
h3://8888.google/dns-query

# OpenDNS
tls://dns.opendns.com
https://doh.opendns.com/dns-query

# Quad9 DNS
tls://dns11.quad9.net
https://dns11.quad9.net/dns-query

# AdGuard DNS
tls://dns.AdGuard-dns.com
https://dns.AdGuard-dns.com/dns-query
quic://dns.AdGuard-dns.com
h3://dns.AdGuard-dns.com/dns-query

# NextDNS
tls://dns.nextdns.io
https://dns.nextdns.io/dns-query
quic://dns.nextdns.io
h3://dns.nextdns.io/dns-query

# 欧盟 DNS
https://zero.dns0.eu/
tls://zero.dns0.eu
quic://zero.dns0.eu

这些 DNS 需要测试其可达性，然后根据延迟排名，剔除延迟太高的 DNS，将剩余的用作日常使用。

需要注意的是，在中国境内，这些 DNS 通常不会提供最快的速度，因此解析可能比国内 DNS 慢一些，但它们不受 DNS 污染的影响。此外，启用 ECS 支持后，CDN 解析的准确性仍然相对比较高。你也可以寻找第三方无污染的 DNS 作为上游 DNS。

不过现实总是妥协与苟且的，需要有一定的分流规则，不然国内访问可能会命中国内网站的 HK 节点，实际体验没那么好，那么就需要我们稍作分流。

举个例子，你想让夸克走 Ali DNS：

Copy
[/quark.cn/]quic://dns.alidns.com

我们可以这样指定某个域名 + 全部子域名走一个特定的 DNS

这样的话，quark.cn 以及所有子域名都走 AliDNS，极大地方便我们日常使用。

当然也可以分组编写，例如：

Copy
[/dbankcloud.cn/dbankcloud.ru/dbankcloud.com/]quic://dns.alidns.com

这样的话，dbankcloud 的 cn，ru，com 域名及其子域名也是全走 Ali DNS。方便日常使用。

分流规则是依赖于自己的实际实践，并不代表别人的就是最好的，还是自己手动搜集编写，这也是最好的，最适合自己的。当然，按照惯例，我也分享我的分流规则：

Copy
[/csdn.net/]quic://dns.alidns.com
[/dbankcloud.cn/dbankcloud.ru/dbankcloud.com/]quic://dns.alidns.com
[/quark.cn/]quic://dns.alidns.com
[/bytefcdn.com/]quic://dns.alidns.com
[/tencent-cloud.cn/]quic://dns.alidns.com
[/qq.com/]quic://dns.alidns.com
[/tencent-cloud.com/]quic://dns.alidns.com
[/tencentcs.cn/tencentcs.com/]quic://dns.alidns.com
[/qq.com/]quic://dns.alidns.com
[/tencent.com/tencent.cn/]quic://dns.alidns.com
[/sogou.com/]quic://dns.alidns.com
[/wpscdn.cn/]quic://dns.alidns.com
[/xunlei.com/]quic://dns.alidns.com
[/mi.com/]quic://dns.alidns.com
[/miwifi.com/]quic://dns.alidns.com
[/shifen.com/]quic://dns.alidns.com
[/bdurl.net/]quic://dns.alidns.com
[/amemv.com/]quic://dns.alidns.com
[/toutiao.com/]quic://dns.alidns.com
[/zijieapi.com/]quic://dns.alidns.com
[/douyin.com/]quic://dns.alidns.com
[/douyincdn.com/]quic://dns.alidns.com
[/douyinec.com/]quic://dns.alidns.com
[/douyinliving.com/]quic://dns.alidns.com
[/douyinpic.com/]quic://dns.alidns.com
[/douyinstatic.com/]quic://dns.alidns.com
[/douyinvideo.net/]quic://dns.alidns.com
[/douyinvod.click/]quic://dns.alidns.com
[/douyinvod.com/]quic://dns.alidns.com
[/tencent-blackboard.com/]quic://dns.alidns.com
[/tencent-cloud.com/]quic://dns.alidns.com
[/tencent-cloud.net/]quic://dns.alidns.com
[/tencent-gf.com/]quic://dns.alidns.com
[/tencent.com.hk/]quic://dns.alidns.com
[/tencent.com/]quic://dns.alidns.com
[/tencentads.com/]quic://dns.alidns.com
[/tencentcdb.com/]quic://dns.alidns.com
[/tencentclb.com/]quic://dns.alidns.com
[/tencentcloud.com/]quic://dns.alidns.com
[/tencentcloudapi.com/]quic://dns.alidns.com
[/tencentcloudbase.com/]quic://dns.alidns.com
[/tencentcs.com/]quic://dns.alidns.com
[/tencentdba.com/]quic://dns.alidns.com
[/tencentdevices.com/]quic://dns.alidns.com
[/tencentipv6.com/]quic://dns.alidns.com
[/tencentlog.com/]quic://dns.alidns.com
[/tencentmeeting.com/]quic://dns.alidns.com
[/tencentmind.com/]quic://dns.alidns.com
[/tencentmusic.com/]quic://dns.alidns.com
[/tencentsuite.com/]quic://dns.alidns.com
[/tencentwm.com/]quic://dns.alidns.com
[/tencentyun.com/]quic://dns.alidns.com
[/tqqa.com/]quic://dns.alidns.com
[/tqqyun.com/]quic://dns.alidns.com
[/qpic.cn/]quic://dns.alidns.com
[/qlogo.cn/]quic://dns.alidns.com
[/cdnnode.cn/]quic://dns.alidns.com
[/idouyinvod.com/]quic://dns.alidns.com
[/taobao.com/]quic://dns.alidns.com
[/jd.com/]quic://dns.alidns.com
[/baidu.com/]quic://dns.alidns.com
[/gov.cn/]quic://dns.alidns.com
[/bilibili.com/]quic://dns.alidns.com
[/bilivideo.com/]quic://dns.alidns.com
[/bilivideo.cn/]quic://dns.alidns.com
[/cnki.net/]quic://dns.alidns.com
[/hdslb.com/]quic://dns.alidns.com
[/163.com/]quic://dns.alidns.com
[/126.net/]quic://dns.alidns.com
[/huya.com/]quic://dns.alidns.com

那么还有一个需求，我只解析国内，但是想加密我的 DNS 查询请求，不让中间设备看到。那么一般会选择如下上游 DNS：

Copy
#---- 阿里 DNS ----
quic://dns.alidns.com
tls://dns.alidns.com
https://dns.alidns.com/dns-query
h3://dns.alidns.com/dns-query
#---- 腾讯 DNS ----
https://doh.pub/dns-query
tls://dot.pub

在国内，这两家 DNS 通常足够了，但个人更倾向于选择阿里 DNS，因为腾讯 DNS 没有 SLA 保障，而且腾讯对这项公共服务并不认真，甚至没有提供全加密协议支持。

在这种情况下，AdGuard Home 将充当加密 DNS 流量的 DNS 代理服务器。使用多个上游 DNS 可以最大程度地减少因某个 DNS 服务器宕机而导致的网络中断。

该项功能介绍的篇幅有点大，但是没办法，这就是这个 AdGuard Home 核心功能，作为一个 DNS 代理服务器，该项设置不行，直接拖累全局。

关于 DNS 查询策略，响应速度上：并行 > 负载均衡 > 最快的 IP 地址，其中最快的 IP 地址这个策略，如果部署在服务器，对于用户使用来说完全无用；如果你是部署在家庭，这个东西还是有意义的，但是可能不如并行解析（对于同一个 IP，路由可能是动态变化的，此时的最快并不代表以后的最快），以实现最快的解析速度。

后备 DNS 服务器#

当你在上游服务器填写了多个上游 DNS，并选择并行的查询策略，那么可以不配置后备 DNS 服务器。

BootStrap DNS 服务器#

引导 DNS，该项的作用就是去设置一个解析上游 DNS 的 DNS，听起来有点绕是吧？其实就是对上游 DNS 的地址做一次解析。

举个例子，你上游 DNS 写的是 tls://dns.google ，然后 AdGuard Home 并不知道该 DNS 的具体 IP 地址，BootStrap DNS 就是用于解析 dns.google 的地址，所以这里要写明 IP 地址

例如我可以写如下内容

Copy
1.1.1.1
9.9.9.10
149.112.112.10
2620:fe::10
2620:fe::fe:10

当然，不加密似乎不符合我们的要求，我们也可以写加密的 DNS，举例如下。

Copy
tls://223.5.5.5
quic://223.5.5.5
tls://1.12.12.12

私人反向 DNS 服务器#

DNS 不仅可以正向解析，还可以反向解析，不仅仅可以把域名解析成 IP 地址，也可以把 IP 地址解析成域名。这就是反向 DNS 的作用：把客户端 IP 解析成一个字符串，这个字符串可能是 ASN 号、归属地，或者所属的骨干网等等。

此项可以不写。

DNS 服务配置#

速度限制：顾名思义，就是 DNS 查询的是否限速，限速多少。一般我们设置为 0，不限速。

启动 EDNS 客户端子网：这就是上面选择支持 ECS 功能上游 DNS 的作用，我们这边要勾选。ECS 信息就是你的客户端子网信息，举个例子：

你的 IP 地址是 1.1.1.1，根据客户端子网规则，你的 ECS 信息可能是 1.1.1.0/24，判断归属地为澳洲，那么我就就近给你解析到澳洲，当然不是全部域名的权威 DNS 都支持 EDNS（ECS）。但是现在大部分支持度都不错，日常使用问题不大。

启动 DNSSEC：如果您需要 DNSSEC 支持，可以启用它。DNSSEC 是 DNS 记录的安全扩展，用于对 DNS 记录进行签名。请注意，不是所有的域名都启用了 DNSSEC，而且国内的公共 DNS 很少支持 DNSSEC 功能，据我个人测试 360 DNS 是支持的。

禁用 IPv6 地址的解析：看你自己的需求，如果不需要解析 IPv6，则可以开启。

拦截模式：选择默认，默认的规则就是返回空 IP，或则叫做 Zero IP。

不过个人实践认为，设置自定义 IP，IPv4 返回为 127.0.0.1 ，IPv6 返回为 ::1 这样反应速度最快，客户端本地直接拒绝连接，而不会等待太长时间。

DNS 缓存配置#

关于缓存就是看自己的需求了，可以将缓存大小设置为 0，即关闭缓存：每次请求都会请求上游 DNS，拉取最新的解析结果。

那么我个人的实践就是如下：

缓存大小：134217728（128 MiB）你可以看需求缩小。

覆盖最小 TTL 值：3600，你可以根据你自己的需求增大或者缩小

覆盖最大 TTL 值：604800，你可以根据你自己的需求增大或者缩小

乐观缓存：true

访问设置#

这里可以根据 CIDR，IP 或者 Client ID 去允许或者拒绝某些客户端的访问。分为白名单和黑名单，关于这个功能，接下来我会和别的功能一起组合介绍。

加密设置#

注意：该项是可选的，请明确你自己的需求。

该服务的使用要求你有一个域名，并为其申请到 SSL/TLS 证书。

服务器名称：你想解析的域名

HTTPS 端口，DNS-over-TLS 端口，DNS-over-QUIC 端口，这些就不用我过多介绍了。

填写好证书，启用即可。

客户端设置#

在该项目下，你可以持久化一个客户端，你也可以查看到连接到该 AdGuard Home 的客户端。

关于持久化客户端这一部分，可以组合加密设置，访问设置组合使用，我将会在高级使用中介绍，该项并非强制内容。

DHCP 设置#

该部分自行配置。

过滤器#

DNS 黑名单#

这就是 AdGuard Home 的灵魂，也是 AdGuard Home 与其他 DNS 套件与众不同的地方，该项设置的好，可以起到事半功倍效果。（不过该效果不会超出一个 DNS 的范围）

请你自己搜罗你喜欢的规则，并放进去吧？

DNS 白名单#

你可以把某些域名放行白名单。

DNS 重写#

在这里你可以维护自己的私有域。

在这里，你可以维护自己的私有域名。例如，即使你并不拥有timochan.me这个域名，但当你的本地客户端指向你的 AdGuard Home 时，您可以将www.timochan.me重写（解析）为10.2.3.1，以便在内网进行调试。同时，你还可以选择重写某些域名以实现你期望的效果。

已阻止的服务#

顾名思义。

自定义过滤规则#

该项可以缓解部分黑名单规则误杀，当你检查到部分域名被 DNS 黑名单误杀，你可以在这里给他释放出来。对于一般用户来说，只需要知道一下几个写法即可。

Copy
@@||example.org^ # 对 example.org 及其子域名放行
||example.org^ # 阻止 example.org 域名及其所有子域名
||*.mcdn.bilivideo.cn # 匹配 *.mcdn.bilivideo.cn，并阻止 * 是通配符，可以认为是任意内容

以上三条简单写法，足矣应付大部分情况。

当然你可以检查某个域名是否被过滤。

查询日志#

你可以在这里看到 DNS 查询的日志，命中的上游服务器，对应的解析结果，同时对上游传递的 ECS 信息。

设置指导#

该项可以看到你目前的 AdGuard Home 的地址，方便你使用。不具体介绍了。

总结#

你现在经过此番设置，已经初步完成了一个家庭 DNS 的设置，现在可以投入使用了。

进阶#

公网私有 DNS 服务器#

作为公网的 DNS 服务器，为了确保解析速度，通常会选择在国内部署。然而，国内在没有 DNS 许可证的情况下是不允许打开 53 端口的。在这种情况下，您只能考虑使用加密 DNS。您需要申请 SSL/TLS 证书以启用加密 DNS 支持。然后，您可以设置 CIDR、IP 等白名单，以便自己使用。值得注意的是，Android 和 iOS 都支持 DNS-over-TLS（DoT），因此您可以在出门时使用自己的私有 DNS 服务器，以获得全天候的 DNS 查询保护。如果您想使用 DoQ/H3 协议，可以考虑在设备上安装 AdGuard 软件。

公网小型 DNS 服务器#

全功能支持需要 AdGuard Home v0.108.0-b.18 及以上版本

接下来，我们将介绍一种组合方法，可以标识用户并允许某些用户接入。首先，我们可以像私有 DNS 服务器一样，将需要准入的设备的公网 IP 地址的变化范围计算为 CIDR 并加入白名单。但是设备的 CIDR 可能会不断变化，因此维护白名单可能会很繁琐。相反，我们可以使用以下更优雅方法：

DNS 加密 + 访问设置 - 白名单 + 持久化客户端 这套组合拳组成的设备标识符（Client ID）

首先我们在持久化客户端这里写入接入的名称以及标识符。举个例子

我客户端编辑的名称为 我的手机，那么在标识符的部分，我设置为 my-phone。此时持久化部分已经设置完成，不需要设置 CIDR 或者 IP。

然后在 DNS 访问设置添加这个客户端即可

接下来，如果你的版本不满足要求，你仅仅能使用 DoH/H3 来准入，那么你的 DoH/H3 查询字符串通常是 /dns-query，那么添加标识符后就变成了 /dns-query/my-phone

此时就实现了无需 IP 或者 CIDR 来进行 AdGuard Home 的白名单客户端设置。

如果你的版本满足要求，你需要申请一个泛域名证书，举个例子：

假设你的 AdGuard Home 域名为：dns.example.org

你需要申请下来 *.dns.example.org 和 dns.example.org 组合的泛域名证书，并在加密设置中启用。同时，你需要设置泛域名解析：

dns.example.org 解析到你的 DNS 服务器

*.dns.example.org 也需要解析到你的 DNS 服务器，你可以选择 A 记录或者 CNAME 上一条记录。

示例如下：

此时你实现了全加密协议的客户端准入，还是上述例子：

DoT 为：tls://my-phone.dns.example.org

DoQ 为：quic://my-phone.dns.example.org

DoH 为：https://dns.example.org/dns-query/my-phone / https://my-phone.dns.example.org/dns-query

H3 为：h3://dns.example.org/dns-query/my-phone / h3://my-phone.dns.example.org/dns-query

杂项#

如何开启 H3 支持#

目前需要手动开启，编辑 AdGuard Home 的配置文件 AdGuardHome.yaml ，这个文件一般存在于 /etc 目录，你可以寻找一下。

Copy
serve_http3: true
use_http3_upstreams: true

将这两项设置为 true ，重启 AdGuard Home 即可开启。

总结#

这个指南非常详尽，涵盖了 AdGuard Home 的各个方面，从基本设置到进阶使用都有详细的介绍。希望这篇指南对您有所帮助！如果有任何问题或疑问，请随时提出。

此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.timochan.cn/posts/jc/adguard_home_configuration_guide

Footnotes#

https://www.timochan.cn/posts/study/protecting_privacy_and_optimizing_networks ↩