技术笔记

AdGuard Home:一台 NAS,让家里所有设备都不再看广告

yaobingbin yaobingbin · · 约 6 分钟 · 0 条评论
AdGuard Home:一台 NAS,让家里所有设备都不再看广告

一句话结论

AdGuard Home 是装在 NAS 上的 DNS 过滤服务器,最大的价值是”一次配置,全家生效”——手机、电脑、电视、智能音箱全都不用装任何插件,因为过滤发生在 DNS 这一层。它比浏览器插件强的地方在于:连那些装不了插件的设备(智能电视、IoT 设备)也能覆盖到。

它和普通广告拦截插件的区别

对比项 浏览器插件 AdGuard Home
生效范围 只有装了插件的浏览器 整个网络的所有设备
智能电视 / IoT 覆盖不了 能覆盖
手机 App 内广告 基本无效 部分有效
配置成本 每台设备装一次 配一次,全网生效
能看到谁在请求什么 不能 能,按设备统计

一句话:插件管的是浏览器,AdGuard Home 管的是整个网络。

部署前先确认两件事

这两步没做对,后面一定出问题。

第一件:NAS 必须是固定内网 IP。 所有设备都要把 DNS 指向它,如果 NAS 的 IP 变了,全家会一起断网——因为设备找不到能解析域名的服务器了。先去路由器里给 NAS 绑定静态 IP(按 MAC 地址绑定最稳)。

第二件:确认 53 端口没被占用。 DNS 用 53 端口,NAS 上如果有其他 DNS 类服务(部分系统上 `systemd-resolved` 会占),要先处理掉。SSH 登录后查:

sudo ss -tulpn | grep :53

有输出说明被占了,先停掉占用方,或者后面改用其他端口映射。

部署:两种模式,选哪个很关键

模式一:bridge + 端口映射(简单)

services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "3000:3000/tcp"
      - "8080:80/tcp"
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf

模式二:host 网络(推荐)

把 `ports` 换成:

    network_mode: host

为什么推荐 host:用 bridge 模式 + 端口映射时,所有设备的 DNS 请求来源都会被 NAT 成 Docker 网关 IP,AdGuard 分不清是哪台设备发来的请求——按设备统计、分设备规则、查询日志全都会失去意义。改用 host 模式,容器直接用 NAS 的网络栈,AdGuard 才能看到每台设备真实的内网 IP。

代价是:host 模式下没有端口映射,容器直接占用 NAS 的物理端口,所以端口冲突要格外小心。

端口怎么安排

端口 用途 注意
53(TCP + UDP) DNS 服务,过滤就靠它 被占用可改 `5353:53`,但设备侧也要填对应端口
3000 首次安装向导 配置完成后不再用
80(或改成 8080) Web 管理界面 host 模式下别用 80,会撞 NAS 自己的管理后台

初始化时用 `http://NAS的IP:3000` 打开向导,它会让你设置管理员账号、管理界面的监听端口。host 模式下把管理端口改成一个空闲端口(比如 8080),日常就访问 `http://NAS的IP:8080`。

让全家生效的最后一步:改路由器的 DNS

容器跑起来只是第一步,不修改路由器的 DHCP DNS 设置,设备不会自动用它。

进路由器后台,找到 DHCP / LAN 设置里的 DNS 服务器 选项,主 DNS 填 NAS 的内网 IP,保存。设备重新获取一次网络(或者重启一下)就生效了。

更稳妥的做法:主 DNS 填 NAS,备用 DNS 填一个公共 DNS(比如 `223.5.5.5`)。这样万一 NAS 关机,家里网络不会整个断掉,只是没了过滤效果。

三个实用配置

上游 DNS 用加密的。 在设置里把上游 DNS 配成 DoH / DoT 形式(例如 `https://dns.cloudflare.com/dns-query`、`tls://dns.google`),这样你的解析请求不会被运营商明文看到。

按设备分组管理。 家里有小孩的话,可以单独给孩子设备建一个分组,加更严格的规则。这个功能只有在 host 模式下才好用(因为需要识别设备)。

关注查询日志里的”被放行”。 过滤规则不是越狠越好,发现某个常用 App 出问题,就去查询日志里看它被拦了哪些域名,加白名单。

常见坑

规则太激进导致 App 异常。 这是最常见的问题,不是 AdGuard 坏了。典型症状是某个视频 App 打不开或加载慢。处理办法是在自定义规则里加放行:

@@||域名^$important

NAS 重启后全家断网。 因为你把主 DNS 指向了 NAS,而 NAS 上的容器还没起来。解决办法是给容器配 `restart: unless-stopped`,并且路由器里保留一个备用 DNS。

53 端口冲突导致容器起不来。 回到部署前那一步,用 `ss -tulpn | grep :53` 确认。

小结

AdGuard Home 是那种”装一次、长期受益”的基础设施类应用。它对 NAS 性能的要求很低,但带来的体验提升是全家级别的。关键是两步:给 NAS 固定 IP,以及记得去路由器改 DHCP 的 DNS。 这两步做对了,剩下就是享受。

微信搜一搜 纳思Note
评论经后台审核通过后显示 · 请勿发布广告、外链或无关内容

发表评论

邮箱地址不会被公开。填写昵称与邮箱后方可评论。