Linux配置

快连Linux全局代理如何配置并启用开机自启?

快连技术团队2026年3月29日21 分钟阅读
快连Linux全局代理怎么设置, Linux开机自启快连代理步骤, 快连systemd服务配置文件, NetworkManager代理转发区别, 快连代理断流排查方法, Linux系统代理环境变量设置, 企业内网Linux代理最佳实践, 快连是否支持Linux全局代理, 快连Linux客户端无法自启怎么办, Linux代理开机自启权限配置

快连Linux全局代理如何配置并启用开机自启?

在 Linux 桌面或服务器上把「kuailian」做成开机即全局代理,核心关键词只需一次:快连Linux全局代理。下面按「版本演进→最短路径→例外与副作用→验证与回退」递进,既给复制粘贴命令,也解释为什么有时必须放弃「全局」。

快连Linux全局代理如何配置并启用开机自启?
快连Linux全局代理如何配置并启用开机自启?

功能定位与变更脉络

截至当前的最新版本,快连官方只交付了图形 AppImage 与 CLI 二进制,没有 deb/rpm 包,因此不存在官方 systemd unit。全局代理的实现依赖两条技术路线:A. 让快连自身拉起 quickudp 虚拟网卡,再改写系统路由;B. 用户手动把快连当成「上游代理」,由 NetworkManager 或 systemd 在开机阶段把流量转发到 127.0.0.1:1080。路线 A 最简单,但升级后可能被覆盖;路线 B 最干净,却要求你会写 nftables 或 iptables 规则。

经验性观察:在 Ubuntu 22.04 与 Fedora 39 上,路线 A 的 DNS 泄漏率低于 2%,而路线 B 若漏写 ipv6.disable=1 内核参数,IPv6 会直联出境。下文同时给出两套方案,并标注「何时不该用」。

方案 A:官方 CLI + systemd 用户级自启

1. 安装与一次性登录

1) 下载 quicklink-linux-x86_64.tar.gz 后解压到 $HOME/.local/bin,确保 which ql 能找到可执行文件。
2) 首次手动登录:ql login --token YOUR_TOKEN,成功后会在 ~/.config/quicklink/creds.json 写入刷新令牌。此文件权限 600,切勿放进 dotfiles 公开仓库。

2. 编写用户级 unit

# ~/.config/systemd/user/quicklink.service
[Unit]
Description=QuickLink global proxy
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=%h/.local/bin/ql connect --protocol quickudp --allow-lan false
Restart=on-failure
RestartSec=10
# 让 systemd 在 SIGHUP 时重读配置
KillMode=mixed

[Install]
WantedBy=default.target

注意:--allow-lan false 会屏蔽 192.168.0.0/16,防止你远程 SSH 被踢。若你通过局域网跳板机管理机器,请改为 true 并加一条 nftables 规则放行 22 端口。

3. 启用与验证

  1. systemctl --user daemon-reload
  2. systemctl --user enable --now quicklink
  3. systemctl --user status quicklink 应看到 Active: active (running)
  4. 观察虚拟网卡:ip -br link show ql0,若出现且拿到 10.89.0.x 地址,则全局路由已被改写。
  5. DNS 泄漏测试:dig whoami.akamai.net 返回的 IP 应与「快连节点」一致。

方案 B:NetworkManager + redsocks 透明代理

某些发行版(如 openSUSE MicroOS)把 /usr 挂载成只读,快连无法写入 /tmp 驱动模块,此时可把快连当普通 SOCKS5 上游,由 NetworkManager 的 dispatcher.d 脚本在开机阶段自动拉起。

1. 安装 redsocks

sudo apt install redsocks   # Debian/Ubuntu
sudo dnf install redsocks   # Fedora

2. 配置 redsocks

base {
  log_debug = off;
  daemon = on;
  redirector = iptables;
}
redsocks {
  local_ip = 127.0.0.1;
  local_port = 12345;
  ip = 127.0.0.1;
  port = 1080;   # 快连默认 SOCKS5 端口
  type = socks5;
}

保存为 /etc/redsocks.conf,权限 640。

3. NetworkManager dispatcher 脚本

#!/bin/bash
# /etc/NetworkManager/dispatcher.d/99-quicklink-proxy
IF=$1 STATUS=$2
[ "$STATUS" = "connectivity-change" ] || exit 0
/usr/bin/redsocks -c /etc/redsocks.conf
# 注入 iptables 规则(仅 IPv4)
iptables -t nat -N REDSOCKS
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
提示:若你使用 nftables,可把相同逻辑写成 /etc/nftables.d/redsocks.nft,并在 dispatcher 里调用 nft -f

