自启动配置

如何在Linux系统中将快连kuailian配置为开机自动启动?

作者: 快连官方团队
自启动systemdrc.localLinux配置
快连kuailian Linux 自启动, 快连kuailian systemd 配置, 快连kuailian rc.local 设置, Linux 开机自动启动快连kuailian 步骤, 快连kuailian 服务无法随系统启动 怎么办, 如何设置快连kuailian 后台运行, 快连kuailian 服务器 延迟启动

快连kuailian自启动到底解决什么问题

在服务器或软路由场景,手动每次重启后重新连接快连kuailian既繁琐又容易遗漏;一旦隧道未建立,跨境数据库同步、海外API回调、游戏加速都会直接中断。把快连kuailian配置为开机自动启动,可让系统在联网就绪后秒级完成隧道握手,减少人工干预与业务中断时间。

截至当前的最新版本(QuickLink v6.3.1)官方并未提供Linux图形化自启开关,因此需要借助systemd或传统rc.local两条主流路径。下文先给出「最短可达路径」,再解释「为什么这样写」以及「何时不该用」,方便你根据发行版差异与权限策略做取舍。

快连kuailian自启动到底解决什么问题
快连kuailian自启动到底解决什么问题

方案A:systemd(推荐,适配CentOS 8+/Debian 10+/Ubuntu 20.04+)

1. 确认kuailian二进制路径

经验性观察:官方.run包默认装到/opt/kuailian/bin/kuailian,AppImage则常被用户自行放在/usr/local/bin。请先执行

which kuailian || find /opt /usr/local -name kuailian 2>/dev/null

记下返回的绝对路径,下文以/opt/kuailian/bin/kuailian为例。

2. 新建systemd单元文件

sudo nano /etc/systemd/system/kuailian.service

填入以下内容(注意ExecStart与用户名替换为你自己的):

[Unit]
Description=Kuailian privacy tool daemon
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=kuailian
ExecStart=/opt/kuailian/bin/kuailian --config /home/kuailian/.kuailian/config.json
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

3. 启用并验证

sudo systemctl daemon-reload
sudo systemctl enable --now kuailian.service
systemctl status kuailian.service

若Active显示running,说明systemd已接管;重启整机后再次status,可确认是否自动拉起。

4. 回退与排错

如果启动失败,先查日志:

journalctl -u kuailian -b

常见原因:①config.json中绑定了GUI端口,但User=kuailian无权限创建/var/run目录;②双因子认证未关闭,导致CLI等待输入。解决:把"gui":false写进config或关闭2FA,再systemctl restart kuailian即可。

方案B:rc.local(兼容老版本CentOS 6、Ubuntu 16.04)

1. 检查rc.local是否可用

部分新系统默认停用/etc/rc.local,需手动赋权:

sudo chmod +x /etc/rc.local
sudo systemctl enable rc-local.service  # 若存在该单元

2. 追加启动命令

在exit 0之前插入:

# 等待网络就绪,最长30秒
for i in {1..30}; do
  ping -c1 223.5.5.5 &>/dev/null && break
  sleep 1
done
sudo -u kuailian /opt/kuailian/bin/kuailian --config /home/kuailian/.kuailian/config.json &

经验性观察:老系统缺乏network-online.target,用ping探测更通用;后台加&防止阻塞后续脚本。

3. 验证与回退

重启后执行

ps -ef | grep kuailian

无进程则查看/var/log/rc.local.log或dmesg,确认是否因依赖库缺失导致启动失败;可临时注释掉该行,恢复开机。

systemd vs rc.local:如何取舍

维度systemdrc.local
并行启动支持,可精确控制依赖串行,易阻塞
日志追踪journalctl一键查看需自行重定向日志
老系统兼容需systemd≥219几乎所有Linux都支持
官方维护主流发型版默认启用已标记为deprecated

结论:新系统优先systemd;若你维护的是CentOS 6系列遗产服务器,可临时用rc.local,但应计划系统升级。

权限与SELinux:为什么不要用root跑

