OpenWrt上的OpenClash:从入门到配置 – wiki基地


OpenWrt 上的 OpenClash:从入门到精通的详尽指南

在当今网络环境下,能够自由、安全、高效地访问互联网资源变得越来越重要。对于拥有 OpenWrt 路由器的用户来说,利用其强大的扩展性,安装诸如 OpenClash 这样的代理工具,可以实现整个局域网设备的智能化流量管理和代理访问。本文将详细介绍 OpenClash 的概念、优势、安装过程以及详尽的配置步骤,旨在帮助用户从零开始,全面掌握在 OpenWrt 上使用 OpenClash 的方法。

一、 概念解析:OpenWrt、Clash 与 OpenClash

  1. OpenWrt:
    OpenWrt 是一个基于 Linux 的嵌入式操作系统,主要用于路由器和其他嵌入式设备。它以其高度的可定制性、强大的功能和活跃的社区支持而闻名。用户可以通过 OpenWrt 完全掌控自己的网络硬件,安装各种软件包,实现广告拦截、VPN、智能家居控制、网络存储等高级功能。相比于原厂固件,OpenWrt 提供了无与伦比的自由度和灵活性。

  2. Clash:
    Clash 是一个使用 Go 语言开发的多平台代理客户端,支持 Shadowsocks(R), Vmess, Trojan, Snell 等多种代理协议。其核心特性是基于规则的路由分流。用户可以编写或使用他人提供的配置文件(通常是 YAML 格式),定义哪些流量(基于域名、IP、地理位置等)走代理,哪些直连,哪些拒绝。这种精细化的流量控制使得网络访问既高效又智能。Clash 本身有命令行版本(Clash Core)和图形界面版本。

  3. OpenClash:
    OpenClash 是专门为 OpenWrt 系统开发的一个 Clash 图形化管理界面(LuCI App)和后端控制器。它将强大的 Clash Core 集成到 OpenWrt 路由器中,并提供了一个用户友好的 Web 界面来管理 Clash 的配置、规则、节点和运行状态。通过 OpenClash,用户无需直接操作命令行或编辑复杂的配置文件,即可轻松实现路由器级别的全局代理或智能分流,让连接到该路由器的所有设备(手机、电脑、智能电视等)都能享受透明代理带来的便利。

二、 为何选择在 OpenWrt 上使用 OpenClash?

  • 全局代理与透明网关: 最大优势在于实现局域网内所有设备的自动代理。无需在每个设备上单独配置代理软件,连接 Wi-Fi 或有线网络即可生效,尤其适合不方便安装客户端的设备(如游戏主机、智能音箱、电视盒子等)。
  • 集中管理与规则统一: 所有设备的流量策略都在路由器端统一配置和管理,维护方便,规则一致。
  • 性能与稳定性: 现代路由器通常拥有不错的处理能力,可以稳定运行 Clash Core,相比在个人电脑或手机上后台运行代理,路由器 7×24 小时在线,更为可靠。
  • 强大的分流能力: 继承 Clash 的优秀规则引擎,可以实现非常精细化的流量控制,例如国内网站直连,国外特定网站走代理,广告域名拦截等。
  • 丰富的功能扩展: OpenClash 不断发展,集成了诸如 DNS 防污染、Fake-IP、TUN 模式、多种 Clash 内核支持(包括 Clash Premium 和 Clash Meta)等高级功能。

三、 安装 OpenClash:多种途径

在安装 OpenClash 之前,请确保你的 OpenWrt 路由器已正常联网,并且你拥有 SSH 或 LuCI Web 界面的访问权限。

准备工作:

  • OpenWrt 环境: 一个正常运行的 OpenWrt 路由器。
  • SSH 工具: 如 PuTTY (Windows), Terminal (macOS/Linux)。
  • 了解路由器架构: 需要知道你的路由器 CPU 架构(如 aarch64_cortex-a53, mipsel_24kc, x86_64 等),以便下载正确的 Clash 内核。可以在 OpenWrt 的“状态” -> “概览”页面查看,或通过 SSH 执行 uname -m
  • Clash 配置文件/订阅链接: 你需要有可用的 Clash 配置文件 (config.yaml) 或机场提供的 Clash 订阅链接。

安装方法:

方法一:在线安装(通过 opkg)

