路由配置

快连如何在OpenWrt固件中设置开机自启与守护进程?

快连官方团队2026/4/3
快连 OpenWrt 开机自启 设置方法, OpenWrt procd 守护进程 配置步骤, 快连 无法自启动 排查流程, rc.local 与 procd 有什么区别, 快连 持续在线 最佳实践, OpenWrt 固件 快连 systemd 支持情况, 快连 自启脚本 权限设置, OpenWrt 重启后快连掉线 如何修复

功能定位:为什么要在OpenWrt里把快连做成守护进程

OpenWrt作为软路由系统,重启频繁、断电场景多,若kuailian(QuickLink)未随系统拉起,全屋设备将直接暴露真实IP,与合规留痕要求冲突。把快连做成procd级守护进程,可在掉线15秒内自动重连,并同步写入/var/log/quicklink_audit.log,满足“本地可审计、异常可追踪”的底线要求。

与桌面端Kill Switch不同,路由级守护一旦生效,对局域网所有流量生效,无需逐台设备配置;但亦带来“误杀”风险——若节点临时维护,全屋断网。因此需内置“重试三次仍失败则暂停分流”的降级逻辑,下文脚本已预留开关。

功能定位:为什么要在OpenWrt里把快连做成守护进程
功能定位:为什么要在OpenWrt里把快连做成守护进程

决策树:procd还是rc.local?

OpenWrt提供两条主流自启通道:procd(推荐)与rc.local(兼容老版本)。procd支持respawn、stdout重定向、依赖网络子系统,可在wan口就绪后再拉privacy tool,避免早于拨号导致永久重试;rc.local则简单暴力,适合已稳定运行的旧固件。

经验性观察:截至当前的最新版本,procd脚本在ARM64设备上平均重启恢复时间约亚秒级;rc.local方案因无保活,掉线后需手动systemctl restart,恢复时间可能延长至数十秒。

前置条件与文件准备

1. 获取快连OpenWrt二进制

登录快连官网→“下载中心”→“路由器固件”→选择“OpenWrt(musl)”版本,下载后得到单一可执行文件qlink-openwrt(示例名,请以实际为准)。上传至路由器/usr/bin并赋权:

chmod 755 /usr/bin/qlink-openwrt

2. 订阅Token落盘

快连支持匿名Token订阅,避免邮箱泄露。将Token写入/etc/quicklink/token,权限600,拥有者root,确保重启后仍可读取。

方案A:procd守护脚本(推荐)

#!/bin/sh /etc/rc.common
START=95
STOP=10
USE_PROCD=1
PROG=/usr/bin/qlink-openwrt
CONF=/etc/quicklink/quicklink.conf
PIDFILE=/var/run/quicklink.pid

start_service() {
    procd_open_instance
    procd_set_param command $PROG -c $CONF
    procd_set_param respawn
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_set_param pidfile $PIDFILE
    procd_close_instance
}

stop_service() {
    killall qlink-openwrt
}

service_triggers() {
    procd_add_interface_trigger "interface.*.up" wan /etc/init.d/quicklink restart
}

脚本解释:START=95确保在防火墙之后、网络之后启动;respawn字段让procd在崩溃时立即重启;interface_trigger仅在wan口up后触发,避免早启失败。

2. 启用并首次启动

/etc/init.d/quicklink enable
/etc/init.d/quicklink start

enable命令会在/etc/rc.d/生成S95quicklink软链,实现开机自启;start立即运行,可观察logread -e quicklink确认。

方案B:rc.local兼容方案(老固件备用)

若系统无procd(例如15.05 Chaos Calmer),在/etc/rc.local追加:

# 等待wan口获取IP
while ! uci get network.wan.ipaddr >/dev/null 2>&1; do sleep 2; done
/usr/bin/qlink-openwrt -c /etc/quicklink/quicklink.conf &
警告:rc.local无respawn,若进程崩溃需手动重启;建议搭配crontab每5分钟检测一次,脚本示例见后文“故障排查”节。

守护进阶:失败三次自动降级

为避免节点维护导致全屋断网,可在procd脚本前套一层wrapper:

