OpenWrt 去广告神器 AdGuard Home:从安装到过滤列表管理
写在前面
这篇文章解决一个问题:家里的电视、平板、手机上网时,开屏广告、弹窗广告、网页广告太多。解决手段选了软路由上最主流的 AdGuard Home——一种装在路由器上的 DNS 级去广告工具,在路由器上拦一次,全家生效,电视盒子这类装不了插件的设备也一起覆盖。
先交代测试环境,整篇文章走实测路线:OpenWrt 24.10.7(QEMU 虚拟机,x86_64),LuCI 中文界面,AdGuard Home 用官方软件源安装,所有界面路径、命令、统计数字都在这套环境里实际点过、敲过。旁路由、DHCP、DNS 这些基础概念,前面《软路由入门(三):首次配置与旁路由》讲过,这篇文章默认你已经有一台能正常上网的 OpenWrt。
阅读建议:只想快速装上让广告消失,从「安装与首次配置」开始,照着改一个 5353 端口就够了;想搞明白过滤列表怎么管、怎么不误杀,重点读「过滤列表管理」;家里还跑着 OpenClash 这类代理插件的,「和科学上网共存」那章必读,53 和 5353 的分工搞错,全家 DNS 会直接瘫掉。
去广告的两条路:DNS 级和客户端级
广告是怎么加载的:三步链路
一条网页广告的加载路径只有三步:设备请求广告域名 → DNS 查出 IP → 加载广告脚本和素材。在浏览器里按 F12 打开开发者工具,切到网络面板刷新页面,能看到页面上的广告都是从某个专门域名加载的:
F12 → Network(网络)面板 → 刷新页面
过滤出 Script/Image 类型的请求,广告域名通常单独成行
双击打开那条失败的链接,报错是 DNS 解析错误
只要这个域名解析不出正确的 IP,广告就加载失败。三步里掐断任何一步,广告就出不来,DNS 级去广告掐的是第一步——把广告域名解析成无效地址,让广告服务器根本连不上。
这招的原理和 DNS 污染是同一个:DNS 污染是别人往你的解析结果里塞错误 IP,去广告是自己往解析结果里塞错误 IP,区别只是"拦谁"由你决定。所有能做 DNS 解析的工具都能干这个活:dnsmasq 手动指定、AdGuard Home 的 过滤列表AdGuard Home 里管理拦截/放行域名的规则集合,分黑名单、白名单、自定义规则等类型,可定期更新。 、SmartDNS、甚至代理工具自带的 DNS 模块,本质都是同一件事。
怎么认出广告域名?经验规律:域名里带 ad、ads、track、analytic 这类关键词的,多半是广告或统计域名,比如 Google 广告系的 doubleclick.net、adservice.google.com,亚马逊的 amazon-adsystem.com。不过日常使用不用自己认——过滤列表里的规则早就替你收集好了,手动认域名主要是为了写白名单和自定义规则时心里有数。
两条路一张表:拦在哪一步
主流的去广告手段分两大类,先看对比再决定用哪个:
| 维度 | DNS 级去广告 | 浏览器插件 / 客户端级去广告 |
|---|---|---|
| 拦截位置 | 域名解析阶段,返回无效 IP | 浏览器渲染阶段,隐藏/删除广告元素 |
| 生效范围 | 路由器下所有设备 | 只保护装了插件的浏览器 |
| 要不要装客户端 | 不用,设备零配置 | 每台设备都要装 |
| 能拦的广告 | 独立域名加载的广告(网页广告、部分开屏) | 页面内几乎所有广告,包括同域名广告 |
| 拦不了的 | 和内容同域名的广告、App 内广告 | 剪进视频里的贴片广告 |
| 误杀风险 | 整域名误杀,可能伤到正常功能 | 元素级误杀,影响更局部 |
| 代表工具 | AdGuard Home、dnsmasq、SmartDNS | uBlock Origin、AdGuard 插件 |
一句话总结:DNS 级去广告胜在"一次配置、全家生效、设备零负担",浏览器插件胜在"拦得干净"。两者不冲突,很多人是路由器上装 AdGuard Home 管电视盒子,浏览器里再装插件管自己那台电脑。
客户端级还有更极端的形态:代理工具的 MITM(中间人解密)——把 HTTPS 流量解密后按内容路径精确删广告,B 站这类同域名广告也能去。代价也很实在:多一层加解密,设备发热掉电、规则要长期维护、安卓 7.0 之后不信任用户自装证书,苹果端还有 app 做 SSL Pinning 防抓包。为了去广告给全家上 MITM,性能和维护成本都不划算,这也是我推荐"路由器 DNS 级打底 + 浏览器插件补位"组合的原因。
DNS 级去广告的边界:先泼一盆冷水
动手之前先把 DNS 级的边界说透,不然装完会失望:
- 只能处理整个域名。DNS 只能回答"允许访问 or 屏蔽访问",没有中间态。现在很多广告和网页内容放在同一个域名里,屏蔽这个域名等于连正常内容一起屏蔽,这种广告 DNS 级就无能为力。
- App 内的广告大部分拦不了。B 站的开屏广告、信息流广告、摇一摇跳转、底部会员购推荐,用的都是和内容同一个域名的接口,DNS 级拦不住——光靠屏蔽域名,这些广告一个都去不掉,这类要客户端级方案才能处理。
- “装了去广告网速变快"大多是错觉。DNS 过滤掉的是请求数,不是带宽;如果装完有明显提速,更可能之前的 DNS 配置本身有问题。
- 规则会误杀。网页验证码、登录弹窗偶尔会被当成广告拦掉,遇到网页功能异常,先关掉去广告再试。
那 AdGuard Home 还值得装吗?我的取舍标准很直接:家里电视盒子、智能电视、游戏机这类装不了浏览器插件的设备越多,越值得装——它们恰恰是广告最猖獗的屏幕。DNS 级拦掉能拦的那部分,剩下的再想办法,收益仍然明显。这套观点来自一支去广告主题的口播稿,我实测下来的体感一致:装完之后家里电视的开屏广告明显变少,网页也清爽一截。
AdGuard Home 是什么
开源的自托管网络级广告拦截 DNS 服务器,装在路由器上,全屋设备共用。
从广告拦截公司到自托管 DNS 服务器
AdGuard 公司 2009 年在莫斯科成立,后来总部搬到塞浦路斯,起家业务就是广告拦截——浏览器插件、Windows/macOS/Android/iOS 各平台的 AdGuard 客户端都是它的产品线。2016 年它推出了 AdGuard DNS 公共 DNS 服务,2018 年正式上线,AdGuard Home 就是这家公司把自家过滤引擎开源出来的自托管版本,用 Go 写的,GPL-3.0 协议,代码在 AdguardTeam/AdGuardHome,GitHub 上约 3.5 万 Stars(截止到本文更新时间)。
AdGuard Home 的官方定位一句话说清:网络级的广告和跟踪器拦截 DNS 服务器,装一次覆盖家里所有设备,不用装任何客户端。它比"手填 dnsmasq"强在自带一整套工具,开箱即用:
| 功能 | 说明 |
|---|---|
| 过滤列表 | 黑名单/白名单批量管理,支持社区规则源,可定期更新 |
| 查询日志 | 记录每一条 DNS 查询和拦截结果,误杀定位的第一现场 |
| 统计面板 | 查询数、拦截数、客户端排行、平均处理时间 |
| 加密上游 | 支持 DoT、DoH、DoQ 三种加密 DNS 上游 |
| 家长控制 | 已阻止的服务(TikTok/YouTube 等)、成人内容过滤 |
| DNS 重写 | 指定域名返回指定 IP,自建服务的解析入口 |
| 自定义规则 | Adblock/hosts 两种语法,自己写规则 |
这些功能全部自带 Web 界面,不用像 Pi-hole 那样拼装额外组件——这也是官方 README 里明说的卖点。
和公共 AdGuard DNS、浏览器插件、Pi-hole 的区别
把 AdGuard 产品线放一张表,选型就清楚了:
| 产品 | 形态 | 优点 | 缺点 |
|---|---|---|---|
| AdGuard Home | 自托管,装路由器/服务器 | 数据全在本地、规则随便改、能看全屋统计 | 要自己维护,占一台设备 |
| AdGuard DNS 公共版 | 改设备 DNS 地址即用 | 零安装、零维护 | 规则不可定制,只能信它给的 |
| AdGuard 浏览器插件 | 浏览器扩展 | 拦截最干净、可手动选元素屏蔽 | 只管浏览器,管不了电视和 App |
同样常被拿来对比的还有 Pi-hole,它俩都是"DNS 黑洞"流派,但 AdGuard Home 把 Web 界面、加密 DNS 上游、跨平台安装这些都做进了本体,不用像 Pi-hole 那样额外拼装组件。自托管的核心价值是"自己的服务器,规则和数据只有自己说了算”——公共 DNS 再方便,统计和日志也是别人的。
AdGuard Home 也不是 OpenWrt 专属:官方提供 Linux、Windows、macOS、树莓派和 Docker 的安装方式,软路由、NAS、小主机都能跑。之所以教程都拿 OpenWrt 说事,是因为路由器的位置天然适合做全屋 DNS——它本来就是设备的默认网关和 DNS 出口。
安装与首次配置:OpenWrt 24.10.7 实测
安装:官方源一条命令
OpenWrt 官方软件源里就有现成的 adguardhome 软件包,不用手动下载二进制,装法和普通插件一样(详细的 opkg 换源、镜像配置在《软路由入门(四):插件与系统维护》里有完整教程,这里只给装法):
root@OpenWrt:~# opkg update
...(五个源全部 Updated)...
root@OpenWrt:~# opkg install adguardhome
Installing adguardhome (0.107.57-r1) to root...
Configuring adguardhome.
root@OpenWrt:~# /etc/init.d/AdGuardHome enable
root@OpenWrt:~# /etc/init.d/AdGuardHome start
| 项目 | 值 |
|---|---|
| 软件包 | adguardhome(OpenWrt 官方源) |
| 实测版本 | 0.107.57(装包输出 0.107.57-r1) |
| 管理界面 | http://<路由器IP>:3000 |
| DNS 监听 | 默认 53,必须改成 5353(原因见下) |
| 配置文件 | /etc/config/adguardhome |
版本说明:0.107.57 是 OpenWrt 官方源里收录的版本,官方源的更新节奏由 OpenWrt 社区维护,和 GitHub 上的发布不完全同步,用源里的版本即可,功能不受影响。以后要升级就两条命令:opkg update && opkg upgrade adguardhome,配置会保留。
不想用了就卸载:opkg remove adguardhome,配置文件 /etc/config/adguardhome 会一起删掉,卸载前想留配置就先备份整个 /etc/config 目录(备份方法在维护篇)。重装之后配置清零,需要重新走一遍向导。
装完先别急着配置,直接访问 http://192.168.1.1:3000 会看到首次配置向导,下面一步步走。
首次配置向导:3000 端口

