☰
VMware 三种网络模式 ping 不通排查指南:NAT、桥接、仅主机
2026/9/26 12:49:18 网站建设 项目流程

1. 先搞清楚三种网络模式到底在干什么

很多人装完 VMware 之后,虚拟机里 ping 不通外网、宿主机 ping 不通虚拟机、虚拟机之间互相也 ping 不通,第一反应就是“网络坏了”。其实十有八九不是坏了,而是你根本没搞清楚 VMware 这三种网络模式各自在干什么。我见过太多人在这上面卡了一整天,最后发现只是选错了模式。

先把最核心的认知建立起来:VMware Workstation 的三种网络模式,本质上是三套不同的“虚拟网络拓扑”。你选哪种模式,就等于把虚拟机接入了哪种“虚拟交换机”,而这个虚拟交换机怎么跟你的物理网卡、宿主机、外网打交道,三种模式完全不同。

  • NAT 模式:虚拟机躲在一个虚拟路由器后面,通过宿主机上网。虚拟机可以访问外网,但外网默认访问不到虚拟机。
  • 桥接模式:虚拟机直接“搭”在物理网卡上,跟宿主机平起平坐,在局域网里拥有独立 IP,外网也能直接访问它。
  • 仅主机模式:虚拟机只跟宿主机通信,完全隔离在一个封闭的小网络里,上不了外网。

这三句话看起来简单,但真正出问题的时候,症状往往很迷惑。比如 NAT 模式下虚拟机 ping 不通宿主机,桥接模式下虚拟机拿不到 IP,仅主机模式下宿主机 ping 不通虚拟机。每一种症状背后都有一串可能的原因,而排查的关键在于:你要先确认虚拟机的网络链路到底断在哪一段。

我一般的排查顺序是这样的:先看虚拟机网卡有没有识别到、有没有拿到 IP,再看虚拟交换机(VMnet)的配置对不对,然后看宿主机这边的虚拟网卡状态,最后才去查防火墙和路由。这个顺序很重要,因为如果你一上来就怀疑防火墙,很可能把时间浪费在一个根本不是问题的地方。

下面这张表可以先帮你快速定位方向:

模式虚拟机能否上外网宿主机能否 ping 通虚拟机局域网其他机器能否 ping 通虚拟机典型用途
NAT能通常能不能日常上网、测试
桥接能能能服务器模拟、对外提供服务
仅主机不能能不能隔离实验、内网测试

注意:这张表是“默认配置下”的典型情况,实际能不能通,还取决于你有没有手动改过 VMnet 配置、宿主机防火墙有没有放行、物理网络有没有做端口隔离。

2. NAT 模式 ping 不通的排查思路

NAT 模式是大多数人装完虚拟机后的默认选择,因为它最省事——虚拟机自动获取一个内网 IP,通过宿主机 NAT 转发上网,不需要你手动配什么。但省事不代表不出问题,NAT 模式下的 ping 不通,通常集中在几个固定的点上。

2.1 先确认虚拟机有没有拿到 IP

这是最基础的一步,但也是最容易被跳过的一步。很多人一上来就 ping 外网,结果虚拟机压根没拿到 IP,ping 什么都是白搭。

在 Linux 虚拟机里执行:

ip addr show

或者老一点的系统用:

ifconfig

你要看的是虚拟网卡(通常是 ens33、eth0 之类)有没有 inet 地址。如果只有 lo 回环地址,说明网卡没拿到 IP。这时候先检查虚拟机里的网络服务有没有起来:

systemctl status NetworkManager

如果是 Ubuntu Server 版本,可能用的是 netplan:

cat /etc/netplan/*.yaml

确认配置里写的是 dhcp4: true。如果配置没问题但就是拿不到 IP,那问题大概率出在 VMware 的 DHCP 服务上。

2.2 检查 VMware DHCP 和 NAT 服务有没有启动

这是 NAT 模式最经典的坑。VMware Workstation 在 Windows 宿主机上会安装两个服务:VMware DHCP Service和VMware NAT Service。这两个服务如果没启动,NAT 模式基本就是废的。

在 Windows 宿主机上按 Win+R,输入 services.msc,找到这两个服务,确认状态是“正在运行”。如果没运行,手动启动,并且把启动类型改成“自动”。

我遇到过好几次,用户说“昨天还好好的,今天就不行了”,一问就是 Windows 更新之后这两个服务被禁用了。所以如果你用的是 Windows 宿主机,这个点一定要优先排查。

2.3 确认 VMnet8 的配置是否正确

NAT 模式对应的是 VMnet8 这个虚拟网络。在 VMware Workstation 里点“编辑”->“虚拟网络编辑器”,选中 VMnet8,看一下几个关键配置:

  • 子网 IP:通常是 192.168.x.0,比如 192.168.100.0
  • 子网掩码:255.255.255.0
  • NAT 设置:网关地址通常是 192.168.x.2
  • DHCP 设置:分配的地址范围通常是 192.168.x.128 到 192.168.x.254

如果虚拟机的 IP 不在这个网段里,那肯定 ping 不通。比如虚拟机拿的是 169.254.x.x 这种地址,说明 DHCP 没拿到,系统自动分配了一个链路本地地址,这种情况下什么都通不了。

2.4 宿主机 ping 不通虚拟机的特殊情况

NAT 模式下,宿主机 ping 虚拟机通常是能通的,因为宿主机上有一个 VMnet8 的虚拟网卡,IP 通常是 192.168.x.1。但有时候你会发现宿主机 ping 不通虚拟机,原因可能是:

  • 宿主机防火墙拦截了 ICMP:Windows 防火墙默认可能不允许来自 VMnet8 网段的 ICMP 请求。你可以临时关闭防火墙测试一下,如果关了就能通,那就是防火墙规则的问题。
  • 虚拟机防火墙拦截了 ICMP:Linux 虚拟机的 firewalld 或 iptables 可能默认不允许 ping。可以临时放行:
# CentOS/RHEL 系 firewall-cmd --add-icmp-block-inversion --permanent firewall-cmd --reload # 或者直接临时关闭 systemctl stop firewalld
  • 虚拟机网卡没有正确连接到 VMnet8:在虚拟机设置里,网络适配器要选“自定义:特定虚拟网络”,然后选 VMnet8。如果选的是“仅主机模式”或者别的,那自然不通。

2.5 NAT 模式下 ping 外网域名不通但 ping IP 通

这个症状很典型:ping 8.8.8.8 能通,但 ping www.baidu.com 不通。这说明网络链路是通的,问题出在 DNS 解析上。

检查虚拟机的 DNS 配置:

cat /etc/resolv.conf

如果里面没有 nameserver,或者 nameserver 指向了一个不可用的地址,那就手动加一个:

nameserver 114.114.114.114 nameserver 8.8.8.8

但要注意,/etc/resolv.conf 在某些系统上重启后会被覆盖。如果是 NetworkManager 管理的系统,应该在网卡配置里加 DNS:

nmcli con mod ens33 ipv4.dns "114.114.114.114 8.8.8.8" nmcli con up ens33

实操心得:NAT 模式下 DNS 问题非常常见,尤其是你换了网络环境之后。我一般会在虚拟机里直接写死两个公共 DNS,省得每次换网络都要排查一遍。

3. 桥接模式 ping 不通的排查思路

桥接模式是三种模式里最“真实”的一种,虚拟机就像局域网里的一台独立机器,有自己的 IP,能被其他机器访问。但正因为如此,它受物理网络环境的影响也最大,出问题的概率反而比 NAT 模式高。

3.1 桥接模式的核心原理

桥接模式下,VMware 会在宿主机上创建一个虚拟网桥,把虚拟机的网卡“桥接”到宿主机的物理网卡上。虚拟机的网络流量会直接走物理网卡出去,跟宿主机在同一个二层网络里。

这意味着:虚拟机的 IP 必须跟宿主机在同一个网段,否则就不通。比如宿主机是 192.168.1.100,那虚拟机也得是 192.168.1.x。如果虚拟机拿的是 192.168.100.x,那肯定 ping 不通。

3.2 桥接模式最常见的坑:桥接到了错误的网卡

这是桥接模式第一大坑,没有之一。现在的笔记本往往有多个网络接口:有线网卡、无线网卡、蓝牙网络、虚拟网卡等等。VMware 默认的桥接设置是“自动”,它会自己选一个物理网卡来桥接。但它的选择逻辑有时候很迷,可能桥接到一个根本没连网的网卡上。

解决办法:在“虚拟网络编辑器”里,选中 VMnet0(桥接模式对应的虚拟网络),把“桥接到”从“自动”改成你实际在用的那块物理网卡。比如你用的是 Wi-Fi,就选无线网卡;用的是有线,就选有线网卡。

注意:如果你用的是 Wi-Fi,有些无线网卡驱动不支持桥接模式,或者桥接后不稳定。这种情况下,NAT 模式反而是更稳妥的选择。

3.3 虚拟机拿不到 IP 怎么办

桥接模式下,虚拟机通常也是通过 DHCP 获取 IP。如果物理网络里有 DHCP 服务器(比如路由器),虚拟机应该能拿到一个跟宿主机同网段的 IP。但如果拿不到,可能的原因有:

  • 物理网络的 DHCP 地址池满了:这种情况在小路由器上偶尔会遇到,重启路由器或者手动给虚拟机配静态 IP。
  • 桥接到了错误的网卡:上面已经说了,检查桥接设置。
  • 物理网络做了 MAC 地址过滤:有些企业网络会限制未注册的 MAC 地址接入,虚拟机的 MAC 地址不在白名单里,自然拿不到 IP。
  • 无线网络的客户端隔离:有些 Wi-Fi 开启了 AP 隔离,设备之间不能互相通信,虚拟机虽然连上了,但拿不到 IP。

手动配静态 IP 的方法(以 Ubuntu 为例):

# 编辑 netplan 配置 sudo vim /etc/netplan/01-netcfg.yaml

内容改成:

network: version: 2 ethernets: ens33: dhcp4: no addresses: - 192.168.1.200/24 gateway4: 192.168.1.1 nameservers: addresses: [114.114.114.114, 8.8.8.8]

然后执行:

sudo netplan apply

3.4 宿主机能 ping 通虚拟机,但虚拟机 ping 不通宿主机

这个症状说明虚拟机的网络链路是通的,但宿主机的防火墙可能拦了 ICMP。Windows 防火墙默认会阻止来自其他网段的 ping 请求。你可以这样检查:

在 Windows 宿主机上打开“高级安全 Windows Defender 防火墙”,找到“入站规则”,启用“文件和打印机共享(回显请求 - ICMPv4-In)”这条规则。或者临时关闭防火墙测试。

如果关了防火墙就能通,那就说明是防火墙问题,你可以针对 VMnet0 网段单独放行,而不用整个关掉防火墙。

3.5 桥接模式下虚拟机之间 ping 不通

如果你有多台虚拟机都用了桥接模式,它们应该像局域网里的独立机器一样能互相通信。如果 ping 不通,检查:

  • 两台虚拟机的 IP 是否在同一网段
  • 两台虚拟机的防火墙是否放行了 ICMP
  • 物理网络是否做了端口隔离(有些交换机默认开启端口隔离,同一交换机下的设备不能互通)

4. 仅主机模式 ping 不通的排查思路

仅主机模式是最“封闭”的一种模式,虚拟机只能跟宿主机通信,不能上外网。很多人用仅主机模式来做隔离实验,比如测试病毒样本、搭建内网靶场。但正因为封闭,它的配置也最容易出问题。

4.1 仅主机模式的核心配置

仅主机模式对应的是 VMnet1 这个虚拟网络。在“虚拟网络编辑器”里,你可以看到 VMnet1 的配置:

  • 子网 IP:通常是 192.168.x.0
  • 子网掩码:255.255.255.0
  • DHCP 设置:是否启用 DHCP

关键点:宿主机上会有一个 VMnet1 的虚拟网卡,IP 通常是 192.168.x.1。虚拟机的 IP 必须在这个网段里,才能跟宿主机通信。

4.2 宿主机 ping 不通虚拟机的常见原因

  • VMnet1 虚拟网卡被禁用了:在 Windows 的“网络连接”里,找到 VMware Network Adapter VMnet1,确认它是启用状态。有时候系统更新或者网络重置会把它禁用。
  • 虚拟机的 IP 不在 VMnet1 网段:如果虚拟机手动配了一个别的网段的 IP,那肯定不通。
  • DHCP 没有启用:如果 VMnet1 的 DHCP 没启用,虚拟机又设的是自动获取,那就拿不到 IP。要么启用 DHCP,要么手动配静态 IP。
  • 防火墙拦截:跟前面一样,检查宿主机和虚拟机的防火墙。

4.3 仅主机模式下虚拟机 ping 不通宿主机

反过来,如果虚拟机 ping 不通宿主机,除了防火墙之外,还要检查宿主机的 VMnet1 网卡有没有 IP。有时候 VMnet1 网卡虽然启用了,但没有分配到 IP,这时候宿主机自己都不知道自己的地址,虚拟机自然 ping 不通。

可以在宿主机上执行:

ipconfig

找到 VMnet1 的适配器,看它的 IPv4 地址是不是 192.168.x.1。如果不是,可以在“虚拟网络编辑器”里点“还原默认设置”,让 VMware 重新配置。

4.4 仅主机模式下想上外网怎么办

仅主机模式默认不能上外网,但如果你确实需要,可以在宿主机上做网络共享。Windows 下可以这样操作:

  1. 打开“网络连接”,找到你用来上网的物理网卡
  2. 右键 -> 属性 -> 共享
  3. 勾选“允许其他网络用户通过此计算机的 Internet 连接来连接”
  4. 在下拉框里选择 VMnet1

这样虚拟机就能通过宿主机的网络共享上外网了。但要注意,这种方式下虚拟机的网关要指向 VMnet1 的宿主机 IP(192.168.x.1),DNS 也要手动配。

5. 通用排查工具和命令速查

不管哪种模式,排查网络问题的基本工具和命令都是通用的。这一节我整理了一份速查表,你可以直接抄作业。

5.1 虚拟机内部排查命令

命令作用关键看什么
ip addr查看网卡和 IP网卡有没有 UP,有没有 inet 地址
ip route查看路由表默认网关是否正确
ping 网关IP测试到网关的连通性通不通
ping 8.8.8.8测试外网 IP 连通性通不通
ping www.baidu.com测试 DNS 解析通不通
cat /etc/resolv.conf查看 DNS 配置有没有 nameserver
systemctl status NetworkManager查看网络服务状态是否 running
nmcli con show查看连接配置网卡是否 connected

5.2 宿主机排查命令(Windows)

命令作用
ipconfig /all查看所有网卡配置,包括 VMnet1 和 VMnet8
ping 虚拟机IP测试到虚拟机的连通性
arp -a查看 ARP 表,确认虚拟机 MAC 是否解析
route print查看路由表
services.msc查看 VMware 相关服务状态

5.3 宿主机排查命令(Linux)

命令作用
ip addr查看 VMnet1/VMnet8 网卡状态
brctl show查看网桥配置(桥接模式)
iptables -L -n查看防火墙规则
systemctl status vmware查看 VMware 服务状态

6. 那些年我踩过的坑和独家经验

这一节不讲理论,只讲实战中遇到的真实问题和解决办法。有些坑你可能正在踩,有些坑你迟早会踩。

6.1 虚拟机克隆后网络不通

这是超级常见的坑。你装好一台虚拟机,配置好网络,然后克隆了一台新的。结果新虚拟机网络不通,或者 IP 跟原来那台冲突。

原因:克隆的时候,VMware 会保留原来的 MAC 地址,导致两台虚拟机 MAC 地址相同。在同一个网络里,MAC 地址冲突会导致网络异常。

解决办法:克隆完成后,在虚拟机设置里,找到网络适配器,点“高级”,然后点“生成”一个新的 MAC 地址。或者在虚拟机里手动改 MAC 地址。

6.2 换了网络环境后 NAT 模式不通

你带着笔记本从公司回到家,NAT 模式的虚拟机突然上不了网了。这是因为公司的网络网段和家里的不一样,VMware 的 NAT 配置可能还停留在原来的网段。

解决办法:在“虚拟网络编辑器”里点“还原默认设置”,让 VMware 重新根据当前网络环境生成配置。或者手动改 VMnet8 的子网 IP,改成跟当前网络不冲突的网段。

6.3 桥接模式在 Wi-Fi 下不稳定

前面提过,有些无线网卡对桥接模式支持不好。表现是:有时候能通,有时候不通;或者速度很慢。如果你遇到这种情况,别折腾了,直接用 NAT 模式。NAT 模式在 Wi-Fi 下稳定得多。

6.4 虚拟机 ping 不通但 SSH 能连

这个症状很迷惑:ping 不通,但 SSH 能连上。这说明网络是通的,只是 ICMP 被拦了。很多云服务器默认就是这样,只放行特定端口,不放行 ICMP。如果你在虚拟机里也遇到这种情况,检查防火墙规则,看看是不是只放行了 TCP 而没放行 ICMP。

6.5 仅主机模式下 DHCP 分配了错误网段的 IP

有时候 VMnet1 的 DHCP 配置被改过,分配了一个跟 VMnet1 子网不匹配的 IP。比如 VMnet1 是 192.168.100.0/24,但 DHCP 分配的是 192.168.200.x。这种情况下虚拟机肯定不通。

解决办法:在“虚拟网络编辑器”里检查 DHCP 设置,确保分配的地址范围在 VMnet1 的子网内。

6.6 虚拟机网卡显示“网络电缆被拔出”

这个提示通常出现在 Windows 虚拟机里。原因是虚拟机的网卡没有连接到任何虚拟网络。检查虚拟机设置里的网络适配器,确认勾选了“已连接”和“启动时连接”,并且选对了网络模式。

7. 一套完整的排查流程

最后,我把整个排查流程串起来,给你一套可以直接照着走的步骤。不管你遇到的是哪种模式的问题,都可以按这个流程来。

7.1 第一步:确认虚拟机网卡状态

在虚拟机里执行ip addr,确认网卡是 UP 状态,并且有 IP 地址。如果没有 IP,先解决 IP 问题。

7.2 第二步:确认网络模式

在虚拟机设置里确认网络适配器选的是哪种模式。然后确认对应的 VMnet 配置是否正确。

7.3 第三步:测试到网关的连通性

在虚拟机里 ping 网关。NAT 模式的网关通常是 192.168.x.2,桥接模式的网关是物理网络的网关,仅主机模式的网关是 192.168.x.1。如果 ping 不通网关,说明虚拟机和虚拟网络之间的链路有问题。

7.4 第四步:测试到外网的连通性

ping 8.8.8.8。如果通,说明网络链路没问题,问题在 DNS。如果不通,说明 NAT 转发或者路由有问题。

7.5 第五步:测试 DNS 解析

ping www.baidu.com。如果不通但 ping 8.8.8.8 通,那就是 DNS 问题,检查 /etc/resolv.conf。

7.6 第六步:检查宿主机侧

在宿主机上 ping 虚拟机的 IP。如果不通,检查宿主机的虚拟网卡状态、防火墙规则、VMware 服务状态。

7.7 第七步:检查物理网络

如果是桥接模式,检查物理网络有没有做 MAC 过滤、端口隔离、DHCP 限制等。

这套流程走下来,基本上 90% 的网络问题都能定位到。剩下的 10% 可能是驱动问题、系统 bug 或者硬件兼容性问题,那就需要具体问题具体分析了。

我个人在实际操作中的体会是:网络排查最忌讳的就是瞎猜。不要一上来就怀疑防火墙,也不要一上来就重装 VMware。按照链路一层一层往下查,从虚拟机内部到虚拟网络,再到宿主机,最后到物理网络,每一步都有明确的检查点。这样排查效率最高,也最不容易漏掉问题。

另外再分享一个小技巧:如果你实在搞不定某种模式,不妨换一种模式试试。比如 NAT 模式搞了半天不通,换成桥接模式可能五分钟就通了。反过来也一样。三种模式总有一种能适合你当前的网络环境,没必要在一棵树上吊死。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询