
快连怎样在Linux终端下配置代理环境变量?
功能定位:为什么要在终端里手动写变量
桌面端一键连接后,图形应用能自动走 Quick-T 隧道,但 CI 脚本、Docker Build、wget、curl、git 等终端进程默认不走系统代理。把代理地址写进 Shell 变量,是最轻量、可审计、可版本化的做法,也方便在流水线里临时开关,避免把整个系统流量都牵走。
快连官方 Linux 包(DEB/RPM/AUR)安装后,会释放一个本地 SOCKS5 端口 10808,同时提供 HTTP 入口 10809。两者均监听 127.0.0.1,仅本机可见,默认零日志。利用这两个端口,就能在终端里实现「仅命令走代理、其余流量直连」的合规分流。
最短可达路径:三条命令完成写入
1. 确认端口已监听
ss -ltn | grep -E '10808|10809'
若返回空,请先在图形客户端或 quicklink-cli connect 建立隧道;端口出现后再继续。
2. 写入当前会话变量
export ALL_PROXY=socks5://127.0.0.1:10808 export HTTP_PROXY=http://127.0.0.1:10809 export HTTPS_PROXY=http://127.0.0.1:10809
此时 curl ipinfo.io 应显示出口 IP 已变更,验证生效。
3. 持久化(可选)
把上面三行追加到 ~/.bashrc 或 ~/.zshrc,重新登录即自动带入。若仅在 CI 容器里使用,可在 Dockerfile 中写 ENV 指令,避免硬编码账号信息。
平台差异与常见分支
- Ubuntu/Debian:安装
.deb后端口固定 10808/10809,升级时会被保留。 - Fedora/RHEL:若启用 SELinux,需执行
setsebool -P nis_enabled 1否则 localhost 连接会被拒绝。 - Arch/AUR:使用
yay -S quicklink安装,systemd 用户服务名称为quicklink-daemon.service,systemctl --user enable --now quicklink-daemon即可常驻。
若你习惯 fish,变量语法为 set -x ALL_PROXY socks5://127.0.0.1:10808;tcsh 则用 setenv。
例外与副作用:哪些场景不该用
1. 本地开发服务器:前端 npm run dev 默认监听 0.0.0.0,若把 HTTP_PROXY 也导出去,热更新会尝试通过隧道回连,导致 20 s 级延迟。解决:在启动脚本前 unset HTTP_PROXY HTTPS_PROXY。
2. 内网 yum/apt:公司仓库走 10.0.0.0/8,若变量全局生效,包管理器会把元数据请求送到海外节点,触发 401。可在 /etc/apt/apt.conf.d/99no-proxy 写 Acquire::http::Proxy "DIRECT"; 强制直连。
3. 容器构建:Docker 18.x 之后支持 --build-arg HTTP_PROXY,但多阶段构建时,若 RUN 指令里下载外网依赖,需要把变量写在 Dockerfile 里,而不是依赖宿主环境,否则缓存层会失效。
验证与回退:一条脚本判断生效层
#!/bin/bash echo "=== 变量层 ===" env | grep -E '_PROXY|ALL_PROXY' || echo '未定义' echo "=== IP 出口 ===" curl -s --max-time 3 ipinfo.io/ip echo "=== 延迟 ===" curl -s -w "@curl-format.txt" -o /dev/null https://www.google.com
若需立即回退,unset ALL_PROXY HTTP_PROXY HTTPS_PROXY 即可;持久化文件里删除对应行后 source ~/.bashrc。
与第三方工具协同:最小权限原则
在 git 场景下,仅对海外仓库生效,可用 git config --global http.proxy $HTTPS_PROXY,而国内 Gitee 保持直连;pip 支持 --proxy 参数,可在 requirements.txt 更新脚本里显式传入,避免把密码索引同步到海外。
若使用 wget 下载大文件,建议加 --no-check-certificate 前先确认文件哈希,防止中间人降级。经验性观察:在 2 Mbps 弱网下,Quick-T 隧道能把 100 MB 文件耗时从 7 分钟降至 4 分钟左右,具体数值因节点负载而异,可复现步骤:同文件同节点各执行三次取中位数。
故障排查:现象→原因→验证→处置
| 现象 | 可能原因 | 验证命令 | 处置 |
|---|---|---|---|
| curl 返回 56 Recv failure | 本地端口未监听 | ss -ltn | grep 10808 | 启动客户端或检查 systemd 状态 |
| git clone 卡住 | 仅导出 HTTP_PROXY,未导出 HTTPS_PROXY | env | grep PROXY | 补全变量或改用 ssh 协议 |
| docker build 报 502 | 公司仓库被代理 | curl 内部仓库 IP | 在 Dockerfile 内写 NO_PROXY |
适用/不适用场景清单
- ✅ 个人开发机临时拉取 GitHub Release
- ✅ CI 容器需要访问外网 API 且不允许全局 TUN
- ✅ 远程教学直播,仅让 OBS 采集浏览器,终端走代理更新插件
- ❌ 金融内网批量转账脚本,合规要求 IP 白名单固定
- ❌ 高并发爬虫,超过套餐流量阈值会被限速
最佳实践检查表
- 变量写入前,先
unset旧值,防止多层嵌套。 - CI 环境里用
export而不要把账号密码写进 Dockerfile。 - 对国内域名使用
NO_PROXY="localhost,127.0.0.1,*.aliyun.com,10.0.0.0/8",减少绕行。 - 定期
quicklink-cli status查看流量,避免月底阈值告警。 - 升级前先在测试容器跑一遍构建,确认端口未被占用。
版本差异与迁移建议
截至当前的最新版本(v6.4.0)把本地管理端口从 1080 改为 10808,避免与常见 Shadowsocks 客户端冲突;若你从 5.x 升级,需批量替换旧脚本。官方提供 quicklink-cli migrate-5to6 一键替换工具,执行前会自动备份 ~/.bashrc。
FAQ(使用 FAQPage Schema)
变量设置后,为什么 ping 还是国内 IP?
ICMP 不走 SOCKS/HTTP 代理;请用 curl 或 traceroute -T 验证。
可以只让 Python 走代理吗?
在脚本内使用 urllib 前设置 os.environ 即可,或 pip 加 --proxy 参数,不影响系统其他进程。
NO_PROXY 写域名还是 IP?
两者皆可,支持通配符 *.example.com;对 IP 段用 CIDR 写法,如 192.168.0.0/16。
收尾:下一步行动
复制本文的三行变量到你的测试终端,跑完验证脚本后,再决定是否写进 .bashrc;若你在 CI 里使用,请把 NO_PROXY 写全,并在构建日志里打印一次出口 IP,方便后续审计。遇到升级或端口变动,先查官方 Release Note,再回来看这张检查表,基本不会踩坑。