自启守护

快连Linux端如何设置开机自启并守护运行?

快连官方团队2026年5月5日21 分钟阅读
快连Linux端如何开机自启, 快连Linux守护进程设置, 快连Linux systemd配置方法, 快连Linux后台运行失效怎么办, 快连Linux端自启脚本怎么写, 快连Linux端是否支持守护模式, 快连Linux端cron与systemd区别

功能定位:为什么必须让快连在Linux后台活着

在服务器、NAS、树莓派等无人值守场景,快连一旦掉线,GitHub推送、AWS API、远程SSH全部中断。手动重连既耗时又容易错过告警。把客户端托管给systemd,可实现开机自启、异常崩溃秒级重启、日志集中收集,让“网络代理”变成基础设施,而不是临时工具。

与桌面版的“点击连接”不同,Linux后端没有托盘图标,进程被杀后无提示。自启守护的核心价值是把不确定性变成可观测的指标:重启次数、最后一次握手延迟、CPU占用,都能用systemctl status一行命令看到。

功能定位:为什么必须让快连在Linux后台活着
功能定位:为什么必须让快连在Linux后台活着

前置检查:版本、权限与安装路径

截至当前的最新版本(请以实际安装版本为准)提供quicklink单文件二进制,官方仓库的.deb/.rpm包会把可执行文件放到/usr/bin,配置文件默认在/etc/quicklink/config.json。若使用AppImage或手动解压,请先把二进制软链到/usr/local/bin并确认具有755权限,否则systemd会出现权限拒绝。

提示:运行id -u quicklink若返回“无此用户”,需新建系统用户,避免用root直接拉进程,降低被爆破后的横向移动风险。

一步生成systemd单元:最小可用模板

创建文件/etc/systemd/system/quicklink-daemon.service,写入以下内容(路径按实际调整):

[Unit]
Description=QuickLink Network Client
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=qlink
Group=qlink
ExecStart=/usr/bin/quicklink --config /etc/quicklink/config.json --no-interactive
Restart=on-failure
RestartSec=5s
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

重点解释:

  • --no-interactive关闭彩色交互,防止journal出现乱码;
  • Restart=on-failure只在异常退出时重启,手动systemctl stop不会触发;
  • RestartSec=5s给网络栈留恢复时间,经验性观察低于3秒可能撞上DAD(IPv6地址冲突检测)导致再次失败。

启用并验证:让服务随系统升空

  1. sudo systemctl daemon-reload // 重载单元
  2. sudo systemctl enable --now quicklink-daemon // 立即启动+开机自启
  3. systemctl is-active quicklink-daemon // 返回active即成功
  4. journalctl -u quicklink-daemon -f // 实时看日志,确认出现“Handshake completed in *.ms”

若第3步返回failed,先检查配置文件JSON是否合法:quicklink --config /etc/quicklink/config.json --check,修正后再systemctl restart quicklink-daemon

守护强度升级:Watchdog与自动复活

对7×24生产环境,仅靠Restart=on-failure不够:进程假死(CPU 0%、Socket阻塞)时systemd无法感知。可在单元中追加:

WatchdogSec=60
ExecStartPost=/bin/sh -c 'systemd-notify --ready'
ExecReload=/bin/kill -USR1 $MAINPID

并在/etc/quicklink/config.json里打开"systemd_notify": true(截至当前的最新版本支持,若键值不存在请跳过)。这样客户端每30秒通过sd_notify向systemd报活,超时即被杀死并重启。

警告:Watchdog秒数必须大于客户端心跳间隔的2倍,否则正常重钥也会被误判;建议先观察journal无“Watchdog timeout”再上线。

多实例场景:为不同出口建独立单元

当同一台机器需要同时拉美国、日本两条线路(例如分流业务与备份),复制单元文件为quicklink-us.servicequicklink-jp.service,修改User=qlink-usConfig=/etc/quicklink/us.json,并分配不同监听端口(如1081、1082)。systemd会并行拉起,互不影响。日志查看:

journalctl -u quicklink-us -u quicklink-jp --since "10 minutes ago"

经验性观察:2实例CPU占用相加仍低于单核5%,内存常驻约28 MB,可放心跑在2 GB树莓派。

