OpenClash 在 OpenWrt 上的详细介绍 – wiki基地


OpenWrt 高级代理与流量控制利器:OpenClash 深度解析

在OpenWrt强大的路由器系统中,集成各种网络工具是其吸引力的重要来源之一。对于许多用户来说,科学上网、流量分流、实现精细化网络控制是一个核心需求。在众多可用的工具中,OpenClash 凭借其强大的功能、灵活的配置以及相对友好的图形化界面,成为了OpenWrt用户中的佼佼者。

本文将带您深入了解 OpenClash,从它是什么、为什么选择它,到如何在 OpenWrt 上安装、配置和使用它,以及一些高级特性和常见问题的解决办法,帮助您充分发挥 OpenClash 的潜力。

一、 OpenClash 是什么?为何选择它?

1. 什么是 OpenClash?

OpenClash 实际上是著名代理软件 Clash 的一个图形化管理前端,专为 OpenWrt 路由器系统设计。

  • Clash 核心: Clash 是一个基于 Go 语言开发的多平台代理客户端,其核心优势在于支持 YAML 格式的配置文件,能够实现复杂的代理规则和策略组功能。它可以根据域名、IP、地理位置等多种条件对网络流量进行精细化控制,决定哪些流量走代理、哪些直连、哪些拒绝。
  • OpenClash 前端: OpenClash 为 OpenWrt 系统提供了 Clash 核心的运行环境和 LuCI(OpenWrt 的 Web 管理界面)图形化接口。它集成了 Clash 的不同核心版本(如 Premium、Meta 等),并提供了一个易于操作的界面,让用户无需手动编辑复杂的 YAML 文件,就能完成核心的下载、配置文件的管理、规则和策略组的设置、运行状态的监控等操作。

简单来说,OpenClash 就是 OpenWrt 上方便易用的 Clash 管理器,让强大的 Clash 核心能够在您的路由器上高效运行,并为您提供一个直观的管理界面。

2. 为何选择 OpenClash 在 OpenWrt 上部署?

在 OpenWrt 上部署代理工具并非只有 OpenClash 一种选择,常见的还有 Shadowsocks-libev、V2Ray、PassWall、SSR-Plus 等。但 OpenClash 具有其独特的优势,使其成为许多用户的首选:

  • 强大的规则引擎: 这是 Clash 核心的最大亮点。通过灵活的规则配置,您可以实现:
    • 智能分流: 国内流量直连,国外流量走代理。
    • 特定应用/网站绕过: 让某些应用或网站强制直连或走特定代理。
    • 广告屏蔽: 通过规则屏蔽广告域名。
    • 避免循环代理: 防止内网访问时流量绕远路。
  • 灵活的策略组: Clash 支持创建策略组,您可以将多个代理节点组织到一起,实现:
    • 负载均衡: 流量自动分配到多个节点。
    • 故障转移 (Fallback): 当主节点不可用时自动切换到备用节点。
    • 手动切换: 在多个节点间手动选择。
  • 全设备覆盖: 在路由器层面部署代理,所有连接到该路由器的设备(电脑、手机、平板、智能电视、游戏机等)无需单独配置,即可享受到统一的代理服务和规则。
  • 易于管理: 提供了直观的 LuCI 图形界面,配置过程相对简单,无需深入命令行(虽然命令行也支持)。可以方便地更新核心、切换配置、查看日志和状态。
  • 多种代理协议支持: Clash 核心支持 Shadowsock(R)、Vmess、Trojan、Hysteria、WireGuard (取决于核心版本和配置) 等多种主流代理协议,兼容性广泛。
  • 高性能与稳定性: Clash 核心通常性能优秀,资源占用相对较低(取决于核心版本和规则数量),适合在路由器环境中长期稳定运行。
  • 自动更新: OpenClash 支持通过订阅链接自动更新配置文件,无需手动维护。

综上所述,OpenClash 特别适合那些希望在路由器层面实现全设备覆盖、需要精细化流量控制和策略管理的 OpenWrt 用户。

二、 OpenClash 在 OpenWrt 上的安装

安装 OpenClash 通常有几种方法,最常用且推荐的是通过 OpenWrt 的软件包管理系统 opkg 或 LuCI 界面安装。

1. 通过 LuCI 界面安装 (推荐)

