快连Linux端如何仅对当前终端配置命令行代理?

问题定义:为什么只想“局部”生效
在 CI 脚本、容器构建或多人共享的编译机上,把全局网络栈交给代理往往带来副作用:apt、docker pull、企业内网 Git 都可能被意外引流。快连(QuickLink)Linux 端默认提供 TUN 模式,一旦开启即接管全部流量。若你只想让当前终端会话走代理,而把系统其余流量留在直连环境,就需要“会话级”方案——这也是本文核心关键词“快连Linux端如何仅对当前终端配置命令行代理”要解决的场景。
功能边界:QuickLink 8.6 系列能给你什么
截至当前的最新版本(8.6.1,2026-02-28),快连 Linux 端提供两种可编程入口:
- 本地 SOCKS5:默认监听 127.0.0.1:1080,无需 root,随客户端启停。
- HTTP 混合口:监听 127.0.0.1:8888,同时支持 CONNECT 与 HTTP 代理,方便老版本 curl/wget 使用。
这两个端口只在回环接口暴露,不会把局域网其他机器流量带进来;同时,它们随客户端生命周期存在,退出即消失,天然适合“仅当前终端”这一需求。
最短可达路径:三步让当前 Shell 走代理
1. 启动客户端并确认端口
在图形桌面单击“连接”后,终端执行:
ss -ltnp | grep -E '1080|8888'
若看到 127.0.0.1:1080 行,说明 SOCKS5 已就绪;若你更习惯 HTTP 代理,可在客户端“设置→本地代理”里把“HTTP 混合口”开关打开,随后 8888 端口也会出现。
2. 在当前 Shell 注入变量
假设你选用 SOCKS5,直接复制下面整段粘贴即可:
export ALL_PROXY=socks5://127.0.0.1:1080 export HTTP_PROXY=$ALL_PROXY export HTTPS_PROXY=$ALL_PROXY
注意:ALL_PROXY 是 curl 识别的快捷变量,wget 2.x 也支持;老版本 wget 需额外写 ~/.wgetrc,见下文“例外与取舍”。
3. 验证与观测
在同一窗口执行:
curl -I https://ip.skk.moe
返回头里的 x-ql-node 字段会显示你当前走到的出口代号,与 QuickLink 客户端“节点信息”面板一致,即证明流量已进隧道。再开一个新终端(未 export 变量),同样 curl 一次,若出口 IP 不同,则“隔离”成功。
平台差异:桌面端与无头服务器
桌面端(带 GNOME/KDE)
客户端提供托盘图标,左键→“复制终端代理命令”已把三行 export 拼好,可直接粘;若你习惯 Fish Shell,需要把 export 换成 set -x。
纯命令行(无头 VPS)
快连 Linux 端也支持 quicklink-cli 模式:
quicklink-cli login -u 用户名 -p 密码 quicklink-cli connect --socks5 1080
connect 成功后,端口生命周期与 CLI 进程绑定,Ctrl-C 即断;CI 场景可放后台:
quicklink-cli connect --socks5 1080 &
然后继续 export 变量即可。
例外与取舍:哪些命令不吃变量
1. ssh / scp
OpenSSH 默认不读取 HTTP_PROXY;若你期望 ssh 也走 SOCKS,可:
ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:1080 %h %p' user@host
经验性观察:在 Debian 系需安装 netcat-openbsd 包,否则 -X 5 参数不被识别。
2. apt / yum
apt 只认自己的 Acquire::http::Proxy 配置,变量无效。临时做法:
sudo apt -o Acquire::http::Proxy=http://127.0.0.1:8888 update
注意:8888 是 HTTP 混合口,SOCKS5 无法被 apt 直接使用。
3. docker build
docker 客户端会把 HTTP_PROXY 变量自动写入 BuildKit 的 build-container,但前提是你 export 在同一会话里执行 docker build;若用 sudo,记得加 -E 保留环境。
proxychains-ng:让“不听话”的程序强制走隧道
当命令既不支持变量,又无法给参数时,proxychains 是最后大杀器。安装:
sudo apt install proxychains-ng
编辑 /etc/proxychains.conf,把最后一行改为:
socks5 127.0.0.1 1080
随后在当前终端:
proxychains4 -q ssh user@内网机
即可把 ssh 流量塞进 SOCKS5,而系统其余部分仍保持直连。
警告
proxychains 通过 LD_PRELOAD 注入动态库,对静态编译或 Go 单文件程序可能失效;使用前可用 ldd $(which 你的命令) 确认依赖列表是否包含 libc。
CI 集成:一行写法,零污染
GitHub Actions 示例:
- name: Install QuickLink CLI
run: |
curl -fsSL https://pkg.quicklink.net/linux/x64/8.6.1/quicklink-cli.deb -o ql.deb
sudo dpkg -i ql.deb
- name: Start tunnel & export
run: |
quicklink-cli connect --socks5 1080 &
sleep 3
echo "ALL_PROXY=socks5://127.0.0.1:1080" >> $GITHUB_ENV
把变量写进 $GITHUB_ENV 后,后续 step 会自动继承,无需 sudo 或修改系统 systemd。
验证与回退:确保随时可还原
1. 验证指标
- 出口 IP 变化:curl 检测
https://ip.skk.moe - 延迟对比:同窗口
ping -c3 8.8.8.8与另一窗口对比 - 节点字段:QuickLink 客户端日志里
relay=行显示实际出口
2. 回退方案
关闭仅当前会话的代理,执行:
unset ALL_PROXY HTTP_PROXY HTTPS_PROXY
若用 proxychains,直接去掉前缀即可;若用 quicklink-cli,pkill quicklink-cli 即断。
适用/不适用场景清单
| 场景 | 建议方案 | 理由 |
|---|---|---|
| 单次拉取 GitHub 大仓 | export 变量 | 零配置、用完即弃 |
| 编译机全局 apt 更新 | 手动指定 -o Acquire::http::Proxy |
避免把系统更新流量全引到隧道 |
| 内网 ssh 批量运维 | proxychains4 | ssh 本身无 SOCKS 参数 |
| 长期守护进程(systemd 服务) | 不要 export 进全局 | 服务重启后变量丢失,应写单元文件 Environment= |
最佳实践 5 条
- 永远先确认端口存在再 export,避免把变量指空导致命令卡死。
- CI 日志里把
curl -I结果打印出来,方便回查出口节点。 - Fish / Zsh 用户把 export 写成函数,加进
.config/fish/functions/qlproxy.fish,一键开关。 - 需要同时开 IPv6 时,把
ALL_PROXY=socks5h://...里的socks5h保留 DNS 查询在远端,避免本地解析污染。 - 多人共享编译机,用
tmux会话级变量,互不干扰;切勿写/etc/environment。
FAQ(FAQPage Schema)
export 变量后,为什么 wget 还是直连?
Debian 默认 wget 1.x 只读 http_proxy 小写变量,且需要 --no-check-certificate 时手动加参数;升级 wget2 或改用 curl 可解决。
quicklink-cli 后台挂起后断网怎么办?
经验性观察:部分 VPS 的 systemd-resolved 会抢占 53 端口,导致 CLI 内置 DNS 转发失败。关闭 systemd-resolved 或手动指定 --dns 8.8.8.8 可恢复。
SOCKS5 与 HTTP 混合口到底选哪个?
SOCKS5 支持 TCP+UDP,且 DNS 查询可放在远端;HTTP 口只处理 TCP,兼容性更好(apt、yum、npm 老版本)。按需切换即可。
总结与下一步
快连 Linux 端已经内置了本地 SOCKS5/HTTP 端口,只要掌握“变量注入”与“proxychains 劫持”两条思路,就能在不触碰系统网络栈的前提下,让任意命令行程序临时走隧道。记住:端口生命周期跟随客户端,变量生命周期跟随 Shell 会话——用完即弃,是最干净的做法。下一步,你可以把 export 命令写成 Shell 函数放进 dotfiles,或在 CI 模板里固化成一行,真正做到“一键局部代理,零污染退出”。
📺 相关视频教程
最全Linux科学上网三种方式,ubuntu使用clash客户端,带桌面,不带桌面,docker容器,终端代理,clash ui 设置快捷方式与系统命令 一键启动客户端