当前位置: 首页 > news >正文

在 VMware虚拟机中使用 NAT 网络模式

目录

问题

环境

NAT 网络的几个特性

NAT 网络配置步骤

1 将 VMware 配置为 NAT 网络模式

2 手动设置虚拟机 IP

3 设置端口转发

4 在宿主机访问虚拟机的服务

其他常用命令


问题

可恶的 mac 自动更新!!!再也不自动更新了!!我的 ubuntu 虚拟机用桥接跑的好好的,mac 升级到 sequoia 15.5 版本之后,虚拟机就直接和宿主机通信不了了….

原因可能是:https://community.broadcom.com/vmware-cloud-foundation/question/vmware-fusion-136-no-internet-connection-after-upgrade-to-macos-sequoia

讨论就是在说,macOS Sequoia 15.x 和 VMware Fusion 存在兼容问题

暂时没有好的解决办法,因此本文将 VMware 下虚拟机的网络模式从桥接模式改成了 NAT模式 + 端口转发

但影响就是:

  • 以前在宿主机上直接访问的虚拟机 IP,要全部改为访问 localhost
  • 虚拟机上增加了新的服务时,每次都需要手动加端口转发规则

环境

宿主机 macOS Sequoia 15.5

VMware Fusion 13.6.2

虚拟机 Ubuntu 24.04

NAT 网络的几个特性

(1) 与物理网卡无关

NAT 网络是完全由 VMware 虚拟化层管理的,不会使用宿主机的任何物理网卡(en0、en1)

(2) 可以动态/静态分配 IP

VMware 的 NAT 服务默认会通过 DHCP 自动为虚拟机分配 IP,但是如果你需要:

  • 端口转发:需要将宿主机端口转发到虚拟机(如2222->22)
  • 多个虚拟机之间互通

还是需要手动设置静态 IP 的,下面也是使用静态 IP 的方式来设置虚拟机的。

(3) 宿主机如何访问虚拟机

只能通过端口转发,需要手动设置转发规则。

比如:将宿主机的 2222 转发到虚拟机的 22 端口,用于 SSH。

这样在宿主机可以直接通过 localhost: 2222 访问虚拟机的 22 即 SSH 服务。

ps: 宿主机上是无法直接访问虚拟机 IP 的

(4) 虚拟机如何访问宿主机

直接通过 IP 访问

NAT 网络配置步骤

1 将 VMware 配置为 NAT 网络模式

(1) 修改 .vmx 配置文件

在宿主机上找到你的虚拟机文件(xxx.vmwarevm 文件),右键显示包内容,找到 .vmx 文件,打开编辑模式,修改或添加如下网络适配器配置:

ethernet0.connectionType = "nat"      # NAT 模式
ethernet0.virtualDev = "vmxnet3"      # 高性能网卡类型
ethernet0.present = "TRUE"            # 启用网卡
ethernet0.addressType = "generated"   # MAC地址自动生成
ethernet0.wakeOnPcktRcv = "FALSE"     # 禁用网络唤醒
ethernet0.pciSlotNumber = "160"       # 保持PCI插槽号不变

(2) 重启 VMware 网络服务

sudo "/Applications/VMware Fusion.app/Contents/Library/vmnet-cli" --stop
sudo "/Applications/VMware Fusion.app/Contents/Library/vmnet-cli" --start

2 手动设置虚拟机 IP

(1) 查看 VMware NAT 子网

# 在宿主机
cat "/Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf"# 输出如下
subnet 172.16.240.0 netmask 255.255.255.0 {      # 声明子网range 172.16.240.128 172.16.240.254;     # DHCP 自动分配的 IP 范围option broadcast-address 172.16.240.255; # 广播地址option domain-name-servers 172.16.240.1; # DNS 服务器地址option routers 172.16.240.1;             # 默认网关
}

可以看到 DHCP 自动分配的 IP 范围为 172.16.240.128 ~ 172.16.240.254,我们选择静态 IP 时要避开此范围(以下我们选用 172.16.240.10)

