快连在Ubuntu命令行如何更新订阅节点并自动选延迟最低线路?

功能定位:为什么要在命令行做这件事
快连在桌面端提供图形界面,但 Ubuntu 服务器、NAS 或远程开发机往往没有 GUI。命令行更新订阅并自动选线,能把「延迟最低」这一指标固化到脚本里,方便 CI/CD、爬虫、海外 API 调用等场景在开机或定时任务时无人值守地获得最优出口。与手动点选相比,CLI 方案的好处是「可重复、可审计、可回滚」;代价则是需要理解配置文件格式与测速命令的返回结构。
前置条件与版本边界
截至当前的最新版本(请以实际安装版本为准)的快连 Linux 客户端仍采用 netquick-core + netquick-cli 双组件架构,依赖 systemd 托管后台。官方仓库仅支持 x86_64 与 arm64,Ubuntu 20.04 及以上内核 ≥5.4。若你用的是 Ubuntu 18.04 或非 systemd 容器,需要额外处理启动脚本,否则 netquick-cli status 会返回 daemon not reachable。
安装路径差异
Debian 系默认把可执行文件放到 /usr/bin,配置文件在 /etc/netquick/;若你通过 AppImage 或手动 tar 包安装,则路径随解压目录变化。下述命令统一用 $NQ_BIN 指代,请替换成真实路径。
更新订阅:一条命令拉取最新节点清单
订阅链接通常以 https://api.netquick.net/sub/... 格式给出,含 token。CLI 不会存明文密码,而是把 token 写入受 600 权限保护的 subscription.conf。
- 写入订阅地址
sudo $NQ_BIN config sub --add "https://api.netquick.net/sub/xxxxxxxx" - 立即拉取
sudo $NQ_BIN sub update若返回fetched 78 nodes即成功。
经验性观察:若节点数长期为 0,先检查系统时间是否准确,TLS 证书校验失败会被静默拒绝。
自动选延迟最低线路:两种官方策略
策略 A:内置 ping 模式(默认)
执行 $NQ_BIN latency-test --auto,客户端会并发 icmp ping 全部节点,选 RTT 最小者写入 /etc/netquick/current-node.json。整个过程在测试环境下大约需要数十秒(因设备而异)。
策略 B:AI 调度 3.0(需要打开 experimental flag)
在 /etc/netquick/daemon.conf 追加 ai_select=true,重启服务后,netquick-core 会基于实时带宽、丢包、RTT 三因子打分,每 90 秒评估一次,可能在中途自动跳节点。对需要长连接的程序(如 SSH),可在 daemon.conf 里把 hold_time 提高到 600 s,减少切换频率。
把两步串成无人值守脚本
新建 /usr/local/bin/nq-auto.sh:
#!/bin/bash set -e NQ_BIN="/usr/bin/netquick-cli" echo "$(date) 开始更新订阅" sudo $NQ_BIN sub update echo "$(date) 开始延迟测试并选线" sudo $NQ_BIN latency-test --auto echo "$(date) 当前节点: $(sudo $NQ_BIN status | jq -r .node)"
赋可执行权限后,用 crontab -e 加一行:0 */3 * * * /usr/local/bin/nq-auto.sh >> /var/log/nq-auto.log 2>&1,即可每三小时自动更新并切到最低延迟节点。
验证与观测:确保脚本真的生效
- 看日志:
journalctl -u netquick-core -f若出现switched to node=xxx reason=lowest_latency,说明调度已生效。 - 外部探针:另外开一台机器,对同一目标域名执行
mtr -rwc 50,比较脚本运行前后 RTT 是否降低。 - 回退检查:若延迟不降反升,执行
$NQ_BIN latency-test --rollback可立即切回上一次节点。
常见故障排查表
| 现象 | 可能原因 | 验证步骤 | 处置 |
|---|---|---|---|
| sub update 报 401 | token 失效 | 浏览器打开同一链接 | 后台重新生成订阅地址 |
| latency-test 全超时 | 本地 ICMP 被禁 | ping 8.8.8.8 | 在 daemon.conf 改用 tcp-test |
| 切换后 SSH 卡顿 | AI 跳节点 | journalctl 看切换频率 | 提高 hold_time 或关闭 ai_select |
不适用场景与取舍建议
- 需要固定出口 IP 的白名单环境(如银行 API):自动选线会导致 IP 变化,触发风控。应手动锁定
node_id并关闭定时更新。 - IPv6 Only 内网:截至目前的最新版本,快连 CLI 在纯 IPv6 机器上解析订阅域名时偶发卡住,经验性观察可见提升空间;可先用
--ipv4-fallback参数缓解。 - 低于 1 vCPU 的容器:并发 ping 会占满 CPU,导致业务延迟抖动。此时把
--concurrent降到 10 以下。
与第三方监控协同
在 Prometheus 环境,可把 $NQ_BIN status --json 输出通过 node_exporter 的 textfile 收集,暴露 netquick_rtt_ms 与 netquick_node_id 两项指标,配合 Grafana 面板即可在更大维度观察「自动选线」带来的延迟收益。
最佳实践检查表
部署前
- 确认 Ubuntu ≥20.04 且内核 ≥5.4
- 校验系统时间误差 <5 s
- 给脚本配独立日志文件并加 logrotate
运行中
- 至少保留一条手动节点作逃生通道
- 监控「切换频率」>6 次/小时时报警
- 每月核对订阅链接是否续期
FAQ(使用 FAQPage Schema)
快连 CLI 是否支持 ARMv7?
官方仓库仅提供 arm64 与 x86_64 二进制;ARMv7 需自行交叉编译,但不在支持矩阵,可能出现未定义行为。
延迟测试会消耗多少流量?
icmp ping 每节点约 64 Byte×20 次,80 节点合计 ≈100 KB;若启用 tcp-test,则每条连接再增加数 KB,可忽略。
如何临时禁止自动切换?
执行 $NQ_BIN config set ai_select=false 并重启 daemon;或在 daemon.conf 里把 hold_time 设成极大值。
收尾与下一步行动
在 Ubuntu 命令行完成「订阅更新+延迟选线」只需两条核心指令,但真正的价值在于把结果固化到脚本、监控和告警里,形成可验证的闭环。先在小范围机器试点,收集一周延迟数据,确认收益大于切换抖动后,再推广到批量环境。若你的业务对 IP 一致性敏感,记得关闭 AI 调度并为关键任务预留静态节点——自动化的前提是「随时可回退」。


