在 Linux 开发环境中,我们经常面临下载依赖包慢(如 apt install, pip, git clone)的问题。与其在虚拟机里单独安装配置一个 Clash,不如直接复用宿主机(Windows/Mac)上已经配置好的代理环境。

这样做有两个巨大的优势:

  1. 省资源:虚拟机不需要运行额外的代理后台。
  2. 易维护:只需要维护宿主机的订阅和规则,虚拟机自动继承。

本文将手把手教你如何配置 VMware 中的 Ubuntu,使其通过宿主机的代理进行网络访问。


前置条件

  • 宿主机:Windows 或 macOS,已安装并运行 Clash (Clash Verge / Clash for Windows)。
  • 虚拟机:VMware Workstation,运行 Ubuntu。
  • 网络模式:建议使用 NAT 模式(VMware 默认设置),这种方式网络拓扑最简单。

第一步:配置宿主机 Clash

我们需要开启 Clash 的局域网共享功能,允许虚拟机连接。

  1. 打开宿主机的 Clash 软件。
  2. 进入 设置 (Settings) 界面。
  3. 找到 Allow LAN (允许局域网连接),将其开关打开。
  4. 记录下 Port (端口号),通常为 7890 (HTTP/Socks) 或 7897

第二步:获取宿主机 IP 地址

这是最关键的一步。在 NAT 模式下,虚拟机通过虚拟网卡与宿主机通信。

  1. 在 Windows 上按下 Win + R,输入 cmd 并回车。
  2. 在黑框中输入 ipconfig
  3. 寻找 “以太网适配器 VMware Network Adapter VMnet8”(这是 NAT 模式专用的虚拟网卡)。
  4. 记录下它的 IPv4 地址(通常是 192.168.x.1,例如 192.168.137.1)。

> 注意:请务必使用 VMnet8 的 IP,而不是你物理网卡(Wi-Fi)的 IP,这样连接最稳定,不受物理网络切换影响。


第三步:配置 Ubuntu 系统级代理(解决浏览器上网)

这一步可以让 Ubuntu 的图形界面应用(如 Firefox、Chrome)走代理。

  1. 打开 Ubuntu Settings (设置) -> Network (网络)
  2. 点击 Network Proxy (网络代理) 右侧的齿轮图标。
  3. 选择 Manual (手动)
  4. 在 HTTP、HTTPS、Socks 主机栏中,填入 第二步获取的宿主机 IP
  5. 在端口栏中,填入 第一步记录的端口(如 7890)。
  6. 关闭窗口即可生效。此时打开浏览器访问 Google 应该已经通了。

第四步:配置终端代理(解决 curl/wget 下载慢)

图形界面的设置通常不会影响终端(Terminal)。如果你需要通过命令行下载文件,需要单独设置环境变量。

1. 临时生效(当前窗口)

在终端执行:

  1. # 请将 IP 和端口替换为你实际的值
  2. export http_proxy="http://192.168.137.1:7890"
  3. export https_proxy="http://192.168.137.1:7890"

2. 永久生效

如果你希望每次打开终端自动生效,将上述命令写入配置文件:

  1. # 将配置追加到 .bashrc 文件末尾
  2. echo 'export http_proxy="http://192.168.137.1:7890"' >> ~/.bashrc
  3. echo 'export https_proxy="http://192.168.137.1:7890"' >> ~/.bashrc
  4. # 使配置立即生效
  5. source ~/.bashrc

第五步:配置 apt 代理(解决 sudo apt install 慢)

这是一个常见的坑点:即使你配置了环境变量,使用 sudo 命令时,代理往往会失效(因为 root 用户不继承普通用户的环境变量)。我们需要专门为 apt 设置配置文件。

  1. 编辑 apt 配置文件:
    1. sudo nano /etc/apt/apt.conf.d/proxy.conf
  2. 输入以下内容(注意末尾的分号):
    1. Acquire::http::Proxy "http://192.168.137.1:7890/";
    2. Acquire::https::Proxy "http://192.168.137.1:7890/";
  3. Ctrl + O 保存,Enter 确认,Ctrl + X 退出。

现在尝试运行 sudo apt update,速度应该会飞快。


进阶:配置 Git 代理(解决 GitHub 代码拉取慢)

开发者最常用的 git clone 也需要单独配置:

  1. # 设置 http 代理
  2. git config --global http.proxy http://192.168.137.1:7890
  3. # 设置 https 代理
  4. git config --global https.proxy http://192.168.137.1:7890

如果以后想取消 Git 代理:

  1. git config --global --unset http.proxy
  2. git config --global --unset https.proxy

常见问题排查

Q: 配置后 Ubuntu 无法上网,Ping 不通宿主机 IP? A: 这通常是 Windows 防火墙的问题。

  • 解决方法:打开 Windows Defender 防火墙设置,检查“入站规则”,确保没有阻止 VMware 相关的连接。或者为了测试,暂时关闭防火墙。

Q: 宿主机的 IP 变了怎么办? A: VMnet8 的 IP 通常是固定的,但在某些网络重置后可能会变。如果发现突然连不上,请重新在 Windows 运行 ipconfig 确认 IP 地址。