简介
OpenClash 是一个运行在 OpenWrt 上的 Clash 客户端,兼容 Shadowsocks、ShadowsocksR、Vmess、Trojan、Snell 等协议,通过灵活的规则配置实现策略代理。
简而言之,OpenClash 是一个翻墙工具。
- 使用手册:OpenClash Wiki
- 下载地址:OpenClash Releases
安装
卸载 dnsmasq
opkg remove dnsmasq
mv /etc/config/dhcp /etc/config/dhcp.bak
安装 dnsmasq-full
opkg install dnsmasq-full
安装依赖
根据官方文件,目前有两种方案:
旧版本基于 iptables 的 Firewall3 防火墙
# iptables
opkg update
opkg install coreutils-nohup bash iptables dnsmasq-full curl ca-certificates ipset ip-full iptables-mod-tproxy iptables-mod-extra libcap libcap-bin ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base
新版本基于 nftables 的 Firewall4 防火墙
# nftables
opkg update
opkg install coreutils-nohup bash curl ca-certificates ipset ip-full libcap libcap-bin ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base
Firewall4 现已成为 OpenWrt 镜像中的默认防火墙配置软件,使用 nftables 替代 iptables 来配置网络过滤规则。旧的防火墙配置会无缝迁移到基于 nftables 的 firewall4。
安装程序文件
在 Github Release 下载最新的程序文件,上传软件包进行安装。
如果刷新页面后看不到程序,重新登录 OpenWrt。
配置
更新内核
- 打开【插件设置】 -> 【版本更新】,更新所有文件。
- 如果本地网络无法更新,可以点击右侧的【下载到本地】上传到相应目录。
订阅设置
- 增加订阅文件,网上可以找到免费的资源。
- 如果不清楚机场类型,建议开启【在线订阅转换】、【添加 Emoji】和【UDP 支持】。
插件设置
模式设置:
- 选择【模式设置】,拉到底部点击【切换页面到 Fake-IP 模式】,勾选【使用 Meta 内核】,保存配置。
- 不同模式间的区别可以参考:浅谈在代理环境中的 DNS 解析行为。
DNS 设置:
- 在【本地 DNS 劫持】选项选择【禁用】,保存配置。
如果选择【使用 Dnsmasq 转发】,流量就不经过 SmartDns,直接到 OpenClash。
- 在【本地 DNS 劫持】选项选择【禁用】,保存配置。
GEO 数据库订阅:
- 勾选【自动更新 GeoIP MMDB 数据库】【自动更新 GeoIP Dat 数据库】【自动更新 GeoSite 数据库】,保存配置。
- 勾选【自动更新 GeoIP MMDB 数据库】【自动更新 GeoIP Dat 数据库】【自动更新 GeoSite 数据库】,保存配置。
覆写设置
- 来到【DNS 设置】,勾选【自定义上游 DNS 服务器】【追加上游 DNS】【追加默认 DNS】【Fake-IP 持久化】。
- 在【自定义上游 DNS 服务器】中添加 SmartDNS 的地址,支持 UDP/TCP/TLS/HTTPS 协议。
- 在【Meta 设置】中勾选【启用 TCP 并发】。
其余基础设置可以根据需要自行配置,更多详情请参阅 OpenClash 使用手册。
启动与测试
- 回到主界面,点击【启动 OpenClash】。
- 若无法启动,检查【运行日志】并根据日志内容排查问题。
- 访问 SpeedTest 网页,确认显示的 IP 为国内宽带,测试网速应为自身宽带速率。
最后
在使用 OpenClash 之前,OpenVPN 是全局代理的主要工具,需要频繁连接。现在使用 OpenClash 后,只需上网即可,全部交给它处理。
然而,实际使用过程中发现 OpenClash 的分流做得不够理想,例如访问香港域名时使用国外线路,以及访问国际化网站时也是如此。这种情况下,需要手动调整自定义规则,但并不总是有效。
OpenClash 目前是唯一一款基于 nftables 的软件,其它类似软件仍只支持 iptables,因此这个取舍非常难。
补充:个人使用方案
我的需求是只有某些网站需要走代理,其余 90% 直连。
- 使用【Fake-IP】模式,并且不要使用 Meta 内核。实际使用过程中,Meta 内核会导致自定义规则失效。
- 在【覆写设置】 -> 【规则设置】中,勾选【第三方规则】【仅代理命中规则流量】和【自定义规则】,根据需求填写自定义规则。
例如,访问google.com
和github.com
时走代理模式,在rules
下填入:
- DOMAIN-SUFFIX,google.com,🔰 节点选择
- DOMAIN-SUFFIX,github.com,🔰 节点选择
- 在【设置第三方规则】栏内,点击【添加】 -> 【获取策略组】,根据需求自定义规则方式。
应用配置后,现在基本上已经达到理想效果。在现阶段基于 nftables 的 OpenWrt 系统中,这比强行使用 SSR+ 更好。