快连kuailian核心关键词再次提醒:官方CLI支持以普通用户身份运行,systemd单元里写User=kuailian即可。以root启动虽能省去目录权限烦恼,但一旦config.json被恶意改写,攻击者可直接获得隧道出口,等于把内网拱手让人。

警告:若系统开启SELinux enforcing,需执行
sudo setsebool -P nis_enabled 1
sudo semanage port -a -t privacy tool_port_t -p udp 51820
否则WireGuard握手包会被拦截,status显示running但无法连通外网。
权限与SELinux:为什么不要用root跑
权限与SELinux:为什么不要用root跑

多实例与Kill-Switch:进阶场景示例

假设你在上海机房有台软路由,需要同时跑两条隧道:一条通往东京游戏加速,一条通往美西静态住宅IP。可写两份unit:kuailian-game.service与kuailian-business.service,分别指定不同config与User,再用iptables规则把源地址段分流。Kill-Switch可在ExecStartPre里插入

iptables -P OUTPUT DROP
iptables -I OUTPUT -o kuailian+ -j ACCEPT

确保隧道断开后外网流量立即被阻断,防止真实IP泄露。

验证与观测:如何确认自启真的成功

  1. 重启后运行systemctl is-active kuailian应返回active。
  2. 执行curl -4 ip.sb连续三次,出口IP应与你在config里指定的节点城市一致。
  3. 查看journalctl,若出现"Handshake initiation took 68 ms"且后续"Keepalive received",说明LightWarp协议已跑通。
  4. 在另一台机器持续ping本机公网IP,可验证Kill-Switch是否生效:手动systemctl stop kuailian,ping应瞬间超时;start后恢复。

不适用场景与边界

  • 桌面LiveCD环境:每次重启文件系统回写,unit文件会丢失,不如用Portable systemd镜像。
  • 容器内跑Docker Desktop:网络命名空间与宿主机分离,自启unit在容器外无效,应在容器entrypoint里调用kuailian CLI。
  • 需要802.1X认证的高校校园网:认证脚本晚于network-online.target,会导致unit启动时无真实外网,需把After=network-online.target改为After=custom-8021x.service。

最佳实践检查表

部署前:

  • 已确认kuailian CLI能手动跑通,config关闭GUI与2FA。
  • 新建专用系统用户kuailian,家目录权限700。
  • 已备份/etc/systemd/system与iptables规则。

部署后:

  • 重启两次,status皆active;curl出口IP符合预期。
  • 已配置Kill-Switch并验证掉线即断网。
  • 已把unit纳入配置管理(Ansible/Salt),防止漂移。

FAQ(结构化数据)

为什么按照教程重启后kuailian没起来?

99%是因为User=kuailian对config.json或日志目录无读取权限。请chown -R kuailian:kuailian /home/kuailian,并确认未把config放在/root下。

可以同时用systemd与rc.local吗?

技术上可以,但会拉起双实例导致路由表冲突。请二选一,并在切换前systemctl disable kuailian或注释掉rc.local命令。

journalctl里提示"Unable to bind 53"怎么办?

DNS-over-HTTPS与本地named冲突。把config.json中"dns_listen":"127.0.0.1:53"改成5353,或先systemctl stop named。

升级kuailian后需要重新配置unit吗?

如果二进制路径不变则无需改动;若新版改到/usr/bin,请更新ExecStart并systemctl daemon-reload即可。

Kill-Switch导致我无法SSH进机器,如何急救?

通过云厂商VNC/串口控制台登录,执行systemctl stop kuailian,iptables规则即被清空;随后调整unit,把SSH端口22加入ACCEPT列表。

总结与下一步

把快连kuailian做成Linux开机自启并不复杂:新系统用systemd,老系统用rc.local;核心是「等网络→非root→可重试→可回退」。按照本文检查表验证两次后,你就能在无人值守的软路由、云服务器、甚至树莓派上稳定跑出LightWarp隧道。下一步,可把unit文件纳入Git,用Ansible批量下发,再叠加Prometheus+node_exporter采集隧道延迟,实现真正可观测的7×24小时自动加速网络。