
如何在Linux中设置快连kuilian开机自动连接?
功能定位:为什么需要开机自动连接
快连 kuilian 在 Linux 上默认只提供图形面板与 CLI 两种入口,重启后若无人值守,隧道不会自动恢复,远程 SSH、定时同步、Docker 代理等任务随之掉线。把 kuilian 做成 systemd 守护进程,可在系统初始化阶段完成登录、选路、建链,后续断网也能秒级重连,省去人工值守。
与 Windows 的「随系统启动」复选框不同,Linux 发行版启动流程差异大:Debian 系走 systemd,Arch 也走 systemd,老版本 Ubuntu 14 仍用 Upstart。本文以 systemd 为主(占比 >95% 的现用发行版),兼顾 Upstart/OpenRC 的降级思路,并给出「回退到 rc.local」的兜底方案,确保你在云服务器、树莓派、NAS 上都能复用。
前置条件与边界
1. 软件版本与安装方式
截至当前的最新版本 kuilian 6.3 提供三种 Linux 包:deb、rpm、AppImage。deb/rpm 会在 /usr/bin 下释放 kuilian-cli,AppImage 需自行解包或写 wrapper。以下示例均以 deb 安装路径为准;若你下载 AppImage,把 ExecStart 中的命令换成绝对路径即可。
2. 首次登录必须人工完成
kuilian 的登录态默认加密保存在 ~/.config/kuilian/credential.json,且与设备码绑定。首次启动必须手动输入账号密码,否则守护进程拿不到令牌。建议先在桌面环境或 ssh 会话里运行一次 kuilian-cli login,确认能正常出网,再继续配置自启。
3. 单用户 vs 系统级
systemd 支持 --user 模式,无需 root 即可把 kuilian 注册到用户级 systemd。若你租的是共享云主机,没有 sudo 权限,走用户级即可;若要给全屋设备提供透明代理,建议系统级,这样隧道在切换用户时仍存活。
系统级自启:写一份最小 systemd unit
步骤 1:确认 kuilian-cli 真实路径
which kuilian-cli # 输出示例:/usr/bin/kuilian-cli
步骤 2:创建 systemd unit 文件
sudo nano /etc/systemd/system/kuilian.service
填入以下内容(不含注释符号):
[Unit] Description=Kuailian privacy tool daemon After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/bin/kuilian-cli daemon --config /etc/kuilian/daemon.json Restart=on-failure RestartSec=5 # 以 nobody 用户运行,降低权限 User=nobody Group=nogroup # 确保能读写配置目录 ReadWritePaths=/etc/kuilian /var/log/kuilian # 防止意外访问 ProtectSystem=strict NoNewPrivileges=true [Install] WantedBy=multi-user.target
步骤 3:准备全局配置
sudo mkdir -p /etc/kuilian /var/log/kuilian sudo kuilian-cli export-config > /etc/kuilian/daemon.json
若 export-config 子命令不存在,可手动把 ~/.config/kuilian 下 *.json 复制到 /etc/kuilian,并改权限 640。
步骤 4:重载并设为开机启动
sudo systemctl daemon-reload sudo systemctl enable --now kuilian.service
步骤 5:验证
systemctl status kuilian.service journalctl -u kuilian -f
看到 "Connected to edge node ..." 即成功。若输出 "Unauthorized",说明 credential.json 未复制,需把登录态文件拷到 /etc/kuilian 并 chown nobody:nogroup。
用户级自启:无 root 也能跑
在共享云主机或高校计算节点,你可能没有 sudo。此时把 unit 放到 ~/.config/systemd/user/ 即可:
mkdir -p ~/.config/systemd/user nano ~/.config/systemd/user/kuilian.service # 内容同上,但把 User/Group 两行删掉,默认以当前用户运行 systemctl --user daemon-reload systemctl --user enable --now kuilian.service
经验性观察:用户级 systemd 在 ssh 退出后可能被 logind 杀掉,需额外执行 loginctl enable-linger $USER 让会话常驻。
断网重连与 Kill-Switch 加固
kuilian-cli 6.3 自带 "--kill-switch" 参数,会在隧道掉线时写 nftables 规则,禁止任何非隧道流量。systemd unit 中只需在 ExecStart 尾部追加即可:
ExecStart=/usr/bin/kuilian-cli daemon --kill-switch --config /etc/kuilian/daemon.json
注意:Kill-Switch 依赖 nftables,若系统仍在用 iptables-legacy,需先执行 update-alternatives --set iptables /usr/sbin/iptables-nft,否则规则不生效。
日志轮转与故障排查
1. 日志目录别放 /tmp
kuilian 默认把日志写进 ~/.cache,systemd 模式下建议重定向到 /var/log/kuilian,并配 logrotate:
echo '/var/log/kuilian/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}' | sudo tee /etc/logrotate.d/kuilian
2. 常见失败码速查
| journalctl 关键词 | 可能原因 | 处置 |
|---|---|---|
| Unauthorized | credential.json 缺失或权限过宽 | chmod 600,chown 与运行用户一致 |
| TUN create failed | 缺少 /dev/net/tun 或 CAP_NET_ADMIN | sudo setcap cap_net_admin+ep /usr/bin/kuilian-cli |
| DNS resolve timeout | 本地 DNS 被污染或 53 端口被占 | unit 内追加 After=systemd-resolved.service |
例外场景:什么时候不该用 systemd
- 嵌入式 OpenWrt:固件自带 procd,与 systemd 不兼容,应写 procd 脚本。
- 容器镜像:Docker 本身提供 restart=always,再包一层 systemd 会重复拉活,导致 CPU 空转。
- 需要频繁换账号:credential.json 每 24 h 刷新一次,若多人共用一台机,systemd 级单配置反而碍事,可改用 --user 模式或容器隔离。
最佳实践 10 条速查表
- 首次登录一定在终端里手动完成,确认 credential 文件落地。
- unit 文件里至少写 After=network-online.target,避免启动顺序竞态。
- 用 nobody 用户跑系统级服务,降低被入侵后的横向移动风险。
- Kill-Switch 默认开启,但要检查 nftables 版本,防止规则失效。
- 日志独立目录 + logrotate,防止把 /var 打满。
- 升级 kuilian 后,先 systemctl daemon-reload,再 restart,否则 unit 缓存旧路径。
- 云主机控制台若带「安全组」,记得放行 UDP 443/51820,否则隧道起不来。
- 不要把 credential.json 放进 Git,用 600 权限 + gitignore 双重保险。
- 若需 IPv6 优先,在 daemon.json 加 "ipv6": true,并确认服务器侧分配地址。
- 每月抽查一次 journalctl,若发现 "reconnecting x50" 高频出现,考虑手动换节点。
FAQ(结构化数据)
Q1: 升级系统后 kuilian 无法启动?
内核更新可能移除 /dev/net/tun,需重启后重新检查设备节点,或手动 modprobe tun。
Q2: 用户级 systemd 日志在哪里看?
执行 journalctl --user -u kuilian -f,无需 root。
Q3: 如何临时关闭 Kill-Switch?
systemctl edit kuilian 把 Kill-Switch 参数去掉,systemctl restart kuilian 即可;规则会在停止服务时自动清除。
收尾:下一步行动清单
读完本文,你只需 5 分钟就能让 kuilian 在 Linux 开机时自动连网:先手动登录一次 → 复制配置 → 写 systemd unit → enable 并验证日志。建议立即在测试机重演一遍,确认无报错后再上到生产环境;同时把日志轮转和 Kill-Switch 一并配好,真正做到无人值守也安心。未来 kuilian 若推出原生 systemd 模板,可直接 drop-in 覆盖,但眼下这份最小 unit 已足够覆盖 6.x 全系列。
