IDCNLink - 全球网络加速服务商 - 机场

OpenWrt MihomoTProxy 教程:从安装到透明代理排错

更新于 2026-10-30 · idcnlink.online

简答:搜索“mihomotproxy 教程”时,先不要直接复制安装命令:MihomoTProxy 是 OpenWrt-mihomo README 使用的项目名称,OpenWrt-mihomo 页面显示其 fork 自 OpenWrt-nikki,而 Nikki 仍是独立项目。最稳妥的顺序是先检查 OpenWrt、内核、CPU 架构和 firewall4,再按对应仓库安装;首次启动先验证普通代理,确认核心正常后再启用 TPROXY、TUN、DNS 劫持和局域网透明代理。

定义:MihomoTProxy 是在 OpenWrt 上利用 Mihomo 核心与 firewall4/nftables 接管路由器或局域网流量的一类透明代理方案,具体包名、菜单和兼容条件取决于实际使用的项目仓库。

先分清项目关系:MihomoTProxy、OpenWrt-mihomo 与 Nikki

这些名称经常同时出现在搜索结果中,但不能直接当成同一个安装包。OpenWrt-mihomo 仓库的页面标题使用了“MihomoTProxy”,并显示该仓库 fork 自 OpenWrt-nikki。因此,MihomoTProxy 更适合被理解为该类方案或仓库使用的项目名称;OpenWrt-mihomo 是一个具体仓库;Nikki 则仍有独立仓库、Wiki 和发布包。

三个名称的核对方式
名称可核对的信息安装时怎么处理
MihomoTProxyOpenWrt-mihomo README 使用的项目标题,定位是 Mihomo on OpenWrt 的透明代理。不能仅凭名称确定安装包,先看实际仓库和页面菜单。
OpenWrt-mihomo独立的 OpenWrt 透明代理仓库,页面列出 mihomo 系列包。按该仓库当前 README、Feed 或 Release 安装。
Nikki与 OpenWrt-mihomo 有 fork 关系,但仍是独立项目并单独发布软件包。使用 nikki 系列包时,不要混装 mihomo 系列包。

本文是第三方使用指南,不代表上述开源项目官方。项目版本、Feed 地址、软件包名称和界面字段可能变化,安装前应重新打开对应仓库的 README 或 Release 页面核对。

安装前检查:版本、内核、架构和 firewall4

不要一上来执行安装脚本。先通过 SSH 登录 OpenWrt,备份现有配置,并记录下面的检查结果:

cat /etc/openwrt_release
uname -r
uname -m
ubus call system board
command -v fw4
fw4 -V

cat /etc/openwrt_release用于确认发行版本,uname -r用于记录 Linux 内核版本,uname -m用于查看运行时架构,ubus call system board用于补充查看设备型号和系统信息。架构不能只依赖 ubus 输出,还要与软件包仓库的架构目录核对。

如果系统使用 opkg,再执行:

opkg print-architecture
opkg list-installed | grep -E 'firewall4|kmod-nft-tproxy|kmod-tun|ip-full'

如果系统使用 apk,则执行:

apk --print-arch
apk list --installed | grep -E 'firewall4|nft-tproxy|tun|ip-full'

OpenWrt 官方文档说明,OpenWrt 22.03 起默认从旧的 fw3/iptables 防火墙后端切换到 fw4/nftables;fw4 print可以输出 fw4 生成并交给 nftables 的规则配置,适合排查透明代理规则是否生成。可参考 OpenWrt Netfilter 管理文档 和 OpenWrt nftables 文档。

OpenWrt-mihomo 仓库 README 明确写有 firewall4 和 OpenWrt 22.03 或更高版本的要求;Nikki 的 Release 页面则按 OpenWrt 版本和 CPU 架构提供不同构建包。不要把一个项目的版本结论直接套到另一个项目上,尤其不要只因设备能运行 OpenWrt 就认为一定有匹配软件包。

继续安装前,至少确认:已备份 /etc/config;设备仍有本地管理入口;架构能在对应 Feed 或 Release 中找到;存储空间足够;并准备好关闭插件或恢复防火墙配置的回滚方式。

安装方式:先选项目,再核对实际包名

OpenWrt-mihomo README 当前列出的安装包包括 mihomo、luci-app-mihomo 和中文语言包;这只能说明该仓库页面列出了这些包,不能证明它们适用于所有 OpenWrt 版本和架构。Nikki 项目则使用 nikki 系列包。具体包名应以当前仓库的 Feed 或 Release 为准,相关信息可在 OpenWrt-mihomo README 和 OpenWrt-nikki Releases 中核对。

  1. 使用 Feed:先确认 Feed 分支与 OpenWrt 版本、架构匹配,再在 LuCI 的“系统—软件包”更新列表,搜索实际存在的包名。
  2. 使用 Release:下载与 uname -m、OpenWrt 版本匹配的构建包,逐项检查依赖和校验信息。
  3. 使用 SSH:如果系统是 opkg,可先执行 opkg update,再用 opkg list | grep -E 'mihomo|nikki|luci-app-mihomo|luci-app-nikki'确认仓库是否真的提供对应包。
  4. 不要混装:如果列表中只有 nikki 系列包,就不要把 mihomo 系列包名硬改后安装;如果包不存在,应回到版本、架构、Feed 和分支检查。

