返回博客列表
快连 OpenWrt 开机自启 如何配置, 怎么在OpenWrt设置快连守护进程, OpenWrt procd 托管快连步骤, 快连进程退出自动重启怎么办, OpenWrt 服务脚本 快连 区别, 快连是否支持OpenWrt系统服务, 企业OpenWrt批量部署快连最佳实践, 快连OpenWrt掉线重连如何实现
路由配置

快连在OpenWrt里如何实现开机自启并守护进程?

快连官方团队2026年3月11日阅读时间约 22 分钟
开机自启守护进程procd脚本配置进程管理OpenWrt

在OpenWrt中为kuailian配置procd自启与守护,实现掉线秒级重连,兼顾合规日志与可审计。

功能定位:为什么要在OpenWrt守护快连

kuailian(Kuailian privacy tool)在路由器侧常以kuailian-core进程形态运行,默认仅提供一条裸命令,无重启、无日志、无掉线保护。一旦节点闪断,全屋设备瞬间“裸奔”。把进程托管给OpenWrt原生初始化系统procd,可在掉线后亚秒级拉起,并把stdout/stderr重定向到/var/log/kuailian.log,满足“本地可审计”的合规底线,也省去手动写crontab的碎片脚本。

功能定位:为什么要在OpenWrt守护快连
功能定位:为什么要在OpenWrt守护快连

前置检查:版本、空间与依赖

1. 系统版本门槛

经验性观察:19.07 之后的官方发行版均已内置procd;若您停留在18.06或社区魔改固件,请先确认/sbin/procd存在,否则后续init.d脚本无法注册。

2. 剩余空间与依赖库

快连官方二进制(截至当前的最新版本)压缩后约5.8 MB,解压后12 MB,加上日志轮转建议预留≥30 MB。依赖:libopenssl、librt、libpthread,均可通过opkg install libopenssl pthread在线补齐。

安装与初次运行:先保证“裸命令”能通

1. 把官方bin上传到/usr/bin/kuailian-corechmod +x
2. 手动执行一次:kuailian-core -c /etc/kuailian/config.json --log-level info
3. 观察能否正常输出“Login succeed”且curl ipinfo.io返回非本地IP;若失败,请先在命令行排错,再进入守护阶段,否则procd会陷入无限重启。

编写procd启动脚本:最小可运行模板

/etc/init.d/新建文件kuailian,内容如下(已合并日志重定向与掉线保护):

#!/bin/sh /etc/rc.common
START=99
STOP=10
USE_PROCD=1
PROG=/usr/bin/kuailian-core
CONF=/etc/kuailian/config.json

start_service() {
    procd_open_instance
    procd_set_param command "$PROG" -c "$CONF" --log-level info
    procd_set_param respawn  # 核心:掉线即重启
    procd_set_param stdout 1 # 日志进procd
    procd_set_param stderr 1
    procd_set_param pidfile /var/run/kuailian.pid
    procd_close_instance
}

stop_service() {
    killall kuailian-core 2>/dev/null
}

保存后执行chmod +x /etc/init.d/kuailian

注册开机自启并首次启动

提示:以下命令均在SSH(Dropbear)下完成,Luci界面无对应按钮。

  1. /etc/init.d/kuailian enable # 创建/etc/rc.d/S99kuailian符号链接,实现开机自启
  2. /etc/init.d/kuailian start # 立即启动并托管
  3. logread -e kuailian # 若看到“procd: Instance kuailian::instance1 started”即注册成功

验证守护效果:手动杀进程看是否秒级重生

1. 记录PID:pgrep kuailian-core
2. 强制杀掉:kill -9 <PID>
3. 立即再次pgrep,若新PID出现且时间戳相差不足1 s,则procd respawn生效。

日志留存与轮转:防止/var/log撑爆

procd默认把stdout/stderr送进ring buffer(logread),重启路由即丢失。若当地法规要求“留存≥15 天”,需额外配置logrotate或写入外置U盘:

  • 方案A:安装logrotate,新建/etc/logrotate.d/kuailian,限制单文件1 MB,保留5份。
  • 方案B:在start_service里把--log-file /mnt/sda1/kuailian.log直接写死,跳过syslog,适合长期插U盘的环境。
日志留存与轮转:防止/var/log撑爆
日志留存与轮转:防止/var/log撑爆

边界条件:何时不该用procd守护

经验性观察:若节点本身被GFW短时黑洞,频繁重连可能导致“封IP+封端口”双杀,日志里会出现连续“handshake timeout”。此时应让进程冷却数分钟而非立即重启,可改用respawn_threshold & respawn_timeout参数或外部cron脚本做指数退避。

与Kill Switch协同:掉线后切断外网

快连自带--kill-switch参数,会在TUN down时写入iptables规则。若您把进程托管给procd,还需在stop_service()里显式清理防火墙,否则重启路由前会一直断网。示例:

iptables -F kill_switch_guard
ip6tables -F kill_switch_guard

多拨与负载均衡:procd脚本如何扩展

若您使用mwan3做多拨,可在start_service()前先用ip route add table 100把kuailian-core绑定到指定出口,避免重启后路由表被mwan3刷掉。该做法属于“进阶可选”,不在官方文档范围,但经社区验证可复现。

故障排查速查表

现象可能原因验证命令处置
logread无kuailian字样脚本未给执行位ls -l /etc/init.d/kuailianchmod +x
S99kuailian未生成enable失败ls /etc/rc.d/S99*重新enable
无限重启配置.json语法错kuailian-core -t -c config.json修正JSON
重启后TUN权限拒用户非rootps | grep kuailianprocd默认root,勿降权

常见问答(FAQ Schema)

Q1:procd与systemd有何区别?

OpenWrt使用轻量级procd,而非桌面Linux的systemd;语法与命令集完全不同,不可混用。

Q2:能否把kuailian-core降权到nobody?

TUN设备需要CAP_NET_ADMIN,降权后无法创建接口;procd默认以root运行,建议保持。

Q3:日志太大撑满内存怎么办?

安装logrotate或把--log-file指向外置U盘,并限制单文件1 MB、保留5份。

Q4:如何临时关闭自启?

执行/etc/init.d/kuailian disable && /etc/init.d/kuailian stop即可,下次升级固件前有效。

Q5:procd respawn阈值能否自定义?

可以,在procd_set_param respawn 3600 5 0里把“5”改成更高值,实现一小时最多5次重启,降低被封概率。

最佳实践清单(可打印)

  1. 永远先手动跑通裸命令,再交给procd。
  2. 给脚本加set -e,出错即退出,避免静默失败。
  3. 日志与配置分盘存放,U盘掉线时进程仍可写内存日志。
  4. 升级固件后重新enable,防止rc.d链接被刷掉。
  5. 每季度检查一次logread -e kuailian,确认无“handshake timeout”风暴。

收尾:下一步行动建议

完成上述步骤后,kuailian已在OpenWrt实现“开机自启+掉线秒重连+本地可审计”。建议您立即做一次“断电重启—杀进程—查日志”三连环测试,确认无误后再把路由器交付家人或公司使用。若节点出现连续被封,可回到respawn阈值或使用外部冷却脚本,而非盲目升级带宽。路由侧稳定了,再把Kill Switch与DNS over HTTPS串进同一procd实例,全屋流量就能在合规与性能之间取得平衡。

📺 相关视频教程

【2024年】保姆级openclash教程,避免在openclash在使用中可能遇到的各种问题

分享这篇文章:

相关文章推荐