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

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

重要配置说明:
由于 OpenClash 内置的模板地址多为 GitHub 直链,在某些网络环境下可能不稳定。若转换服务侧拉取失败,可将模板链接替换为可用的备用下载源(如 jsDelivr 的对应地址),以确保转换服务正常运行。
[!WARNING] 注意:如果转换服务无法访问模板/规则地址,将导致无法拉取远程模板和规则文件,服务会自动回退至内置默认模板,从而导致策略组/规则结构不符合预期。请确保转换服务侧网络连通性或使用可用的备用下载源。
1.2. 本地转换服务导入模板和规则¶
以 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 文件。
🖥️ 2. OpenWrt 相关¶
2.1. 固件无损扩容¶
使用官方发布的 OpenWrt/ImmortalWrt 固件时,可以通过 owut 插件配合官方 ASU (Attended Sysupgrade) 服务器,实现简便的无损扩容。该方法支持在系统升级过程中保留扩容后的分区大小。
[!NOTE] 本教程基于 ext4 分区验证,squashfs 分区未经测试。
操作步骤:
步骤 1:SSH 连接设备¶
步骤 2:更新软件源¶
根据固件的包管理器版本执行更新命令:
- APK:
apk update - OPKG:
opkg update
步骤 3:安装必要插件¶
安装 owut 和 attendedsysupgrade:
- APK:
apk add luci-i18n-attendedsysupgrade-zh-cn owut - OPKG:
opkg install luci-i18n-attendedsysupgrade-zh-cn owut
步骤 4:虚拟机扩容(物理机请跳过)¶
若运行在 PVE、ESXi 等虚拟化平台,需先在虚拟机管理界面调整虚拟磁盘大小。虚拟磁盘大小必须大于或等于调整后的容量。
步骤 5:设置目标固件大小¶
默认情况下,owut 仅在当前请求中应用临时参数。配置永久参数可确保后续升级自动维持指定容量。
[!TIP] 固件大小上限受 ASU 服务器限制(通常约 2GB)。一般建议设置为 1GB (1024MB)。
执行以下命令写入配置:
uci set attendedsysupgrade.owut=owut
# 设置固件大小为 1024MB (1GB)
uci set attendedsysupgrade.owut.rootfs_size='1024'
uci commit
步骤 6:执行扩容与升级¶
运行升级命令。系统将请求 ASU 服务器生成指定大小的新固件,并执行下载和刷写操作。
owut upgrade --force
升级过程会保留现有的插件和配置并自动重启。重启后,系统分区将自动扩展至设定的大小。后续维护只需再次执行该命令即可完成系统升级并保持分区容量,同时保留所有配置和已安装的插件。

2.2. OpenWrt x Tailscale 子网互通方案(fw4 / snapshot)¶
2.2.1. 目标¶
- 原则上最小化配置,不进行任何无用的配置修改操作
- 配合值守式系统升级,在升级时保留配置,升级后无需额外操作
- 多台 OpenWrt 路由器之间实现三层子网互通
- 各自子网公网出口独立
- 不合并 LAN,不产生广播 / 扫描
- 仅允许通过明确 IP 访问对端
- 子网设备增删无需调整防火墙规则
- 不需要在公网开放任何端口
2.2.2. 适用环境¶
- OpenWrt/ImmortalWrt Snapshot
- 防火墙:fw4 + nftables
- Tailscale 使用软件源中自带版本
- 各 LAN 子网不重叠
[!NOTE] 本教程以双节点作为示例,添加更多节点的操作相同,只要内网地址不重复即可。
示例:
| 节点 | 子网 |
|---|---|
| A | 192.168.1.0/24 |
| B | 192.168.2.0/24 |
2.2.3. Tailscale 配置(每台路由器都做)¶
2.2.3.1. 安装并启动 tailscaled¶
apk update
apk add tailscale
tailscaled &
确认运行:
pgrep -a tailscaled
2.2.3.2. 加入 Tailscale 并通告子网¶
A(192.168.1.0/24):
tailscale up \
--advertise-routes=192.168.1.0/24 \
--accept-routes \
--accept-dns=false
B(192.168.2.0/24):
tailscale up \
--advertise-routes=192.168.2.0/24 \
--accept-routes \
--accept-dns=false
SSH 界面中会出现登录链接,复制并用浏览器打开后会跳转 Tailscale 官网,自行注册或登录 Tailscale 账号即可。
在浏览器中登录后,SSH 界面会自动提示 sucess 表示绑定成功。
2.2.3.3. 控制台操作(一次性)¶
在 Tailscale 官网控制台的 Admin Console 中: - Approve 双方通告的 routes
2.2.3.4. 路由确认(可选)¶
ip route get <对端网关IP>
期望结果:
dev tailscale0
2.2.4. 防火墙配置(fw4 核心)¶
[!IMPORTANT] fw4 + 动态接口(
tailscale0)必须使用option device,不要使用option network。
2.2.4.1. 创建 / 修正 tailscale zone¶
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'
2.2.4.2. 添加 forwarding(仅这两条)¶
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'
2.2.4.3. 提交并重载¶
uci commit firewall
/etc/init.d/firewall reload
2.2.4.4. 核查 fw4 是否真正生效(关键)¶
nft list chain inet fw4 input
必须出现:
iifname "tailscale0" jump input_tailscale
2.2.5. 验证流程(顺序不可乱)¶
2.2.5.1. 路由器 <-> 路由器¶
ping 192.168.2.1
ping 192.168.1.1
2.2.5.2. 子网设备 <-> 子网设备¶
ping 192.168.2.X
2.2.6. 结语¶
这是 fw4 + snapshot + Tailscale 子网路由的标准方案,可长期复用,且与本项目 OpenClash 设置方案无任何冲突,同时支持通过 attendedsysupgrade & owut 保留配置升级。