Docker 玩法

飞牛NAS部署AdGuard Home:全屋广告拦截DNS

为什么需要在飞牛NAS上部署AdGuard Home

家庭网络中的智能电视、手机、平板和电脑,几乎每台设备都会产生大量DNS请求。默认情况下,运营商DNS不仅解析速度慢,还会在DNS层面插入广告或追踪代码。AdGuard Home是一款开源的网络级广告拦截软件,它接管整个局域网的DNS解析,在域名解析阶段就屏蔽广告、追踪器和恶意网站,效果远优于浏览器插件,且对全屋设备生效。

飞牛NAS(fnOS)基于Debian,Docker支持完善,非常适合作为家庭DNS服务器。将AdGuard Home部署在NAS上,24小时运行,功耗低,且无需额外购买硬件。

准备工作

确保你的飞牛NAS已安装Docker应用,并拥有SSH权限或飞牛应用中心的Docker管理界面。建议为AdGuard Home设置静态IP,避免重启后IP变化导致设备无法解析。

登录飞牛NAS的Docker管理界面,或在SSH终端中执行以下命令验证环境:

docker --version
docker compose version

如果一切正常,我们开始部署。

部署AdGuard Home

创建配置目录

先在NAS文件系统中为AdGuard Home创建数据目录,建议放在存储空间下,例如:

mkdir -p /vol1/docker/adguardhome/work
mkdir -p /vol1/docker/adguardhome/conf

如果你使用飞牛应用中心的Docker管理,也可以在创建容器时指定卷映射。

使用Docker CLI部署

SSH登录飞牛NAS,执行以下命令拉取并启动容器:

docker run -d \
  --name adguardhome \
  --restart=unless-stopped \
  -p 53:53/tcp -p 53:53/udp \
  -p 784:784/tcp -p 853:853/tcp \
  -p 3000:3000/tcp \
  -v /vol1/docker/adguardhome/work:/opt/adguardhome/work \
  -v /vol1/docker/adguardhome/conf:/opt/adguardhome/conf \
  adguard/adguardhome:latest

参数说明:53端口用于DNS解析,3000端口用于首次配置向导,784和853分别对应DNS-over-QUIC和DNS-over-TLS,可选映射。

使用Docker Compose部署

如果你更习惯Compose方式,创建 /vol1/docker/adguardhome/docker-compose.yml 文件:

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

然后在目录下执行:

cd /vol1/docker/adguardhome
docker compose up -d

初始化配置

容器启动后,浏览器访问 http://你的NAS_IP:3000,进入AdGuard Home初始化向导。

点击“开始配置”,设置Web管理界面端口(默认3000,建议改为8080或80,避免与NAS冲突)。接着设置管理员用户名和强密码,这一步务必记住。

完成向导后,管理界面会跳转到新端口。例如你设置了8080,则访问 http://你的NAS_IP:8080

配置上游DNS服务器

登录管理界面后,进入“设置” -> “DNS设置”。上游DNS建议配置多个,提升冗余和速度。推荐以下组合:

https://dns.alidns.com/dns-query
https://doh.pub/dns-query
tls://dns.google

在“DNS服务器配置”中,将上述地址填入“上游DNS服务器”输入框,每行一个。同时勾选“并行请求”以加速解析。

“Bootstrap DNS服务器”填写:

223.5.5.5
119.29.29.29

用于解析上游DNS的域名。保存设置。

启用广告拦截过滤器

AdGuard Home内置了多种拦截列表。进入“过滤器” -> “DNS拦截清单”,点击“添加过滤器”,推荐添加以下两个高人气规则:

https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

添加后点击“检查更新”,再点击“应用”。等待列表下载完成,即可看到拦截统计开始增长。

如果你需要更精细的规则,可以添加中文地区的广告拦截列表,例如:

https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt

设置局域网设备使用AdGuard Home

AdGuard Home已经运行,但要让全屋设备使用它,需要修改路由器或各设备的DNS设置。

方式一:修改路由器DHCP设置

登录你的路由器管理后台,找到DHCP设置,将首选DNS改为飞牛NAS的IP地址,备用DNS留空或填写 223.5.5.5。保存后重启路由器或让设备重新获取IP,所有自动获取IP的设备将自动使用AdGuard Home解析。

方式二:手动修改设备DNS

如果不想改路由器,可以在每台设备的网络设置中手动将DNS改为 你的NAS_IP。例如Windows系统,在网络适配器属性中修改IPv4 DNS。

测试与验证

配置完成后,在任意联网设备上访问 http://你的NAS_IP:管理端口,查看AdGuard Home仪表盘。你应该能看到今日查询数和拦截数在增长。

为了确认拦截生效,可以尝试访问一些知名广告测试网站,或者直接查看仪表盘中的查询日志,过滤“被拦截”类型,可以看到大量广告域名被屏蔽。

另外,在命令行终端执行以下命令验证DNS解析是否走AdGuard Home:

nslookup doubleclick.net

如果返回的服务器地址是你的NAS IP,说明解析生效。

常见问题与优化建议

端口被占用

如果53端口被系统自带的DNS服务占用,需要先停止systemd-resolved:

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

然后重新创建容器。

开启DNSSEC与缓存

在“DNS设置”中,勾选“启用DNSSEC”提升安全性,同时启用“DNS缓存”并设置缓存大小,比如64MB,可显著提升解析速度。

访问控制

为防止局域网外设备滥用你的DNS,在“设置” -> “访问设置”中,勾选“仅允许指定客户端”,并添加你家里的网段,例如 192.168.1.0/24

总结

通过Docker在飞牛NAS上部署AdGuard Home,只需几步操作,就能获得一个全屋生效的广告拦截DNS服务。它不依赖浏览器插件,能拦截电视、手机、电脑上所有应用的广告请求,同时加速DNS解析、保护隐私。配合NAS的7x24小时运行特性,一次配置,长期受益。建议定期在管理界面中更新拦截清单,并观察查询日志,不断优化规则,让网络环境更加干净清爽。

💬 评论区
发表评论

暂无评论,来说两句吧