OpenWrt保姆级教程:AdGuardHome+NIKKI 实现DNS劫持、去广告与精准流量控制
当OpenWrt遇上NIKKI+AdGuardHome:一套丝滑的DNS劫持与去广告组合拳
一、为什么要折腾这套组合?
在家庭网络或小型办公环境中,我们常希望实现设备流量统计、应用访问控制和广告拦截三件套。但传统方案往往需要多个插件配合,容易引发冲突。今天介绍的这套基于OpenWrt 23.05的NIKKI+AdGuardHome方案,通过DNS流量智能调度,实现了:
- 精准设备识别:通过NIKKI的客户端统计
- 灵活管控:用AdGuardHome过滤广告+自定义规则
- 零冲突架构:DNS监听与劫持分离设计
- 高性能处理:nftables替代iptables更高效
二、为什么要这样部署?
Q1:为什么需要劫持53端口?
很多IoT设备(如智能电视、摄像头)会硬编码使用本地DNS,通过劫持53端口能强制它们走过滤通道。
Q2:为什么用nftables而不是iptables?
OpenWrt 23.05+默认使用Firewall4(基于nftables),新内核下性能更好,规则管理更清晰。
Q3:为什么选择5335→1053端口转发?
这是典型的"前店后厂"设计:AdGuardHome(5335)在前端过滤广告,NIKKI(1053)在后端处理DNS解析,各司其职互不干扰。
三、配置实操手册
1. NIKKI设置(重点参数说明)
代理配置 → 透明代理:
☑️ 关闭IPv4劫持
☑️ 关闭IPv6劫持
绕过配置 → 绕过资源组:
☑️ 勾选adg(自定义的绕过组)
避坑指南:这里的"绕过"是指允许特定流量跳过AdGuardHome处理,比如需要直连的网银类站点建议加入adg组。
2. AdGuardHome调教
关键文件:/etc/AdGuardHome.yaml
dns: bind_hosts: - 0.0.0.0 # 监听所有接口 port: 5335 # 与后续劫持端口对应 upstream_dns: - 127.0.0.1:1053 # 指向NIKKI的DNS监听
重启技巧:
/etc/init.d/adguardhome restart # 观察日志确认无报错 tail -f /var/log/adguardhome.log
3. nftables劫持的黑科技
配置文件:/etc/nftables.conf
table inet adguardhome { chain prerouting { type nat hook prerouting priority -110; # 劫持所有TCP/UDP的53端口请求 meta nfproto { ipv4, ipv6 } udp dport 53 counter redirect to :5335 meta nfproto { ipv4, ipv6 } tcp dport 53 counter redirect to :5335 } }
调试技巧:
# 实时查看流量统计 nft list table inet adguardhome -a # 预期输出应包含packet计数
四、效果验证操作
场景1:检测广告过滤
在手机端访问优酷视频,观察是否还有60秒片头广告。
场景2:深度检测DNS路径
# 在OpenWrt执行 tcpdump -i br-lan port 53 # 同时另开窗口执行 dig @192.168.1.1 www.taobao.com # 应看到流量被重定向到5335端口
场景3:强制刷新DNS缓存
# Windows系统 ipconfig /flushdns # Android系统 adb shell killall -HUP netd
五、可能遇到的问题
诡异现象1:劫持规则重启后消失
解法:检查/etc/rc.local权限是否为755,建议追加sleep命令:
sleep 5 # 等待网络初始化 nft -f /etc/nftables.conf
诡异现象2:某些APP无法连接
解法:在AdGuardHome的`过滤器 → 自定义规则`中添加:
@@||appdomain.com^$important
诡异现象3:IPv6地址泄露
解法:在AdGuardHome的DNS设置中启用:
block_echain: true
六、进阶玩法推荐
玩法1:设备级控制
在AdGuardHome的`客户端设置`中,基于MAC地址设置不同过滤策略。
玩法2:DNS-over-HTTPS
在NIKKI的上游DNS配置中填入:
tls://1.1.1.1:853
玩法3:流量可视化
部署Prometheus+Grafana,通过AdGuardHome的/metrics接口生成实时流量看板。
七、总结
1. 关掉NIKKI的DNS劫持 → 让出53端口
2. 把AdGuardHome推到前线(5335端口)→ 专职过滤
3. 用nftables做流量调度员 → 强制所有设备走过滤通道
4. NIKKI退居二线(1053端口)→ 专注协议解析
这套架构的精妙之处在于:既利用了AdGuardHome强大的过滤能力,又保留了NIKKI的协议识别特性,两者通过端口转发形成完美闭环。遇到问题记得多查 系统日志 和 nftables计数 ,祝各位折腾愉快!
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看