快连如何在Ubuntu终端单独设置代理?
Ubuntu终端单独走快连代理,用env变量+alias三行搞定,全局不动GUI。

为什么要在终端里“单独”挂代理
在 Ubuntu 桌面里启动快连(QuickConnect privacy tool)后,默认会接管整台机器的路由,浏览器、IM、甚至 Snap 更新全部走隧道。但开发场景里常出现两种尴尬:CI 脚本要拉海外依赖,却不想把 500 MB 的 Docker 镜像也挤到隧道;或者公司内网 GitLab 必须走直连,而 Homebrew 又要访问 GitHub。此时“只让终端流量穿隧道”成了刚需。
单独设置的核心思路是环境变量级代理:仅对当前 Shell 会话生效,系统路由表、NetworkManager、其他应用完全无感。好处有三:一,可随时开关,无需 root;二,与快连的 TUN 模式互不干扰,随时回退;三,同一窗口内可精细化拆分,curl 走隧道,ssh 走直连,全凭 alias 一键切换。
先确认快连本地监听地址
截至当前的最新版本,快连 Linux 客户端默认会在 127.0.0.1:7890 开放 HTTP/SOCKS5 混合端口(可在客户端「设置-本地代理」页签看到,若被占用会顺延 7891、7892……)。这个端口就是终端流量的“入口”。
验证命令:ss -ltnp | grep 789,若返回users:(("QuickConnect",pid=xxx,fd=xx))即表示端口已就绪。
三行配置:临时生效法
打开新终端,直接粘贴以下三行即可让当前会话走隧道:
export http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" export all_proxy="socks5://127.0.0.1:7890"
解释:http_proxy / https_proxy 覆盖 80/443 明文请求;all_proxy 让支持 SOCKS 的工具(curl、wget、git、pip、npm、brew)自动回落。经验性观察,同时给出两种协议地址可兼容 95% 以上 CLI 软件,无需再区分。
一键开关:用 alias 写进 .bashrc
把下面函数追加到 ~/.bashrc 或 ~/.zshrc,以后输入 qcon 即走隧道,qcoff 立即恢复直连:
alias qcon='export http_proxy=http://127.0.0.1:7890 https_proxy=$http_proxy all_proxy=socks5://127.0.0.1:7890' alias qcoff='unset http_proxy https_proxy all_proxy'
加载后立即验证:qcon && curl -s ipinfo.io/country 应显示海外出口;qcoff && curl -s ipinfo.io/country 应回到本地 ISP。此法对同一窗口内的子进程递归生效,新窗口默认不继承,天然隔离。
持久会话:byobu/tmux 里常驻
如果你习惯在服务器里开 tmux,担心窗口意外断开,可在 ~/.tmux.conf 写:
set -g update-environment 'http_proxy https_proxy all_proxy'
这样即使重新 attach,环境变量仍在;想彻底清掉,只需在对应 pane 里执行 qcoff。
常见工具的特殊写法
Git
Git 默认不继承 all_proxy,需单独指定:
git config --global http.proxy socks5://127.0.0.1:7890 git config --global https.proxy socks5://127.0.0.1:7890
回退:git config --global --unset http.proxy。
APT
APT 不走环境变量,需创建 /etc/apt/apt.conf.d/95proxies,写入:
Acquire::http::Proxy "http://127.0.0.1:7890"; Acquire::https::Proxy "http://127.0.0.1:7890";
用完即删即可恢复直连。
Docker
Docker build 阶段继承客户端环境,只需在 Dockerfile 同目录建 .dockerignore 同级文件 docker-compose.yml 里加:
build:
args:
http_proxy: http://127.0.0.1:7890
https_proxy: http://127.0.0.1:7890
镜像构建完即失效,不污染运行时。
排查:为什么变量不生效
- 端口未监听:先确认快连客户端已启动且「本地代理」开关打开。
- 变量被覆盖:部分 CLI 工具(如 npm)会强制把
https_proxy转成HTTPS_PROXY大写,可两个都 export。 - SOCKS 版本不一致:curl 7.86+ 默认 SOCKS5h(远程解析),若公司 DNS 污染严重,可改用
socks5h://强制远程解析。 - 防火墙:ufw 可能把 7890 当“本地回环”放行,但若你改了监听地址为 0.0.0.0,需额外放行。
何时不该用环境变量法
1. 需要 UDP 转发:环境变量只影响 TCP/HTTP 层,游戏语音、QUIC 测速等 UDP 流量仍会走本地路由表,此时应切回 TUN 模式。2. 多用户共享服务器:export 对同一 UID 的所有子进程生效,若多人共用 screen,可能互相污染。3. 合规审计:部分企业要求“所有出口流量可回溯”,而 SOCKS 隧道里 URL 日志不完整,需提前确认安全团队是否允许。
与系统代理并存:Gsettings 不动
Ubuntu GNOME 的「设置-网络-网络代理」对应 gsettings 键值,仅影响 GTK/Flatpak 应用,与 Shell 环境变量互不干扰。经验性观察,把终端代理和系统代理分开后,VS Code、Chrome 继续走 GUI 代理,而终端里 npm install 走 SOCKS,两者可同时在线,零冲突。
验证与观测方法
| 命令 | 预期输出 | 说明 |
|---|---|---|
| curl -x socks5://127.0.0.1:7890 ipinfo.io/country | US / SG / JP … | 确认出口国变化 |
| wget -O- --method=CONNECT ipinfo.io 2>&1 | grep -i connected | HTTP 200 | 测试 CONNECT 隧道 |
| time git clone https://github.com/tensorflow/tensorflow --depth=1 | 耗时对比 | qcon 前后差值应缩短 30–60 % |
适用/不适用场景清单
- ✅ 个人开发机,需临时拉取 GitHub、PyPI、npm、Go Module。
- ✅ 公司内网服务器,只允许 22 端口入站,通过隧道更新证书。
- ✅ CI 容器阶段构建,构建缓存走海外,运行时镜像推回本地 Harbor。
- ❌ 需要完整 UDP 转发的外服游戏(Valorant、PUBG),请改用 TUN。
- ❌ 多人共享的跳板机,export 易互相覆盖,建议用 systemd-nspawn 或 Docker 隔离。
最佳实践 5 条
- 永远先
qcoff再关客户端,避免残留变量导致下一次 curl 连不上。 - 把 7890 写进 .bashrc 时加端口存在判断:
[[ -S /tmp/qc.sock ]] && alias qcon=...,防止客户端未启时报错。 - 用
proxychains-ng做“单命令级”代理,可临时让proxychains4 apt update不走全局。 - 脚本里 set -e 时,先 export 再执行,失败即退出,避免半代理状态。
- 审计需求强时,把
export | grep -i proxy写进 CI 日志,方便回溯。
FAQ(结构化数据)
环境变量和 TUN 模式能否同时开?
可以。TUN 改的是系统路由表,环境变量只影响当前 Shell 的子进程,两者层级不同,互不抢占。但注意 DNS 解析仍走 TUN,若需纯 SOCKS 远程解析,把 curl 升级为 7.86+ 并使用 socks5h://。
端口被占用如何修改?
在快连客户端「设置-本地代理」里把 7890 改成任意空闲端口,再把本文所有 7890 同步替换即可,无需重启系统。
为什么 git push 还是超时?
Git 默认不走 all_proxy,必须单独 git config --global http.proxy;若仓库使用 SSH 协议([email protected]),需改 ~/.ssh/config 的 ProxyCommand 用 nc 转 SOCKS,或改用 HTTPS 地址。
WSL2 里能用吗?
可以。把 127.0.0.1 换成 Windows 主机在 WSL2 里的虚拟网卡地址(cat /etc/resolv.conf 的 nameserver,通常是 172.x.x.1),其余步骤完全一致。
如何彻底关闭终端代理?
在当前 Shell 执行 qcoff 或手动 unset http_proxy https_proxy all_proxy;若已写入 .bashrc,需注释对应行并 source ~/.bashrc。全局路由不受影响。
收尾:下一步行动
至此,你已能在 Ubuntu 终端里用三行命令让流量单独走快连隧道,而系统其余部分保持原路由。建议先把 alias 方案写进 .bashrc,再用 curl 验证出口,确认无误后推广到 CI 脚本。若后续需要 UDP 或全流量转发,再平滑切换到 TUN 模式即可。记住:变量级代理最小侵入,随时 qcoff,回退成本为零。
