把OpenClash跑在OpenWrt 软路由上,本质是把 Clash Meta(Mihomo)内核插进路由器系统里,由 iptables / nftables、dnsmasq 以及可选的 TUN 接口一起把局域网流量按规则分流。对零基础用户而言,真正的难点往往不在「点几下菜单」,而在于设备与固件是否匹配、拓扑是主路由还是旁路由、内核与依赖是否一次性装齐。本文按「从刷好可用的 OpenWrt 到 LuCI App 里订阅更新成功」的真实顺序写,避免把 WAN、LAN、DNS 与网关混成一坨。
先选场景:主路由还是旁路由
在开始下载任何 .ipk 之前,先画清楚家里的拓扑。主路由模式下,OpenWrt 设备直接拨号或接光猫,绝大多数终端的默认网关就是它,OpenClash 挂在 LAN 出口即可统一劫持 DNS 与 TCP。旁路由(网关旁挂)下,OpenWrt 并联在交换机或主路由 LAN 口后面,常见做法是让需要代理的设备把网关改成旁路由地址,而 DHCP 仍由主路由发放;也可以反过来由旁路由管 DHCP,但这时要特别注意避免双重 NAT 与地址段冲突。
旁路由还能细分为「仅网关旁挂」与「仅 DNS 旁挂」等变体:有的用户只把 DNS 指到 OpenWrt 上跑 AdGuard Home,再让 OpenClash 接手上游解析;也有用户全程依赖 OpenClash 内置 DNS 模块。无论哪种,请在纸上写出三段信息:LAN 网段(例如 192.168.1.0/24)、旁路由静态 IP、主路由 LAN 地址。装完 OpenClash 后若网页突然打不开,优先回到这张草图核对网关与 DNS,比在 LuCI 里乱勾选项更有效。
第二步:机型、分区与 OpenWrt 固件
OpenWrt 不是单一镜像,同一芯片不同版型也可能不通用。去 OpenWrt 硬件数据库或你信任的固件发布页,核对:Flash 大小是否足够装下后续内核与 Geo 数据、是否需要合入闭源无线驱动、当前主线版本与你计划装的 OpenClash 依赖是否兼容(过旧的 OpenWrt 往往缺库,过新的 snapshot 又可能还没适配某些 LuCI 包)。
刷写方式因厂而异:有的机型先用原厂恢复界面上传 sysupgrade.bin,有的必须先 TFTP 救砖。本文刻意不写「一键通用线刷命令」,原因很简单——错误镜像或中途断电足以把设备送进维修台。请完整阅读针对你机型的教程,至少做到:备份原厂分区、确认是 factory 还是 sysupgrade 包、知道如何进 failsafe。若你暂时不想动分区,也可以先在 x86 软路由或虚拟机里练熟 OpenWrt 命令行与 LuCI,再上真机。
第三步:先把「干净的 OpenWrt」跑稳
刚刷完的 OpenWrt 建议先完成基础网络:WAN 能拿到地址或拨号成功、LAN 能管理、系统时间与 NTP 正常、软件包列表能更新。在 SSH 里执行 opkg update 若连续失败,多半是上游镜像不可达或 TLS 证书链不全,先把这一条修好;否则后面 OpenClash 在内核与规则数据下载阶段会反复报错。
顺手检查 /overlay 可用空间。OpenClash 会拉取 `/etc/openclash` 下的配置、内核二进制、以及可能很大的 GeoIP / ASN 数据库。空间捉襟见肘时,更新会写到一半失败,LuCI 上表现为「进度条卡住」或「服务启动失败」。必要时删除无用语言包、把日志级别调低,或换更大 Flash 的机型。
第四步:安装 OpenClash(LuCI App)与依赖思路
OpenClash 一般以 LuCI 应用程序 + 后端脚本 + 可替换内核的形式分发。获取途径可能是软件源里的 opkg install luci-app-openclash,也可能是作者 Release 页提供的 .ipk 组合包。不同通道版本节奏不一致:请阅读你使用渠道的「安装说明」,核对最低 OpenWrt 版本、所依赖的 shell 工具、防火墙后端(fw3 还是 fw4)。
常见依赖族包括:coreutils、bash、curl、ca-bundle、dnsmasq-full 或兼容的 DNS 方案、以及能支撑脚本下载校验的工具链。若 LuCI 安装后菜单里是空白页,经常是 luci-compat 或相关 Lua 依赖缺失。不要用「网上复制的一大串 opkg」盲目重装,应对照报错逐条补包,否则容易把系统包管状态搅乱。
内核:为什么默认讨论 Mihomo / Clash Meta
OpenClash 历史上的 Premium 内核与当下的 Meta lineage 并存于各种旧贴中,容易让新手困惑。简言之:新用户应优先跟随发行版默认通道准备 Meta 内核,以获得较新的协议与规则特性;在 LuCI 里通常有「内核更新」「内核类型」或类似选项,按架构(aarch64_generic、x86_64 等)下载,若自动源失败,可改用手动上传与权限设置(chmod +x)。
内核与配置文件是一体两面:订阅里的节点类型、规则里的 GEOSITE / GEOIP 动作、以及 DNS 层的 fake-ip 行为,都依赖内核实现。若你导入的配置要求 Meta 专有字段,却跑了过旧二进制,会直接解析失败。遇到此类问题,先看运行日志里是否出现 unsupported 或字段缺失提示,再决定是否升级内核或精简配置。
第五步:LuCI 中首次拉起 OpenClash
打开 服务 → OpenClash(不同汉化可能略有出入),第一轮建议只做三件事:选好内核、开启一次「更新订阅」所需的下载通道、关闭所有花哨插件级选项。例如 DNS 旁路、第三方面板、一键测速等,都可以等主路径通了再开。
关注以下面板区块(命名随版本会变,但逻辑恒定):
- 运行模式:
Redir-Host、Fake-IP、TUN与混合模式各有适用面;家庭主路由若希望透明代理,多数教程会走向 Redir 或 TUN,具体取决于你的固件内核是否支持tun模块、以及你是否需要抓取部分 UDP。 - DNS 设置:错位是最常见的「能 ping 不能上网」原因。若开启
fake-ip,务必理解它与局域网真实解析之间的差异,并避免在主路由上再叠一层不兼容的「强制 HTTPS DNS」。 - 绕过中国大陆 IP类开关:对规则集大小与 CPU 占用敏感。性能薄弱的盒子不要盲目开大库,可先依赖订阅自带的精简规则跑通,再逐步加重规则。
第六步:订阅接入与配置合并
在「配置订阅」区域添加提供商给出的 订阅 URL,名称仅作区分,更新间隔不必过短以免触发限流。首次更新成功后,插件会把远端 YAML 或转换后的片段合并进运行配置。若你更习惯本地写死策略,也可以上传完整配置,但要确认与路由器内存匹配。
策略组与规则维护的通用原则可参考本站《Clash 完整配置教程》:路由器场景下额外记住两点——尽量控制规则条数与定时更新频率,以及留意日志旋转别把闪存写穿。订阅只是入口,真正决定「哪些流量走代理」的仍是规则与 DNS。
第七步:把 WAN、LAN、DNS 与旁路由对齐
主路由下,重点检查 WAN 口 DNS 是否仍指向运营商;若你希望全局走加密 DNS,应在 OpenClash 面板与 dnsmasq 转发链之间建立一致逻辑,避免「客户端以为用了路由器 DNS,实际劫持没发生」。同时注意 IPv6:若上游下发了 PD,而你没有在 OpenClash 里正确处理 IPv6 策略,会出现「测速 IPv4 正常、部分应用走 IPv6 掉线」的怪象。
旁路由下,务必在主路由上为旁路由设静态 DHCP 绑定,防止地址漂移;需要代理的终端默认网关指向旁路由,DNS 既可以也指向旁路由,也可以指向主路由再由旁路由劫持——两路都要自洽。若你在主路由还跑着家长控制或企业准入,确保它们不会因为「网关不是主路由自己」而把设备踢下线。
防火墙、硬件加速与性能预期
OpenClash 不是魔法:在百元级 ARM 盒子上强行开 TUN、全量 GEOSITE、并拉高并发连接,CPU 会瞬间打满,表现为延迟飙升与断流。若你追求「全家 4K 同时跑在代理链上」,硬件预算要前置,而不是只靠改两个 UCI 选项。
部分固件集成 Flow Offloading:与某些精细化流量劫持方案可能冲突。遇到更新固件后突然失效,可把硬件加速逐项关闭做 A/B。日志在 /tmp/openclash*.log 一带(随版本变化)以及系统内核日志里,善用 logread -f 比在论坛发问更快。
常见故障的快速排查顺序
- 服务是否真的在跑?
/etc/init.d/openclash status与 LuCI 顶部状态是否一致。 - 内核与架构是否匹配?升级固件后有时需要重新下一遍内核。
- 订阅能否在路由器上直接
curl拉到?若不行,优先修复 HTTPS 或时间同步。 - 规则模式是否误设为全局,导致国内站点也绕远路超时。
- 旁路由场景下,客户端网关与 DNS 是否与草图一致。
- 关掉其它同类透明代理或广告过滤套件,排除双劫持。
常见问题(正文速查)
刷完机找不到 LuCI? 可能未装 luci 元包或防火墙屏蔽了 80 端口;先用 SSH 检查 uhttpd 与监听地址。
更新 Geo 数据极慢? 换一个可达的下载镜像,或在低峰执行;实在不行用手动拷贝文件进指定目录并校对校验和。
想与桌面共用同一套 YAML? 可以互相参考,但路由器侧请删减巨型规则、关掉不必要的面板与实验特性,并实测内存峰值。
为什么仍建议在路由器之上了解 Clash 桌面客户端
路由器方案的最大优点是「一次配置,全屋终端默认受益」;但它的缺点是排障门槛高、与硬件和内核绑定紧。不少闭源「软路由一键包」把订阅与规则封在黑盒里,出问题时你只能重装镜像;而某些老旧发行版长期不跟进 Meta 特性,订阅明明在电脑上能用,上了路由器却解析报错。相比之下,长期在维护的 Clash 系桌面客户端(配合开放的 YAML 工作流)让你能在本机先看懂日志、调好策略组与 DNS,再把成熟配置缩影迁移到 OpenWrt;这种「先在桌面验证,再上软路由放大」的路径,往往比第一次就对着 LuCI 盲勾更省时间。若你更常携带笔记本外出单机翻墙,路由器 alone 也覆盖不了移动场景。
如果你正在寻找一套跨平台一致、规则结构清晰、社区资料丰富的代理工具,不妨在把 OpenClash 跑稳的同时,在电脑或手机上装好同一生态的 Clash 客户端做对照学习;两边共享同一套关键词与配置思维,维护成本会低很多。