Synology Docker Install AdGuard Home

2023-08-31
2023-08-31
6 min read
Hits

  本文是博主在群晖 Docker 上安装 AdGuard Home 以提升 DNS 解析速度和过滤广告的一些简要过程和配置记录,属于是半教程半备份吧。(因为博主懒得把 Docker 里的配置文件映射出来 hhh)

  当然也不全是如此,因为还涉及到版本更新的问题。新版本直接读取旧配置文件或者用旧配置文件直接替换新版本的配置,总会存在一定的风险,抛开这个兼容性问题不说,因为存在旧配置文件,可以很容易的升级 Docker 恢复配置,就容易忽视版本更新迭代所新增的配置或修改的原参数,新功能没有用上,升级版本的功效立减 50%😄

AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。

                     ——摘自 AdGuard Home 官网

新建 Docker

  现在新版的群晖 Docker 改叫 Container Manager 了,没有关系,还是原来的配方,还是熟悉的味道。在“注册表”搜索下载 adguard/adguardhome,然后各种常规配置就随各位看官的兴趣爱好了。博主是开启了资源限制,因为后期所有 DNS 解析都会经过 AdGuard Home,所以作为网络中的主力,CPU 优先级必须是“高”咯,内存限制就仁者见仁智者见智了,博主一般都会做限制,以防单个 Docker 发生问题,影响整个 NAS。然后自动重新启动肯定也是要打开的,要不群晖一重启,父母就要打电话找你了😄

映射 Docker 端口

  上面那些常规操作都无关紧要,最重要的一点是三个端口的映射:把 Docker 内部的 53、853 和 3000 端口映射出来。当然如果你想全部映射出来也行,只要端口都没有冲突就可,博主尚不清楚其余端口都是做什么用的。

不要听信网上那些老教程,说把 Docker 内部的 80 端口映射出来,然后还说因为外部 80 端口已经在用了会冲突,所以建议内部的 80 端口映射成外部的 3000 端口作为管理口。现在新版的 AdGuard Home 已经改了,初始管理页面就是 3000 端口。所以 Docker 映射只需将内部的 53、853 和 3000 这三个端口映射出来就行。

给群晖配置固定 IP

  其实这一条应该不用多说,上到 NAS 一般都会配置固定 IP,利于各种内外网通信。这里是因为日后内网的所有设备的 DNS 解析都需要通过 AdGuard Home,AdGuard Home 又是安装在了群晖的 Dokcer 中,所以肯定需要给它的“载体”——群晖配置一个固定 IP,用于给路由器或内网设备自定义 DNS 使用。

初始化 AdGuard Home

  准备工作都做完,接下来就可通过群晖IP:3000进入 AdGuard Home 的配置页面了。

  默认的管理页面端口还是 80,多半都会冲突,可以改为 3000。DNS 端口 53 无需修改,如果发现有端口冲突,尽量去群晖排查是被什么应用给占用了,然后解除那个应用对 53 端口的占用,让 AdGuard Home 独享 53 端口。否则后期自定义 DNS 使用非标端口将很难或无法配置

  然后跟着提示新建用户,然后无脑下一步就可完成初始化。

设置上游 DNS 服务器

  登陆 AdGuard Home,目前仪表盘还是一片空白,我们直接进入 DNS 设置,先配置上游 DNS 服务器。

注意:不要动“常规设置”!不要动“常规设置”!不要动“常规设置”!重要的事情说三遍。因为中国内地网络环境的问题,勾选了常规设置中的“浏览安全”和“家长控制”服务后,网络虽能联通,但访问任何页面都会显示证书的问题导致网页无法访问。这一点在结合了或者说套娃了其余软件后,发现页面无法访问,很难排查出问题源头,博主深受其害……

  上游 DNS 服务器配置应该是本文的精华所在了,估计目前全网都找不出第二个来。buff 加满,直接原地起飞。

  1. 优先采用带有强制 HTTP/3 的加密 DNS-over-HTTPS,并且没有回退到 HTTP/2 或更低版本
  2. 筛选出了中国内地能使用的 DNS-over-QUIC
  3. 针对中国内地网络环境,追加了 360 和 DNSPod 的 DNS-over-TLS
  4. 优先直接使用公共 DNS 的 IP,省去了 Bootstrap DNS 解析域名的时间
  5. 拥抱 ipv6,采用了谷歌的 h3://[2001:4860:4860::8888]/dns-query
  6. 最后或者说最差也使用了既安全又快的 DNS-over-TLS 协议,且覆盖了最常用的公共 DNS
  7. 各厂商只选用最佳的一个 DNS 服务器,在避免冗余的情况下又保障了 SLA

  下面放出精华。已经按协议的强弱进行排序了,不过博主没有再针对当前网络环境做进一步排序了,同协议大家可以随意排序。因为实际上能影响的解析时间微乎其微,估计排序能节省出来的时间都比不上排序所花的时间。

