局域网Linux通过Windows VPN代理拉取代码

2 阅读3分钟

局域网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 为例。

  1. 打开 Windows 命令提示符 (CMD)。

  2. 确保已安装 Python,并安装代理库(如未安装可执行 pip install proxy.py)。

  3. 启动代理服务,绑定所有网卡并监听 8899 端口:

    DOS

    python -m proxy --hostname 0.0.0.0 --port 8899
    

    ⚠️ 核心避坑:这个 CMD 黑窗口必须一直保持开启状态。绝对不能关闭,否则代理服务就会直接中断,导致 Linux 端报 Connection refused 错误。


步骤二:配置 Windows 防火墙(关键!)

即使代理启动了,Windows 的默认防火墙也会拦截局域网内其他机器发来的请求。必须手动放行 8899 端口。

  1. 管理员身份运行一个新的 CMD 窗口。

  2. 执行以下命令添加防火墙入站规则:

    DOS

    netsh advfirewall firewall add rule name="Proxy 8899" dir=in action=allow protocol=TCP localport=8899
    
  3. 看到输出“确定”即代表放行成功。


步骤三:在 Linux 端配置 Git 精准代理

为了不让代理影响我们在 Linux 上拉取 GitHub 或其他开源代码,我们千万不要设置全局系统代理,而是利用 Git 的按域名代理功能。

  1. 在 Linux 终端中,执行网络连通性测试:

    Bash

    curl -I -x http://192.168.9.14:8899 http://gitlab.xxx
    

    如果返回 HTTP/1.1 200 OK302 Found,说明网络链路已彻底打通!

  2. 配置 Git,使其仅对公司 GitLab 域名走代理:

    Bash

    git config --global http."http://gitlab.xxx".proxy http://192.168.9.14:8899
    
  3. 现在,你可以愉快地在 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 窗口一直处于开启状态。