Mihomo 路由器与旁路由部署概览:内核直跑、流量接管与维护边界

梳理主路由和旁路由两种部署思路,解释透明代理、转发路径及内核直跑适合的使用场景。

把 Mihomo 放到家庭路由器或旁路由上运行,核心目的不是给每台设备分别安装桌面客户端,而是把代理能力放到局域网出口附近,由网络设备统一处理符合条件的连接。这样做可以覆盖电视、游戏机、音箱、家庭服务器等不方便安装 Clash 客户端的设备,但也会把配置、转发、DNS 和故障定位集中到一个网络节点上。

“路由器部署”在实际讨论中可能指两种完全不同的结构:一种是 Mihomo 直接运行在承担家庭网关职责的主路由系统中;另一种是增加一台设备作为旁路由,让它与主路由并行存在,再通过网关、策略路由或手动设置,让部分客户端把流量交给旁路由。两种结构都能实现透明代理,但数据包经过的路径、断电后的影响范围以及维护方式并不相同。

先确定部署模型:主路由内核直跑还是旁路由分流

主路由内核直跑

主路由内核直跑,是指 Mihomo 运行在当前局域网的默认网关设备上。终端通过 DHCP 获得主路由的 IP 地址作为默认网关,访问外部网络时,数据包天然会先抵达这台设备。路由系统可以在转发阶段将流量交给 Mihomo 的透明代理入口,再由 Mihomo 根据规则模式、策略组和代理节点决定后续路径。

这种结构的优点是拓扑简单:默认网关、局域网 DHCP、DNS 转发和代理程序集中在一台设备上,规则覆盖范围也比较自然。缺点是主路由承担的职责较多,内核占用 CPU、内存和连接表资源;如果配置更新失败、路由系统重启或 Mihomo 进程异常,可能影响整个家庭网络。对于硬件性能有限、厂商固件封闭,或者不熟悉路由系统启动项的用户,直接改动主路由前应先确认是否能够回退。

旁路由独立运行

旁路由通常是局域网中的第二台设备,例如运行 Linux、OpenWrt 或其他路由系统的小主机。主路由继续负责拨号、无线接入和 DHCP,旁路由只运行 Mihomo 及相关的透明代理组件。终端可以通过三种常见方式使用它:把旁路由设为默认网关;只把 DNS 指向旁路由并配合透明转发;或者仅为指定设备手动设置网关和代理入口。

旁路由的价值在于隔离风险。主路由保持原有配置,旁路由停止运行时,未经过它的设备仍可通过主路由上网。它也方便逐步测试,例如先让一台电脑使用旁路由,再扩展到电视、家庭服务器或访客网络。不过,旁路由并不等于自动接管所有流量。若终端默认网关仍是主路由,且主路由没有把相关流量转发到旁路由,Mihomo 就无法看到这些连接。

理解透明代理:流量接管不等于所有连接都自动代理

桌面客户端常见的系统代理,是把 HTTP、HTTPS 或 SOCKS 代理地址写入操作系统或应用设置。应用主动遵守这些设置时,连接会发送到指定端口;不支持系统代理的程序则可能完全绕过它。路由器上的透明代理处理方式不同:它通常在转发链路中匹配连接,并通过防火墙重定向、策略路由或 TUN 等机制,把原本直接转发的流量交给代理内核。

传统的透明代理方案往往依赖系统网络栈和防火墙规则。例如,TCP 流量经过路由器的转发链时,被重定向到本机的透明代理端口;Mihomo 再根据原始目标地址进行规则匹配。UDP、ICMP、IPv6 和本机发起的流量可能需要不同处理,不能因为 TCP 网页能够打开,就推断所有协议都已经被接管。

TUN 模式则通过虚拟网卡接收经过系统路由的 IP 数据包,内核从中处理 TCP、UDP 等连接,并结合配置中的 DNS 与路由设置完成后续转发。它适合需要覆盖更多应用协议、又不希望逐项配置端口重定向的场景,但对系统权限、路由表、DNS 处理和 IPv6 设置更敏感。在路由器环境中,TUN 是否可用还取决于系统内核能力、虚拟设备权限以及对应版本的 Mihomo 支持情况。

一条连接实际经过什么位置

  1. 局域网终端解析域名,并根据本机路由表决定默认网关或 DNS 服务器。
  2. 数据包抵达主路由或旁路由。如果旁路由不是默认网关,就必须有额外的转发规则让流量经过它。
  3. 透明代理入口接收连接。入口可能是重定向端口、TProxy 端口或 TUN 虚拟网卡,具体名称取决于系统与配置。
  4. Mihomo 解析目标、执行 DNS 处理,并按规则顺序选择直连、代理或某个策略组。
  5. 连接从直连出口或代理节点发出,返回数据再沿着可达的回程路径返回终端。

其中任一环节缺失,表现都可能是“某些网站打不开”。例如策略规则选择了代理,但旁路由无法访问节点;或者节点可用,却因为终端仍把 DNS 发给主路由而得到错误地址。排查时要先判断连接是否抵达 Mihomo,再判断规则命中了什么,最后才判断代理节点和远端网络。

Mihomo 在路由器上的运行组成:配置、端口与规则

Mihomo 是负责解析配置、匹配规则和建立代理连接的内核实现。路由器部署时,至少要区分三类内容:内核运行参数、代理配置文件以及系统网络接管规则。配置文件通常包含代理节点、代理组、规则集、DNS、模式和监听端口;系统层则负责把终端流量送到正确的入口。只修改其中一层,另一层没有同步,往往无法得到完整结果。

配置中的模式通常包括规则、全局和直连。家庭网络长期使用时,规则模式更适合按域名、IP 或规则集分流;全局模式可用于验证代理链路是否可用;直连模式则适合判断问题是否来自代理节点或规则选择。切换模式只改变 Mihomo 对连接的处理策略,并不会修复默认网关错误、DNS 不可达或端口监听失败。

监听端口也需要与流量类型对应。HTTP 和 SOCKS 端口主要服务于显式代理客户端;透明代理端口用于系统转发链路;DNS 监听则处理域名解析请求。不要把一个普通 HTTP 代理端口直接当成透明代理入口,也不要在没有确认端口占用情况时重复启动多个服务。路由器系统中还要检查监听地址:只监听回环地址时,局域网终端无法直接访问;监听在局域网地址时,则需要配合访问控制。

mixed-port: 7890
mode: rule
allow-lan: true
external-controller: 127.0.0.1:9090

dns:
  enable: true
  listen: 0.0.0.0:1053

上面的片段只用于说明配置项之间的关系,不代表可以直接套用到每个路由系统。allow-lan 允许局域网访问显式代理端口,但透明代理仍需要系统侧完成转发;DNS 的监听端口也必须与路由器的 DNS 转发设置保持一致。控制面板端口更应限制在本机或可信管理网段,避免把管理接口暴露给不需要访问的网络。

维护边界:订阅更新、DNS、IPv6 与回退路径

订阅更新要分开看待

订阅更新通常会替换代理节点、策略组或规则相关内容,但不会自动理解你的路由拓扑。若更新后的配置缺少原先依赖的策略组名称,规则可能匹配到不存在的目标;若订阅只提供节点而没有完整的 DNS、TUN 或路由设置,透明代理功能仍需由本地配置补齐。更新前保留当前可用配置,更新后先检查文件是否成功解析、策略组是否存在,再测试一台终端。

DNS 是最容易被忽略的中间层

终端能否打开域名,取决于解析请求发送到哪里以及返回的地址是否适合当前规则。主路由、旁路由、运营商 DNS、加密 DNS 和 Mihomo 内置 DNS 可能同时参与处理。如果代理连接本身正常,但域名解析失败,应分别测试 IP 访问、局域网 DNS 端口、Mihomo DNS 监听端口和规则中的域名解析策略。不要只反复切换代理模式,因为模式切换不会改变终端实际使用的 DNS 服务器。

