OpenWrt 上 AdGuardHome + SmartDNS 配置教程:全家去广告与 DNS 优选
导读摘要:在 OpenWrt 路由器上组合使用 AdGuardHome(过滤广告和追踪)与 SmartDNS(并发查询多个上游并选出最快 IP),讲清 dnsmasq、AdGuardHome、SmartDNS 三者的端口和转发顺序,以及和代理插件共存时的注意事项。
简短回答:推荐的链路是 设备 → dnsmasq(53)→ AdGuardHome → SmartDNS → 上游 DNS。AdGuardHome 负责过滤广告、记录查询日志,SmartDNS 负责同时向多个上游查询并选出最快的 IP。关键是三者端口不能冲突,而且同一台路由器上只保留一个组件做 Fake-IP。
一、三个组件分别做什么
| 组件 | 作用 | 示例端口 |
|---|---|---|
| dnsmasq | OpenWrt 自带,负责 DHCP 和本地域名(如 router.lan) | 53 |
| AdGuardHome | 按过滤规则拦截广告、追踪域名,提供查询日志和统计 | 5353 |
| SmartDNS | 并发查询多个上游,测速后返回最快的 IP,支持 DoH/DoT 上游 | 6053 |
二、配置 SmartDNS
安装 smartdns 和 luci-app-smartdns,在界面中设置本地端口为 6053,然后添加上游服务器。等价的配置文件写法:
bind :6053
server 223.5.5.5
server 119.29.29.29
server-https https://doh.pub/dns-query
server-https https://dns.alidns.com/dns-query
speed-check-mode ping,tcp:80,tcp:443
cache-size 4096
这里只用国内上游,目的是让国内域名解析到最近、最快的 CDN 节点。国外域名交给代理插件处理,见下文第四部分。
三、配置 AdGuardHome
- 安装
adguardhome(或luci-app-adguardhome),首次打开网页向导,DNS 监听端口设为 5353; - 「设置 → DNS 设置 → 上游 DNS 服务器」填写
127.0.0.1:6053,即 SmartDNS; - 「过滤器 → DNS 黑名单」添加常用规则列表,不要一次加太多,否则误拦截和内存占用都会增加;
- 回到 OpenWrt「网络 → DHCP/DNS」,在「DNS 转发」中填写
127.0.0.1#5353,并勾选「忽略解析文件」。
完成后用电脑执行 nslookup example.com,在 AdGuardHome 的查询日志中能看到这条记录,说明链路通了。
四、和代理插件(OpenClash、Nikki 等)共存
- 只保留一个 Fake-IP:代理插件开了 Fake-IP,AdGuardHome 和 SmartDNS 就不要再做任何「假 IP」处理,否则两层映射会导致访问失败;
- 常见做法:dnsmasq 把查询交给代理插件,代理插件的国内 DNS(nameserver)填 SmartDNS 的
127.0.0.1:6053,国外域名由代理插件远端解析;需要去广告时把 AdGuardHome 放在代理插件之前; - 出现部分网站打不开:先暂停 AdGuardHome 过滤测试,排除误拦截,再检查链路顺序。
DNS 污染、泄露和加密 DNS 的原理见 DNS 解析原理与 DoH / DoT / DoQ 详解。
💡 机场情报局精选推荐:高品质海外节点与 IEPL 专线是流畅访问的基础,欢迎查阅我们的实时评测:【2026 稳定高速机场推荐榜单】。