这是最推荐的方法,前提是你的 OpenWrt 固件源包含了 OpenClash 软件包。

  1. 更新软件包列表:
    通过 SSH 连接到路由器,执行:
    bash
    opkg update

  2. 搜索 OpenClash 包: (可选)
    bash
    opkg list | grep openclash

    如果能看到 luci-app-openclash 相关的包,说明源里有。

  3. 安装 OpenClash 主程序:
    bash
    opkg install luci-app-openclash

    系统会自动处理大部分依赖关系。

  4. 安装必要的依赖(如果未自动安装):
    OpenClash 运行需要一些基础组件,虽然 opkg 通常会解决,但有时需要手动确认或安装:

    • wget-sslcurl:用于下载订阅、规则等。
    • dnsmasq-full:推荐使用 dnsmasq-full 替换默认的 dnsmasq,以获得更好的 DNS 处理能力,特别是配合 Fake-IP 模式时。安装前可能需要先卸载 dnsmasq
      bash
      opkg remove dnsmasq
      opkg install dnsmasq-full
    • iptablesnftables 相关模块:根据你的 OpenWrt 版本和防火墙配置。通常 OpenClash 会提示缺少哪些。
    • coreutils, coreutils-nohup:提供一些基础命令行工具。
    • bash:部分脚本可能需要。
    • libyaml 等库文件。
  5. 安装 Clash 内核:
    OpenClash 本身只是一个管理界面,需要配合 Clash Core 才能工作。你需要根据路由器架构,从 OpenClash 的 GitHub Releases 页面或其他可信来源下载对应的 Clash 内核 .ipk 文件(例如 clash, clash_tun, clash_meta)。

    • 下载: 你可以直接在路由器上使用 wget 下载,或者下载到电脑再通过 SCP (如 WinSCP) 上传到路由器的 /tmp 目录。
      • 例如,下载 Meta 内核 (假设架构为 aarch64):
        bash
        # 前往 OpenClash GitHub Releases 页面找到最新内核 .ipk 的链接
        wget -P /tmp [内核 .ipk 文件的下载链接]
    • 安装:
      bash
      opkg install /tmp/clash_meta*.ipk # 使用你下载的具体文件名
    • 选择内核: OpenClash 支持多种内核:
      • Clash (Dev): 开源基础版,功能相对较少。
      • Clash Premium: 闭源商业版内核(需要自行获取授权或使用社区编译版本),功能更全,如 TUN 模式。
      • Clash Meta: 基于 Clash Premium 开源分支的活跃项目,集成了很多新特性(如 VLESS Reality、TUIC、Hysteria2 等协议支持,更灵活的规则),是目前比较推荐的选择。

方法二:离线安装(上传 .ipk 文件)