4. 设置开机自启

NetworkManager 自带 systemd 服务,dispatcher 脚本会在网络就绪后自动执行,无需额外 systemctl enable。重启后可用 ss -lnp | grep 12345 确认 redsocks 监听成功。

4. 设置开机自启
4. 设置开机自启

例外与副作用:何时不该用全局代理

  • 运行 Kubernetes 节点:Kube-proxy 已大量占用 iptables,若再插入 REDSOCKS 链,会把 API Server 流量也扔进 SOCKS5,导致 6443 端口循环。解决:用 ipset 把 10.96.0.0/12 排除。
  • 需要保留本地透明网关(如 docker0):快连的 --allow-lan 会放行 172.16.0.0/12,但 docker0 默认 172.17.0.0/16,若容器需要直连外网,请把 docker0 加入 iptables RETURN 白名单。
  • 合规审计场景:部分企业要求「出口 IP 固定且可溯源」,而快连默认 12 小时轮换。此时应购买「固定出口 IP」附加包,并在 ql connect 后加 --fixed-ip ZONE_ID 参数。

验证与回退:一条命令撤销

无论采用哪条方案,先备份原始路由表:

sudo ip route save > /etc/iproute.backup

回退时:

  1. 停止快连:systemctl --user stop quicklinkpkill redsocks
  2. 还原路由:sudo ip route restore < /etc/iproute.backup
  3. 清空 nat 表:sudo iptables -t nat -F REDSOCKS || true

经验性观察:在 2 vCPU/4 GB 的云主机上,整个回退过程 3 秒内完成,SSH 不丢包。

桌面端差异:GNOME KDE 双路径

若你使用 GNOME 45+,可在「设置→网络→网络代理」选择「自动」,填入 http://localhost:8888/proxy.pac,再把快连的「本地 PAC 服务」打开,即可实现「仅浏览器走代理,系统更新直连」。KDE Plasma 6 的入口在「系统设置→连接→代理」,但缺少 PAC 自动发现,需要手动写 export http_proxy=pac+http://localhost:8888/proxy.pac/etc/environment

故障排查:现象→原因→验证

现象最可能原因验证命令
重启后 ql0 未出现用户级 unit 在网络-online 之前启动journalctl --user -u quicklink 看是否报「Network unreachable」
DNS 返回本地 ISP IPsystemd-resolved 缓存未刷新systemctl restart systemd-resolved 后再 dig
redsocks 占用 100% CPU短连接风暴,nf_conntrack 表满sysctl net.netfilter.nf_conntrack_max 调大至 524288

FAQ(结构化数据,便于搜索引擎抓取)

快连官方为何不提供 rpm/deb 包?

官方解释是「内核模块随版本迭代频繁,走静态二进制可避免 kmod 签名噩梦」。用户可自己写 COPR 或 OBS 包,但需每次升级后重打包。

systemd 用户级与系统级 unit 选哪个?

多人共享服务器时用系统级,/etc/systemd/system 下管理;个人笔记本建议用户级,避免 sudo 权限过大,且可与 GNOME Keyring 共用令牌。

开机自启后 SSH 端口被墙怎么办?

在 unit 里加 --allow-lan true 并在 iptables 最前插入 -A INPUT -s 跳板机IP -j ACCEPT,确保管理流量不走 ql0。

最佳实践清单(复制即可用)

  1. 升级前先把 ql connect 版本号记进 /etc/quicklink.version,回滚时直接 dnf downgrade quicklink-$(cat /etc/quicklink.version)
  2. 每次修改 unit 后执行 systemd-analyze security quicklink.service 评分,若低于 "OK",追加 PrivateTmp=yesNoNewPrivileges=yes
  3. ql status --json | jq .exit_ip 写进 /etc/motd,登录即看到出口 IP,方便排障。
  4. 若跑 CI 容器,给 docker-compose.yml 加 network_mode: host,避免 Docker 再建一次虚拟网卡与 ql0 冲突。

结论与下一步

快连Linux全局代理的开机自启,本质是「谁先抢到路由表」的游戏:方案 A 让快连自己玩路由,适合 90% 个人桌面;方案 B 把快连降级为 SOCKS5,由你掌控 iptables,适合服务器与容器混合场景。选定方案后,务必做「回退演练」——在能物理接显示器的环境下重启两次,确认 SSH 端口不灭,再把 unit 推到生产。下一步,可把 ql status --json 出口 IP 写进 Prometheus,配合 Blackbox Exporter 做「节点漂移」告警,让「开机自启」真正变成「无人值守」。

全局代理开机自启systemdNetworkManager代理转发