Skip to content

VMware Fusion + Ubuntu Server 22.04:NAT 模式下配置固定内网 IP 的完整指南

VMware Fusion + Ubuntu 网络配置示意图

前言:你为什么需要看这篇?

如果你和我一样:

  • Mac 磁盘空间告急,但又不得不装一台 Linux 虚拟机用来开发/学习;
  • 公司、家里两头跑,Wi-Fi 网段不一样,虚拟机 IP 老是变,SSH 连接地址改来改去烦死人;
  • 只想在 Mac 本地安安静静地跑一台 Ubuntu,不被局域网里其他人访问,也不想被网络环境变化影响。

那么这篇文章就是为你写的。

最终效果:在 Mac 上打开终端,输入 ssh [email protected],不管你在公司还是在家,永远都能连上这台 Ubuntu,同时 Ubuntu 也能正常访问外网安装软件包。

环境信息

项目版本/配置
宿主机macOS(Intel / Apple Silicon 均可)
虚拟机软件VMware Fusion Professional 26H1
客户机系统Ubuntu Server 22.04.5 LTS
虚拟机硬件2 核 CPU / 4GB 内存 / 10GB 磁盘
网络模式NAT(Internet Sharing)

第一步:创建虚拟机时的硬件配置

1.1 处理器与内存

在 VMware Fusion 中创建虚拟机时,进入 "Processors & Memory" 配置:

  • Processors2 processor cores(够用)
  • Memory:选择 4096 MB(4GB),这是推荐值

内存配置示意图

为什么是 4GB?

Ubuntu Server 22.04 最小化安装只需要 ~512MB,但装完开发工具、Docker、数据库后,4GB 会比较从容。如果你的 Mac 内存充裕(16GB+),可以给到 6GB 或 8GB。

1.2 硬盘大小(注意避坑)

在 "Hard Disk (SCSI)" 配置中,Disk size 建议设置为 10GB,而不是 20GB。

  • Ubuntu Server + 基础开发工具 + Docker,10GB 足够用;
  • VMware 默认是动态增长磁盘,初始只占 ~2.5GB,会随着使用逐渐膨胀到设定值;
  • 如果你 Mac 磁盘空间紧张,设 20GB 等于埋了一颗定时炸弹——等它涨满时,Mac 会卡死,虚拟机可能崩溃。

硬盘配置示意图

磁盘告急警告

如果 Mac 剩余空间 < 15GB,建议不要用 20GB 的虚拟磁盘。10GB 是更安全的选择。

1.3 高级选项(要不要勾选?)

在 "Processors & Memory" 底部有两个高级选项:

选项默认建议
Enable hypervisor applications不勾选如果你不打算在 Ubuntu 里再装 Docker/KVM,就不用勾
Enable IOMMU不勾选不需要 GPU 直通 / 高性能网卡时,不用勾

第二步:网络模式的选择(核心)

2.1 三种模式对比

在 "Network Adapter" 配置中,VMware Fusion 提供三种主要网络模式:

模式说明适用场景
Internet Sharing(NAT)Ubuntu 通过 Mac 上网,Mac 与 Ubuntu 之间用虚拟私有网络通信本文推荐:需要联网装软件,且只需 Mac 本地访问
Bridged NetworkingUbuntu 与 Mac 在同一物理局域网,获得独立 IP❌ 其他设备也能访问,不安全;且 IP 随网络环境变化
Private to my Mac纯私有网络,Ubuntu 无法访问外网⚠️ 仅适合完全离线场景,装不了软件

2.2 为什么选 "Internet Sharing"?

  • ✅ Ubuntu 能访问外网(装 apt 包、拉 Docker 镜像、git clone);
  • ✅ Mac 能 SSH 访问 Ubuntu;
  • ✅ 其他物理设备无法访问 Ubuntu(NAT 天然隔离);
  • ✅ IP 地址可以固定,不受公司/家庭网络变化影响。

一句话总结:NAT 模式 = 能上网 + 本地访问 + 固定 IP + 安全隔离,完美匹配需求。

网络配置示意图