如果你的 OpenWrt 源没有 OpenClash,或者网络环境不佳,可以选择离线安装。

  1. 下载所需文件:

    • 前往 OpenClash 的 GitHub Releases 页面 (https://github.com/vernesong/OpenClash/releases)。
    • 下载最新版本的 luci-app-openclash_*.ipk 文件。
    • 下载对应你路由器 CPU 架构的 Clash 内核 .ipk 文件(clash, clash_tun, 或 clash_meta)。
    • 根据你的 OpenWrt 版本和已安装包的情况,可能还需要下载一些依赖包的 .ipk 文件,如 liblucihttp-lua, libyaml, iptables-nft 等。(通常 Release 页面会说明基本依赖)。
  2. 上传文件:
    使用 SCP 工具(如 WinSCP)将所有下载的 .ipk 文件上传到路由器的 /tmp 目录下。

  3. 安装依赖(如有必要):
    通过 SSH 连接路由器,进入 /tmp 目录,按照依赖关系顺序安装:
    bash
    cd /tmp
    opkg install dependency1.ipk
    opkg install dependency2.ipk
    # ... 安装所有依赖 ...

  4. 安装 OpenClash 主程序:
    bash
    opkg install luci-app-openclash_*.ipk

  5. 安装 Clash 内核:
    bash
    opkg install clash_meta*.ipk # 或其他内核文件

安装后验证:

刷新 OpenWrt 的 LuCI 界面(通常是 http://192.168.1.1 或你路由器的 IP 地址),你应该能在“服务”菜单下看到“OpenClash”选项。如果看不到,尝试清除浏览器缓存或重启路由器。

四、 OpenClash 详细配置指南

点击“服务” -> “OpenClash”,进入 OpenClash 的主管理界面。初次使用,建议按照以下步骤进行配置:

1. 全局设置 (Global Settings / Overview Tab)

这是 OpenClash 最核心的配置区域。

  • 运行模式 (Operation Mode):

    • Fake-IP (增强模式): 推荐模式。通过虚拟 IP 技术处理 DNS 请求,性能较好,兼容性强,能有效防止 DNS 污染。适用于大多数场景。
    • TUN/混合 模式: 创建一个虚拟网卡 (TUN 设备) 来接管网络流量。兼容性极佳,几乎可以代理所有类型的流量(包括 UDP),但性能开销相对较高,需要 Clash Premium 或 Clash Meta 内核支持。混合模式则结合了 TUN 和部分直连规则。
    • Redir-Host (兼容模式): 另一种基于 iptables/nftables 的透明代理模式,性能介于 Fake-IP 和 TUN 之间,兼容性尚可,但在某些复杂网络环境下可能遇到问题。
    • 纯净模式 (No Proxy): 关闭 OpenClash 的代理功能。
    • 初学者建议从 Fake-IP 开始。
  • 启用 OpenClash (Enable OpenClash): 主开关,勾选后才能启动服务。

  • 选择 Clash 内核 (Select Clash Core): 在这里选择你安装并希望使用的 Clash 内核(Dev, Premium, Meta)。确保选择的内核文件存在且有执行权限。
  • 防火墙设置 (Firewall Settings):
    • 自动配置防火墙规则 (Enable Auto Firewall Rules): 强烈建议勾选。OpenClash 会自动管理所需的 iptables/nftables 规则,确保流量能被正确转发到 Clash 核心。
    • 绕过中国大陆 IP (Bypass Mainland China IP): 如果勾选,目标 IP 属于中国大陆的流量将不经过 Clash 处理,直接连接。这通常需要配合 GeoIP 数据库。
  • DNS 设置 (DNS Settings): DNS 是透明代理成功的关键,配置不当会导致无法上网或分流错误。
    • 本地 DNS 劫持 (Local DNS Hijacking): 必须勾选,特别是使用 Fake-IP 模式时。它会将局域网设备发出的 DNS 请求强制转发给 Clash 处理,防止 DNS 泄露和污染。
    • DNS 服务器 (DNS Server):
      • 推荐配置: 使用可靠的 DoH (DNS over HTTPS) 或 DoT (DNS over TLS) 服务器,如 https://dns.google/dns-query, https://cloudflare-dns.com/dns-query, tls://dns.google。这可以加密 DNS 查询,抵抗 GFW 的 DNS 污染。可以设置多个,作为备用。
      • 国内 DNS: 可以添加一个国内的 DNS(如 223.5.5.5, 119.29.29.29)作为 NameServer,用于解析国内域名,配合规则实现国内外智能分流。
      • Fallback DNS: 当主 DNS 查询失败或超时时使用的备用 DNS,同样建议使用可靠的 DoH/DoT 或国外公共 DNS。
    • Fake-IP 设置:
      • Fake-IP 范围 (Fake-IP Range): 定义用于映射域名的虚拟 IP 地址段,通常使用默认值即可(如 198.18.0.1/16)。
      • Fake-IP 持久化 (Fake-IP Persistence): 启用后,域名到 Fake-IP 的映射关系会保存,重启 Clash 后能更快恢复连接。
  • 更新设置 (Update Settings):
    • 自动更新订阅 (Auto Update Subscription): 勾选后,会定期从你添加的订阅链接拉取最新的节点信息。设置合理的更新间隔(如每天一次)。
    • 自动更新规则 (Auto Update Rules): 如果你的配置文件引用了远程规则集,勾选此项可自动更新。
    • 自动更新 Geo 数据库 (Auto Update Geo Databases): GeoIP 和 GeoSite 数据库用于基于地理位置和网站分类的规则判断。强烈建议开启自动更新,并选择可靠的数据库来源(如 Loyalsoldier)。设置更新频率(如每周一次)。

2. 配置文件管理 (Manage Config Files / Subscriptions Tab)

这里管理你的 Clash 配置文件来源。

  • 添加订阅链接 (Add Subscription URL):
    • 点击“添加”,输入你的 Clash 订阅链接 URL。
    • 给这个订阅起一个容易识别的名字(别名)。
    • 勾选“启用”和“自动更新”。
    • 点击“保存配置”。
    • 下载和转换: 添加后,点击“更新配置”按钮,OpenClash 会下载订阅内容,并可能将其转换为内部格式。成功后,状态会显示“已下载”或类似信息。
  • 上传本地配置文件 (Upload Local Config File):
    • 如果你有本地的 config.yaml 文件,可以通过“配置文件管理” -> “上传”来导入。
    • 上传后,同样需要启用它。
  • 选择活动配置 (Select Active Config):
    • 在“配置文件切换”或类似区域,选择你想要当前使用的配置文件(无论是来自订阅还是本地上传)。
    • 选择后,通常需要点击“应用配置”或前往“概览”页面启动/重启 OpenClash。

3. 覆写设置 (Overwrite Settings / Rules Tab – 可能分散在不同标签页)

这部分允许你对从订阅或主配置文件中获取的设置进行微调和自定义。

  • 代理策略组 (Proxy Groups):
    • 显示配置文件中定义的策略组(如 PROXY, DIRECT, REJECT, 自动选择, 故障转移 等)。
    • 你可以在这里手动选择某些 Selector 类型策略组当前使用的节点。例如,手动切换“国外媒体”策略组使用的节点。
  • 规则管理 (Rules):
    • 显示当前配置文件的所有分流规则。你可以查看规则的匹配类型(DOMAIN-SUFFIX, DOMAIN-KEYWORD, GEOIP, IP-CIDR, FINAL 等)和对应的动作(指向某个策略组,或 DIRECT/REJECT)。
    • 自定义规则 (Custom Rules): OpenClash 通常允许你添加自定义规则。这对于处理特定网站、绕过特定 IP 或强制某些应用走代理非常有用。规则语法遵循 Clash 标准。
  • DNS 设置覆写: 有些版本的 OpenClash 允许在这里进一步微调 DNS 行为,例如为特定域名指定 DNS 服务器。

4. 状态与日志 (Status & Log Tab)

  • 运行状态 (Runtime Status): 显示 OpenClash 服务是否正在运行,使用的内核版本,内存占用,当前的入站/出站流量速度等。
  • Clash 日志 (Clash Log): 这是排查问题的关键!显示 Clash Core 的实时运行日志,包括连接建立、规则匹配、DNS 查询、错误信息等。当遇到无法上网、特定网站打不开等问题时,务必先查看日志。
  • 系统日志 (System Log): 可以查看 OpenWrt 系统层面的相关日志。

5. 应用配置与启动

完成以上所有配置后,回到“概览”页面:

  • 检查配置: OpenClash 通常会有一个“检查配置文件”或类似的功能,可以帮助发现 config.yaml 中的语法错误。
  • 保存并应用 (Save & Apply): 点击此按钮保存所有更改。
  • 启动/重启 (Start/Restart): 如果 OpenClash 未运行,点击“启动”按钮。如果已运行但你更改了核心配置,点击“重启”按钮使其生效。
  • 观察状态: 启动后,观察“运行状态”是否显示为“运行中”,并留意“Clash 日志”是否有错误信息。

首次启动测试:

  • 在连接到路由器的设备上,打开浏览器,尝试访问一个通常需要代理才能访问的网站(如 Google, YouTube)。
  • 访问 ipinfo.io 或类似 IP 查询网站,看看显示的 IP 地址是否是你代理节点的 IP。
  • 尝试访问国内网站,看是否能正常、快速打开(验证直连规则是否生效)。

五、 进阶配置与故障排查

  • 内核选择:
    • Meta 内核: 功能最全,支持最新协议和特性,推荐使用。但注意其资源消耗可能略高。
    • Premium 内核: TUN 模式支持良好,但需要获取或编译。
    • Dev 内核: 资源占用最低,但功能有限,不支持 TUN。
  • 优化 DNS:
    • 使用 DoH/DoT 可以显著提高抗 DNS 污染能力。
    • 合理配置 NameServer 和 Fallback,确保国内外域名解析快速准确。
    • 考虑在 OpenClash 的 DNS 配置中使用 use-hosts 选项,配合自定义 Hosts 文件,优先解析某些域名。
  • 特定流量绕过:
    • 绕过局域网: 确保 OpenClash 不代理局域网内部通信。通常默认规则会包含类似 IP-CIDR,192.168.0.0/16,DIRECT 的规则。
    • 绕过特定服务/IP: 如果某些国内服务(如网银、特定游戏)被错误地走了代理,可以通过添加自定义规则,将其指向 DIRECT。例如:DOMAIN-SUFFIX,abc.com,DIRECTIP-CIDR,1.2.3.4/32,DIRECT
    • 绕过 OpenWrt 本身: 确保路由器自身的管理访问和更新等流量不被代理。通常 OpenClash 会自动处理。
  • TUN 模式配置: 如果选择 TUN 模式,需要确保:
    • 安装了支持 TUN 的内核(Premium 或 Meta)。
    • 正确配置了 TUN 设备参数(如 IP 地址、网关等),通常 OpenClash 会自动处理。
    • 内核模块 kmod-tun 已安装。
    • 可能需要调整防火墙设置,确保流量能正确流入 TUN 设备。
  • 常见问题排查:
    • 无法启动 OpenClash 服务:
      • 检查 Clash 内核文件是否存在、路径是否正确、是否有执行权限 (chmod +x /path/to/clash_core)。
      • 检查 Clash 配置文件 (config.yaml) 是否存在语法错误(使用在线 YAML 校验器检查)。
      • 查看 Clash 日志获取详细错误信息。
      • 检查依赖是否完整安装。
      • 检查路由器磁盘空间是否不足。
    • 启动后无法上网:
      • 首要检查 DNS 配置! 确保 DNS 设置正确,尝试更换 DoH/DoT 服务器。
      • 检查防火墙规则是否正确应用(可以在 OpenWrt 的“网络”->“防火墙”->“自定义规则”查看 OpenClash 添加的规则)。
      • 检查所选代理节点是否可用(可以在 OpenClash 界面手动测试节点延迟)。
      • 尝试更换运行模式(如从 Fake-IP 切换到 Redir-Host 或反之)。
      • 查看 Clash 日志,看是否有大量连接错误或 DNS 解析失败。
    • 部分网站无法访问:
      • 检查分流规则是否正确。可能是某条规则错误地匹配了该网站,导致走了错误的代理或被拒绝。
      • 检查 DNS 解析结果。可能该域名被 DNS 污染。
      • 尝试切换不同的代理节点。
      • 清除浏览器缓存和 DNS 缓存 (ipconfig /flushdns on Windows)。
    • CPU/内存占用过高:
      • 检查是否使用了过于复杂的规则集。
      • TUN 模式通常比 Fake-IP 模式消耗更多资源。
      • 检查是否有大量的并发连接。
      • 尝试更换或更新 Clash 内核版本。
      • 降低 GeoIP/GeoSite 数据库的更新频率。

六、 维护与更新

  • 定期更新 OpenClash: 关注 OpenClash 的 GitHub 项目,及时通过 opkg 或手动上传 .ipk 文件更新 luci-app-openclash 到最新版本,以获取新功能和 bug 修复。
  • 更新 Clash 内核: Clash 内核也在不断更新,修复问题、提升性能、支持新协议。定期下载并安装最新的兼容内核。
  • 更新 Geo 数据库: 保持 GeoIP 和 GeoSite 数据库最新,对于基于地理位置和网站分类的规则至关重要。确保自动更新开启并正常工作。
  • 更新订阅: 确保订阅链接有效,并设置了自动更新,以获取最新的可用节点。

七、 结语

在 OpenWrt 路由器上配置 OpenClash,无疑是一项能够极大提升网络使用体验的技术实践。它将复杂的代理配置和流量管理集中化、自动化,使得整个家庭或小型办公网络都能受益。虽然初次配置可能涉及较多步骤和概念,但一旦设置完成并稳定运行,其带来的便利性和灵活性是无与伦比的。

本文尽可能详细地涵盖了从入门安装到进阶配置的各个方面,希望能为你在 OpenWrt 上驾驭 OpenClash 提供坚实的指导。网络环境和配置需求千差万别,实践中可能遇到各种意想不到的问题。积极查阅 OpenClash 的官方文档、GitHub Issues、相关社区论坛(如恩山无线论坛、V2EX 等),并善用日志排查工具,是解决问题的关键。祝你配置顺利,享受更自由、高效的网络世界!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部