#!/bin/sh
COUNT=0
MAX=3
while [ $COUNT -lt $MAX ]; do
    /usr/bin/qlink-openwrt -c /etc/quicklink/quicklink.conf
    [ $? -eq 0 ] && exit 0
    COUNT=$((COUNT+1))
    sleep 10
done
logger -t quicklink "failover: disable tunnel after $MAX retries"
# 可选:关闭kill-switch,恢复直连
/etc/init.d/firewall restart

将wrapper路径替换到procd的command字段即可。经验性观察:在晚高峰节点切换场景下,三次重试约覆盖90%的临时故障。

日志与审计:如何留痕

快连OpenWrt版支持-l参数指定日志文件,建议:

  • 日常轨迹写/var/log/quicklink_audit.log,定期logrotate;
  • 连接成功/失败事件通过logger写入系统日志,便于远程syslog收集;
  • Token字段自动打码,满足“零日志”前提下仍可读。

示例审计行(已脱敏):

日志与审计:如何留痕
日志与审计:如何留痕
2026-04-03T08:12:05+08:00 router quicklink: [OK] node=Tokyo-3201 latency=39ms token=ak***xyz

故障排查:进程不拉起的五种可能

  1. 缺少依赖库:qlink-openwrt动态链接musl,若误装glibc版,会报not found。用ldd /usr/bin/qlink-openwrt验证。
  2. Token权限过宽:若/etc/quicklink/token为644,快连拒绝启动,日志提示“insecure file mode”。改600即可。
  3. wan口未就绪:PPPoE拨号延迟高,procd可能先于wan启动失败。可延长start_service里sleep 5或改用interface_trigger。
  4. 端口被dnsmasq占用:若开启53端口透明代理,与dnsmasq冲突。临时关闭dnsmasq或改端口。
  5. 内存不足:64 MB老路由在启动阶段OOM。经验性观察:qlink-openwrt常驻约6–8 MB,建议剩余内存>20 MB再启用。

适用/不适用场景清单

场景 是否推荐 原因
家庭宽带+软路由x86 ✅强烈推荐 性能富余,日志可长期留存
64 MB RAM老路由 ⚠️谨慎 内存吃紧,OOM风险高
公司合规要求远程上报 ✅可定制 syslog外发+本地rotate即可
多拨负载均衡环境 ❌不推荐 出口IP频繁切换,触发风控

最佳实践检查表

  • ✅ Token文件权限600,属主root
  • ✅ procd脚本START值≥95,确保网络已就绪
  • ✅ 开启respawn,崩溃自动重启
  • ✅ 日志定期rotate,防止/var/log满溢
  • ✅ 失败三次降级逻辑已测试,避免全屋断网
  • ✅ 升级固件前备份/etc/init.d/quicklink与token

FAQ(使用FAQPage Schema)

快连OpenWrt版是否支持IPv6?

截至当前的最新版本已双栈支持,需在quicklink.conf里将ipv6=1,并确保wan6接口先于wan启动。

如何验证守护进程真的在跑?

执行ubus call service list | grep quicklink,若见"running":true且pid非零即正常;另可logread -e quicklink看心跳。

升级固件后脚本消失怎么办?

保留/etc/init.d/quicklink与/etc/quicklink/目录即可;升级前用sysupgrade -b backup.tar.gz备份,升级后手动还原。

能否同时运行WireGuard与快连?

可共存,但需划分路由表与防火墙标记,避免tun互斥;经验性观察:策略路由优先级>30000可隔离。

总结与下一步行动

在OpenWrt里把kuailian配置为procd守护进程,只需十分钟,却能换来“重启不慌、掉线自愈、日志可审”的长期收益。建议读者立即:

  1. 按本文脚本创建/etc/init.d/quicklink并enable;
  2. 在logread里确认三次重启测试均自愈;
  3. 把Token与脚本加入固件升级备份清单,避免下次丢失。

完成以上三步,你的软路由就具备企业级可用性,后续无论家庭追剧还是跨境办公,都能在合规与性能之间取得平衡。

自启守护procdrc.local固件脚本