OpenWrt 旁路由 + OpenClash 实现全屋透明代理
这篇文章记录一套比较常见的家庭网络方案:主路由继续负责拨号和无线 AP,OpenWrt 作为旁路由接管全屋默认网关,OpenClash 负责国内外分流和透明代理。
文章里使用一组常见示例地址,实际使用时按自己的网络替换即可:
主路由 / AP:192.168.1.1
OpenWrt 旁路由:192.168.1.2
可选 DNS / AdGuardHome:192.168.1.3
局域网网段:192.168.1.0/24本文重点不是“把所有功能都堆到 OpenWrt 上”,而是整理一套稳定、清晰、方便排障的全屋代理配置。
一、适用场景
这套方案适合:
- 主路由继续拨号,不想改动太多。
- OpenWrt 作为旁路由部署在软路由、虚拟机或小主机上。
- 想让手机、电脑、电视、平板都自动走规则代理。
- 不想每台设备单独安装代理客户端。
- 可选使用 AdGuardHome 作为 DNS 过滤和查询日志。
不适合:
- 完全不想改 DHCP 网关。
- 不希望 OpenWrt 成为全屋网络关键节点。
- 家里没有可稳定运行的 OpenWrt 设备。
- 需要企业级多出口、复杂 VLAN、严格安全隔离的环境。
二、最终网络结构
最终流量路径:
手机 / 电脑 / 电视
↓ 默认网关
OpenWrt 旁路由:192.168.1.2
↓ 出口
主路由:192.168.1.1
↓
InternetDNS 路径可以有两种。
如果不使用独立 DNS:
客户端 → OpenWrt / 主路由 DNS → 上游 DNS如果使用 AdGuardHome:
客户端 → AdGuardHome 192.168.1.3 → 上游 DNSAdGuardHome 是可选项,不是全屋代理必须组件。如果你不想增加复杂度,可以先不用它。
三、主路由 DHCP 配置
主路由继续负责拨号和无线 AP,同时 DHCP 下发:
默认网关:192.168.1.2
DNS:192.168.1.3如果不使用独立 DNS,可以把 DNS 下发为:
DNS:192.168.1.2
或
DNS:192.168.1.1DHCP 地址池示例:
192.168.1.100 - 192.168.1.250核心是:客户端默认网关必须指向 OpenWrt 旁路由。
四、OpenWrt 旁路由基础配置
OpenWrt LAN 接口建议:
IP 地址:192.168.1.2
子网掩码:255.255.255.0
默认网关:192.168.1.1
DNS:192.168.1.3 或公共 DNS
DHCP:关闭OpenWrt 自己的默认路由应该是:
ip route正常类似:
default via 192.168.1.1 dev br-lan
192.168.1.0/24 dev br-lan如果 OpenWrt 自己的默认网关写成了自己,例如 192.168.1.2,就会出现 OpenWrt 自己出不了网的问题。
五、最关键:LAN 区域开启 NAT 和 MSS 钳制
旁路由作为全屋默认网关时,OpenWrt 的 lan 防火墙区域建议开启:
IP 动态伪装:开启
TCP MSS 钳制:开启位置:
网络 → 防火墙 → 区域 → lan → 编辑这是旁路由全屋代理里非常关键的一步。
如果没有开启,可能出现:
- Google、GitHub 等代理网站能访问。
- 百度、淘宝、B站等国内网站打不开。
- DNS 查询正常。
- 抓包时只看到客户端发 SYN,看不到服务器返回 SYN-ACK。
命令行方式可以这样检查 lan 区域编号:
uci show firewall | grep "=zone"找到 name='lan' 的区域后,例如是 firewall.@zone[0],再执行:
uci set firewall.@zone[0].masq='1'
uci set firewall.@zone[0].mtu_fix='1'
uci commit firewall
/etc/init.d/firewall restart注意:@zone[0] 只是示例,请以自己系统中 lan 区域的实际编号为准。
六、OpenClash 推荐配置
稳定优先建议:
运行模式:Redir-Host 或混合
代理模式:规则
区域绕过:大陆
域名嗅探:启用
DNS 代理:启用
流媒体解锁:按需开启如果家里设备多,尤其有小米手机、电视、IoT、投屏设备,建议先用 Redir-Host 或混合模式,不要一开始就上 Fake-IP。
模式选择可以简单理解为:
- Redir-Host:真实 DNS,兼容性最好。
- TUN:接管更彻底,适合 UDP、游戏、语音。
- 混合:Redir-Host + TUN 的折中。
- Fake-IP:分流精准,但兼容性和排障成本更高。
如果目标是家庭稳定使用,优先选择 Redir-Host 或混合。
七、AdGuardHome 可选配置
如果你使用独立 AdGuardHome,例如:
AdGuardHome:192.168.1.3可以让主路由 DHCP 下发:
DNS:192.168.1.3AdGuardHome 上游先保持简单,例如:
https://dns.alidns.com/dns-query
https://doh.pub/dns-query不建议一开始就把链路设计成:
AdGuardHome → OpenClash DNS → AdGuardHome这会形成 DNS 循环,导致解析异常、超时或设备误判网络不可用。
如果后续要让 OpenClash 参与国外 DNS 分流,需要确认 OpenClash DNS 的上游不要再指回 AdGuardHome。
八、常见问题排查
1. 国外网站能访问,国内网站打不开
先不要急着改 OpenClash 规则,按顺序检查。
第一步,确认 DNS 是否正常。例如在 AdGuardHome 查询日志里看 baidu.com 是否返回正常国内 IP,或者在 OpenWrt 上测试:
drill baidu.com @192.168.1.3正常应该返回类似百度、运营商或国内 CDN 的真实 IP,而不是 198.18.x.x 这类 Fake-IP。
第二步,检查 OpenClash 连接面板,确认国内网站是否命中 DIRECT。如果百度、淘宝、B站被错误走代理,国内网站可能加载异常。
第三步,抓包确认直连转发是否正常。假设客户端是 192.168.1.100,DNS 返回的百度 IP 是 183.2.172.177:
tcpdump -i br-lan host 192.168.1.100 and host 183.2.172.177 and tcp port 443如果只看到:
192.168.1.100.xxxxx → 183.2.172.177.443: Flags [S]却看不到:
183.2.172.177.443 → 192.168.1.100.xxxxx: Flags [S.]通常说明 OpenWrt 旁路由的直连转发路径有问题。优先检查 lan 区域是否开启了 IP 动态伪装和 TCP MSS 钳制。
2. 手机提示 Wi-Fi 无法访问互联网
如果网络实际可用,但手机提示 Wi-Fi 异常,可能是连通性检测域名被拦截、被代理或被 Fake-IP 影响。
常见检测域名包括:
connect.rom.miui.com
connectivitycheck.gstatic.com
www.gstatic.com
clients3.google.com
www.msftconnecttest.com
www.msftncsi.com
captive.apple.com建议这些域名不要拦截,必要时加入直连规则。
3. AdGuardHome 日志里看不到某个设备的 DNS
可能原因:
- 客户端没有使用
192.168.1.3作为 DNS。 - Android 私人 DNS 绕过了局域网 DNS。
- 浏览器开启了安全 DNS / DoH。
- 客户端拿到了 IPv6 DNS。
- 设备手动设置了其他 DNS。
排查时先让客户端只使用 192.168.1.3,再看 AdGuardHome 查询日志。
4. OpenClash 没有接管某个网段
如果后续部署了 WireGuard,例如 WireGuard 网段是 10.7.0.0/24,并希望外部客户端回家后也走 OpenClash,需要确认 OpenClash 没有把这个来源网段排除。
验证方法:
- WireGuard 客户端连接。
- 访问 Google 或 GitHub。
- 打开 OpenClash 控制面板。
- 查看 Connections 中是否出现来源为
10.7.0.x的连接。
如果看不到,说明 WireGuard 流量可能没有进入 OpenClash 透明代理。
九、推荐安装的排障插件
OpenWrt 25 使用 apk 包管理。
基础工具:
apk update
apk add tcpdump conntrack-tools curl jq drill htop流量统计:
apk add nlbwmon luci-app-nlbwmon
/etc/init.d/nlbwmon enable
/etc/init.d/nlbwmon start系统监控:
apk add luci-app-statistics collectd collectd-mod-interface collectd-mod-cpu collectd-mod-memory
/etc/init.d/collectd enable
/etc/init.d/collectd startVMware / ESXi 虚拟机建议:
apk add open-vm-tools
/etc/init.d/vmtoolsd enable
/etc/init.d/vmtoolsd startopen-vm-tools-fuse 主要用于 VMware 共享文件夹,OpenWrt 软路由一般不需要。
十、最终检查清单
主路由:
- 继续负责拨号和无线 AP。
- DHCP 默认网关下发
192.168.1.2。 - DNS 可以下发
192.168.1.3,也可以按需下发主路由或 OpenWrt。
OpenWrt:
- LAN IP 为
192.168.1.2。 - 默认网关为
192.168.1.1。 - DHCP 关闭。
lan区域开启 IP 动态伪装。lan区域开启 TCP MSS 钳制。
OpenClash:
- 代理模式使用规则模式。
- 稳定优先选择 Redir-Host 或混合。
- 国内走 DIRECT,国外按规则走代理。
- 不要让 DNS 链路形成循环。
AdGuardHome:
- 可选,不是必须。
- 如果启用,建议作为统一 DNS。
- 上游先保持简单,后续再做复杂分流。
总结
OpenWrt 旁路由 + OpenClash 全屋透明代理的关键,不是把配置堆复杂,而是把基础链路理清楚:
客户端默认网关 → OpenWrt
OpenWrt 默认网关 → 主路由
OpenWrt LAN 区域 → 开启 NAT 和 MSS
OpenClash → 规则分流
DNS → 避免循环如果遇到“国外能访问、国内打不开”,优先抓包看是否只有 SYN,没有 SYN-ACK。很多时候问题不是 OpenClash,也不是 DNS,而是旁路由 LAN 区域没有正确做 NAT/MSS。