快连Linux客户端如何设置代理并排除局域网地址?
快连Linux客户端代理设置与局域网排除完整教程,合规留存可审计,步骤可复现。

功能定位:为什么要在 Linux 上单独谈代理与局域网排除
在 Windows 与 macOS 上,快连(QuickLink,下文简称 QL)已经提供图形「应用分流」开关,而 Linux 版至今仍以 CLI 为主。对开发与运维场景而言,代理规则是否落库、局域网地址是否被意外转发,直接决定后续审计时能否拿出「未绕行内网」的证据。本文以「合规与数据留存」为主线,给出可复现、可回滚、可审计的最小化配置。
版本与路径差异:桌面发行版到底装的是哪一代
截至当前的最新版本(ql-cli 6.8.x 系列)提供 deb、rpm、AppImage 三种打包。以下示例均以 Ubuntu 22.04 LTS 为基准,路径与单元文件名在其他发行版可能略有差异,请以实际 systemd 列表为准。
安装确认
sudo dpkg -i ql-cli-6.8.x.amd64.deb ql-cli --version # 输出版本号即安装成功
代理设置的三条主线:环境变量、透明代理、SOCKS 5
Linux 端 QL 不会强制覆盖系统路由表,而是优先读取 QL_PROXY_MODE 变量,再决定是走「TUN 透明代理」还是「本地 SOCKS 5」。该设计的好处是:即使 QL 异常退出,系统路由仍保持原样,降低远程机器失联风险。
做法:一次性写入 /etc/environment(全局生效)
echo 'QL_PROXY_MODE=tun' | sudo tee -a /etc/environment echo 'QL_SOCKS_PORT=1089' | sudo tee -a /etc/environment sudo systemctl restart ql-daemon
原因:TUN 模式把「0.0.0.0/0」收拢到虚拟网卡,再由 QL 用户态过滤
这样后续审计只需检查 /var/log/ql/tun-trace.log,即可还原「哪些 IP 被转发、哪些被排除」。若用纯 SOCKS 5,则需要额外抓取 localhost:1089 流量,才能拼出完整路径。
何时不该用 TUN
在容器编排节点或已运行 Calico/Cilium 的 K8s 工作节点上,再叠加 TUN 容易触发 MTU 冲突;此时建议退回 SOCKS 5,并在应用层做 proxychains-ng 封装。
局域网排除规则:官方语法与常见坑
QL 把「绕过大陆地址」与「绕过局域网」拆成两条列表,文件位于 /etc/quicklink/exclude-lan.txt。每行一条 CIDR,支持 # 注释。若该文件缺失,QL 会内置 192.168.0.0/16,10.0.0.0/8,172.16.0.0/12 作为兜底。
做法:自定义排除企业内网段
sudo cp /etc/quicklink/exclude-lan.txt /etc/quicklink/exclude-lan.txt.bak sudo nano /etc/quicklink/exclude-lan.txt # 追加企业专线 100.64.0.0/10 # 运营监控网 fd00::/8 # IPv6 ULA
验证:重载后抓包确认
sudo systemctl reload ql-daemon ping -c4 192.168.88.1 # 应显示本地网关 IP,TTL 无跳变 sudo tcpdump -i any host 192.168.88.1 and port not 22 -n # 若只有 eth0 报文、无 ql0 报文,即证明排除生效
规则冲突排查:当「绕过局域网」遇上「强制出口」
部分企业会在 DHCP 推送「默认出口代理 http_proxy=1.2.3.4:8080」,导致 QL 启动后,本机流量先被 iptables 重定向到 TUN,再由环境变量把 HTTP 流量二次转发到企业代理,形成回环。此时日志会出现 CONNECT 1.2.3.4:8080 via 1.2.3.4:8080 的循环报错。
对策:在 QL 启动前清除外部代理变量
sudo systemctl edit ql-daemon # 创建 override [Service] UnsetEnvironment=http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
http_proxy 访问公网 API,请改用「分应用代理」或「容器级变量」而非全局变量,避免把企业代理入口暴露给 QL。
可审计的日志留存:让合规团队一眼看懂
QL 默认把 TUN 转发记录写入 /var/log/ql/tun-trace.log,格式为「时间戳+进程 UID+目标 IP+端口+转发节点+是否命中排除」。当日志体积超过 100 MB 自动轮转,保留 7 份。若需对接 SIEM,可把 QL_LOG_FORMAT=json 写入 /etc/quicklink/daemon.conf,即可输出结构化字段。
示例:筛选被排除的局域网流量
sudo jq 'select(.excluded==true and .dstIp | startswith("192.168."))' /var/log/ql/tun-trace.json | head
性能观测:CPU 与延迟基线
在 4 Core/8 GB 的 KVM 虚机上,经验性观察:开启 TUN 后,iperf3 单线程下降约 5%–8%,多线程几乎无差异;UDP 小包(64 B)pps 下降 10% 左右。若对延迟极度敏感,可把 QL_ENCRYPTION=chacha20 改为 aes-256-gcm,在支持 AES-NI 的 CPU 上可缩短 1–2 ms。
回滚与应急:一条命令恢复出厂路由
sudo ql-cli restore-routing # 该命令会删除 ql0 网卡、清空自定义路由表 51888,并重启 systemd-resolved
若远程机器因规则错误导致 SSH 中断,可提前把上述命令写入 cron「@reboot」,实现「掉电即自救」。
场景清单:什么时候必须排除局域网
- CI Runner 需要拉取内网 GitLab 仓库,同时把构建产物推送到公网容器仓库;
- 运维跳板机通过 192.168.x.x 管理 iDRAC/IPMI,且不允许 BMC 流量出境;
- 科研实验室的 License Server 位于 10.0.0.0/8,走代理会被厂商判定为「异地浮动」;
- 财务终端访问 172.16.0.0/12 的 SAP 系统,审计要求「专线不可被隧道掩盖」。
不适用场景:盲目排除可能带来的副作用
若你所在网络使用「全球统一零信任网关」,所有内网段默认也要经过网关做 DLP 扫描,此时把 10.0.0.0/8 写进排除列表,反而导致流量绕开扫描,触发合规告警。解决方法是把「零信任网关的出口 IP」加入 QL 的「强制走代理」白名单,而非简单排除整个段。
最佳实践速查表
| 检查项 | 命令/路径 | 预期结果 |
|---|---|---|
| 确认排除文件存在 | ls /etc/quicklink/exclude-lan.txt | 返回文件名 |
| 验证重载无中断 | systemctl reload ql-daemon | Active: active (running) |
| 审计日志可读 | jq '.excluded' /var/log/ql/tun-trace.json | sort | uniq -c | true 计数 > 0 |
| 回滚命令就绪 | which ql-cli restore-routing | 返回路径 |
FAQ:3 个最常被问到的细节
1. 排除文件支持域名吗?
不支持。QL 的 TUN 驱动在 IP 层工作,只能识别 CIDR。如需按域名分流,请改用 SOCKS 5 + proxychains 的 proxy_dns 选项。
2. 日志能否直接送到 rsyslog?
可以。在 /etc/quicklink/daemon.conf 加 QL_SYSLOG_FACILITY=local2,然后给 rsyslog 写一条 local2.* @remote:514 即可。结构化 JSON 也会一并转发。
3. 与 Docker 共存时容器流量会不会被 TUN 截走?
默认不会。Docker 的 docker0 网段已写入官方 exclude 模板;若你自定义了 172.17.0.0/12 子网,只需把它追加到 exclude-lan.txt 并重载。
收尾:下一步该做什么
完成上述配置后,建议你立刻做一次「断网演练」:手动停掉 ql-daemon,确认 SSH 与内网仓库仍可用;再启动 daemon,确认公网 API 恢复。演练通过即可把相同模板批量下发到其余 Linux 节点,实现「代理加速」与「内网合规」两不误。