一些零碎的教程 - pzyyll/Custom_OpenClash_Rules GitHub Wiki
收集了一些关于 OpenClash 和 OpenWrt 的实用配置教程。
-
- 配置转换相关
- 1.1. ImmortalWrt 下搭建本地转换服务
- 1.2. 本地转换服务导入模板和规则
-
- OpenWrt 相关
- 2.1. 固件无损扩容
- 2.2. OpenWrt x Tailscale 子网互通方案(fw4 / snapshot)
部分用户倾向于在本地运行转换服务,避免依赖外部服务。
ImmortalWrt 固件的软件源中默认包含了 subconverter 软件包。通过安装该软件包,可以在本地快速搭建轻量级的转换服务。
安装步骤:
1. 进入软件包界面,点击"更新列表"
2. 在过滤器中输入 subconverter
3. 找到 subconverter 软件包,点击"安装"

通常情况下,使用默认配置即可满足需求(默认已关闭缓存),无需修改配置参数。
安装完成后,在 OpenClash 的订阅配置页面中,将 订阅转换服务地址 修改为:
http://127.0.0.1:25500/sub

重要配置说明:
由于 OpenClash 内置的模板地址多为 GitHub 直链,在某些网络环境下可能不稳定。若转换服务侧拉取失败,可将模板链接替换为可用的备用下载源(如 jsDelivr 的对应地址),以确保转换服务正常运行。
Warning
注意:如果转换服务无法访问模板/规则地址,将导致无法拉取远程模板和规则文件,服务会自动回退至内置默认模板,从而导致策略组/规则结构不符合预期。请确保转换服务侧网络连通性或使用可用的备用下载源。
以 ImmortalWrt 为例,subconverter 的默认配置文件路径为 /etc/subconverter。
将自定义的 .ini 模板文件上传至 /etc/subconverter/config 目录(例如 example.ini)。在引用时,使用路径 config/example.ini。
或者,将模板文件上传至 /etc/subconverter/base 目录。在 OpenClash 的 自定义模板的地址 栏中,直接填写文件名 example.ini 即可调用。

将规则文件(.list)上传至 /etc/subconverter/rules 目录。在模板文件中引用时,使用路径 rules/your_rules.list。
配置示例:
ruleset=🎯 全球直连,rules/your_rules.list通过以上配置,即可实现完全本地化的转换服务,便于自行维护模板和规则,不再依赖远程 GitHub 文件。
使用官方发布的 OpenWrt/ImmortalWrt 固件时,可以通过 owut 插件配合官方 ASU (Attended Sysupgrade) 服务器,实现简便的无损扩容。该方法支持在系统升级过程中保留扩容后的分区大小。
Note
本教程基于 ext4 分区验证,squashfs 分区未经测试。
操作步骤:
根据固件版本执行更新命令:
-
Snapshot 版本:
apk update -
Release 版本:
opkg update
安装 owut 和 attendedsysupgrade:
-
Snapshot:
apk add luci-i18n-attendedsysupgrade-zh-cn owut -
Release:
opkg install luci-i18n-attendedsysupgrade-zh-cn owut
若运行在 PVE、ESXi 等虚拟化平台,需先在虚拟机管理界面调整虚拟磁盘大小。虚拟磁盘大小必须大于或等于调整后的容量。
默认情况下,owut 仅在当前请求中应用临时参数。配置永久参数可确保后续升级自动维持指定容量。
Tip
固件大小上限受 ASU 服务器限制(通常约 2GB)。一般建议设置为 1GB (1024MB)。
执行以下命令写入配置:
uci set attendedsysupgrade.owut=owut
# 设置固件大小为 1024MB (1GB)
uci set attendedsysupgrade.owut.rootfs_size='1024'
uci commit运行升级命令。系统将请求 ASU 服务器生成指定大小的新固件,并执行下载和刷写操作。
owut upgrade --force升级过程会保留现有的插件和配置并自动重启。重启后,系统分区将自动扩展至设定的大小。后续维护只需再次执行该命令即可完成系统升级并保持分区容量,同时保留所有配置和已安装的插件。

- 原则上最小化配置,不进行任何无用的配置修改操作
- 多台 OpenWrt 路由器之间实现三层子网互通
- 各自子网公网出口独立
- 不合并 LAN,不产生广播 / 扫描
- 仅允许通过明确 IP 访问对端
- 子网设备增删无需调整防火墙规则
- 不需要在公网开放任何端口
- OpenWrt/ImmortalWrt Snapshot
- 防火墙:fw4 + nftables
- Tailscale 使用软件源中自带版本
- 各 LAN 子网不重叠
示例:
| 节点 | 子网 |
|---|---|
| A | 192.168.1.0/24 |
| B | 192.168.2.0/24 |
apk update
apk add tailscaletailscaled &确认运行:
pgrep -a tailscaledA(192.168.1.0/24):
tailscale up \
--advertise-routes=192.168.1.0/24 \
--accept-routes \
--accept-dns=falseB(192.168.2.0/24):
tailscale up \
--advertise-routes=192.168.2.0/24 \
--accept-routes \
--accept-dns=falseSSH 界面中会出现登录链接,复制并用浏览器打开后会跳转 Tailscale 官网,自行注册或登录 Tailscale 账号即可。
在浏览器中登录后,SSH 界面会自动提示 sucess 表示绑定成功。
在 Tailscale 官网控制台的 Admin Console 中:
- Approve 双方通告的 routes
ip route get <对端网关IP>期望结果:
dev tailscale0
Important
fw4 + 动态接口(tailscale0)必须使用 option device,不要使用 option network。
uci add firewall zone
uci set firewall.@zone[-1].name='tailscale'
uci set firewall.@zone[-1].device='tailscale0'
uci set firewall.@zone[-1].input='ACCEPT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='REJECT'uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='tailscale'
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='tailscale'
uci set firewall.@forwarding[-1].dest='lan'uci commit firewall
/etc/init.d/firewall reloadnft list chain inet fw4 input必须出现:
iifname "tailscale0" jump input_tailscale
ping 192.168.2.1
ping 192.168.1.1ping 192.168.2.X这是 fw4 + snapshot + Tailscale 子网路由的标准方案,可长期复用,且与本项目 OpenClash 设置方案无任何冲突。