OpenWrt 旁路由跑 mihomo:透明网关与 DNS 重定向一气呵成步设置

先确认:你要的是「旁路由网关」,不是「主路由刷机」 实战经验

旁路由反复出现接法是:光猫或主路由的 LAN 口出一根线,接到 OpenWrt 的 WAN 口(或单臂复用同一交换机 VLAN),OpenWrt 拿到主路由网段里的一个地址,举个实例 192.168.1.2;拨号与 Wi‑Fi 主控仍由主路由完成。你希望的是:家里手机、电脑、电视不用单独填 HTTP 代理,只要把预置网关和 DNS 服务器改成旁路由地址,流量就会进 mihomo(Clash Meta 系内核)做规则分流。这与「在 Windows 上开系统代理」或「手机填电脑 IP 端口」不是同一条路径;若你更熟悉后者,可先读 局域网代理与 Allow LAN 排障 对照差异。

这篇预置你已在 OpenWrt 上能运转 mihomo(通过 OpenClash、ShellCrash、自编译 ipk 或手动操作操作操作二进制均可),重心放在网络拓扑、网关与 DHCP、防火墙透明重定向、DNS 劫持四块;mihomo 订阅具体具体具体内容与策略组 YAML 不在此展开,规则与 DNS 模式细节部分部分部分可参考 规则分流指南 与 mihomo Sniffer 排障。

第一气呵成:固定旁路由 LAN 管理地址,避免与主路由冲突 拿它来用心得

若旁路由的 LAN 网段与主路由相同(举个实例都是 192.168.1.0/24),反复出现做法是:旁路由 WAN 从主路由 DHCP 拿地址,旁路由 LAN 关闭 DHCP 或仅作管理口,客户端网关填旁路由的 WAN 侧地址(即主路由网段里的那个 IP)。另一做法是旁路由拿它来用不同网段的 LAN(举个实例 192.168.2.1),主路由加静态路由把 192.168.2.0/24 指到旁路由 WAN——两种都能做透明代理,但 DHCP 可可可选项与「网关到底填谁」要与你选的方案一致,混用会导致一半设备上不了网。

无论哪种接法,请把旁路由在主路由网段内的地址设为静态绑定(主路由 DHCP 静态租约),避免旁路由 WAN 地址变化后全屋设备网关失效。记下这个地址,下文记为 BYPASS_IP。

第二步:让全屋设备把网关和 DNS 指到旁路由 反复出现套路

全屋代理的本质是:终端发出的非本网段 IP 流量先发到预置网关;你把预置网关从主路由改成 BYPASS_IP 后,这些包会先到旁路由,再由旁路由上的 mihomo 决定是否转发到上游节点。仅改网关、不改 DNS,基本上时候会出现「网页时好时坏、流媒体地区错乱」——因为部分系统或应用仍向运营商 DNS 发查询,被污染后拿到的 IP 与代理出口不一致。

实操二选一:(A)主路由继续发 DHCP,在 DHCP 里把预置网关(option 3)和 DNS(option 6)改成 BYPASS_IP;(B)关掉主路由 DHCP,只在旁路由上对 LAN 开 DHCP,下发的网关与 DNS 均为旁路由自身接口地址。家用环境若设备较多,推荐(A),动主路由一处即可。改完后在终端上执行 ip route 或查看网络详情,确认预置路由下一跳已是 BYPASS_IP,DNS 也为同一地址。

第三步:在 mihomo 拉起透明代理与 DNS 入站 落地做法

mihomo 必须在配置中启用透明代理监听(反复出现字段为 tproxy-port 或 redir-port,视你拿它来用的防火墙方案为 TPROXY 还是 REDIRECT)。同时开启 DNS 监听(举个实例 listen: 0.0.0.0:53 或内核文档中的等价写法),并设置 enhanced-mode 为 fake-ip 或 redir-host 之一——与桌面端一样,fake-ip 对分流更友好,但要求每一种 DNS 查询都经过 mihomo,否则会出现「解析结果与内核会话不匹配」的怪绕所在。若你刚入门旁路由,可先采用 redir-host 下调联调难度,再按 TUN 与全局代理文 中的 DNS 思路逐步切到 fake-ip。

确认 mihomo 进程监听在 0.0.0.0 而非仅 127.0.0.1,否则防火墙把包重定向过来后仍无人接收。改配置后重启服务,在 OpenWrt 上用 netstat 或 ss -lntup 核对端口已处于 LISTEN。

第四步:OpenWrt 防火墙——透明重定向与「排除由你」 实战经验