IPv6 不能靠 IPv4 经验推断

家庭网络开启 IPv6 后,终端可能优先获得 AAAA 记录并通过 IPv6 默认路由直连。若只为 IPv4 配置了透明代理,用户会看到部分服务绕过代理,或者出现连接等待时间变长。可以根据实际需求检查 IPv6 防火墙、路由通告和 Mihomo 的 IPv6 处理能力;在尚未规划好 IPv6 路径时,也可以先在测试网段关闭 IPv6 进行对照,但应明确这是网络策略选择,而不是代理内核必然存在故障。

为主路由保留回退路径

主路由直跑时,应准备本地管理入口、可用的原始配置和关闭透明代理的方式。旁路由部署时,则要记录主路由和旁路由的管理地址、DHCP 归属以及默认网关变更位置。修改 DHCP 下发的网关或 DNS 后,终端可能仍保留旧租约,需要重新连接网络或手动续租。维护操作应尽量一次只改变一个变量,避免同时升级内核、替换订阅和调整防火墙。

如何选择:按覆盖范围、性能和故障成本判断

如果只有少量设备需要代理,且设备本身支持系统代理或 Clash 客户端,继续在终端运行客户端通常更容易观察连接、规则命中和日志。路由器部署更适合需要统一覆盖多种设备,或者希望家庭网络按照同一套规则分流的场景。选择之前应确认设备性能:内存不足会导致内核被系统终止,CPU 较弱时大量连接、规则集解析和加密转发可能造成延迟。

需求 更适合的结构 主要注意点
全家设备统一分流 主路由直跑或默认网关旁路由 重点检查 DHCP、DNS、IPv4 与 IPv6 路径
先让少量设备测试 旁路由按设备指定网关 保留主路由为默认出口,逐步扩大范围
路由器硬件资源有限 独立旁路由 关注内存、连接数、规则集规模和散热
只需要浏览器代理 终端显式代理 无需先改动家庭网络转发结构

一个稳妥的验证顺序是:先确认 Mihomo 进程正在运行,再确认配置文件已成功加载;接着从旁路由本机测试节点连接,然后让一台局域网终端使用指定入口;最后才把网关或 DNS 推送给更多设备。每一步都记录终端 IP、默认网关、DNS 地址、代理监听端口和当前模式。这样出现问题时,可以快速判断是设备没有走旁路由、流量没有进入透明入口、规则选择不符合预期,还是节点本身不可用。

常见表现与定位顺序

  • 终端完全没有代理效果:先查看终端的默认网关,确认它是否指向承担代理接管职责的设备;再检查旁路由是否允许转发及防火墙规则是否加载。
  • 网页可以打开但应用失败:应用可能使用 UDP、QUIC、独立 DNS 或 IPv6,测试时可查看连接类型和日志,不要只依据浏览器结果判断。
  • 节点列表存在但全部超时:从路由器本机测试到节点服务器的连通性,检查时间、出口 DNS、上游防火墙和订阅中的服务器地址。
  • 局域网设备互相访问异常:检查透明代理是否错误接管了内网地址,并确认规则中对局域网、保留地址和管理网段的处理。
  • 重启后配置失效:查看启动服务、挂载路径和配置文件权限,确认内核启动顺序晚于网络接口与存储挂载。

日志应与网络抓包或路由表信息结合阅读。只看到“连接失败”还不足以说明问题发生在节点;如果日志中完全没有对应域名或目标地址,更可能是终端没有经过 Mihomo 入口。相反,已经看到规则命中和出站连接,但返回超时,则应继续检查策略组、远端节点及回程网络。

总体来看,Mihomo 路由器部署是一次网络出口设计,而不是简单安装一个程序。主路由直跑追求路径集中,旁路由追求职责隔离;透明代理负责接管经过指定节点的连接,规则负责决定连接的处理方式,订阅则主要提供可更新的节点与配置内容。先把这几个边界分清,再根据设备数量、硬件资源和维护能力选择结构,后续的配置与排查会更可控。

下载Clash