一些零碎的教程 - pzyyll/Custom_OpenClash_Rules GitHub Wiki

💡 一些零碎的教程

收集了一些关于 OpenClash 和 OpenWrt 的实用配置教程。


目录

    1. 配置转换相关
    • 1.1. ImmortalWrt 下搭建本地转换服务
    • 1.2. 本地转换服务导入模板和规则
    1. OpenWrt 相关
    • 2.1. 固件无损扩容
    • 2.2. OpenWrt x Tailscale 子网互通方案(fw4 / snapshot)

📦 1. 配置转换相关

1.1. ImmortalWrt 下搭建本地转换服务

部分用户倾向于在本地运行转换服务,避免依赖外部服务。

ImmortalWrt 固件的软件源中默认包含了 subconverter 软件包。通过安装该软件包,可以在本地快速搭建轻量级的转换服务。

安装步骤:

1. 进入软件包界面,点击"更新列表"

2. 在过滤器中输入 subconverter

3. 找到 subconverter 软件包,点击"安装"

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:更新软件源

根据固件版本执行更新命令:

  • Snapshot 版本apk update
  • Release 版本opkg update

步骤 3:安装必要插件

安装 owutattendedsysupgrade

  • Snapshotapk add luci-i18n-attendedsysupgrade-zh-cn owut
  • Releaseopkg 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 子网不重叠

示例:

节点 子网
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 设置方案无任何冲突。

⚠️ **GitHub.com Fallback** ⚠️