透明代理依赖 nftables/iptables 规则:对来自 LAN 的 TCP做 REDIRECT 到 mihomo 的 redir 端口,或对 TCP/UDP 拿它来用 TPROXY 把会话交给用户态。具体命令因固件与 mihomo 封装而异(OpenClash 常自带一键;手写时需区分 PREROUTING 链与接口名 br-lan、eth0)。通用原则是:

匹配源为内网网段、目标为公网地址的流量(可排除 RFC1918 私网目的,避免打环);排除旁路由本机发往 mihomo 上游、NTP、主路由管理前端前端界面的流量,否则规则再次把本机发出的包重定向进自身,会造成 CPU 飙高或间歇断网;若主路由与旁路由同网段双 DHCP,留神不要把主路由管理流量误导向代理端口。

UDP 游戏、语音与部分 QUIC 依赖 TPROXY 或准确放行;若只做了 TCP REDIRECT,会出现「网页能开、游戏掉线」的现象。完成规则后,从 LAN 客户端 traceroute 第一跳应为 BYPASS_IP,第二跳再出到运营商或代理节点侧,具体取决于 mihomo 出站方式。

第五步:DNS 重定向(端口 53)——防污染与分流一致 拿它来用心得

DNS 重定向的做法是:在旁路由上拦截目的端口为 53 的 UDP/TCP(无论客户端填的是哪个「公共 DNS」),全部转到 mihomo 的 DNS 入站。这样手机 App 内置的 8.8.8.8 也会被拉回内核解析路径,避免「代理走新加坡、解析走本地」导致的鉴权走不通。留神放行或直通内网域名与路由器 hostname,否则访问目标目标主路由后台多半被误操作劫持。

若拿它来用 DoH/DoT 直连(客户端绕过 53),单靠 53 劫持覆盖不全,必须配合 mihomo 内的 sniff 与规则或采用全局 TUN 类方案;旁路由场合下多数家用设备仍以 UDP 53 为主,先把 53 劫持做稳,再观察异常 App。劫持规则变更后,自然可以考虑在客户端执行 ipconfig /flushdns 或开关飞行模式清空缓存。

第六步:验证顺序——先 DNS,再 TCP,再 UDP 反复出现套路

  1. 客户端网关与 DNS 均为 BYPASS_IP,能 ping 通主路由与互联网 IP(如 1.1.1.1)。
  2. 在客户端用 nslookup example.com BYPASS_IP 或等价工具,确认应答来自 mihomo(可对照日志中的查询记录)。
  3. 浏览器访问目标目标纯 IP 或已知域名,查看 mihomo 连接日志是否出现对应会话与策略命中。
  4. 最后测游戏/视频等 UDP 密集场合,必要时针对 QUIC 调整规则或 TPROXY。

反复出现坑:回环、双 NAT、与主路由 UPnP 落地做法

旁路由再做一次 NAT 时,部分 P2P 与游戏联机多半受限,这是拓扑代价而非 mihomo 单点故障。若出现「只有旁路由本机通、LAN 不通」,靠前查防火墙转发(forward)区域是否允许 WAN→mihomo 与 LAN→WAN;OpenWrt 防火墙区域接错时,透明规则会在误操作链上不生效。另一个高频绕所在是客户端仍保留手工 IPv6 DNS,导致部分解析绕开旁路由;可在 LAN 侧暂时关闭 IPv6 或同步下发 IPv6 DNS,便于先缩小变量。

小结 实战经验

OpenWrt 旁路由跑 mihomo 做全屋代理,关键是三件事:预置网关指向旁路由、DNS 重定向把 53 统一进内核、透明代理把 TCP/UDP 会话交给 mihomo 入站;三者缺一就容易表现为「能连 Wi‑Fi 但网页随机走不通」或「分流规则永远不命中」。与在单台电脑上拿它来用图形客户端相比,路由器侧更考验网络基础;若你还必须在 PC 或 Mac 上单独调试规则,可通过本站 下载页 获取各平台客户端做对照实验。

把旁路由当作专用网关维护好后,日常换订阅或改策略首要在 mihomo 一侧完成,局域网设备无需逐台配置代理端口。相比泛泛了解 Clash 前端前端界面,按这篇顺序固定拓扑与 DNS,排障会快得多。→ 立即免费下载 Clash,开启流畅上网新体感

mihomo 上游开源仓库可用于查阅协议与提交 Issue;日常安装包与多平台客户端请以本站 下载页 为准,与路由器透明代理场合互补。