局域网Linux通过Windows VPN代理拉取代码
在日常开发中,我们经常会遇到这样的尴尬场景:公司内网代码仓库(如 GitLab)需要通过专门的 VPN 客户端才能访问,而这个 VPN 客户端只安装在了 Windows 办公机上。此时,如果同局域网下的 Linux 物理机也需要拉取和提交代码,该怎么办?
本文将记录如何通过在 Windows 上搭建轻量级 HTTP 代理,并结合 Git 的“域名级精准路由”功能,完美实现 Linux 无感连接内网拉取代码,且完全不影响外部 GitHub 仓库的方案。
整体架构与环境说明
- Windows 办公机:IP 地址为
192.168.9.14,,能正常访问公司 GitLab (http://gitlab.xxx)。 - Linux 开发机:与 Windows 在同一局域网下,无法直接访问外网和公司内网。
- 目标:将 Windows 作为跳板机,让 Linux 顺利执行
git pull/clone。
步骤一:在 Windows 端启动代理服务
我们需要在 Windows 上运行一个代理程序,将网络共享出来。这里以 Python 的轻量级代理库 proxy.py 为例。
-
打开 Windows 命令提示符 (CMD)。
-
确保已安装 Python,并安装代理库(如未安装可执行
pip install proxy.py)。 -
启动代理服务,绑定所有网卡并监听
8899端口:DOS
python -m proxy --hostname 0.0.0.0 --port 8899⚠️ 核心避坑:这个 CMD 黑窗口必须一直保持开启状态。绝对不能关闭,否则代理服务就会直接中断,导致 Linux 端报
Connection refused错误。
步骤二:配置 Windows 防火墙(关键!)
即使代理启动了,Windows 的默认防火墙也会拦截局域网内其他机器发来的请求。必须手动放行 8899 端口。
-
以管理员身份运行一个新的 CMD 窗口。
-
执行以下命令添加防火墙入站规则:
DOS
netsh advfirewall firewall add rule name="Proxy 8899" dir=in action=allow protocol=TCP localport=8899 -
看到输出“确定”即代表放行成功。
步骤三:在 Linux 端配置 Git 精准代理
为了不让代理影响我们在 Linux 上拉取 GitHub 或其他开源代码,我们千万不要设置全局系统代理,而是利用 Git 的按域名代理功能。
-
在 Linux 终端中,执行网络连通性测试:
Bash
curl -I -x http://192.168.9.14:8899 http://gitlab.xxx如果返回
HTTP/1.1 200 OK或302 Found,说明网络链路已彻底打通! -
配置 Git,使其仅对公司 GitLab 域名走代理:
Bash
git config --global http."http://gitlab.xxx".proxy http://192.168.9.14:8899 -
现在,你可以愉快地在 Linux 上克隆或拉取公司代码了:
Bash
git clone http://gitlab.xxx
常见踩坑记录与解决方案
报错 1:Failed to connect to 192.168.9.14 port 8899: 拒绝连接
- 现象:这不是超时,而是直接被拒绝 (Connection refused)。
- 原因:Windows 机器上的代理进程死掉了,或者根本没有在
8899端口监听。 - 解决:回到 Windows,检查那个运行
python -m proxy的黑窗口是不是被你不小心关掉了。重新运行它,并确保 CMD 窗口一直处于开启状态。