第三步:配置固定内网静态 IP(核心操作)

3.1 原理说明

VMware Fusion 在安装时就已经在 macOS 上预先创建了多个虚拟网桥设备(bridge100bridge101bridge102 等)。当你为虚拟机选择 "Internet Sharing"(NAT 模式) 时,Fusion 会激活其中一个 bridge,并为其分配一个独立的私有网段(通常是 192.168.xxx.0/24),将 Mac 和虚拟机连接在这个虚拟网络上。

  • Mac 通过这个虚拟网桥与 Ubuntu 通信;
  • Ubuntu 通过 NAT 经 Mac 的物理网卡访问外网。

关键点:这个 192.168.xxx.xxx 网段是 VMware 内部虚拟的,完全不受公司/家庭 Wi-Fi 网段影响。所以只要 Mac 开着,这个固定 IP 就永远有效。

VMware Fusion 与 Workstation 的网卡命名差异

如果你用过 Windows 下的 VMware Workstation,可能会习惯 vmnet8 这个名称。但在 VMware Fusion 中,虚拟网卡的命名规则不同:

软件NAT 模式虚拟网卡
VMware Workstation(Windows)vmnet8
VMware Fusion(macOS)bridgexxx(如 bridge100bridge101bridge102

Fusion 会为每个独立的 NAT 网络创建不同的 bridge,当你创建第一台使用 NAT 模式的虚拟机时,通常会分配 bridge100,后续依次递增。你可以通过 ifconfig 查看当前使用的是哪个 bridge。

3.2 第一步:查看 Mac 上的 NAT 网段

在 Mac 终端中执行:

bash
ifconfig | grep -A 5 "bridge"

找到状态为 UPRUNNING 的 bridge 设备,输出示例:

bridge102: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.168.98.1 netmask 0xffffff00 broadcast 192.168.98.255
    ...

记下:

  • bridge 名称bridge102(也可能是 bridge100bridge101
  • 网关 IP192.168.98.1(这就是 Mac 上该 bridge 的地址)
  • 网段192.168.98.0/24

那么我们的 Ubuntu 静态 IP 可以设为 192.168.98.100

如何确认你用的是哪个 bridge?

一个简单的方法:先在 Ubuntu 里执行 ip addr 查看当前 DHCP 获取到的 IP,然后在 Mac 上执行 ifconfig,找到 inet 地址段与 Ubuntu IP 在同一网段的那个 bridge,就是你的 NAT 网卡。

3.3 第二步:查看 Ubuntu 中的网卡名称

在 Ubuntu 终端中执行:

bash
ip addr

找到类似这样的输出:

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.98.132/24 brd 192.168.98.255 scope global dynamic ens33

记下网卡名称:ens33(也可能是 ens160enp0s3 等,以实际为准)。

3.4 第三步:配置 Netplan

Ubuntu 22.04 使用 netplan 管理网络配置。

编辑配置文件:

bash
vim /etc/netplan/50-cloud-init.yaml

💡 注意

50-cloud-init.yaml 为网卡配置文件,这个文件名,可能会因为发行版本的不同,有所差异!

填入以下内容(请根据你实际查到的网段替换 IP 地址):

yaml
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true
      dhcp4: false
      addresses: 
        - 192.168.98.100/24
      nameservers: 
        addresses: 
          - 8.8.8.8
          - 1.1.1.1
      routes: 
        - to: default
          via: 192.168.98.1

网段替换提醒

请务必将示例中的 192.168.98.x 替换为你在 3.2 步中实际查到的网段!不同 Mac 上的 bridge 网段可能不同(可能是 192.168.100.x192.168.164.x 等)。

应用配置:

bash
sudo netplan apply

3.5 第四步:验证配置

bash
# 查看 IP 是否生效
ip addr show ens33

# 测试网关连通性(用你实际的网关 IP)
ping -c 4 192.168.98.1

# 测试外网连通性
ping -c 4 8.8.8.8

# 测试 DNS 解析
ping -c 4 baidu.com

在 Mac 终端中测试 SSH 连接:

3.6 第五步:禁用 cloud-init 的网络管理

在 Ubuntu 22.04 中如果不禁用 cloud-init 的网络管理功能,配置的网卡静态 IP 重启后将会失效!

bash
echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg > /dev/null && sudo cloud-init clean && sudo reboot

💡 注意

详情内容可以参考,我博客的另一篇博文《Ubuntu 22.04 重启后静态 IP 配置被重置?一招彻底解决

第四步:跨环境测试(公司 / 家里)

环境Mac 物理 IPUbuntu 虚拟 IPSSH 是否正常
家里(Wi-Fi)192.168.1.x192.168.98.100✅ 正常
公司(有线)10.10.0.x192.168.98.100✅ 正常
咖啡馆(公共 Wi-Fi)172.16.0.x192.168.98.100✅ 正常

结论:只要 Mac 能开机,ssh [email protected] 永远有效。🎉

避坑指南(FAQ)

Q1:配置 netplan 后连不上 Ubuntu 了怎么办?

不用慌,这是最经典的问题。解法:

  1. 在 VMware 中关机虚拟机;
  2. 进入虚拟机设置 → Network Adapter,临时改成 "Bridged"
  3. 开机,用 DHCP 自动获取的 IP 连进去;
  4. 把 netplan 配置改对,重新 sudo netplan apply
  5. 关机,把网络模式改回 "Internet Sharing",再开机即可。

Q2:Ubuntu 里的网卡名不是 ens33 怎么办?

ip addr 查看实际名称,比如 ens160enp0s3,在 netplan 配置文件中替换即可。

Q3:为什么我改了 netplan 但 IP 没变?

检查是否有其他 netplan 配置文件冲突:

bash
ls /etc/netplan/

确保只有你编辑的那一个文件是有效的,其他的可以备份后删除。

Q4:DNS 解析失败但能 ping 通 8.8.8.8?

检查 /etc/resolv.conf 是否被正确覆盖,或者尝试改用 nameservers: addresses: [223.5.5.5, 114.114.114.114](国内备用 DNS)。

Q5:要不要勾选 "Enable hypervisor applications"?

  • 如果你要在 Ubuntu 里装 Docker需要勾选
  • 如果只是跑普通服务/写代码 → 不用勾。

Q6:如何确认我的 Mac 上是哪个 bridge?

在 Mac 终端执行:

bash
ifconfig | grep -E "(bridge|inet )" | grep -A 1 "bridge"

或者在 Ubuntu 里查看当前 IP,再到 Mac 上找同一网段的 bridge。例如 Ubuntu IP 是 192.168.98.132,Mac 上能找到 bridge102: inet 192.168.98.1,则确认使用 bridge102

装机后的第一件事:拍快照!

在 VMware Fusion 菜单栏中:

虚拟机 → 拍摄快照

快照示意图

给快照起个名字,比如 "纯净初始状态"

以后如果把系统玩坏了,一分钟就能恢复到刚装好的干净状态,省去重装系统的痛苦。

总结

通过 Internet Sharing(NAT)+ Netplan 固定静态 IP 的方案,我们实现了:

  • ✅ Mac 磁盘空间友好(10GB 动态磁盘)
  • ✅ Ubuntu 可访问外网(装软件、拉镜像)
  • ✅ 固定内网 IP(不受网络环境影响)
  • ✅ 安全隔离(其他设备无法访问)
  • ✅ 任何时候都能 ssh [email protected](请替换为你的实际 IP)

参考资料


修正内容汇总

位置修正前修正后
3.1 原理说明vmnet8bridgexxx,并增加命名差异说明
3.2 查看网段ifconfig vmnet8ifconfig | grep -A 5 "bridge"
3.2 示例 IP192.168.100.x192.168.98.x(基于实际环境)
3.2 确认方法增加"如何确认用哪个 bridge"的说明
Q6新增 FAQ,专门解答 bridge 确认问题
全文未区分 Fusion/Workstation增加对比表,明确 macOS 下的特殊性

现在这篇文章对 VMware Fusion 用户来说就完全准确了!🚀

最后更新2026/07/24 09:40
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal