为什么要在 OpenWrt 上使用 TUN 透明代理?
在 PC 或手机上安装 Clash 客户端,只能代理本机流量。智能电视、游戏机、IoT 设备往往无法安装代理软件,也不支持手动配置 SOCKS5。若希望全屋设备——包括访客 Wi-Fi 下的手机——都能按规则自动分流,最稳妥的方案是在网关层部署 Clash/Mihomo,并开启 TUN 透明代理。
OpenWrt 是开源路由器系统,配合 OpenClash 插件可在路由器上运行 Mihomo(Clash Meta)内核。与仅做 HTTP 代理不同,TUN 模式会在路由器内创建虚拟网卡,在 IP 层接管 TCP 与 UDP,让局域网设备无需任何设置即可被透明代理——这正是「全局透明代理」的核心含义:设备以为自己直连互联网,实际流量已在网关被 Clash 规则处理。
fake-ip DNS 与 iptables/nftables 转发,可实现「国内直连、国外代理、广告拦截」的智能分流,一次配置全家受益。
本文以 OpenClash 为主要示例(OpenWrt 生态最成熟的 Clash 图形插件),内核选用持续维护的 Mihomo。若你已在 PC 端熟悉 Clash 订阅与规则语法,迁移到路由器几乎无缝;规则写法可参考本站《Clash 规则组精讲》。
硬件选型与 OpenWrt 准备工作
TUN 透明代理对 CPU 与内存有一定消耗:需要跑 Mihomo 内核、维护连接表、处理 DNS 与规则匹配。经验上,128MB 内存的入门路由可以跑 OpenClash,但节点多、规则复杂时容易 OOM;256MB 及以上更稳妥。支持 AES 硬件加速的 SoC(如 mt7621、ipq40xx、x86 软路由)能显著降低 CPU 占用。
推荐部署形态
| 方案 | 适用场景 | 优点 | 注意点 |
|---|---|---|---|
| 主路由刷 OpenWrt | 光猫桥接、单路由组网 | 结构简单,全屋自动生效 | 需承担拨号 + 代理,性能要求高 |
| 旁路由(网关模式) | 保留原光猫/主路由拨号 | 不影响原有网络,易回退 | 需手动或 DHCP 指定网关 |
| x86 软路由 | 多设备、高带宽家庭 | 性能强、可虚拟化多系统 | 功耗与体积大于硬路由 |
开始安装 OpenClash 前,请确认:
- 路由器已成功刷入 OpenWrt,能正常上网(WAN 口连通)。
- 已安装 luci-app-openclash 及依赖(可通过 OpenClash 官方仓库或 ImmortalWrt 等衍生固件自带)。
- 路由器时间与 NTP 同步正常(TLS 握手、订阅更新依赖正确时间)。
- 准备好 Clash/Mihomo 格式订阅 URL(与 PC 客户端共用同一订阅即可)。
安装 OpenClash 并导入订阅
OpenClash 是 OpenWrt 上的 LuCI 图形插件,负责下载 Mihomo 内核、管理订阅、生成防火墙规则并控制 TUN 接口。以下步骤以 OpenClash 0.46.x 及以上版本为参考,不同版本菜单名称可能略有差异。
第一步:安装插件与内核
- 登录 OpenWrt 管理界面,进入「服务 → OpenClash」。
- 在「插件更新」中更新 OpenClash 到最新版。
- 进入「版本更新」,下载 Mihomo(Clash Meta) 内核——务必选择与 CPU 架构匹配的版本(如 amd64、arm64、mipsle)。
- 可选:同步下载 GeoIP、GeoSite 数据库,供
GEOIP,CN等规则使用。
第二步:添加订阅
- 打开「配置订阅」,点击添加。
- 填入机场提供的 Clash 订阅链接,配置名可自定义(如「主订阅」)。
- 订阅转换建议保持默认或选择「Clash 标准」;若机场已提供 Mihomo 兼容 YAML,无需额外转换。
- 保存后点击「更新配置」,等待拉取节点列表。可在「配置文件管理」中查看生成的 YAML。
第三步:选择运行中的配置
- 在「配置文件管理」中,将刚更新的订阅设为默认运行配置。
- 运行模式选择「规则模式(Rule)」——全屋场景切忌长期「全局(Global)」,否则国内 CDN、视频会绕远路。
- 暂时不要启动,先完成下一节的 TUN 与 DNS 设置。
配置 TUN 模式与 DNS 劫持
透明代理能否「无感生效」,关键在运行模式与DNS 劫持两项。OpenClash 提供 Redir-Host、TUN 等多种模式;全屋 + UDP 场景应选 TUN 模式。
启用 TUN 模式
- 进入 OpenClash「插件设置 → 运行模式」(或「模式设置」)。
- 将运行模式设为 TUN 模式(部分版本称「Tun 混合栈」或「Fake-IP TUN」)。
- 确认 TUN 接口名称(默认
utun或Meta)与堆栈类型:Linux 路由器常用system或gvisor,若遇兼容问题可在两者间切换测试。 - 勾选「启用 UDP 转发」(TUN 模式下通常默认开启),确保游戏、语音等 UDP 流量可走代理。
DNS 设置(fake-ip 推荐)
透明代理必须解决 DNS 污染与分流一致性。Mihomo 常用两种增强模式:
- fake-ip:对代理域名返回虚假 IP(198.18.0.0/16),由 TUN 截获后再还原真实地址,性能好、规则命中率高,推荐全屋场景。
- redir-host:返回真实 IP 再按 IP 规则分流,兼容部分对 fake-ip 敏感的应用,但配置稍复杂。
在 OpenClash「插件设置 → DNS 设置」中建议:
- 启用「DNS 劫持」,让 LAN 设备 DNS 请求经 OpenClash 处理(通常劫持 53 端口到 Mihomo)。
- DNS 运行模式选 fake-ip(或 fake-ip-tun)。
- 上游 DNS 填写
223.5.5.5、119.29.29.29(国内)与8.8.8.8、1.1.1.1(国外),由 Mihomo 按规则分流解析。 - 启用「绕过中国大陆 DNS」或等价选项,减少国内域名走境外 DNS 导致的解析变慢。
- 在「Hosts / 命名服务器策略」中,可为 NAS、打印机、智能家居保留真实 IP 直连(避免 fake-ip 干扰局域网访问)。
# Mihomo DNS 片段示例(覆写参考)
dns:
enable: true
listen: 0.0.0.0:7874
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
fallback-filter:
geoip: true
geoip-code: CN
分流规则与策略组优化
订阅 YAML 中的 rules 与 proxy-groups 决定「谁走代理、谁直连」。路由器场景与 PC 类似,但应更强调国内直连与局域网放行,以免 NAS、投屏、打印机异常。
必备规则片段
rules:
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- GEOIP,CN,DIRECT
- DOMAIN-SUFFIX,cn,DIRECT
- MATCH,自动选择
局域网网段必须 DIRECT 且带 no-resolve,否则 fake-ip 可能把内网域名解析到虚假地址。GEOIP,CN,DIRECT 让国内 IP 直连,降低延迟与节点负载。更完整的语法说明见《DOMAIN / GEOIP / MATCH 规则详解》。
策略组建议
| 策略组 | 类型 | 用途 |
|---|---|---|
| 自动选择 | url-test | 日常浏览,按延迟自动选节点 |
| 流媒体 | select | Netflix、Disney+ 等固定区域节点 |
| 游戏 | url-test | 低延迟 UDP,配合 TUN 加速海外服 |
| 兜底 MATCH | — | 指向「自动选择」,避免未知流量全局代理 |
在 OpenClash「配置覆写」中可追加自定义规则,无需直接改订阅文件(更新订阅时不会被覆盖)。例如将 DOMAIN-SUFFIX,youtube.com,流媒体 指向固定香港节点,将 Steam 下载域名指向「下载专用」组。
旁路由与主路由组网方案
组网方式决定 LAN 设备流量如何到达 OpenClash TUN 接口。两种最常见拓扑如下。
方案 A:OpenWrt 作主路由
- 光猫改桥接,OpenWrt WAN 口 PPPoE 拨号。
- OpenClash 绑定 LAN 接口,TUN 启动后自动写入默认路由与 NAT。
- 全屋设备 DHCP 从 OpenWrt 获取,网关即为主路由 IP,零额外配置。
方案 B:OpenWrt 作旁路由(推荐新手)
- 主路由(光猫或原路由)保持拨号,LAN 网段如
192.168.1.0/24。 - 旁路由 OpenWrt 接主路由 LAN,旁路由 IP 如
192.168.1.2,关闭 DHCP(避免与主路由冲突)。 - 需要代理的设备:手动或将 DHCP 分配的默认网关设为旁路由 IP;或在主路由静态路由中将
0.0.0.0/0下一跳指向旁路由(高级)。 - OpenClash 启动 TUN 后,经旁路由转发的流量会被透明代理;网关仍指向主路由的设备则不走代理(可按需分流)。
启动与验证
- 在 OpenClash 主页点击「启动 OpenClash」,观察日志无报错。
- 在 LAN 设备浏览器访问
https://www.google.com与国内站点,确认分流正常。 - 打开 OpenClash「连接日志」,查看域名是否命中预期策略组。
- 运行
nslookup google.com,fake-ip 模式下应返回 198.18.x.x 段地址(表示 DNS 已被 Mihomo 接管)。 - 测试 NAS、投屏:若无法访问,检查局域网 DIRECT 规则与 DNS 旁路设置。
常见问题与故障排查
启动 OpenClash 后全屋断网?
常见原因:① TUN 接口与现有 VPN 插件冲突——暂时停用 WireGuard / PassWall 等;② DNS 劫持与 dnsmasq 端口冲突——检查 53 端口占用;③ 内核架构下载错误——重新下载匹配 CPU 的 Mihomo 包。可先切换为 Redir-Host 模式排查是否为 TUN 特有故障,再逐项恢复 TUN 设置。
部分 App 无法联网或证书报错?
fake-ip 模式下,少数银行 App、局域网发现协议可能异常。可对这些域名使用 nameserver-policy 走 redir-host,或在 OpenClash「绕过设置」中将指定域名/IP 设为直连。也可为特定设备配置独立网关,不经过旁路由。
订阅更新后规则被覆盖?
自定义规则应写在 OpenClash「配置覆写」(Merge / Script)中,而非直接编辑订阅生成的 YAML。覆写内容在每次订阅更新后自动合并,避免手工修改丢失。
路由器 CPU 占用过高?
减少 url-test 测速频率(增大 interval);关闭不必要的 Geo 数据库自动更新;精简节点数量;升级硬件或改用 x86 软路由。避免在路由器上同时跑 heavy 服务(如大型 Docker 容器)。
相比在每台设备单独安装商业 VPN 或封闭「小火箭」类 App,OpenWrt + OpenClash + Mihomo TUN 提供真正的网关级透明代理:规则开源可审计、订阅可切换、策略组与 PC 端完全一致,电视/主机/访客手机即连即用。商业路由器内置的「国际加速」往往封闭且无法自定义 GEOIP 分流;而 Clash 生态让你用同一份订阅 YAML 统一管理 PC 与全屋设备,长期维护成本更低。若你尚未在单机上熟悉 Clash,建议先阅读《Clash 完全使用指南》,再部署路由器方案。