自动重连

快连Linux端断线后如何自动重连并写入系统日志?

快连技术团队2026/5/3
快连Linux端断线后如何自动重连, 怎么把快连重连日志写入syslog, 快连Linux客户端断线检测参数设置, 快连自动重连与日志持久化步骤, Linux下快连重连失败如何看日志, 快连守护进程配置方法, 快连断线重连间隔时间怎么调, 快连是否支持rsyslog远程日志, 快连Linux端最佳重连策略, 快连日志级别设置与排查技巧

功能定位:为什么要在 Linux 端做“断线自救”

kuailian(Kuailian privacy tool)在 Windows 与 macOS 上自带“智能重连”开关,但 Linux 端长期保持最小化设计:只提供 kuailian-daemon 二进制与 JSON-RPC 接口,GUI 由社区自行封装。官方在2026-03 文档中明确:Linux 场景以“服务器、NAS、软路由”为主,重连逻辑交给 systemd 或 Docker HealthCheck,客户端本身不驻留托盘。于是“断线后如何自动重连并写入系统日志”就成了运维侧刚需——既要把隧道拉起,也要让 journald 留下审计痕迹,方便后续排障。

功能定位:为什么要在 Linux 端做“断线自救”
功能定位:为什么要在 Linux 端做“断线自救”

版本演进:官方重连策略的两次迁移

截至当前的最新版本(7.3.0)里,Linux 端重连策略经历过两次可见变动:

  1. 6.x 时代:客户端内置 --auto-reconnect 参数,实际是在主进程内每 30 s 发送心跳;一旦握手超时即重新拨号。优点是无依赖,缺点是崩溃后无人守护。
  2. 7.0-7.2:官方把重连逻辑移出主进程,改用 kuailian-watchdog 独立二进制;systemd 用户可通过 Restart=always 保活。但 watchdog 默认不写 syslog,需要手动加 --log-driver=journald
  3. 7.3.0 起:watchdog 被合并回主包,统一子命令 kuailian-daemon --guard;同时支持 --syslog 标志,日志等级可直接被 journalctl 过滤。

因此,如果你仍在用 6.x,建议先升级到 7.3 以上,再采用下文方案;否则会出现“参数不识别”或“日志缺失”现象。

决策树:选 systemd 还是 Docker/Crontab?

快速判断

  • 主机已经运行 systemd 且你拥有 root → 直接用 systemd Service,最省 CPU,日志天然进 journald。
  • NAS 系统(Synology、QTS)自带 Docker 但没有完整 systemd → 用官方镜像 + HealthCheck,日志通过 --log-driver=syslog 转发。
  • VPS 最小镜像连 systemd 都没装 → 用 @reboot crontab + while 循环脚本,但需自行写 logger。

systemd 方案的优劣

优点:崩溃、断电、升级后都能自启;RestartSec=5 可防短间隔死循环;日志与系统其余服务统一时序。缺点:需要 root 写 unit 文件;若配置错误可能触发“启动风暴”把主机 CPU 占满。

Docker HealthCheck 方案的优劣

优点:镜像与主机隔离,升级只需拉取新镜像;NAS 用户可在图形界面里勾选“自动重启”。缺点:网络命名空间与主机不完全一致,部分分流规则需额外加 --cap-add=NET_ADMIN;日志若走 syslog 需映射 /dev/log

操作步骤:systemd 完整落地

1. 安装 7.3.0 以上二进制

# 以 Debian 12 为例
wget https://dl.kuailian.com/cli/kuailian_7.3.0_linux_amd64.deb
sudo dpkg -i kuailian_7.3.0_linux_amd64.deb
kuailian-daemon --version  # 确认出现 7.3.x

2. 创建最小配置

sudo mkdir -p /etc/kuailian
sudo nano /etc/kuailian/daemon.json
{
  "token": "YOUR_TOKEN",
  "protocol": "k-udp",
  "region": "auto",
  "syslog": true,
  "guard": true
}

3. 编写 systemd unit

sudo nano /etc/systemd/system/kuailian.service
[Unit]
Description=Kuailian privacy tool daemon with auto-reconnect
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/kuailian-daemon --config /etc/kuailian/daemon.json
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

4. 启动并验证

sudo systemctl daemon-reload
sudo systemctl enable --now kuailian
journalctl -u kuailian -f

看到 Tunnel established, ip=x.x.x.x 即算成功。此时拔掉网线或手动 ip link set eth0 down,等待 5 s 应能观察到“Guard detected link loss, reconnecting…”以及新的 IP。

操作步骤:Docker HealthCheck 方案

# 创建只含 token 的环境文件
echo "KL_TOKEN=YOUR_TOKEN" >> /volume1/docker/kuailian/env