图注:首次配置向导欢迎页,右上角显示版本 0.107.57,语言选简体中文,共五步
向导一共五步:选择语言 → 管理界面监听 → DNS 监听端口 → 上游 DNS → 管理员账号密码,逐项说明:
- 语言:选简体中文,后面所有界面都是中文;
- 管理界面监听:保持默认
0.0.0.0:3000即可——只在家里内网用,别把这个端口暴露到外网,不然任何人都能打开你的去广告后台。连局域网暴露都不想留的话,在电脑上建 SSH 隧道访问:ssh -L 3000:127.0.0.1:3000 root@192.168.1.1,然后浏览器开http://127.0.0.1:3000,管理界面完全不出路由器; - DNS 监听端口:默认 53,必须改成 5353,这是全教程最关键的一步,原因见下一节;
- 上游 DNS:按「上游 DNS 怎么选」的三种方案填一个;
- 管理员账号密码:设一个强密码,这套账号管着过滤规则和日志,弱密码等于把全屋上网记录送人。
DNS 监听改 5353:和 dnsmasq 共存的关键
第三步是整篇教程最重要的一个选择。AdGuard Home 默认也想监听 53 端口,但 OpenWrt 的 DHCP 和 DNS 都是 dnsmasq 提供的,53 端口本来就归 dnsmasq(配置篇讲过,设备的域名解析请求默认先到路由器的 dnsmasq)。AdGuard 再去抢 53,结果就是 dnsmasq 起不来,全家 DNS 瘫痪。
改法:把 DNS 监听端口填成 5353,监听地址保持所有接口。配完回到 AdGuard Home 的「设置指导」页,能看到它监听的所有地址都带上了 :5353:

