VMware Workstation NAT 网络配置指南
-
- 一、三种网络模式对比
-
- [1. 桥接模式(Bridged)](#1. 桥接模式(Bridged))
- [2. NAT 模式(Network Address Translation)](#2. NAT 模式(Network Address Translation))
- [3. 仅主机模式(Host-Only)](#3. 仅主机模式(Host-Only))
- 三种模式对比总结
- 二、宿主机配置检查
-
- [1. 确认 VMnet8 网卡状态](#1. 确认 VMnet8 网卡状态)
- [2. 确认 VMnet8 IP](#2. 确认 VMnet8 IP)
- [3. 确认 VMware 服务运行中](#3. 确认 VMware 服务运行中)
- [4. 添加防火墙规则](#4. 添加防火墙规则)
- [三、VMware 虚拟网络编辑器配置](#三、VMware 虚拟网络编辑器配置)
- 四、虚拟机网卡设置
- 五、虚拟机内部网络配置(CentOS)
-
- [静态 IP 配置](#静态 IP 配置)
- 验证配置
- 六、常见问题排查
-
- [问题一:VMnet8 是 Not Present](#问题一:VMnet8 是 Not Present)
- [问题二:虚拟机 ping 不通 192.168.168.1](#问题二:虚拟机 ping 不通 192.168.168.1)
-
- [第一步:确认虚拟机有 IP(在虚拟机里执行)](#第一步:确认虚拟机有 IP(在虚拟机里执行))
- 第二步:确认默认网关正确(在虚拟机里执行)
- [第三步:确认宿主机 VMware 服务正常(在宿主机 PowerShell 里执行)](#第三步:确认宿主机 VMware 服务正常(在宿主机 PowerShell 里执行))
- [第四步:排查 Windows 防火墙(在宿主机管理员 CMD 里执行)](#第四步:排查 Windows 防火墙(在宿主机管理员 CMD 里执行))
- [第五步:确认虚拟机网络适配器选的是 NAT(最容易忽略的一步)](#第五步:确认虚拟机网络适配器选的是 NAT(最容易忽略的一步))
- [问题三:能 ping 通宿主机但无法访问外网](#问题三:能 ping 通宿主机但无法访问外网)
- [问题四:宿主机 ping 不通虚拟机](#问题四:宿主机 ping 不通虚拟机)
- [七、SSH 连接虚拟机](#七、SSH 连接虚拟机)
一、三种网络模式对比
VMware 提供三种网络模式,选错模式是连不上虚拟机最常见的原因。
1. 桥接模式(Bridged)
虚拟机直接接入宿主机所在的物理网络,相当于局域网里多了一台独立的机器。
路由器
├── 宿主机 (192.168.1.3)
├── 虚拟机 (192.168.1.x) ← 和宿主机同网段
└── 其他局域网设备
特点:
- 虚拟机 IP 必须和宿主机同一网段
- 局域网内其他设备可以直接访问虚拟机
- 虚拟机需要从路由器获取 IP(或手动配置同网段静态 IP)
- 宿主机换网络环境(如切换 WiFi),虚拟机网络可能失效
适合场景:需要局域网其他机器访问虚拟机,或模拟真实网络环境。
2. NAT 模式(Network Address Translation)
VMware 在宿主机上创建虚拟网卡 VMnet8,虚拟机通过 VMnet8 与宿主机通信,再由宿主机做地址转换访问外网。
虚拟机 (192.168.168.102)
↓
VMnet8 虚拟交换机
↓
宿主机 VMnet8 网卡 (192.168.168.1)
↓
VMware NAT Service
↓
宿主机真实网卡 → 外网
特点:
- 虚拟机有独立的私有网段(默认 192.168.168.x)
- 虚拟机可以访问外网,但局域网其他设备无法直接访问虚拟机
- 宿主机和虚拟机可以互相通信
- 网络配置固定,不受宿主机网络环境变化影响
NAT 模式三个固定 IP:
| 角色 | IP | 说明 |
|---|---|---|
| 宿主机 VMnet8 | 192.168.168.1 | 宿主机在虚拟网络中的 IP |
| VMware 网关 | 192.168.168.2 | 虚拟机的默认网关,固定是 .2 |
| DHCP 服务 | 192.168.168.254 | 为虚拟机自动分配 IP |
适合场景:本地开发测试,只需要虚拟机能上网,不需要被局域网其他设备访问。
3. 仅主机模式(Host-Only)
VMware 创建一个完全隔离的私有网络(VMnet1),虚拟机只能和宿主机通信,无法访问外网。
宿主机 VMnet1 网卡 (192.168.137.1)
↓
VMnet1 虚拟交换机
↓
虚拟机 (192.168.137.x)
↗ 无法访问外网
特点:
- 虚拟机和宿主机可以互通
- 虚拟机完全无法访问外网
- 最安全的隔离模式
适合场景:安全测试、搭建完全隔离的内网环境。
三种模式对比总结
| 模式 | 虚拟机访问外网 | 局域网访问虚拟机 | 宿主机访问虚拟机 | 配置难度 |
|---|---|---|---|---|
| 桥接 | ✅ | ✅ | ✅ | 中(需同网段 IP) |
| NAT | ✅ | ❌ | ✅ | 低(自动分配) |
| 仅主机 | ❌ | ❌ | ✅ | 低 |
本文使用 NAT 模式。
二、宿主机配置检查
1. 确认 VMnet8 网卡状态
打开 PowerShell(管理员),执行:
powershell
Get-NetAdapter | Select-Object Name,Status
VMnet8 必须是 Up 状态,如果是 Not Present 或 Disabled,需要在 VMware 虚拟网络编辑器里还原默认设置。
2. 确认 VMnet8 IP
powershell
Get-NetIPAddress -InterfaceAlias 'VMware Network Adapter VMnet8' -AddressFamily IPv4
正常应该显示 192.168.168.1/24。
3. 确认 VMware 服务运行中
powershell
Get-Service 'VMware NAT Service','VMnetDHCP' | Select-Object Name,Status
两个服务都必须是 Running。如果没有,执行:
powershell
Start-Service 'VMnetDHCP','VMware NAT Service'
4. 添加防火墙规则
Windows 防火墙默认可能拦截 VMnet8 网段的流量,需要手动放行:
powershell
# 允许 VMnet8 网段入站 ICMP
netsh advfirewall firewall add rule name="Allow VMnet8 ICMP" protocol=icmpv4 dir=in action=allow remoteip=192.168.168.0/24
# 允许 VMnet8 网段入站 TCP(SSH 等)
netsh advfirewall firewall add rule name="Allow VMnet8 TCP" protocol=tcp dir=in action=allow remoteip=192.168.168.0/24
三、VMware 虚拟网络编辑器配置
-
打开 VMware Workstation
-
菜单 → 编辑 → 虚拟网络编辑器
-
点右下角 "更改设置"(需要管理员权限)
-
选中 VMnet8,确认以下配置:
类型:NAT
子网 IP:192.168.168.0
子网掩码:255.255.255.0 -
点击 "NAT 设置",确认:
网关 IP:192.168.168.2
-
点击 "DHCP 设置",确认:
起始 IP:192.168.168.128
结束 IP:192.168.168.254
四、虚拟机网卡设置
右键虚拟机 → 设置 → 网络适配器,选择:
● NAT:用于共享主机的 IP 地址
注意不要选"自定义"里的 VMnet8,直接选 NAT 选项。
五、虚拟机内部网络配置(CentOS)
静态 IP 配置
编辑网卡配置文件:
bash
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
内容如下:
ini
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.168.102
NETMASK=255.255.255.0
GATEWAY=192.168.168.2
DNS1=8.8.8.8
DNS2=114.114.114.114
保存后重启网络:
bash
sudo systemctl restart network
# 或
sudo nmcli connection reload
sudo nmcli connection up ens33
验证配置
bash
# 查看 IP
ip addr show ens33
# 查看路由,确认 default via 192.168.168.2
ip route show
# ping 宿主机 VMnet8
ping 192.168.168.1 -c 3
# ping 外网
ping 8.8.8.8 -c 3
六、常见问题排查
排查方法论:网络不通问题要从两端向中间逼近------先确认宿主机这端的虚拟网卡和服务正常,再确认虚拟机这端的 IP、网关配置正确,最后排查中间的防火墙和 VMware 设置。不要跳步,每一步都要用命令验证,不要靠肉眼猜。
问题一:VMnet8 是 Not Present
原因:VMware 虚拟网卡未正确安装。
解决:VMware → 编辑 → 虚拟网络编辑器 → 还原默认设置。
问题二:虚拟机 ping 不通 192.168.168.1
⚠️ 这是最常见的问题,必须按顺序逐步排查,不能跳步。
每一步确认通过后再进行下一步,否则无法准确定位根因。
第一步:确认虚拟机有 IP(在虚拟机里执行)
bash
ip addr show
- ✅ 看到
192.168.168.x→ 进入第二步 - ❌ 只有
127.0.0.1→ IP 未分配,检查ONBOOT=yes和BOOTPROTO配置,重启网络服务
第二步:确认默认网关正确(在虚拟机里执行)
bash
ip route show
- ✅ 看到
default via 192.168.168.2→ 进入第三步 - ❌ 没有 default 路由 → 执行
sudo ip route add default via 192.168.168.2,并检查配置文件里的GATEWAY=192.168.168.2
第三步:确认宿主机 VMware 服务正常(在宿主机 PowerShell 里执行)
powershell
Get-Service 'VMware NAT Service','VMnetDHCP' | Select-Object Name,Status
- ✅ 两个都是 Running → 进入第四步
- ❌ 有 Stopped →
Start-Service 'VMnetDHCP','VMware NAT Service'
第四步:排查 Windows 防火墙(在宿主机管理员 CMD 里执行)
powershell
# 临时关闭防火墙测试
netsh advfirewall set allprofiles state off
关闭后在虚拟机里再 ping 一次 192.168.168.1:
- ✅ 通了 → 是防火墙问题,重新开启并添加规则(见第二节第4条)
- ❌ 还是不通 → 进入第五步
第五步:确认虚拟机网络适配器选的是 NAT(最容易忽略的一步)
VMware → 右键虚拟机 → 设置 → 网络适配器,必须选:
● NAT:用于共享主机的 IP 地址 ← 选这个
不能选:
○ 自定义:特定虚拟网络 VMnet8 ← 不要选这个
两者虽然底层都走 VMnet8,但选"自定义 VMnet8"时 VMware 不会自动接入 NAT 服务,导致虚拟机拿到 IP 但发出的包没有经过 NAT 转发,宿主机收不到。这是最隐蔽的坑。
改完后重启虚拟机网络:
bash
sudo systemctl restart network
再次 ping 验证。
排查流程总结:
虚拟机有 IP?
↓ 否 → 检查网卡配置文件 ONBOOT/BOOTPROTO
↓ 是
网关是 192.168.168.2?
↓ 否 → 添加默认路由 / 修改配置文件 GATEWAY
↓ 是
VMware 服务 Running?
↓ 否 → 启动 VMnetDHCP 和 VMware NAT Service
↓ 是
关防火墙后能通?
↓ 是 → 添加防火墙入站规则放行 192.168.168.0/24
↓ 否
虚拟机网卡选的是 NAT 而非自定义 VMnet8?
↓ 否 → 改成 NAT 模式,重启网络
↓ 是 → 重置 VMware 虚拟网络编辑器(还原默认设置)
问题三:能 ping 通宿主机但无法访问外网
原因:DNS 未配置或 NAT 服务异常。
解决:
bash
# 检查 DNS
cat /etc/resolv.conf
# 手动添加 DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# 重启 NAT 服务(宿主机)
Restart-Service 'VMware NAT Service'
问题四:宿主机 ping 不通虚拟机
NAT 模式下宿主机默认可以 ping 通虚拟机(通过 VMnet8),如果不通:
bash
# 检查虚拟机防火墙
sudo systemctl status firewalld
sudo systemctl stop firewalld
# 检查 iptables
sudo iptables -L -n | grep DROP
七、SSH 连接虚拟机
配置好网络后,在宿主机 Windows 上用 SSH 连接虚拟机,就不需要在 VM 窗口里操作了:
powershell
ssh root@192.168.168.102
或者用 XShell、MobaXterm 等工具连接,彻底解决虚拟机无法复制粘贴的问题。
虚拟机里确保 SSH 服务开启:
bash
sudo systemctl enable --now sshd
sudo systemctl status sshd