h3://223.5.5.5/dns-query     # 阿里公共 DNS
h3://unfiltered.adguard-dns.com/dns-query     # AdGuard DNS
h3://1.1.1.1/dns-query     # CloudFlare DNS
h3://[2001:4860:4860::8888]/dns-query     # 谷歌 DNS
quic://dns.east.comss.one     # Comss.one DNS
tls://dot.360.cn     # 360 安全 DNS
tls://dot.pub     # DNSPod 公共 DNS

  注意下面的请求选择“并行请求”,还是因为中国内地网络环境的问题,选择其他选项都可能会导致 DNS 解析减速。

Bootstrap DNS 配置

  其实实测 Bootstrap DNS 无需改动,但因为想尽可能的加速 DNS 解析,所以博主优先使用了运营商默认的 DNS,大家可根据自己运营商默认的 DNS 进行修改。

58.240.57.33     # 江苏联通首选 ipv4 DNS
221.6.4.66     # 江苏联通备用 ipv4 DNS
2408:8000:aaaa::     # 江苏联通首选 ipv6 DNS
2408:8888::8     # 江苏联通备用 ipv6 DNS
9.9.9.10     # AdGuard Home 自带 Quad9 ipv4 DNS
149.112.112.10     # AdGuard Home 自带 Quad9 ipv4 DNS
2620:fe::10     # AdGuard Home 自带 Quad9 ipv6 DNS
2620:fe::fe:10     # AdGuard Home 自带 Quad9 ipv6 DNS

  然后可以点击测试上游 DNS,根据报错可以适当删除无法访问的上游 DNS 服务器,直至无报错提示后点击应用保存配置。

其余配置

  其余配置的原则就是三点

  1. 安全第一
  2. 不限制速度或性能(群晖 Docker 性能应当给足)
  3. 尽可能的多缓存

  所以我们勾选 EDNS 和 DNSSEC 的相关选项,并且关闭速度限制,然后开启“乐观缓存”。具体配置如下所示

  1. 速度限制设为 0(每个客户端每秒钟查询次数的限制,设置为 0 意味着不限制)
  2. 启用 EDNS 客户端子网(在上游请求中加入 EDNS 客户端子网(EDNS Client Subnet,即 ECS)选项,并在查询日志中记录客户端发送的数值)
  3. 启用 DNSSEC(在发出 DNS 查询中设置 DNSSEC 标志并检查结果(需要启用 DNSSEC 的解析器))
  4. 启用乐观缓存(即使条目已过期,也让 AdGuard Home 从缓存中响应,并尝试刷新它们)这是新版 AdGuard Home 增加的功能,有利有弊,但博主认为应该是利大于弊。因为我们日常访问的大多数大型网站或应用,服务器 IP 和 DNS 配置都不大会变更,即使会变更,我相信 AdGuard Home 也会及时刷新缓存,所以还是启用吧。毕竟它也是个新功能,如果不好,AdGuard Home 也没必要加上嘛~

  设置完成后注意保存~

DNS 黑名单配置

  这里大家就根据自己需求添加开启就好。博主勾选了默认的两条,又从列表中选择了两条针对中文的过滤规则。

  然后整个 AdGuard Home 配置就完成啦。接下来在各个路由器上把群晖的 IP 作为自定义 DNS 服务器就可以享受 AdGuard Home 为我们提供的极速 DNS 和广告过滤服务了。当然这边建议再添加一个 114.114.114.114 作为备用 DNS,原因也有两点

  1. 万一群晖/Docker/AdGuard Home 三者之一挂了,还有备用 DNS 可以提供解析
  2. 114 DNS 因为没有提供 DoH/DoT 等,博主没有把它加入 AdGuard Home 的上游 DNS 服务器列表中,所以还有一种极端情况就是上游 DNS 服务器中所有的公共 DNS(例如阿里、CloudFlare、谷歌等……)都失效了,还能尝试使用 114 的(当然这种极端情况实在是太极端了😂只能说是博主的灾备意识较高😄)

总结

  AdGuard Home 的总体配置还是较为简单的,都是图形化界面勾勾选选,包括广告过滤规则也都只要勾选就足够了。部署完成后 CPU 占用率平均都不到 1%,内存占用率也只有百兆左右。这可比杀鸡用牛刀的 OpenWrt 香多了😂

  主要还是 DNS 解析服务器的挑选适配上需要花一丝精力,不过还是挺值得的,网速肉眼可见的快了,部署半天左右,平均处理时间只有五毫秒了,有乐观缓存的加持,看别人使用一段时间之后,平均处理时间只有惊人的一毫秒😨还是可喜可贺的。

Avatar

Hui.Ke

❤ Cyber Security | Safety is a priority.