图注:设置指导页显示 AdGuard Home 正在监听的地址,全部为 5353 端口,包括 127.0.0.1、内网 IP 和 IPv6 地址
netstat -tunlp | grep :53 看 53 被谁监听,logread | grep dnsmasq 看启动报错。解决:把 AdGuard 的 DNS 监听改回 5353,再 /etc/init.d/dnsmasq restart。上游 DNS 怎么选
上游服务器AdGuard Home 自己无法解析时转发查询的公共 DNS 服务器,相当于 DNS 请求的二级代理。 是 AdGuard Home 自己搞不定域名时转去问的 DNS 服务器,相当于"二级代理"。选型原则一句话:国内访问多就优先国内 DNS,要兼顾国外访问再加国际 DNS,能上加密就上加密。三个方案按场景选:
▸方案一:国内为主(小白首选,延迟最低)
223.5.5.5 和腾讯 DNSPod 119.29.29.29。国内解析快、符合国内网络环境,绝大多数家庭场景够用。缺点是国外域名解析受运营商链路影响,偶尔会有解析失败。▸方案二:国内外兼顾(我实测用的配置)
tls://1.1.1.1 和 tls://8.8.8.8,走 DNS-over-TLS 加密链路,解析结果在传输中不可篡改,这是我在测试环境里实际跑着的配置,dig 实测正常。注意:加密 DNS 需要国内网络能直连对应服务器,直连不通的环境会超时,这时退回方案一。▸方案三:全加密全家桶(进阶)
tls://1.1.1.1、tls://8.8.8.8、tls://dns.adguard-dns.com,再配一个普通 DNS 做引导(bootstrap)。AdGuard Home 的 DNS 设置页支持 DoT、DoH、DoQ 三种加密上游,表单里直接选协议。加密不等于快,多一层握手多一层延迟,网络环境差时反而拖慢解析。填完上游点保存,向导就算走完了。AdGuard Home 的过滤列表默认带一套基础规则,后台「过滤器 → DNS 拦截清单」里可以加社区规则、定期更新,这些在「过滤列表管理」一章展开。
补充一个概念:加密上游自己也需要"找到服务器 IP"这一步,帮它完成这一步的普通 DNS 就叫 bootstrap。AdGuard Home 默认会自己处理,你只要知道选了加密上游却解析超时,先检查网络能不能直连那台服务器,国内网络环境里 DoT 的 853 端口经常被卡。
让全家设备生效:三种姿势
AdGuard Home 装好只是"服务在跑",设备不把 DNS 请求发给它,过滤就是空转。让设备用上它,按网络架构选一种姿势:
▸姿势一:设备手动指 DNS(单台生效,最省事)
192.168.1.1),设备不用管 5353 的事——它连的还是 53 端口,由路由器里的转发链路接到 AdGuard。适合只想让一两台设备去广告的场景,其他设备不受影响。▸姿势二:路由器 DHCP 统一下发(主路由模式,全家生效)
127.0.0.1#5353,意思是"dnsmasq 收到的解析请求都转给本机 5353 的 AdGuard Home"。链路变成设备 → dnsmasq → AdGuard Home → 上游 DNS,全屋设备零配置自动生效。已经在用主路由模式的直接选这个。想要更细的控制,也可以在 DHCP 的 Advanced Settings → DHCP Options 里加 6,<AdGuard IP> 直接下发自定义 DNS,两种做法二选一,别叠着配。▸姿势三:旁路由指向(软路由场景重点)
旁路由架构下,设备把网关和 DNS 都指向旁路由,解析权天然归旁路由。这时在旁路由上把 AdGuard 监听在 192.168.1.2:5353(旁路由自己的 IP),再用姿势二的 DNS 转发指过去即可。关键提醒:只改网关不改 DNS 是旁路由最常见的半生效状态,设备 DNS 还指在主路由上,去广告就完全不生效,这两条要一起改——这就是旁路由的
DNS 泄漏设备的网关已指向代理或旁路由,但 DNS 请求仍走原链路,导致解析不受控的现象。 ,表现是"代理能连上,但解析还是老路子"。
三种姿势的共同点:改完都要等 DNS 缓存过期或手动清缓存才生效,验证方法见下一章。家里跑着代理插件的,生效链路和上面稍有不同,统一放在「和科学上网共存」一章讲。
改完配置后最快的验证动作是:手机断开 Wi-Fi 再重连(重新拿一遍 DHCP 和 DNS)、电脑执行 ipconfig /flushdns、电视重启一下网络。全部做完还看不到效果,再往「排错对照表」里对症状。
过滤列表管理:AdGuard Home 的核心玩法
装好、生效之后,日常打交道最多的就是过滤器这一页。它把去广告的规则分成五类,管理逻辑想明白,整个 AdGuard Home 就玩通了:

图注:过滤器页面左侧是功能区列表——DNS 拦截清单、DNS 白名单、DNS 重写、已阻止的服务、自定义过滤规则,右侧是过滤统计
DNS 拦截清单(黑名单):默认规则就够起步
DNS 拦截清单就是 黑名单被判定要拦截的域名集合,命中后解析结果被改为无效地址,广告域名靠它统一拦截。 ,里面是"要拦的域名集合",AdGuard Home 的过滤引擎把它翻译成规则逐条匹配。装完向导,系统默认带了一套 AdGuard DNS filter,我的测试环境里这套规则实测加载了 155426 条,覆盖绝大多数广告和跟踪器域名。页面上的「检查更新」按钮可以手动拉取规则更新,也可以设定期自动更新。
想加社区规则,点「添加 DNS 拦截清单」,粘贴规则列表的 URL 保存即可,比如 EasyList、Hagezi 这类社区维护的列表。起步建议:先就用默认这一套,跑上一周再决定要不要加。每条规则都带误杀概率,叠的列表越多,网页出问题的概率越高。
DNS 白名单:误杀后的第一站
白名单即使命中黑名单也放行的域名集合,优先级高于黑名单,用于修复误杀。 是"就算在黑名单里也不拦“的域名集合,优先级高于黑名单。网页验证码、登录框、支付回调偶尔被拦,就是误杀。处理路径:查询日志里找到那条被拦的记录 → 点加入白名单,下次不再拦它。白名单要克制,只加确认没问题的域名,加多了等于给广告开洞。
查询日志值得多说一句:它不只是误杀定位工具,每条拦截记录都标了命中的规则和发起设备,想搞清楚"家里哪台设备在狂请求广告域名”,看客户端的查询排行最快。日志默认保留一段时间,流量大的家庭可以调短保留期,省点路由器的存储和内存。
DNS 重写:给自建服务开"后门"
DNS 重写把指定域名的解析结果强制改为指定 IP 的规则,可指到内网 IP 或 0.0.0.0。 是"指定域名返回指定 IP"的规则,比黑名单更灵活:
| 场景 | 规则示例 | 效果 |
|---|---|---|
| 内网服务免记 IP | nas.lan → 192.168.1.10 | 在家访问 nas.lan 直达 NAS |
| 屏蔽指定网站 | example.com → 0.0.0.0 | 该域名解析失败,等同黑名单 |
| 强制指定出口 | router.lan → 192.168.1.1 | 域名解析固定指向路由管理页 |
重写规则优先于黑名单和白名单,适合做"白名单机制覆盖不到的精确控制"。自建了 NAS、装了 Home Assistant 的,这一项是高频使用。
已阻止的服务:一键屏蔽全家社交 App
已阻止的服务AdGuard Home 内置的整站屏蔽开关,每个开关对应一组域名集合,如 TikTok、YouTube 等。 是一组内置的整站开关,每个服务对应一个域名集合:TikTok、YouTube、Instagram、Facebook、Twitter、游戏平台等,打开开关等于把这套服务的域名全部拉黑。适合家长控制场景——睡前关掉孩子的 TikTok 开关,第二天再开回来,比临时加规则直观得多。注意它和黑名单是并行的两套机制,同一个域名两套都命中时,更严格的那套生效。
自定义过滤规则:看懂规则语法
黑名单白名单都是"从列表更新来的规则", 自定义过滤规则用户自己编写的过滤规则,支持 Adblock 语法和 hosts 语法,保存后立即生效。 是自己写的规则,支持两种语法:
||example.com^ # 屏蔽该域名及其所有子域名(Adblock 语法)
0.0.0.0 example.com # hosts 语法,等价写法
@@||example.com^ # 例外规则,白名单用
实测里最常用的组合:一条自定义规则拦掉广告,一条例外规则放行误伤的子路径。写完保存立即生效,想确认规则有没有起作用,直接用下一章的 dig 命令查那个域名,看返回是不是 0.0.0.0。
过滤规则是"叠加生效"的——加十个列表,等于十套规则同时匹配,误杀概率叠加,出问题还不好定位。我的做法:**默认列表先跑一周,看
查询日志AdGuard Home 记录每一条 DNS 查询及拦截结果的页面,用于定位误杀和排查问题。 里误杀了什么,再针对性加白名单或换列表**;一次只动一个变量,出了问题才知道是哪个列表干的。别看到"全网最强规则包"就往上堆。
实测效果:dig 说话
规则配好、链路串通,最直观的验证方式是直接在路由器上发 DNS 查询,看返回结果——这是 DNS 级去广告最硬的证据。
拦截域名:返回 0.0.0.0
在 OpenWrt 的 SSH 里执行,@127.0.0.1 指本机、-p 5353 指 AdGuard Home 的监听端口:
root@OpenWrt:~# dig @127.0.0.1 -p 5353 doubleclick.net
; <<>> DiG 9.18.28 <<>> @127.0.0.1 -p 5353 doubleclick.net
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56412
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;doubleclick.net. IN A
;; ANSWER SECTION:
doubleclick.net. 10 IN A 0.0.0.0
;; Query time: 3 msec
;; SERVER: 127.0.0.1#5353(127.0.0.1) (UDP)
doubleclick.net 是 Google 的广告域名,返回 0.0.0.0 就是命中过滤规则、被成功拦截——设备拿着这个地址去连广告服务器,连接直接失败,广告加载不出来。
正常域名:照常返回公网 IP
对照实验,同一个 DNS 服务器解析正常网站:
root@OpenWrt:~# dig @127.0.0.1 -p 5353 google.com
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 300 IN A 142.250.72.14
;; Query time: 5 msec
;; SERVER: 127.0.0.1#5353(127.0.0.1) (UDP)
google.com 返回真实的公网 IP,说明过滤只针对规则里的域名,正常网站完全不受影响,解析照常走上游。
路由器上没装 dig 的话,用 Windows 电脑的 nslookup 也能验证,指定 AdGuard 所在路由器的 IP 就行:
C:\> nslookup doubleclick.net 192.168.1.1
...输出末尾是 0.0.0.0 就是拦截生效
仪表盘统计:查询数和拦截数怎么读
AdGuard Home 首页的仪表盘把刚才的查询都记了下来。我的测试环境里,完成上述 dig 测试后看到的数字是:7 次 DNS 查询、2 条被过滤器拦截、平均处理时间 24ms,被拦截域名排行前两位正是 ad.doubleclick.net 和 doubleclick.net:

图注:仪表盘显示最近 24 小时 7 次查询、2 条拦截,被拦截域名排行是 ad.doubleclick.net 和 doubleclick.net,平均处理 24ms
两个读数要注意:平均处理时间 24ms 是本地处理的耗时,不含设备和路由器之间的网络延迟,这个数字几十毫秒都正常;拦截数开始明显下降也是正常的——设备端有缓存,规则命中一次后续不再重复查询,广告主也在不停换域名,过滤列表记得定期更新。
仪表盘上方还有概况、统计、客户端排行三个页签:概况就是首页这张卡,统计是时间线视图,客户端排行能看每台设备的查询量和拦截数——家里有多台设备的,靠它定位"哪台设备在疯狂请求广告域名"最直接。
最后提醒一句缓存:浏览器和系统都有自己的 DNS 缓存,改完配置发现广告还在,先清缓存再判断。Windows 上 ipconfig /flushdns,浏览器用无痕窗口,手机开一下飞行模式再关。
和科学上网共存:53 和 5353 的分工
家里开着 OpenClash、PassWall 这类代理插件的,去广告和代理要串成一条链,别各干各的。
OpenClash 接管 DNS 后的链路
默认情况下,OpenWrt 的 53 端口归 dnsmasq,代理插件开启后,OpenClash 的透明代理模式会把设备的 53 端口流量直接劫持到 Clash 内核的 DNS 端口(默认 7874),dnsmasq 那层就不走了。所以"我在 dnsmasq 里填了 DNS 转发,怎么没反应"——流量根本没经过 dnsmasq。
正确的链路是:设备 → OpenClash 内核 → AdGuard Home(5353)→ 上游 DNS。先分流再过滤,AdGuard 只做它最擅长的过滤,代理只管分发,两边不抢 53。这套分工一句话记住:53 归 dnsmasq(或代理插件),5353 归 AdGuard Home。
覆写设置里把 AdGuard 加为上游
在 OpenClash 的覆写设置 → DNS 服务器区,把 AdGuard Home 的监听地址 127.0.0.1:5353 加进自定义上游或追加上游,保存应用后,Clash 内核的 DNS 查询就会先过 AdGuard 的过滤再出网。完整的分流、DNS 覆写配置看《OpenClash 介绍和使用指南》,维护篇里也有这条链路的实测说明(维护篇:和科学上网共存)。
其他代理插件思路相同——把 AdGuard 的 127.0.0.1:5353 设成插件 DNS 的上游,具体入口每个插件不一样,PassWall 在基本设置的 DNS 子标签、HomeProxy 在 DNS 服务器配置里,对应教程都有讲。
SmartDNS 进阶:DNS 分流加速
▸进阶玩法:AdGuard Home + SmartDNS 串成 DNS 分流链
SmartDNS 解决"不同域名走不同 DNS"的问题:国内域名用国内 DNS 快,国外域名用国外 DNS 不容易被污染,一刀切总有半头吃亏。官方源直接装 luci-app-smartdns,它把域名分成国内组、国外组,各自指定上游,再按测速返回最快的。
和 AdGuard Home 串起来的链路:设备 → SmartDNS(分流)→ AdGuard Home(过滤)→ 上游 DNS。SmartDNS 负责"快",AdGuard 负责"拦",各管一段。我的顺序建议:先把 AdGuard Home 单独跑稳,再叠 SmartDNS——这条链每多一跳就多一层排错面,一步到位反而难查问题。SmartDNS 的分组规则写法参考官方仓库文档,维护篇的 DNS 分流章节也有简介。
排错对照表
| 症状 | 原因 | 解法 |
|---|---|---|
| 装完全家上不了网 | AdGuard 抢占了 53,dnsmasq 起不来 | DNS 监听改 5353,重启 dnsmasq |
| 规则配了但不生效 | 设备 DNS 没指过来,或走了缓存 | 检查 DHCP 下发/设备手动 DNS,清缓存再试 |
| 网页验证码、登录框打不开 | 过滤规则误杀 | 查询日志找记录,加白名单 |
| 后台打开卡、CPU 占用高 | 列表叠太多、日志太大 | 精简过滤列表,日志保留期调短 |
| 过滤列表更新失败 | 列表源网络不通 | 换可用列表源,或让代理环境下更新 |
| dig 拦了但浏览器还有广告 | 浏览器缓存 / 同域名广告 | 清缓存;同域名广告 DNS 级无解,换浏览器插件 |
| 和 OpenClash 同时开没效果 | DNS 链路没串上 | OpenClash 覆写设置加 127.0.0.1:5353 上游 |
| 3000 端口浏览器打不开 | 防火墙没放行 | LuCI 防火墙放行 3000(仅内网),或 SSH 隧道访问 |
| 更新规则后误杀突然变多 | 新列表引入了问题规则 | 换回旧列表,或逐条加白名单 |
| 部分设备还有广告 | 设备走了 IPv6 的 DNS | 关 IPv6 或把 IPv6 的 DNS 也指到 AdGuard |
FAQ:AdGuard Home 常见问题
1. AdGuard Home 和 AdGuard 浏览器插件是一回事吗? 不是。浏览器插件只保护浏览器,AdGuard Home 是装在路由器上的 DNS 服务器,管全屋设备,但拦广告的能力弱于插件(DNS 级只能处理独立域名广告)。
2. 免费吗?开源吗? 免费开源,GPL-3.0 协议,代码在 GitHub。AdGuard 公司靠商业产品(AdGuard 客户端、公共 DNS 的高级版)赚钱,Home 是开源的引流入口。
3. 能拦视频 App 的广告吗? 看情况。靠独立广告域名加载的能拦;和视频内容同域名的广告(B 站开屏、信息流)拦不了,YouTube 的贴片广告更是谁都拦不了。
4. 装完网速会变快吗? 不会明显变快。DNS 过滤掉的是请求数不是带宽;有明显提速的话,先怀疑之前 DNS 配置有问题。
5. 会把验证码拦掉吗? 偶尔会,这是误杀。查询日志里找到记录加白名单即可,别为一次误杀删掉整个过滤列表。
6. 电视、游戏机怎么生效? 零配置。只要它们的 DNS 走路由器(DHCP 默认就是),AdGuard 生效它们就生效,这正是 DNS 级去广告最大的优势。
7. 手机 App 里的广告能拦吗? 独立域名加载的能拦一部分,App 内容同源的拦不了。要更干净得靠客户端级方案(代理 MITM),代价是性能和规则维护成本。
8. 53 端口冲突怎么彻底避免? 记住分工:53 归 dnsmasq(或代理插件),5353 归 AdGuard Home,AdGuard 永远只监听 5353,用 DNS 转发把两条串起来。
9. 一定要有科学上网才能用 AdGuard Home 吗? 不用。它就是普通 DNS 服务器,国内网络直接跑,加密上游(DoT)在国内网络不通时换普通上游即可。
10. 过滤规则多久更新一次? 默认列表有更新机制,页面也有「检查更新」按钮。我建议每周手动更新一次,广告域名换得勤,列表越新拦截越准。
11. 规则条数越多越好吗? 不是。规则条数是覆盖面的指标,不是效果的指标,叠列表放大误杀面。155426 条默认规则覆盖主流广告域名已经够用,先跑稳再增量加。
12. 有 OpenClash 还要 AdGuard Home 吗? 取决于你要不要"全屋去广告+统计"。OpenClash 的订阅规则常自带去广告规则,但那是访问阶段的,且只覆盖代理流量;AdGuard Home 管全部 DNS 流量,两者可以共存(串成一条链),也可以只留一个。
13. AdGuard Home 和 SmartDNS 怎么选? 单去广告用 AdGuard Home,单加速用 SmartDNS,两个都要就串链路:SmartDNS 分流 → AdGuard 过滤。先单跑一个,跑稳再串。
14. 换固件、重置后配置会丢吗?
AdGuard Home 的配置在 /etc/config/adguardhome,升级固件默认保留 /etc/config;恢复出厂或刷不带配置的固件会丢,折腾前先备份,备份方法在维护篇。
15. 局域网里别人能打开我的 3000 后台吗? 能,只要他知道地址和账号密码。所以管理界面别暴露到外网、密码设强一点,内网里也默认不要开放给别人。
16. AdGuard Home 会记录我的隐私吗? 查询日志和统计都存在你自己的路由器本地,不上传,数据在自己手里是自托管相对公共 DNS 的核心优势。介意的话可以关日志或限制保留时长。
17. OpenWrt 官方源和 GitHub Release 哪个新? GitHub Release 更新更快,官方源由 OpenWrt 社区同步,版本会滞后。路由上装源里的版本就够了,追求新版本可以手动装 GitHub 的二进制包,但要自己处理依赖和更新,不值当。
18. AdGuard Home 能当 DHCP 服务器用吗? 能,它内置 DHCP 服务器功能,把"分配 IP + 发 DNS"一起接管。但 OpenWrt 上 dnsmasq 本来就在干这活,没必要让 AdGuard 再插一脚,保持 dnsmasq 管 DHCP、AdGuard 只管 DNS 过滤的分工最稳。
19. Windows/macOS 上能装 AdGuard Home 吗? 能,官方提供各平台安装包,单机自用也成立。不过放在路由器上才是它价值最大化——覆盖全屋设备,电脑关机也不影响电视和手机的去广告。
参考来源
- AdGuard Home 官方仓库:AdguardTeam/AdGuardHome(README、GPL-3.0、与 Pi-hole 对比表)
- AdGuard 官方知识库:AdGuard DNS 产品线说明(公共 DNS 与 AdGuard Home 定位)
- AdGuard 官方博客与 Wikipedia:AdGuard 词条(公司成立时间与 AdGuard DNS 上线年份)
- OpenWrt 官方源:
adguardhome 0.107.57-r1软件包(虚拟机实测安装) - 虚拟机实测:OpenWrt 24.10.7(QEMU x86_64)+ AdGuard Home 0.107.57——dig 拦截输出、仪表盘统计、四张界面截图
- 去广告原理与方案取舍:一支去广告主题的口播稿观点框架,正文全部按本文口径重写
- 站内系列:《软路由入门(三):首次配置与旁路由》《软路由入门(四):插件与系统维护》《OpenClash 介绍和使用指南》
评论
本地 Worker 预览版,后续可切换到 Cloudflare D1。
正在加载评论...