
VMware虚拟机没网这个问题说大不大说小不小但它就是那种能让你在半夜十二点对着屏幕怀疑人生的存在。刚装好的系统连不上外网、昨天跑得好好的服务今天突然断连、NAT模式下宿主机怎么都ping不通虚拟机里的容器——这些场景我在这些年里几乎全遇到过。围绕“VMware没网”这四个字背后牵扯到的其实是虚拟网络原理、服务运行状态、网卡选型和系统配置几层问题。这篇我把自己实际排查和处理的过程完整写出来从原理讲到操作照着做基本能解决九成以上的没网情况。1. 动手之前先搞懂原理VMware的三种网络模式到底在干什么很多人一遇到虚拟机没网就开始乱改今天把网卡换成桥接明天把防火墙关了最后问题没解决系统反而越来越乱。我建议你先花五分钟搞清楚VMware提供的几种网络模型因为后面所有的排查动作都是围绕这个来的。1.1 NAT模式最常见的“家用路由器”方案NAT模式是VMware Workstation新建虚拟机时的默认选项它的工作方式特别像家用路由器。虚拟机在VMnet8这个虚拟网络里拥有自己的私有IP宿主机充当网关角色虚拟机对外的流量经过NAT翻译后以宿主机的IP身份访问外部网络。这种模式的好处是虚拟机和宿主机共享同一个外部IP哪怕你所在的局域网没有多余的IP可分配虚拟机照样能上网它甚至还能和宿主机互相通信。这里的通信路径大概是这样的虚拟机发出的数据包先到达VMnet8虚拟交换机然后由宿主机上的VMware NAT Service服务进行地址转换最后从宿主机的物理网卡转发出去。如果这条链路中的任何一个环节出问题虚拟机的网络就瘫了。最常见的就是“VMware NAT Service”服务没启动或者VMnet8这个虚拟网卡在宿主机上被禁用或丢失。1.2 桥接模式让虚拟机直接“插”到你的局域网交换机上桥接模式相当于把虚拟机变成了你局域网里的一台独立主机它的网络地位和你的宿主机是平级的。虚拟机通过VMnet0虚拟交换机直接和宿主机的物理网卡对接从你的路由器或交换机获取IP地址。公司、学校、家庭有大量IP可分配时这个模式最好用虚拟机可以被局域网内其他设备直接访问不需要做端口转发。但这个模式也有坑尤其是在使用无线网卡的环境下。很多笔记本的无线网卡对桥接模式支持不太好会出现虚拟机拿到了IP却上不了网或者IP都拿不到的情况。后面我会专门写这块的处理。1.3 仅主机模式一台虚拟机的“安全隔离舱”仅主机模式只允许虚拟机和宿主机之间通信虚拟机无法访问外网。这个模式适合做隔离测试比如研究病毒样本、测试不安全的脚本网络环境完全封闭。有时候你发现虚拟机没网回头一看其实是建虚拟机的时候选了这个模式那就不是故障是配置问题。这三种网络模式在VMware里分别对应着VMnet0、VMnet8、VMnet1三个虚拟网络你在“虚拟网络编辑器”里都能看到。搞清楚虚拟机当前使用的是哪一个问题的排查范围就缩小了一大半。1.4 虚拟网络服务VMware能上网背后真正的“线程主力”很多人不知道VMware的NAT和DHCP功能靠的是Windows系统服务在支撑。打开“运行”输入services.msc你能看到两个关键服务VMware NAT Service和VMware DHCP Service。前者坏了NAT模式的虚拟机彻底没网后者停了虚拟机拿不到IP地址网卡会出现Autoconfiguration IPv4地址也就是常见的169.254.x.x。所以每次排查没网问题我做的第一件事永远是打开服务管理器确认这两个服务的状态。它们默认设置为“自动”但出现崩溃、被杀毒软件禁用、启动失败的时候虚拟机网络就会莫名其妙断开。这种情况在Windows更新或者VMware升级之后尤其常见。2. 按症状照方抓药不同“没网”表现对应不同的故障环节同样是没网表现千奇百怪。光“没网”这个词在虚拟机场景里就能拆出至少四种完全不同的情况。你先把现象看清再去动配置不然就是瞎折腾。2.1 虚拟机完全上不了外网IP还是169.254开头如果你打开虚拟机的“网络连接”发现网卡显示“未识别的网络”IP地址是169.254开头说明虚拟机根本没有从DHCP服务器那里拿到地址。这是最典型的DHCP服务故障。先不要急着重装系统第一步去宿主机上确认VMware DHCP Service是否正在运行。在服务管理器里找到它如果没启动就右键启动然后回到虚拟机的命令行执行ipconfig /release再执行ipconfig /renew。如果还是拿不到IP打开VMware的“虚拟网络编辑器”点击“更改设置”需要管理员权限确认VMnet8是否被勾选为NAT模式且启用了DHCP分配。很多时候是之前自定义网络时把VMnet8的DHCP功能给关了或者是网段和局域网冲突导致服务异常。注意Windows更新后尤其容易出现“VMware NAT Service”启动失败的情况。如果服务启动时报“依赖服务或组无法启动”可以试试先卸载并重装一次VMware Workstation或者运行安全模式清理残留驱动。2.2 虚拟机可以上外网但宿主机访问不了虚拟机里的服务这个场景太常见了尤其是在NAT模式下跑Web服务、数据库或者SSH的时候。现象是虚拟机里nginx跑得好好的curl localhost没问题但你在宿主机浏览器访问虚拟机的IP却打不开。这不是网络断了是NAT模式的访问方向问题。在NAT模式下外网和宿主机默认无法“主动”访问虚拟机的服务需要做端口转发才能把宿主机的某个端口映射到虚拟机内部。在“虚拟网络编辑器”里选中VMnet8点击“NAT设置”在端口转发里添加规则把宿主机的8080端口转发到虚拟机IP的80端口宿主机访问localhost:8080就能访问虚拟机里的服务了。2.3 桥接模式下虚拟机拿不到IP或者能ping通网关却上不了外网桥接模式拿不到IP最常见的原因是无线网卡兼容性。VMware的桥接模块在无线网卡上有个老毛病无线网卡的Mac地址会变化或者WLAN热点模式下桥接协议没法正常绑定网卡。你可以在“虚拟网络编辑器”里把桥接的目标网卡手动指定到无线网卡大多数情况下能解决。如果你发现虚拟机能拿到IP也能ping通路由器网关但就是上不了外网那大概率是DNS的问题。桥接模式下虚拟机用的是局域网的路由器做DNS如果路由器本身设置了奇怪的DNS或上游DNS不稳定就会出现“有网但打不开网页”的诡异现象。把虚拟机的DNS改成公共DNS试试比如223.5.5.5或者114.114.114.114。2.4 能上QQ、能ping通IP但浏览器打不开网页这个现象指向的几乎必然是DNS解析故障。ping通了IP不代表上网正常只有域名解析成功才算一个完整的上网链路。你在虚拟机的命令行里执行nslookup www.baidu.com如果提示DNS超时或者找不到服务器问题就锁定在DNS上。处理方式很简单先在Windows的网络适配器里把DNS设置为手动指定填入一个公共DNS然后执行ipconfig /flushdns清空本地DNS缓存。如果是在Linux虚拟机里检查/etc/resolv.conf文件里的nameserver配置。这类问题里我看过最多的情况是虚拟机复制自模板或者克隆出来网卡配置里残留了旧的DNS指向直接改掉就行。3. 真正靠谱的修复操作从刷新IP到重置虚拟网络的全套方案前面介绍了定位问题的方法这一部分我列几个实际操作中最常用、成功率最高的修复动作。不用全做按顺序一个个来每个动作做完都重启一次虚拟机看问题是否消失。3.1 Windows虚拟机的网络栈重置命令如果虚拟机是Windows系统且IP、服务和网络模式看起来都正常但就是不通可以考虑重置系统内部的网络协议栈。以管理员身份打开命令行依次执行下面这些命令ipconfig /release ipconfig /renew ipconfig /flushdns netsh winsock reset netsh int ip reset前两条是释放并重新获取IP地址第三条清空DNS缓存后两条重置Winsock目录和TCP/IP协议栈。执行完最后一条命令需要重启虚拟机。这个操作对“网络配置被搞乱”的情况有奇效比如之前手动指定过错误的IP换了网段之后没有恢复DHCP导致网卡一直处于半连通状态。3.2 重启VMware网络服务解决九成“突然断网”很多“昨天还行今天不行”的案例本质上是VMware的两个核心服务挂了或卡死。在宿主机上打开服务管理器找到VMware NAT Service和VMware DHCP Service分别右键选择“重启”。如果你在用桥接模式还需要确认VMware Bridge Protocol驱动没有被禁用。这里有个细节如果重启服务之后虚拟机还是没网打开任务管理器看一下vmware-hostd.exe、vmnet-nat.exe和vmnetdhcp.exe这几个进程是否还在运行。VMware在异常退出后经常残留这些进程占用了虚拟网卡导致新起的服务无法绑定端口。手动结束掉这些进程然后重新启动VMware Workstation。注意在杀掉这些进程之前先确认虚拟机里没有重要的未保存工作。虽然这些进程主要负责虚拟网络但暴力结束可能导致虚拟网络短暂不可用最稳妥的方式是正常关闭虚拟机再操作。3.3 还原默认虚拟网络解决网段冲突和配置错乱的终极手段如果上面所有操作都无效可以尝试把VMware的虚拟网络恢复出厂设置。打开虚拟网络编辑器点击“更改设置”取得管理员权限然后点击左下角的“还原默认设置”。VMware会删除现有的全部VMnet网卡配置重新创建默认的NAT、桥接和仅主机网络。这个操作会清空你自定义的NAT端口转发规则和自定义网段所以操作前记得备份记录。还原之后重新启动虚拟机虚拟网卡会自动适配新的VMnet配置大部分“找不到网卡”“网卡被禁用”“拿不到IP”的问题都能迎刃而解。3.4 虚拟机网卡硬件层面的检查与修复如果网络设置在系统里怎么看都是对的但物理层没通就需要检查虚拟机的网卡设备。在虚拟机设置里把“网络适配器”勾选为“已连接”并确认“连接时启动”也被勾选。如果网卡类型是VMXNET3或者VMNET1尝试换成e1000e或e1000有些旧版Linux发行版对VMXNET3驱动支持不好换驱动后网络立刻恢复。还有一种情况是虚拟机网卡被识别为“网络电缆被拔出”。观察VMware状态栏的网络图标如果显示电缆被拔多半是虚拟机的网络适配器类型和虚拟机操作系统不匹配或者在宿主机虚拟网络编辑器里把对应VMnet的端口给禁用了。这时候打开虚拟网络编辑器检查对应VMnet的“连接”状态重新启用即可。4. 别被误导VMware Tools和网络的关系以及高频问题排查速查网上有一大票教程虚拟机一没网就让装VMware Tools。我不否认Tools是个好东西但它跟虚拟机的网络复用没有直接关系。搞清楚这一点你能少走很多弯路。4.1 VMware Tools到底管什么不管什么VMware Tools是一组虚拟机增强工具提供的主要功能包括宿主机和虚拟机之间的剪贴板共享、文件拖拽、鼠标指针无缝切换、分辨率自动适配、虚拟机关闭时宿主机的辅助操作等。它对系统内的图形界面和交互体验提升非常明显但在网络层面它只负责优化和同步部分虚拟设备状态不是网卡驱动级的核心组件。在VMware中虚拟机的网卡通常模拟为Intel e1000/e1000e或AMD pcnet这些网卡驱动旧版和新版操作系统基本都内置。如果你装的是精简定制版的Windows或Linux发行版确实可能因为精简过度导致网卡驱动缺失但VMware Tools本身安装时并不会自动修补这个缺失你仍然需要手动安装网卡驱动。不过有一个例外如果你在虚拟机设置里选择了VMXNET3类型的网卡而系统缺少对应的驱动这网卡就无法工作。VMXNET3是一种高性能半虚拟化网卡默认系统不一定带驱动安装VMware Tools可以顺带补上。所以如果你确认网卡类型是VMXNET3且系统里“网络适配器”看不到它那你装Tools就对了。4.2 VMware Workstation不可恢复错误vcpu-1的快速处理热词里提到了“vmware workstation 不可恢复错误: (vcpu-1)”这算是VMware没网之外最容易劝退新人的问题但它也可以跟网络问题同时出现。这个错误本质上是虚拟化引擎的兼容性冲突常见于Windows开启Hyper-V或内核隔离的机器上。最简单的处理方式是修改虚拟机的硬件兼容性设置右键虚拟机打开设置进入“处理器”勾选“虚拟化Intel VT-x/EPT 或 AMD-V/RVI”然后在“高级”里更改“虚拟化优先级”。如果你本机本来就需要用Hyper-V和VMware共存就要给虚拟机设置降级运行或者关闭宿主机的内核隔离、内存完整性等功能。出现这个错误时虚拟机的网卡有时也会同步被禁用导致进不了系统。临时解决办法是使用另一台机器打开虚拟机或者修改虚拟机配置文件.vmx加入vhv.enable FALSE来禁用嵌套虚拟化。处理完错误之后再回头检查虚拟网络服务的状态大概率网也一起通了。4.3 高频问题速查表我把自己这些年处理过和网上收集到的VMware网络问题整理成一张速查表方便你对照诊断。以下是我认为最高频出现且最典型的问题场景现象可能原因推荐处理虚拟机拿不到IP显示169.254VMware DHCP Service未运行或VMnet8未启用DHCP重启服务检查虚拟网络编辑器执行ipconfig /renew虚拟机无法访问外网但宿主机正常NAT服务异常或网卡类型不兼容重启VMware NAT Service检查网络适配器类型宿主机无法访问虚拟机服务NAT模式未做端口转发在虚拟网络编辑器里配置NAT端口转发桥接模式下无法联网无线网卡桥接绑定问题手动指定桥接目标物理网卡能ping通IP但打不开网页DNS配置错误或解析失败设置公共DNS清空本地DNS缓存虚拟机网卡显示电缆被拔出网卡设备未连接或VMnet被禁用检查虚拟机设置的网卡连接状态启用对应VMnet突然断网且服务无法重启残留进程或服务崩溃杀掉vmnet相关进程重启VMware Workstation这张表并不涵盖所有情况但覆盖了日常环境中绝大部分的“没网”问题。如果你的现象不在表里大概率还是出在自定义配置上把虚拟网络还原默认设置之后重新走一遍标准流程基本能定位出来。4.4 一个很容易被忽略的坑无线网卡和随身WiFi环境热词里出现了“随身wifi连电脑没网怎么办”这点在桥接模式里尤其值得单独说一下。如果你笔记本用随身WiFi或手机热点共享网络虚拟机的桥接模式经常会失效因为热点模式下宿主机无线网卡的桥接机制本身就受限。这种情况下我的建议是能用NAT模式就用NAT模式。带上随身WiFi的环境本来IP就是多层NAT转换出来的桥接模式即便能拿到局域网IP也未必能正常访问外网。别和它硬耗NAT模式在这种网络环境里反而最稳健。如果你确实需要外部设备直接访问虚拟机可以考虑在宿主机上做端口映射效果比桥接更可控。4.5 虚拟机文件复制和克隆导致的网卡冲突最后一个很隐蔽的坑从模板克隆或直接复制虚拟机文件很容易导致网卡MAC地址冲突。现象就是两个虚拟机同时开着时其中一个网络反复掉线或完全上不了网。解决方式是在VMware中给冲突的虚拟机重新生成MAC地址打开虚拟机设置点击“网络适配器”点击“高级”在MAC地址处点击“生成”来生成新的MAC地址然后重启虚拟机系统。这个方法特别适用于复制过来的虚拟机因为复制出来的虚拟机极大概率带着源虚拟机的MAC地址一开多台必然冲突。处理完之后再把系统内的网络配置重新设置一次就彻底清爽了。最后再说几句处理虚拟机没网问题久了你会发现大部分情况根本不用重装系统甚至不用去网上找一堆乱七八糟的教程。先把网络模式搞清楚再把VMware的两个核心网络服务检查一遍最后用“还原默认设置”兜底问题基本都能解决。我个人的习惯是每次装完VMware之后第一时间打开虚拟网络编辑器把VMnet8的网段记下来给NAT服务设置成开机自启再拍个快照留底这样以后再出网络问题五分钟就能定位完。至少到目前为止我还没有遇到过还原默认设置之后还修不好的虚拟机网络问题。