# 运行容器
docker run -d --name kl \
  --cap-add=NET_ADMIN --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  -v /volume1/docker/kuailian:/data \
  --env-file /volume1/docker/kuailian/env \
  --log-driver=syslog --log-opt syslog-tag=kuailian \
  --health-cmd="ping -c 3 1.1.1.1 || exit 1" \
  --restart=unless-stopped \
  kuailian/kuailian:7.3.0

NAS 用户可在 DSM “容器管理”界面勾选“自动重启”,日志会出现在 /var/log/messages,可用 LogCenter 检索。

操作步骤:Docker HealthCheck 方案
操作步骤:Docker HealthCheck 方案

日志写入:让 journald 一眼看懂

7.3.0 的 --syslog 标志会把 stderr 映射到 LOG_DAEMON 设备,级别遵循 RFC5424。你可以用:

journalctl -u kuailian -p 4..0  # 只看 Warning 及以上
journalctl -u kuailian --since "10 min ago" -o short-full | grep "link loss"

若需转发到中央日志平台,只需在 /etc/systemd/journald.conf 打开 ForwardToSyslog=yes,rsyslog 即可通过 :programname, isequal, "kuailian" 做过滤。

故障排查:重连失败常见三现象

现象 A:systemd 一直 Restart 但隧道起不来

原因:token 过期或复制多了换行符。验证:kuailian-daemon --once --config /etc/kuailian/daemon.json 若提示“license expired”,需先在官网续费,再 systemctl restart kuailian

现象 B:Docker 容器无限重启,HealthCheck 一直失败

原因:NAS 本身没外网,HealthCheck 的 ping 先失败。缓解:把 HealthCheck 改成 curl -f https://1.1.1.1 或延长 --interval=60s

现象 C:journald 出现“TUN device busy”

原因:上一次退出没释放 /dev/net/tun。处置:在 unit 里加 ExecStartPre=/bin/sleep 2 给内核留回收时间;或显式 ExecStopPost=/bin/ip tuntap del mode tun kuailian0

适用/不适用场景清单

场景建议方案备注
个人 VPS 科学上网systemd资源占用最低,日志集中
软路由(OpenWrt)procd + ujail7.3.0 已提供 opkg,需手动加 procd 脚本
团队 NAS 24h 下载Docker HealthCheck升级不影响宿主机,失败可自动回滚镜像
临时测试机无 systemdtmux + while 循环仅临时使用,重启后需手动拉起
合规要求“必须本地审计”systemd + journald + rsyslog 转发满足多数企业 SIEM 对接需求

最佳实践 6 条

  1. 永远把 token 放 env 或 0600 权限文件,避免 ps aux 泄漏。
  2. unit 里加 StartLimitIntervalSec=60 StartLimitBurst=3,防止网络抖动时雪崩。
  3. 升级前先在测试机 systemctl edit kuailianConflicts=kuailian-test.service,跑并行实例验证。
  4. 若主机跑 kubelet,请把 kuailian 放宿主机层而非 Pod 内,避免 CNI 与隧道互相抢占路由表。
  5. 日志量经验性观察:一条隧道每天约 6–8 MB,journald 默认压缩后 2 MB;若 VPS 磁盘<10 GB,建议加 SystemMaxUse=200M
  6. 家庭盾若开“广告拦截”,会把 telemetry.kt.com 也拦掉,导致心跳失败;记得在“工作域”白名单加 *.kt.com

FAQ(结构化数据)

快连 Linux 端最低内核版本要求?

官方文档写明需 3.10+,但若要用 K-UDP 2.0,建议 5.4+,以便开启 QUIC 内核加速。

能否同时跑多个 kuailian-daemon 实例?

可以,但需指定不同配置目录与 TUN 名称,例如 --tun-name=kuailian1,并在路由表里区分优先级。

journald 日志太多如何快速清理?

执行 sudo journalctl --vacuum-time=7d --unit=kuailian 即可保留最近 7 天。

升级后 unit 文件被覆盖怎么办?

把自定义字段放到 /etc/systemd/system/kuailian.service.d/override.conf,升级时 pacman/apt 不会动它。

家庭盾误杀游戏流量如何快速定位?

先关家庭盾复测,若延迟恢复,再在“工作域”分组逐条放行域名;日志可在 journalctl -u kuailian | grep blocked 看到被拦截域名。

收尾:下一步行动清单

读完本文,你只需 10 分钟即可让快连 Linux 端具备“断线 5 秒内重连 + 系统日志永久留存”能力。先确认版本≥7.3.0,再选 systemd 或 Docker 其一落地;unit 文件里记得加 StartLimit 防雪崩,日志量用 journalctl --vacuum-time 定期修剪。最后把本文最佳实践 6 条贴进团队 Wiki,后续升级、迁移、扩容都能按图索骥,不再踩坑。

自动重连日志写入Linux配置断线检测守护进程