这是最直观的方式,适合不熟悉命令行的用户。前提是您的 OpenWrt 系统已经配置了软件源。

  • 步骤 1: 登录您的 OpenWrt LuCI 管理界面 (通常是 http://192.168.1.1)。
  • 步骤 2: 导航到 系统 -> 软件包
  • 步骤 3: 点击 刷新列表 按钮,等待软件包列表更新完成。
  • 步骤 4: 在过滤器中输入 openclash 进行搜索。
  • 步骤 5: 找到 luci-app-openclash,点击旁边的 安装 按钮。
  • 步骤 6: 系统会自动处理依赖项并完成安装。安装完成后,您可能需要刷新浏览器页面。
  • 步骤 7: 成功安装后,您将在 LuCI 菜单中找到 服务VPN (取决于您的固件版本和语言) 下的 OpenClash 菜单项。

2. 通过 OPKG 命令行安装

如果您熟悉 SSH 连接和命令行操作,或者 LuCI 界面安装失败,可以使用 OPKG 命令安装。

  • 步骤 1: 使用 SSH 工具 (如 PuTTY, Xshell, 或终端) 连接到您的 OpenWrt 路由器。
  • 步骤 2: 更新软件包列表:
    bash
    opkg update
  • 步骤 3: 安装 OpenClash LuCI 应用程序:
    bash
    opkg install luci-app-openclash

    系统会自动安装所有必需的依赖项,包括 Clash 核心本身(通常是自动下载或提供下载选项)。
  • 步骤 4: 等待安装完成。安装完成后,您可能需要重启 LuCI Web 服务器使其显示新的菜单项:
    bash
    /etc/init.d/uhttpd restart
  • 步骤 5: 刷新您的浏览器页面,进入 LuCI 界面,即可找到 OpenClash 菜单。

3. 注意事项

  • 依赖项: OpenClash 依赖一些软件包,如 curl, wget, unzip, jsonfilter 等。通常 opkg install luci-app-openclash 会自动安装它们。如果遇到依赖问题,请根据错误提示手动安装缺少的包。
  • 固件兼容性: 确保您的 OpenWrt 固件版本支持 OpenClash。某些非常老旧或精简的固件可能不支持或需要手动编译。
  • 存储空间: OpenClash 及其核心和 GEO 数据库会占用一定的存储空间。确保您的路由器有足够的闪存空间。
  • Clash 核心: 安装 LuCI 界面后,您还需要在 OpenClash 设置界面中下载或上传 Clash 核心文件(如 clash, clash-meta, clash-premium 等)。

三、 OpenClash 的基础配置

安装完成后,接下来是进行基础配置以使其正常工作。

1. 访问 OpenClash 界面

在 OpenWrt LuCI 界面中,导航到 服务 -> OpenClash

2. 下载 Clash 核心

  • 进入 基本设置全局设置 页面。
  • 找到 Clash 核心 选项。
  • 您会看到下载不同核心的选项(如 Premium、Meta、TUN 版本等)。选择一个适合您路由器架构和需求的版本进行下载。推荐使用支持 TUN 模式的核心(如 Meta 或 Premium)。
  • 点击下载按钮,等待下载完成。如果自动下载失败,您可能需要手动下载核心文件,然后通过界面上的上传选项上传到路由器。
  • 选择您下载或上传的核心文件作为当前使用的核心。

3. 获取并配置订阅/配置文件

OpenClash 的核心是配置文件,它包含了代理节点信息、规则和策略组。配置文件通常是 YAML 格式。您可以从以下途径获取:

  • 订阅链接 (推荐): 大多数代理服务提供商会提供一个 Clash 订阅链接。
    • 在 OpenClash 界面中找到 配置文件订阅订阅设置
    • 添加您的订阅链接,并设置一个名称。
    • 设置更新周期(例如每隔几小时)。
    • 点击 保存并订阅 或类似的按钮。OpenClash 会从链接下载配置文件,并自动转换和加载。
  • 本地配置文件: 如果您有现成的 Clash YAML 配置文件,可以手动上传。
    • 在 OpenClash 界面中找到 配置文件管理本地配置
    • 上传您的 YAML 文件。
    • 基本设置 中选择上传的配置文件作为当前配置。

4. 应用配置并启动服务

  • 在修改了核心、配置文件或基本设置后,点击界面底部的 保存并应用 按钮。
  • 系统会尝试加载新的配置并启动 Clash 服务。
  • 关注页面上的状态信息或日志,确保服务成功启动。如果启动失败,请检查配置文件的语法、核心文件是否正确、端口是否冲突等。

5. 选择工作模式

基本设置 中,您需要选择 OpenClash 的工作模式。常见的模式有:

  • TUN 模式 (推荐): 这是 Clash 最强大的模式。它在系统创建一个虚拟网卡 (tun/tap),所有流量都通过这个虚拟网卡进入 Clash 处理。这种模式可以对几乎所有流量进行规则匹配,包括那些不遵守系统代理设置的应用。需要路由器内核支持 TUN/TAP 模块。
  • REDIRECT/MIXED 模式 (较少使用,特定场景): 重定向模式通过防火墙规则将流量重定向到 Clash 的透明代理端口。这种模式配置相对简单,但可能对部分复杂流量类型处理不佳。MIXED 模式通常结合了 HTTP 和 SOCKS 代理端口。

对于大多数家庭用户实现全设备覆盖和精细规则控制,TUN 模式是首选。请确保您的固件支持 TUN 模式,并在 OpenClash 中启用并正确配置它(通常 OpenClash 会自动配置防火墙规则)。

6. 配置 DNS

正确的 DNS 配置对于科学上网至关重要,它可以防止 DNS 污染和实现更精准的规则匹配(尤其是基于域名的规则)。

  • OpenClash 通常接管 DNS 请求。在 DNS设置 中,您可以配置上游 DNS 服务器。
  • 通常会配置一个本地 DNS 服务器(例如 192.168.1.1 或路由器自身地址)用于解析国内域名,以及一个或多个代理 DNS 服务器(如 1.1.1.1, 8.8.8.8, 或服务商提供的 DNS)用于解析需要代理的域名。
  • Fake-IP 模式: 如果您的规则使用了 DOMAINDOMAIN-SUFFIX 类型,并且启用了 TUN 模式,Clash 通常会使用 Fake-IP 模式。这意味着 Clash 会为这些域名分配一个虚假的内网 IP,并将解析请求自身处理。这提高了规则匹配效率和隐私性。在 DNS设置 中确认 Fake-IP 是否启用。
  • 确保路由器自身的 WAN 口 DNS 设置不会干扰 OpenClash 的 DNS 代理。通常建议将路由器 WAN 口 DNS 设置为自动获取或一些纯净的公共 DNS,然后让 OpenClash 接管局域网设备的 DNS 请求。

完成上述步骤后,保存并应用设置,OpenClash 服务应该已经启动并按照您的配置文件开始工作了。连接到 OpenWrt 路由器的设备,其流量就会根据 OpenClash 的规则进行转发。

四、 OpenClash 核心功能与高级特性详解

OpenClash 的强大之处在于其对 Clash 核心各种特性的支持。了解这些特性有助于您进行更高级的配置。

1. Clash 核心选择 (Premium vs Meta vs 其他)

  • Premium 核心: Clash 官方闭源核心,功能最完善,支持协议最多,性能稳定。常用于需要 WireGuard 等协议的用户。
  • Meta 核心: 开源社区基于 Clash 开源核心进行开发的版本,功能不断更新,支持更多的协议和特性(如 Hysteria)。社区活跃,更新快。
  • 开源核心: Clash 最初的开源版本,功能相对基础。
    OpenClash 允许您下载和切换这些核心。选择哪个取决于您的需求和代理服务商支持的协议。

2. 配置文件结构 (YAML)

虽然 OpenClash 提供了图形界面,但理解配置文件结构能帮助您更好地使用高级功能或排查问题。一个典型的 Clash YAML 配置文件包含以下主要部分:

  • port, socks-port, mixed-port: Clash 监听的代理端口。
  • redir-port, tun: 透明代理和 TUN 模式相关的设置。
  • dns: DNS 服务器和设置。
  • proxies: 定义所有的代理节点信息(类型、地址、端口、认证信息等)。
  • proxy-groups: 定义策略组,引用 proxies 中的节点,并设置组的行为(select, fallback, load-balance, auto)。
  • rules: 定义流量匹配规则。规则按顺序匹配,第一个匹配的规则决定流量走向(走策略组、直连 DIRECT、拒绝 REJECT)。
  • rule-providers: 引用外部的规则集文件,方便批量管理规则。
  • proxy-providers: 引用外部的节点集文件。

OpenClash 界面通常将这些部分图形化展示和配置。

3. 规则 (Rules)

规则是 Clash 的灵魂。每条规则由匹配条件和目标(策略组、DIRECT、REJECT)组成。规则按照配置文件中的顺序从上往下匹配,一旦命中即停止。

常见的规则类型:

  • DOMAIN-SUFFIX,example.com,Proxy:匹配以 example.com 结尾的域名走 Proxy 策略组。
  • DOMAIN,google.com,Proxy:匹配 google.com 域名走 Proxy 策略组。
  • DOMAIN-KEYWORD,google,Proxy:匹配包含 google 关键字的域名走 Proxy 策略组。
  • GEOIP,CN,DIRECT:匹配目的地 IP 属于中国大陆的流量直连。需要 GEOIP 数据库。
  • IP-CIDR,192.168.1.0/24,DIRECT,no-resolve:匹配目标 IP 在 192.168.1.0/24 网段的流量直连(no-resolve 防止 Clash 解析域名)。
  • MATCH,Proxy:万能匹配规则,放在最后。所有未被前面规则匹配的流量都走 Proxy 策略组。

规则组 (Proxy Groups):

规则的目标通常是一个策略组。策略组定义了如何使用其包含的代理节点:

  • select:手动选择节点。
  • fallback:按顺序尝试节点,第一个可用的节点被选中。
  • load-balance:将流量均衡分配到组内的节点。
  • auto:自动测速选择延迟最低的节点。

OpenClash 界面允许您在 策略组规则设置 中直观地查看和调整这些配置。

4. GEO 数据库 (GEOIP/ASN)

Clash 依靠 GEOIP (国家/地区 IP 数据库) 和 GEOASN (自治系统编号数据库) 来实现基于地理位置 (如 GEOIP,CN) 或 ASN (如 SRC-ASN,12345) 的规则。

  • 在 OpenClash 界面中,通常有 GEO数据更新 的选项。
  • 定期更新这些数据库(特别是 Country.mmdb),以确保基于地理位置的规则准确有效。
  • 您可以选择从官方源或第三方源下载。

5. Dashboard (仪表盘)

OpenClash 集成了 Clash 的 Dashboard,通常可以通过 <路由器IP>:9090/ui 或 OpenClash 界面中的链接访问。Dashboard 提供:

  • 连接列表: 查看当前所有的网络连接及其匹配的规则和使用的代理节点。
  • 流量统计: 查看实时和历史流量数据。
  • 节点延迟测试: 测试代理节点的延迟。
  • 配置查看: 查看当前加载的配置文件。
  • 日志: 查看 Clash 核心的运行日志。
  • 策略组切换: 直接在 Dashboard 中切换 select 策略组中的节点。

Dashboard 是监控 OpenClash 运行状态、验证规则是否生效和进行故障排查的重要工具。

6. 自定义设置

OpenClash 通常允许您进行一些自定义设置:

  • 自定义规则: 在订阅规则的基础上,添加自己的特定规则,例如屏蔽特定广告域名、强制某个内网 IP 直连等。
  • 自定义配置文件: 如果您对 YAML 语法非常熟悉,可以直接编辑或上传完整的自定义配置文件。
  • 预/后运行脚本: 在 OpenClash 启动/停止前执行自定义脚本,例如修改防火墙规则、发送通知等。

五、 常见问题与故障排除

在使用 OpenClash 过程中,可能会遇到一些问题。以下是一些常见的故障排除步骤:

1. OpenClash 服务无法启动

  • 检查日志: 这是第一步。进入 OpenClash 界面,查找 日志运行日志 选项。查看启动时的错误信息。命令行下可以查看 /var/log/openclash.log 或使用 logread | grep openclash
  • 检查核心文件: 确保您下载或上传的 Clash 核心文件是正确的,并且与您的路由器架构兼容。尝试重新下载核心。
  • 检查配置文件: YAML 配置文件语法错误是常见的启动失败原因。如果使用订阅,尝试手动获取配置文件并在 YAML 在线校验工具中检查语法。如果手动编辑,仔细检查格式。
  • 端口冲突: 确保 OpenClash 使用的端口 (HTTP/SOCKS 代理端口, Dashboard 端口, TUN 模式端口等) 没有被路由器上其他服务占用。
  • 存储空间不足: Clash 核心、配置文件、日志、GEO 数据库都需要存储空间。如果空间不足,服务可能无法启动或运行异常。
  • 内存不足: 特别是在低端路由器上,复杂的规则或过多的连接可能导致内存耗尽。尝试减少规则数量或选择占用资源较低的核心。

2. 启动成功但无法科学上网 / 特定网站无法访问

  • 检查工作模式: 确保您选择了正确的工作模式(通常推荐 TUN 模式),并且模式相关的设置(如 TUN 接口、DNS)正确。
  • 检查防火墙规则: 在 TUN 模式下,OpenClash 需要正确配置防火墙规则来重定向流量。OpenClash 通常会自动处理,但有时可能需要检查或手动添加。确保局域网设备的流量被正确转发到 Clash 的 TUN 接口。
  • 检查 DNS 设置: 确保 OpenClash 的 DNS 设置正确,并且路由器或设备的 DNS 没有绕过 OpenClash。尝试在设备上手动设置 DNS 为路由器 IP,并检查 OpenClash 日志中是否有 DNS 请求。检查是否启用了 Fake-IP。
  • 检查规则匹配: 使用 Dashboard 的连接列表功能。查看目标网站的连接是否命中了您期望的规则和策略组。如果命中了 DIRECTREJECT 规则,流量就不会走代理。调整规则顺序或内容。
  • 检查策略组和节点: 如果规则命中了代理策略组,检查该策略组下选择的节点是否可用。在 Dashboard 或 OpenClash 界面中进行节点延迟测试。尝试切换策略组中的其他节点。
  • 检查订阅/配置文件时效性: 代理节点的配置可能会过期或失效。尝试更新订阅。
  • 路由器的路由表: 在 TUN 模式下,Clash 会修改路由表。确保没有冲突或其他错误的静态路由。

3. 速度慢或不稳定

  • 更换代理节点: 尝试策略组中的其他节点,选择延迟低、速度快的节点。
  • 检查规则: 过多或复杂的规则可能会增加处理开销。不合理的规则(例如大量 DOMAIN 规则而非 DOMAIN-SUFFIX)也可能影响性能。
  • 检查 Clash 核心版本: 某些核心版本在特定硬件或环境下可能表现更好。
  • 路由器性能: 低端路由器处理大量连接和复杂规则可能会达到性能瓶颈(CPU、内存)。
  • 网络环境: 检查您路由器的 WAN 口连接是否稳定,上游带宽是否足够。

4. 部分内网设备无法访问

  • 检查内网规则: 确保您有正确的规则来直连内网 IP 段(如 IP-CIDR,192.168.1.0/24,DIRECT,no-resolve)。这些规则应放在需要代理的规则之前,以确保优先匹配。
  • 检查 DNS 重定向: 如果使用了 TUN 模式和 Fake-IP,确保内网域名的 DNS 解析被正确处理,没有被 Clash 拦截或解析到 Fake-IP。

5. 更新 OpenClash

  • 通过 LuCI 界面: 进入 系统 -> 软件包,点击 刷新列表,搜索 luci-app-openclash,如果显示有新版本,点击 升级
  • 通过 OPKG 命令行:
    bash
    opkg update
    opkg upgrade luci-app-openclash

    这会升级 OpenClash 的 LuCI 前端。Clash 核心和 GEO 数据库通常需要在 OpenClash 界面内部更新。

六、 总结

OpenClash 作为 OpenWrt 上一个功能强大且灵活的代理管理工具,为用户提供了精细化的流量控制能力。通过基于 Clash 核心的规则和策略组,您可以在路由器层面实现全设备的智能分流、负载均衡、故障转移等高级功能。

虽然其配置文件和规则概念相对复杂,但 OpenClash 提供的 LuCI 图形界面大大降低了配置难度。通过本文的介绍,希望您对 OpenClash 有了更深入的了解,能够更顺利地在您的 OpenWrt 路由器上部署和使用它,享受到它带来的便利和强大功能。

记住,网络环境和需求各不相同,最适合您的配置需要您根据实际情况进行探索和调整。善用日志和 Dashboard 是掌握 OpenClash 并解决问题的关键。祝您使用愉快!

滚动至顶部