为什么要在 OpenWrt 上使用 TUN 透明代理?

在 PC 或手机上安装 Clash 客户端,只能代理本机流量。智能电视、游戏机、IoT 设备往往无法安装代理软件,也不支持手动配置 SOCKS5。若希望全屋设备——包括访客 Wi-Fi 下的手机——都能按规则自动分流,最稳妥的方案是在网关层部署 Clash/Mihomo,并开启 TUN 透明代理

OpenWrt 是开源路由器系统,配合 OpenClash 插件可在路由器上运行 Mihomo(Clash Meta)内核。与仅做 HTTP 代理不同,TUN 模式会在路由器内创建虚拟网卡,在 IP 层接管 TCP 与 UDP,让局域网设备无需任何设置即可被透明代理——这正是「全局透明代理」的核心含义:设备以为自己直连互联网,实际流量已在网关被 Clash 规则处理。

与 PC 客户端的区别:PC 上开 TUN 只影响本机;OpenWrt + OpenClash TUN 影响所有经该路由器转发的 LAN 设备。配合 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 前,请确认:

  1. 路由器已成功刷入 OpenWrt,能正常上网(WAN 口连通)。
  2. 已安装 luci-app-openclash 及依赖(可通过 OpenClash 官方仓库或 ImmortalWrt 等衍生固件自带)。
  3. 路由器时间与 NTP 同步正常(TLS 握手、订阅更新依赖正确时间)。
  4. 准备好 Clash/Mihomo 格式订阅 URL(与 PC 客户端共用同一订阅即可)。
首次折腾建议先用旁路由:主路由保持原样,仅让测试设备的网关指向 OpenWrt 旁路由 IP。验证 TUN 与分流无误后,再考虑升级为主路由方案,降低「全家断网」风险。

安装 OpenClash 并导入订阅

OpenClash 是 OpenWrt 上的 LuCI 图形插件,负责下载 Mihomo 内核、管理订阅、生成防火墙规则并控制 TUN 接口。以下步骤以 OpenClash 0.46.x 及以上版本为参考,不同版本菜单名称可能略有差异。

第一步:安装插件与内核

  1. 登录 OpenWrt 管理界面,进入「服务 → OpenClash」
  2. 「插件更新」中更新 OpenClash 到最新版。
  3. 进入「版本更新」,下载 Mihomo(Clash Meta) 内核——务必选择与 CPU 架构匹配的版本(如 amd64、arm64、mipsle)。
  4. 可选:同步下载 GeoIP、GeoSite 数据库,供 GEOIP,CN 等规则使用。

第二步:添加订阅

  1. 打开「配置订阅」,点击添加。
  2. 填入机场提供的 Clash 订阅链接,配置名可自定义(如「主订阅」)。
  3. 订阅转换建议保持默认或选择「Clash 标准」;若机场已提供 Mihomo 兼容 YAML,无需额外转换。
  4. 保存后点击「更新配置」,等待拉取节点列表。可在「配置文件管理」中查看生成的 YAML。

第三步:选择运行中的配置

  1. 「配置文件管理」中,将刚更新的订阅设为默认运行配置
  2. 运行模式选择「规则模式(Rule)」——全屋场景切忌长期「全局(Global)」,否则国内 CDN、视频会绕远路。
  3. 暂时不要启动,先完成下一节的 TUN 与 DNS 设置。
存储空间:Mihomo 内核与 Geo 数据库合计约 30–80MB。若路由器 Flash 紧张,可将 Geo 文件放到 USB 存储或 extroot;订阅 YAML 过大时可在 OpenClash「配置覆写」中精简节点组。

配置 TUN 模式与 DNS 劫持

透明代理能否「无感生效」,关键在运行模式DNS 劫持两项。OpenClash 提供 Redir-Host、TUN 等多种模式;全屋 + UDP 场景应选 TUN 模式

启用 TUN 模式

  1. 进入 OpenClash「插件设置 → 运行模式」(或「模式设置」)。
  2. 运行模式设为 TUN 模式(部分版本称「Tun 混合栈」或「Fake-IP TUN」)。
  3. 确认 TUN 接口名称(默认 utunMeta)与堆栈类型:Linux 路由器常用 systemgvisor,若遇兼容问题可在两者间切换测试。
  4. 勾选「启用 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 设置」中建议:

  1. 启用「DNS 劫持」,让 LAN 设备 DNS 请求经 OpenClash 处理(通常劫持 53 端口到 Mihomo)。
  2. DNS 运行模式选 fake-ip(或 fake-ip-tun)。
  3. 上游 DNS 填写 223.5.5.5119.29.29.29(国内)与 8.8.8.81.1.1.1(国外),由 Mihomo 按规则分流解析。
  4. 启用「绕过中国大陆 DNS」或等价选项,减少国内域名走境外 DNS 导致的解析变慢。
  5. 在「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
OpenClash 会自动写入防火墙与 dnsmasq 转发规则。若你同时使用 AdGuard Home 等 DNS 插件,需避免 53 端口冲突——常见做法是让 AdGuard 监听非标准端口,或仅由 OpenClash 统一接管 DNS。

分流规则与策略组优化

订阅 YAML 中的 rulesproxy-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 下载域名指向「下载专用」组。

游戏加速可在路由器 TUN 层统一处理,无需每台 PC 单独开客户端。UDP 相关调优可参考《Clash 游戏加速 TUN 教程》中的 url-test 与 tolerance 参数。

旁路由与主路由组网方案

组网方式决定 LAN 设备流量如何到达 OpenClash TUN 接口。两种最常见拓扑如下。

方案 A:OpenWrt 作主路由

  1. 光猫改桥接,OpenWrt WAN 口 PPPoE 拨号。
  2. OpenClash 绑定 LAN 接口,TUN 启动后自动写入默认路由与 NAT。
  3. 全屋设备 DHCP 从 OpenWrt 获取,网关即为主路由 IP,零额外配置

方案 B:OpenWrt 作旁路由(推荐新手)

  1. 主路由(光猫或原路由)保持拨号,LAN 网段如 192.168.1.0/24
  2. 旁路由 OpenWrt 接主路由 LAN,旁路由 IP 如 192.168.1.2关闭 DHCP(避免与主路由冲突)。
  3. 需要代理的设备:手动或将 DHCP 分配的默认网关设为旁路由 IP;或在主路由静态路由中将 0.0.0.0/0 下一跳指向旁路由(高级)。
  4. OpenClash 启动 TUN 后,经旁路由转发的流量会被透明代理;网关仍指向主路由的设备则不走代理(可按需分流)。
双 NAT 与 IPv6:旁路由 + 主路由可能形成双 NAT,影响 P2P 与部分游戏联机。若运营商提供 IPv6,可在 OpenWrt 单独配置 IPv6 转发,并在 OpenClash 中启用 IPv6 支持(视版本而定)。主路由方案通常更易处理 IPv6。

启动与验证

  1. 在 OpenClash 主页点击「启动 OpenClash」,观察日志无报错。
  2. 在 LAN 设备浏览器访问 https://www.google.com 与国内站点,确认分流正常。
  3. 打开 OpenClash「连接日志」,查看域名是否命中预期策略组。
  4. 运行 nslookup google.com,fake-ip 模式下应返回 198.18.x.x 段地址(表示 DNS 已被 Mihomo 接管)。
  5. 测试 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 完全使用指南》,再部署路由器方案。

立即免费下载 Clash,开启流畅上网新体验 →