飞牛NAS(fnOS)自带的Docker功能非常强大,除了运行影音、下载类容器,它也是一个绝佳的家庭网络基础设施平台。今天我们来部署一个对全屋设备生效的广告拦截神器——AdGuard Home。通过它,你可以在DNS层面过滤掉电视、手机、电脑上烦人的开机广告和网页弹窗,而且完全免费、开源。
为什么需要AdGuard Home?
市面上的“广告拦截”App大多只能作用于浏览器,对于App内的开屏广告、智能电视的启动广告往往无能为力。AdGuard Home的工作原理是充当你的局域网DNS服务器,在设备发起域名解析请求时,将广告域名的解析结果指向一个空地址(通常是0.0.0.0),从而实现“不下载、不渲染”的拦截效果。因为拦截发生在网络入口,所以对所有连接路由器的设备都有效。
准备工作
在开始之前,请确保你的飞牛NAS已经开启了Docker服务(在应用中心安装即可),并且你有一个固定的局域网IP。建议在飞牛的网络设置中为NAS分配一个静态IP,例如192.168.1.100,这样后续配置路由器DHCP时不会出错。
第一步:创建配置目录
SSH登录你的飞牛NAS,或者直接在飞牛桌面的“终端”中执行。我们先建立AdGuard Home的持久化目录,确保容器更新后配置不丢失。
sudo mkdir -p /vol1/docker/adguard/conf
sudo mkdir -p /vol1/docker/adguard/work
如果你的存储空间不在vol1,请根据你的实际路径调整。这两个目录分别存放配置文件和运行数据。
第二步:拉取并启动容器
飞牛NAS的Docker管理界面非常直观,但为了更精确地控制端口,我们推荐使用docker-compose或命令行。这里给出一个稳定的docker run命令:
docker run -d \
--name adguardhome \
--restart=unless-stopped \
-p 53:53/tcp -p 53:53/udp \
-p 784:784/tcp -p 784:784/udp \
-p 853:853/tcp \
-p 3000:3000/tcp \
-p 80:80/tcp \
-v /vol1/docker/adguard/conf:/opt/adguardhome/conf \
-v /vol1/docker/adguard/work:/opt/adguardhome/work \
adguard/adguardhome:latest
注意,53端口是DNS服务,必须同时映射TCP和UDP。3000端口是初始化管理界面。80端口是AdGuard Home内置的Web管理界面(你也可以改为其他端口比如8080,避免和NAS自身的Web服务冲突,这里我们直接用80)。
如果你已经在飞牛上占用了80端口,请将最后的 -p 80:80/tcp 修改为 -p 8080:80/tcp,后续访问时使用8080端口。
第三步:初始化设置
容器启动后,打开浏览器访问 http://你的NAS_IP:3000。你会看到AdGuard Home的欢迎页面。
点击“开始配置”,选择“网页管理界面”监听地址为 0.0.0.0,端口保持默认的80(或你映射的8080)。DNS监听地址同样选择 0.0.0.0,端口为53。设置一个管理员用户名和强密码,完成初始化。
初始化完成后,管理界面会自动跳转到 http://你的NAS_IP (或带端口的地址)。用刚才设置的用户名登录。
第四步:配置上游DNS与广告过滤规则
登录后,点击左侧菜单“设置” -> “DNS设置”。在“上游DNS服务器”中,建议填写多个公共DNS以提高解析速度和容错性:
https://dns.alidns.com/dns-query
https://doh.pub/dns-query
223.5.5.5
119.29.29.29
这里混合使用了DoH加密DNS和普通DNS。在“DNS缓存”中,可以开启缓存并设置大小为64MB,能明显加快重复域名的解析速度。
接下来是核心的广告拦截配置。点击“过滤器” -> “DNS拦截清单”。AdGuard Home内置了几个基础规则,我们还需要添加更强大的第三方规则。点击“添加过滤器”,填入以下知名规则源:
名称:乘风规则
URL:https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/rule.txt
名称:AdGuard DNS filter
URL:https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
名称:anti-AD
URL:https://anti-ad.net/easylist.txt
点击“保存”后,AdGuard Home会自动拉取这些规则。你可以稍后在“查询日志”中看到拦截效果。如果某个规则源拉取失败,可以稍后重试,或者只保留能用的。
第五步:让全屋设备生效(关键一步)
现在AdGuard Home已经运行,但你的手机、电脑还不知道要使用它。有两种方式:
方法一(推荐):在飞牛NAS的“网络设置”中,查看NAS的IP。然后登录你的路由器后台,在“DHCP服务器”设置中,将“首选DNS服务器”和“备用DNS服务器”都填写为飞牛NAS的IP地址。保存后,重启路由器或让设备重新连接Wi-Fi。这样,所有自动获取IP的设备都会通过AdGuard Home进行DNS解析。
方法二(临时测试):在手机或电脑的Wi-Fi设置中,手动修改DNS为飞牛NAS的IP。这适合单设备测试,确认效果后再改路由器。
完成设置后,打开网页或App,你会发现广告明显减少。你可以随时访问AdGuard Home的“查询日志”,查看哪些域名被拦截,也可以将误拦截的域名加入“白名单”。
常见问题与优化建议
如果你的飞牛NAS开启了防火墙,请确保放行53、3000(或你自定义的Web端口)的入站流量。
DNS缓存设置中,建议勾选“乐观缓存”,这会在上游DNS无响应时返回过期记录,提升浏览体验。
对于IPv6网络,你需要在AdGuard Home的DNS设置中指定IPv6上游DNS,例如 2400:3200::1 或 240c::6666,否则IPv6设备可能无法正常解析。
如果家里有智能家居设备,部分设备可能不支持自定义DNS,但通过路由器DHCP强制分配,它们也会自动使用AdGuard Home,无需额外配置。
总结
通过飞牛NAS的Docker功能,我们仅用几步就搭建了一个全屋级别的广告拦截DNS服务器。AdGuard Home不仅减少了广告干扰,还能通过查询日志分析家庭网络的DNS请求,发现潜在的恶意域名。它占用资源极少(通常内存占用低于100MB),非常适合长期运行在NAS上。现在,你可以享受一个更清爽、更安全的家庭网络环境了。