安装完成后,可以用以下命令观察实际安装结果:

command -v mihomo
command -v nikki
ls /etc/init.d/ | grep -E 'mihomo|nikki'

不同项目的启动脚本名称可能不同,因此没有输出时不要立即判断安装失败,应打开对应仓库说明确认实际文件名。

首次配置:订阅导入后先检查,再启动透明代理

第一次部署只走最短路径,不要同时修改订阅、DNS、IPv6、TUN 和访问控制。推荐顺序是:导入配置文件—检查格式—启动核心—验证普通代理—最后开启透明代理。

  1. 进入插件的 LuCI 页面,找到“配置文件”“订阅”或类似入口。
  2. 添加已经确认来源的订阅地址。订阅链接通常包含个人凭证,不要粘贴到公开帖子或日志中。
  3. 下载或更新订阅后,确认页面显示本地配置文件已经生成。
  4. 选择该配置作为当前配置,先执行配置检查或 YAML 校验。
  5. 只启动核心或路由器自身代理,暂时不要开启局域网全量接管。
  6. 确认日志没有配置解析、端口占用、DNS 监听或权限错误后,再进入 TPROXY 或 TUN 配置。

Nikki Wiki 的配置说明涉及订阅下载、配置文件校验以及 proxies 或 proxy-providers 等字段。不同分支的页面名称可能不同,所以应以实际面板和对应 Wiki 为准。订阅导入成功,不等于节点可用,也不等于透明代理规则已经生效。

DNS 监听地址、代理端口、TUN 设备名和控制器端口都可能因项目版本、配置文件和面板设置不同而变化。本文不把某个固定端口或固定 DNS 地址当成通用默认值,实际值应从插件页面、配置文件和监听状态中读取。

TPROXY 和 TUN 怎么选:先验证基础代理,再扩大接管范围

OpenWrt 上常见模式的选择
模式适合先做什么主要检查点
普通代理验证订阅、核心、节点和基础连通性。代理端口、日志、路由器自身请求。
TPROXY主路由或旁路由接管局域网 TCP/UDP 流量。firewall4、nftables 规则、内核模块、访问控制和网关。
TUN配置明确需要虚拟网卡和自动路由的场景。TUN 设备、自动路由、DNS 劫持、IPv6 和回滚方式。

TPROXY 和 TUN 不是越多越好。首次部署建议先使用普通代理完成基础验证,再选择一种透明接管模式。TPROXY 更依赖 OpenWrt 的 firewall4/nftables 与内核模块协同;TUN 则需要创建虚拟网卡并处理路由、DNS 和接口选择。Mihomo 官方 TUN 文档列出了 enable、auto-route、auto-detect-interface、dns-hijack 等字段,但字段是否由插件自动生成,要看实际 Mihomo 版本和面板,详情可查 Mihomo TUN 配置文档。

如果你只是想确认订阅和节点是否正常,不要先启用 TUN。若需要主路由接管局域网,先确认测试设备的默认网关确实指向 OpenWrt;若是旁路由,需额外核对主路由下发的网关、DNS、访问控制和防火墙放行。IPv6 应单独验证,不能用 IPv4 能打开网页推断 IPv6 也已正确代理。

启动后的验证顺序:不要把“进程运行”当成“透明代理生效”

  1. 服务状态:在 LuCI 中查看插件是否运行;SSH 下使用实际存在的脚本,例如 /etc/init.d/nikki status 或 /etc/init.d/mihomo status。
  2. 日志:先看第一条配置解析、权限、端口占用、TUN 创建或 DNS 监听错误。
  3. 防火墙规则:执行 fw4 print,观察是否生成了与当前模式相关的规则。该命令的用途可参考 OpenWrt 官方 Netfilter 文档。
  4. 监听端口:执行 ss -lntup 或设备支持的等效命令,确认实际监听地址和端口,不要假定固定端口。
  5. 先测路由器:确认路由器自身代理可用,再测试一台局域网设备。
  6. 再测局域网:确认测试设备的默认网关、DNS 和访问控制符合插件配置。
  7. 分开测协议:网页打开只能说明部分 TCP 路径可用;DNS 查询成功也不能证明透明代理完整生效;UDP 需要单独测试。

如果启用透明代理后断网,先关闭局域网代理、DNS 劫持或 TUN/TPROXY 开关,恢复到普通代理或停用插件,再一次只改一个变量。不要同时替换订阅、DNS 和防火墙规则,否则很难定位真正原因。

按症状排查:未运行、局域网不通、DNS 异常和重启失效

插件显示未运行

先重新核对项目名称、OpenWrt 版本、uname -r、uname -m、包管理器架构和 firewall4。再查看日志第一条错误。如果是配置解析失败,先换成能够通过校验的本地配置,不要先修改透明代理规则。

路由器能用,局域网设备不能用

这通常表示核心或路由器自身代理已启动,但局域网接管链路没有打通。检查局域网代理开关、入站接口、测试设备默认网关、DNS、访问控制和 fw4 print 输出。旁路由场景还要检查主路由是否真的把测试设备的网关或 DNS 指向旁路由。

网页能打开,但 DNS 结果异常

检查客户端是否仍把 DNS 请求发往原有上游,插件是否启用了 DNS 劫持,以及 IPv4 和 IPv6 是否只配置了一半。修改后先清理测试设备 DNS 缓存,再分别测试 IPv4、IPv6 和局域网设备。单个 DNS 查询结果不能证明不存在其他解析路径。

TCP 正常但 UDP 不通

确认当前配置是否启用了 UDP、所选模式是否支持 UDP,以及内核模块和防火墙规则是否齐全。TPROXY 与 TUN 的 TCP/UDP 选项不一定相同,不要用网页打开结果替代 UDP 验证。

重启后配置失效

检查插件是否设置为开机启动、配置文件是否保存到本地、订阅是否依赖启动时重新下载,以及网络服务是否已经先于插件完成初始化。可以先使用已缓存且通过校验的本地配置,确认问题来自启动顺序还是订阅更新。

开启 IPv6 后部分设备异常

先暂时关闭 IPv6 代理或 DNS 劫持,确认 IPv4 路径恢复,再单独启用 IPv6。IPv6 需要同时核对上游网络、地址、路由、DNS 和透明代理规则,不能只看 IPv4 结果。

可保存的最小排查清单

  • 项目:确认使用的是 OpenWrt-mihomo 还是 Nikki,不混装包名。
  • 版本:记录 cat /etc/openwrt_release 和 uname -r 输出。
  • 架构:记录 uname -m,并使用 opkg print-architecture 或 apk --print-arch核对软件包架构。
  • 防火墙:确认 fw4 存在,必要时执行 fw4 print检查生成规则。
  • 配置:先导入并校验订阅,再启动核心。
  • 模式:先普通代理,再选择 TPROXY 或 TUN,最后处理 IPv6、DNS 和访问控制。
  • 验证:依次检查服务、日志、监听端口、路由器、局域网设备、DNS 和 UDP。
  • 回滚:每次只改一个开关,断网时先关闭透明代理或恢复备份。

如果你无法确认当前插件来自哪个仓库,先不要继续复制命令。打开插件页面、软件包列表或已安装文件名,判断是 mihomo 系列还是 nikki 系列,再回到对应 README 或 Release 页面。

常见问题

MihomoTProxy 是不是 Nikki 的旧名字?

不能直接这样认定。可以核实的是,OpenWrt-mihomo 页面显示 fork 自 OpenWrt-nikki,并使用 MihomoTProxy 作为项目标题;Nikki 仍有独立仓库和 Release。因此应按实际仓库核对包名、版本和菜单,不要仅凭名称安装。

OpenWrt 22.03 能不能直接安装 Nikki?

不能仅凭 OpenWrt 版本作出结论。OpenWrt-mihomo README 明确写有 firewall4 和 OpenWrt 22.03 或更高版本;Nikki 则按自己的 Release 和架构提供构建包。应检查 Nikki 当前 Release 是否有与你的 OpenWrt 版本和 CPU 架构匹配的包。

为什么 ubus call system board 不能单独确认 CPU 架构?

该命令主要用于查看设备型号和系统信息,不能替代软件包架构核对。建议同时执行 <code>uname -m</code>,并根据系统执行 <code>opkg print-architecture</code> 或 <code>apk --print-arch</code>,再与 Feed 或 Release 的架构目录比较。

TPROXY 和 TUN 需要同时开启吗?

通常不需要。先选择一种模式完成基础验证,再根据日志和项目文档决定是否切换。两种模式同时修改路由、DNS 或防火墙,会增加断网和定位问题的变量。

订阅导入成功但服务启动失败怎么办?

先检查配置文件是否通过 YAML 或插件校验,再查看日志中的第一条解析错误、端口占用、权限或 DNS 监听错误。可以先使用已缓存且通过校验的本地配置验证核心,再单独排查订阅更新。

如何确认透明代理真的生效?

依次检查服务状态、日志、<code>fw4 print</code>、监听端口和测试设备的网关/DNS,然后分别验证 DNS、TCP 和 UDP。单个网页能打开,只能说明某条 TCP 路径可用,不能证明所有局域网流量都已接管。

相关阅读

参考资料

  1. OpenWrt-mihomo GitHub 仓库与 README
  2. OpenWrt-nikki GitHub 仓库
  3. OpenWrt-nikki Releases
  4. OpenWrt 官方 Netfilter 管理文档(openwrt.org)
  5. OpenWrt 官方 nftables 文档(openwrt.org)
  6. Mihomo 官方 TUN 配置文档