日志轮转:防止journal撑爆磁盘

默认systemd-journald会永久保存日志,若节点每小时重钥一次,一年可产生约200 MB文本。建议新建/etc/systemd/journald.conf.d/quicklink.conf

[Journal]
SystemMaxUse=200M
MaxRetentionSec=1month

重载journald:sudo systemctl restart systemd-journald。这样即使忘记清理,磁盘占用也不会失控。

故障排查速查表

现象 最可能原因 验证命令 处置
start后秒退 配置文件JSON语法错 quicklink --check 修正逗号/引号,再restart
Restart计数飙升 网卡未就绪就拉进程 journalctl | grep "Network is unreachable" 单元追加After=network-online.target
权限拒绝 二进制不在PATH ls -l /usr/bin/quicklink chmod 755并确认所有者为root:root
能启动但无法转发 内核未开IP转发 sysctl net.ipv4.ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward并写/etc/sysctl.d/
故障排查速查表
故障排查速查表

性能与成本:何时不该用systemd守护

systemd本身占用<1 MB内存,但若你跑的是128 MB OpenWrt小路由,busybox默认无完整systemd,需切到procd或init.d脚本。此时继续硬套本文模板,反而增加移植成本。判断标准:若系统/sbin/init指向systemd且可用内存>256 MB,再考虑采用。

另外,容器场景(Docker/Podman)推荐把快连放sidecar容器,用K8s的livenessProbe做重启,而非在镜像里塞systemd,否则需要特权模式,破坏最小权限原则。

与监控栈对接:Prometheus exporter示例

截至当前的最新版本内置--metrics :9100开关,暴露握手延迟、重钥次数、出口IP变更计数。在单元追加:

ExecStart=/usr/bin/quicklink --config /etc/quicklink/config.json --no-interactive --metrics :9100

Prometheus添加job:

- job_name: 'quicklink'
  static_configs:
  - targets: ['127.0.0.1:9100']

配合Grafana官方Dashboard ID 18689(经验性观察,社区模板可用),可看到“上次重钥距现在”的曲线,超过90分钟无波动即判定节点僵死,触发重启。

FAQ:快连Linux自启守护常见疑问

1. 开启量子密钥后systemd频繁重启?

经验性观察,部分旧路由固件对Kyber768数据包MTU不兼容,导致握手后秒断。解决:升级至最新版本或在配置中关闭量子密钥轮换。

2. 能否直接用root用户跑?

可以,但违背最小权限原则。建议新建qlink系统用户,并给CAP_NET_ADMIN能力即可,无需完整root。

3. 日志里出现“Failed to set DNS”?

通常因systemd-resolved占用53端口。解决:单元追加After=systemd-resolved.service,或在配置里把DNS指向127.0.0.53。

4. 如何临时暂停守护?

sudo systemctl stop quicklink-daemon即可,重启机器不会自动拉起;若需永久禁用:systemctl disable quicklink-daemon

5. 能同时跑快连和其他代理客户端吗?

只要监听端口与路由表不冲突即可。建议把快连的透明代理段设为192.18.0.0/24,避免与Clash/V2Ray的192.168.0.0/16重叠。

最佳实践清单:上线前逐项打钩

  1. 新建专用系统用户,禁用shell登录
  2. 单元文件已加After=network-online.target
  3. 配置JSON通过--check无报错
  4. Watchdog秒数≥2×客户端心跳
  5. journald磁盘限额已设,防止打满
  6. Prometheus指标端口已加入防火墙白名单
  7. 更新策略:先staging节点灰度一周,再推生产

收尾:下一步行动建议

至此,快连Linux端已完成“开机自启+崩溃守护+指标可观测”三件套。你可以把本文的单元模板直接复制到/etc/systemd/system,改两行路径即可上线;若想再进一步,可把Prometheus告警规则quicklink_last_key_rotation > 7200接入飞书/Slack,让节点僵死先于用户投诉到达你的手机。

最后提醒:每季度复查一次官方Release Note,确认是否有新的命令行参数(如--experimental-quantum)需要同步到单元文件;保持单元简洁,拒绝盲目追加“玄学参数”,才是真正的可维护之道。

自启systemd守护后台Linux配置