概述

本方案在主路由之外部署旁路由(iStoreOS),由 AdGuardHome 做 DNS 入口广告过滤,OpenClash(Mihomo 内核)做分流代理,实现全屋设备无感知的上网代理与去广告。

网络拓扑

设备角色

设备 IP 地址 角色
主路由 192.168.6.1 DHCP 服务器、流量转发
旁路由 (iStoreOS) 192.168.6.11 网关、代理(OpenClash)
AdGuardHome 192.168.6.12 DNS 广告过滤

DNS 链路

客户端 → AdGuardHome (192.168.6.12) → OpenClash DNS (192.168.6.11:7874) → 国内 DNS / 境外 DNS

流量链路

客户端 → 主路由 (192.168.6.1) → 旁路由 OpenClash (192.168.6.11) → 直连 / 代理 → 互联网

关键配置要点

主路由 (192.168.6.1)

  • DHCP 网关指向旁路由:192.168.6.11
  • DHCP DNS 指向 AdGuardHome:192.168.6.12
  • DHCP 服务保持开启(主路由负责分配 IP)

旁路由 iStoreOS (192.168.6.11)

网络接口

  • 自身 DNS 设为 127.0.0.1(走本机 OpenClash)
  • DHCP 服务必须关闭(主路由负责)
  • IPv6 建议关闭(避免泄漏)

dnsmasq

  • DNS 重定向关闭(不劫持 53 端口)
  • 忽略解析文件(resolv)勾选(防止 WAN 口覆盖 DNS)

防火墙

  • 转发/入站/出站全部 ACCEPT
  • IP 动态伪装(Masquerade)开启(确保回程流量正确)

OpenClash 配置

运行模式:Fake-IP(增强)+ 规则模式 + 大陆绕过

DNS(核心)

  • 本地 DNS 劫持:关闭(AdGuardHome 入口,不需要劫持)
  • 自定义上游 DNS:启用
  • nameserver:223.5.5.5119.29.29.29(国内解析)
  • fallback:tls://1.1.1.1:853tls://8.8.8.8:853(境外防污染)
  • fallback-filter:geoip=true, geoip-code=CN

AdGuardHome (192.168.6.12)

上游 DNS(核心):只填 192.168.6.11:7874(OpenClash DNS 端口)

三个必须关闭

  • 并行请求:关闭(只有一个上游)
  • DNS 缓存:设为 0(Fake-IP 模式不能缓存,否则假 IP 过期后连接失败)
  • DNSSEC:关闭(Fake-IP 返回的假地址无法通过 DNSSEC 验证)

开关总览

设备 配置项 状态
主路由 DHCP 服务 开启
主路由 DHCP 网关 → 192.168.6.11 设置
主路由 DHCP DNS → 192.168.6.12 设置
旁路由 DHCP 服务 关闭
旁路由 自身 DNS → 127.0.0.1 设置
旁路由 DNS 重定向 关闭
旁路由 防火墙转发 ACCEPT
旁路由 IP 动态伪装 开启
OpenClash 本地 DNS 劫持 关闭
OpenClash 自定义上游 DNS 开启
AdGuardHome 上游 DNS → 192.168.6.11:7874 设置
AdGuardHome 并行请求 关闭
AdGuardHome DNS 缓存 关闭 (0)
AdGuardHome DNSSEC 关闭

验证方法

  1. 清除 AdGuardHome 缓存 + 本地 ipconfig /flushdns
  2. nslookup www.taobao.com:Server 应为 192.168.6.12,返回 Fake-IP 地址段 (198.18.x.x)
  3. 访问国内网站验证速度,访问境外网站验证代理
  4. 排查命令:netstat -tlnp | grep 7874(确认 OpenClash DNS 端口)

常见问题

⚠️ 完全无法上网
检查主路由 DHCP 网关是否正确指向旁路由,以及旁路由防火墙转发是否为 ACCEPT、IP 动态伪装是否开启。

📝 能上网但 AdGuardHome 无过滤记录
客户端可能使用手动 DNS 或浏览器开启了 DoH。关闭浏览器的”安全 DNS / DNS over HTTPS”功能。

📝 国内网站慢
确认 OpenClash nameserver 只有国内 DNS,不要混入境外 DNS。