(2) 在虚拟机编辑  /etc/netplan/ 下的 yaml 配置文件(我的是 50-cloud-init.yaml)

network:version: 2ethernets:ens160:                          # 虚拟机的出口网卡dhcp4: no                      # 不自动分配IPaddresses: [172.16.240.10/24]  # 静态IProutes:- to: defaultvia: 172.16.240.1          # 默认网关nameservers:addresses: [172.16.240.1, 8.8.8.8]  # 同时配置NAT网关DNS和公共DNS

然后重启生效:

sudo netplan apply

3 设置端口转发

(1) 打开宿主机的 "/Library/Preferences/VMware Fusion/vmnet8/nat.conf" 配置文件,为你需要的端口设置转发规则

[incomingtcp]
2222 = 172.16.240.10:22    # ssh端口
5236 = 172.16.240.10:5236  # 其他你需要的端口

这样设置后,默认仅允许从宿主机本地访问,端口不会对外开放

如果你需要开启外部访问,可以加一个 host 参数:

[incomingtcp]
2222 = 172.16.240.10:22, host = *

(2) 重启 VMware 网络服务

sudo "/Applications/VMware Fusion.app/Contents/Library/vmnet-cli" --stop
sudo "/Applications/VMware Fusion.app/Contents/Library/vmnet-cli" --start

(3) 验证端口是否开放

nc -zv localhost 2222  

4 在宿主机访问虚拟机的服务

telnet localhost 5236           # 测试服务连通性
ssh -p 2222 username@localhost  # 进入SSH

其他常用命令

# 查看网段占用情况
netstat -rn | grep 172.16# 查看网卡
ifconfig bridge101# 查看网关是否可达
ping 172.16.240.1# 查看默认网关
ip route show# 监听 ARP 响应
sudo tcpdump -i ens160 arp# 检查 ARP 解析
arp -an | grep 172.16.240.1

http://www.dtcms.com/a/264707.html

相关文章:

  • Git 怎么判断是否冲突?
  • Active Directory 环境下 Linux Samba 文件共享服务建设方案
  • OpenLayers 入门指南:序言
  • Javaweb - 8 Tomcat10
  • 大数据开发实战:如何做企业级的数据服务产品
  • 应急响应靶机-近源OS-1-知攻善防实验室
  • 学习C++、QT---16(C++的接口、属于QT的第一个项目的启动)
  • ACE2018 创建图框
  • 机器学习实战:决策树算法详解
  • Claude 4 与 Gemini 2.5 Pro:开发者深度比较
  • [CS创世SD NAND征文] 精准控制的坚固基石:CS创世SD NAND在华大HC32F4A0运动控制卡中的高可靠应用
  • 【科研绘图系列】基于R语言的种质资源评分可视化教程:条形图与地理分布图
  • app自动化测试工具 ️哪些?
  • IO--进程实操
  • Vue 使用Ajax异步或同步
  • Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
  • LeetCode 377.组合总和IV
  • 【算法】动态规划:python实现 2
  • 【APB协议时序及示例】
  • 2025美国券商交易系统综合开发及解决方案报告:低延迟、全球化与代币化技术赋能机构业务新生态
  • 摄像头AI智能识别工程车技术及应用前景展望
  • 武汉大学机器人学院启航:一场颠覆性的产教融合实验,如何重塑中国智造未来?
  • 【seismic unix数据处理--suvcat】
  • drawRect 触发时机
  • [特殊字符] Excel 提取+图片批量插入 | Python 自动化生成稽查报告 Word 模板
  • ubuntu 22.04 LTS 安装preempt-rt
  • pytorch底层原理学习--JIT与torchscript
  • 开机自动后台运行,在Windows服务中托管ASP.NET Core
  • 企业培训笔记:SpringBoot+MyBatis项目中实现分页查询
  • GraphPrompts:图神经网络领域的提示工程范式革新者