找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 2585|回复: 6

[openwrt(x86)] Open克拉斯智能分流 + AdGuard广告拦截 完美联动教程

[复制链接]
发表于 2025-11-1 13:41 | 显示全部楼层 |阅读模式
基于PVE虚拟化环境的部署方案,详解 ImmortalWrt (Open克拉斯)与 AdGuard Home 如何无缝协作,兼顾海淘上网与广告拦截。

一、前言


本人也是小白一名,最近无聊想着折腾软路由,也是磕磕碰碰踩了很多坑,网上包括论坛也有很多教程,但是很多图片要么是版本更新太快已经不适合最新的版本,要么是细节很模糊,我也是刚刚折腾完毕,本着人人为我,我为人人的精神,发一份我自己的教程,也是抛砖引玉,请各位大神指正。



希望达成目标:



  • ✅ 广告拦截:所有设备的广告域名优先被 AdGuard 拦截,无需转发到 Open克拉斯
  • ✅ 智能分流:非广告域名按规则分流——国内域名(百度、豆包等)直连,海外域名(谷歌等)走代理
  • ✅ 强制生效:确保所有 DNS 查询无法绕过该流程,避免分流失效或广告漏拦
  • ✅ 兼容 Fake-IP:Open克拉斯 启用 Fake-IP 模式时,AdGuard 仍能正常拦截广告

二、硬件与软件环境


先说说我自己的系统构架,硬件:康耐信8505+32G内存+1T硬盘,软件:PVE 9.0,VM:immortalwrt、fnos,LXC:Adguard、小型docker(各自独立)





2.1 网络拓扑结构(PVE虚拟化环境)

  • 最上层:PVE 主机(LAN 网段:192.168.0.0/24)
    • 虚拟机 [VM: ImmortalWrt]
      • IP 地址:192.168.0.x(网关地址:192.168.0.1)
      • 网络特性:直通网口直连光猫,负责路由转发
      • 运行组件:Open克拉斯(实现智能分流)
    • 容器 [LXC: AdGuard]
      • IP 地址:192.168.0.110
      • 运行组件:AdGuard Home(专注广告拦截)

  • 客户端设备:均接入 192.168.0.0/24 网段,通过 DHCP 获取网络配置,这里特别说明一下,外接了一个无线路由器(192.168.0.166)采用桥接lan对lan只负责无线wifi,我家里的所有设备均通过无线路由器的wifi联网。




2.2 核心组件说明
组件
配置详情
虚拟化平台Proxmox VE(PVE),管理所有虚拟机和容器
路由系统ImmortalWrt(VM 虚拟机),作为网关(192.168.0.1),默认 DNS/DHCP 由 dnsmasq 管理(可以设置静态IP绑定MAC,并通过防火墙规则实现白名单上网及指定IP定时封网解封控制小孩上网)
广告拦截AdGuard Home(LXC 容器),IP:192.168.0.110,负责广告域名过滤
分流工具Open克拉斯(运行于 ImmortalWrt 中),实现域名智能分流
网络流程设备 → ImmortalWrt(网关)→ AdGuard → Open克拉斯 → AdGuard → 互联网
Open克拉斯 模式Fake-IP 模式(解析返回 198.18.x.x 网段假 IP)

为什么没有在immortalwrt直接配置adguard,主要是之前搞在一起踩了很多坑,逻辑也很混乱或者说之前太菜理解不透,我关于软路由、PVE、Linux所有的知识都是现学现卖,现在有了AI,所以很多以前搞不了的东西通过与AI对话也可以完成了,包括目前的整个配置都是不断的在和AI对话、测试中慢慢理解和完善的,比如为什么我现在会一个LXC只部署一个docker,就是因为之前混在一起,调试某一个程序结果把其他的程序也搞崩了,现在都单独隔离就不存在这个问题,当然资源占用也会浪费,不过对于我这套硬件应该是问题不大,总之,菜有菜的玩法,大佬们可以无视。

三、详细配置步骤3.1 基础前提:DHCP 强制下发 DNS 到 AdGuard

先看immortalwrt系统概况



进入网络----接口----lan----编辑



高级设置----添加指定DNS(Adguard的IP192.168.0.110)

另外我把IPv6相关的设置都禁用了,我这里用不了IPv6,大家自行设置



DHCP服务器----高级设置----DHCP选项添加两条,也是保证
6,192.168.0.110     → Option 6  = DNS 服务器 = 192.168.0.110(AdGuard Home)3,192.168.0.1       → Option 3  = 默认网关 = 192.168.0.1(Immortalwrt)




再进入DHCP/DNS设置,添加DNS转发到127.0.0.1#7874(这里是本机)


静态IP绑定MAC可以参考,再配合防火墙的通信规则实现白名单上网,利用脚本实现定时封禁IP及解封控制小孩上网。



3.2 Open克拉斯 配置:本地 DNS 劫持 + Fake-IP 模式



模式选择Fake-IP增强模式





DNS设置选择 本地DNS劫持(使用 Dnsmasq 转发)确保让Open克拉斯接管DNS





覆写设置----DNS设置(重点)



Nameserver-Policy  添加

  1. # 国内站点 → 国内 DNS(最快、不污染)
  2. "geosite:cn": [https://doh.pub/dns-query, 114.114.114.114, 223.5.5.5]
  3. # 歪果站点 → 可信 DoH
  4. "geosite:geolocation-!cn": [tls://8.8.4.4, https://1.0.0.1/dns-query]
复制代码


规则匹配对象上游 DNS协议作用
geosite:cn所有国内域名(如 baidu.com、taobao.com)① DoH 腾讯公共 ② 114DNS ③ 阿里DNSHTTPS + 明文防污染 + 低延迟
geosite:geolocation-!cn所有非中国大陆域名(如 google.com、youtube.com)① Google DoT ② Cloudflare DoHTLS + HTTPS防封锁 + 加密传输

下方的nameserver、fallback、default-nameserver我分别保留了2组,功能其实用AI查询就知道了







配置项详细作用举个例子
nameserver-policy最高优先级域名规则 匹配,强制走指定 DNSgeosite:cn → 走 114.114.114.114 youtube.com → 走 1.1.1.1
nameserver主 DNS 列表 未匹配 nameserver-policy 的域名走这里baidu.com 没写规则 → 走 nameserver 里的 doh.pub
fallback污染检测 + 备用 当 nameserver 返回“可疑 IP”(如 0.0.0.0、假 IP)时,自动切换到 fallback 重新解析youtube.com 被 114DNS 污染 → 自动用 1.1.1.1 再查一次
default-nameserver冷启动 DNS 只用来解析 nameserver 和 fallback 本身的域名 不处理任何用户查询Open克拉斯 启动时要解析 doh.pub → 用 default-nameserver 查它的 IP

还有一个地方,如果网络内有某个IP你不希望走Open克拉斯的代理通道,比如不想让他访问被墙的网站,可以在覆写设置----规则设置----自定义规则添加



3.3 AdGuard 配置:上游 DNS 指向 Open克拉斯

实际上前面的逻辑跑通了,到这里就很简单了,直接进入「设置 → DNS → 上游 DNS 服务器」,只需要保留一个192.168.0.1:7874(Open克拉斯 监听端口)





四、效果验证



场景1:广告域名(如 googleads.g.doubleclick.net)【AdGuard 日志】
请求:googleads.g.doubleclick.net(类型:A/HTTPS)
状态:已拦截
规则:||doubleclick.net^(广告拦截规则)
响应:A: 0.0.0.0(拦截返回)
耗时:0.06 毫秒

流程:设备 → AdGuard(LXC容器直接拦截)→ 无后续请求(未到达 Open克拉斯)
结论:广告域名被 AdGuard 优先拦截,无需占用 Open克拉斯 资源

场景2:国内域名(如 www.baidu.comwww.doubao.com【AdGuard 日志】
请求:www.doubao.com(类型:A)
状态:已处理
DNS 服务器:192.168.0.1:7874(Open克拉斯)
响应:A: 198.18.0.29(Fake-IP)
耗时:0.56 毫秒

【本地 tracert 验证】
tracert www.baidu.com
1 → 192.168.0.1(ImmortalWrt 网关)
2 → 192.168.1.1(光猫)
3 → 171.113.126.1(国内运营商网关)
...
最终 → 183.2.172.17(百度国内服务器)

流程:设备 → AdGuard(LXC未拦截)→ Open克拉斯(VM分流为DIRECT)→ 国内运营商网络 → 目标服务器
结论:国内域名成功直连,路由路径均为国内IP地址,分流生效

场景3:海外域名(如 www.google.com【AdGuard 日志】
请求:www.google.com(类型:A)
状态:已处理
DNS 服务器:192.168.0.1:7874(Open克拉斯)
响应:A: 198.18.0.31(Fake-IP)
耗时:0.62 毫秒

【本地 tracert 验证】
tracert www.google.com
1 → 192.168.0.1(ImmortalWrt 网关)
2 → 192.168.0.1 报告:无法访问目标协议

流程:设备 → AdGuard(LXC未拦截)→ Open克拉斯(VM分流为PROXY)→ 代理IP地址 → 谷歌服务器
结论:Fake-IP 模式下,tracert 无法跟踪真实路径(假 IP 被 Open克拉斯 接管),浏览器可正常访问谷歌,代理生效


有错误也请大佬指正







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2025-11-1 16:39 | 显示全部楼层
谢谢楼主分享!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-11-4 17:08 | 显示全部楼层
研究一下  这样DNS解析会不会变慢 小白不懂
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-11-4 19:24 | 显示全部楼层
求问,如果AdGuard Home和open都在一个路由器上面,下面这个网关都填127.0.0.1吗?
6,192.168.0.110     → Option 6  = DNS 服务器 = 192.168.0.110(AdGuard Home)3,192.168.0.1       → Option 3  = 默认网关 = 192.168.0.1(Immortalwrt)
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-11-7 19:00 | 显示全部楼层
按教程配置完不知道为啥没有DNS查询记录
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-11-22 11:37 | 显示全部楼层
谢谢楼主分享!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-2-26 20:44 | 显示全部楼层
无奈看不懂
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 20:53

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表