VMware虚拟机断网排查:桥接、NAT与仅主机分层定位 虚拟机开机网卡图标是亮的ping网关超时浏览器一直转圈宿主机这边网页刷得飞起。这个场景我每年至少撞上十几次有时候是自己手贱改了虚拟网络编辑器的配置有时候是笔记本换了无线网、有时候干脆是系统更新之后虚拟网卡被悄悄禁用了。VMware Workstation 虚拟机连不上网听着像个小毛病真排查起来能把人耗掉一下午因为它的故障点横跨宿主机物理网卡、VMware 虚拟网络层、客户机操作系统三层任何一层掉链子表现都是同一个“上不了网”。这篇东西不讲概念科普讲的是我这些年实际排障时用的那套顺序和方法先把三种网络模式桥接、NAT、仅主机的本质区别掰开再按“宿主机 → 虚拟网络 → 客户机”的顺序一层层往下压最后给一张症状对照表让你在五分钟内锁定大概位置。刚装完虚拟机的新手能照着走完整个流程跑了好几台虚拟机、开始折腾双网卡和内网环境的老手也能在中间几节里找到几个容易忽略的点。全程实操命令可以直接抄。1. 三种网络模式的本质区别与选型逻辑1.1 桥接、NAT、仅主机到底差在哪很多人排查半天没结果根子在于没搞清楚自己用的是哪种模式以及这种模式在网络拓扑里到底站在什么位置。这三种模式的差别用一句话概括虚拟机在网络上“像谁”。桥接模式下虚拟机在网络里被当成一台独立的物理机。它有自己的 MAC 地址直接向你所连的那个路由器要 IP拿到的地址段和宿主机完全一样同一局域网里的其他设备能直接访问它它也能被路由器看见。优点是“真”做局域网联调、跑服务给别人访问非它不可缺点是依赖物理网络环境公司网络如果做了端口安全或者只允许特定 MAC 上网虚拟机就会被拦在门外。NAT 模式下VMware 在宿主机内部搭了一个小型路由器虚拟机连的是这个虚拟路由器宿主机相当于这个虚拟网络对外的唯一出口。虚拟机拿到的是私有网段地址默认常见 192.168.x.0/24所有出网流量由 VMware 的 NAT 服务做地址转换后借用宿主机的网络发出去。好处是虚拟机完全不依赖物理网络环境换个 Wi-Fi、换个网线虚拟机照常上网坏处是外部设备主动连不进来除非你手动做端口映射。仅主机模式顾名思义虚拟机只能和宿主机通信压根没有出网的口子。它的用途是做隔离环境比如测试一套内网服务、跑一些不想让它碰外网的东西。很多人选了仅主机模式然后抱怨上不了网这属于配置意图和实际需求没对齐不是故障。对比项桥接模式NAT 模式仅主机模式虚拟网络标识VMnet0VMnet8VMnet1虚拟机 IP 来源物理路由器分配VMware 虚拟 DHCP 分配VMware 虚拟 DHCP 分配默认网段与宿主机同段192.168.x.0/24192.168.x.0/24能否访问外网能能不能局域网他人能否访问虚拟机能默认不能不能受物理网络策略影响大小无典型适用场景服务联调、模拟真实主机日常开发、临时测试内网隔离、攻防练习环境我自己的习惯是日常开发用 NAT需要给别人演示或者模拟多机集群时切桥接做纯内网实验才用仅主机。这个默认选择能避开八成的麻烦。1.2 为什么出厂默认配置经常连不上刚装好的虚拟机默认就是 NAT按理说开箱即用。但实际环境里翻车的概率不低原因通常不在 VMware 本身而在宿主机那边有几个“隐形开关”。第一个是虚拟网卡被禁用。Windows 上安装 VMware 时会生成两块虚拟网卡VMware Network Adapter VMnet1 和 VMnet8。NAT 模式能不能通很大程度取决于 VMnet8 这块网卡的状态。系统优化工具、某些安全软件、甚至手动整理网络适配器时它很容易被顺手禁用而它的图标藏在“网络连接”面板里平时根本看不见。第二个是后台服务没起来。VMware 装了两个关键服务VMware DHCP Service 和 VMware NAT Service。前者负责给虚拟机发地址后者负责做地址转换。这两个服务默认是自动启动但电脑非正常关机、系统更新、或者某些清理工具“优化开机项”之后它们可能变成手动甚至被停掉。服务没跑虚拟机自然拿不到 IP表现就是一直卡在获取地址。第三个是虚拟网络编辑器的配置被改乱。这块最容易出在“还原默认设置”被误点或者曾经手动改过网段、子网掩码导致虚拟 DHCP 的地址池和虚拟网卡不在一个网段。还有一个容易被忽略的是宿主机装了别的虚拟化软件。比如 Windows 自带的虚拟化平台组件开启之后会接管一部分网络栈可能让 VMware 的桥接模式失效或者让虚拟网卡出现异常。1.3 我习惯的排查顺序从物理层往应用层推排障最忌讳的是东一榔头西一棒子。我固定用这套自上而下的顺序第一步确认宿主机自己能上网。这听着像废话但真有宿主机本身就在断网、或者连的是需要认证的访客 Wi-Fi 的情况你在虚拟机里折腾一小时都是白费。第二步确认虚拟机的网络适配器是否“已连接”。虚拟机设置里那个“已连接”和“启动时连接”两个勾缺一个都不行。这个勾被某次误操作取消之后虚拟机内部的网卡就是“未插入网线”的状态你怎么配 IP 都没用。第三步确认虚拟网络层的参数。也就是虚拟网络编辑器里的网段、DHCP 范围、NAT 网关地址以及宿主机那两块虚拟网卡是否启用。第四步才进客户机内部查。看 IP 有没有拿到、网关对不对、DNS 配没配、路由表正不正常。这个顺序的道理很简单网络是分层的下层不通的时候上层怎么改都是无效操作。我见过太多人在客户机里反复执行ipconfig /release而他宿主机上的 VMnet8 压根就是禁用状态。2. 动手之前宿主机侧的五个必查点2.1 虚拟网卡有没有被禁用或带感叹号Windows 上按Win R输入ncpa.cpl直接打开“网络连接”面板。这里应该能看到至少两块 VMware 开头的虚拟网卡。要看的就三件事图标是彩色还是灰色、名字下面有没有“已禁用”字样、有没有黄色感叹号。灰色带“已禁用”的右键启用就行。有黄色感叹号的说明驱动层面出了问题通常是 VMware 安装损坏或者和系统更新冲突。这种情况我的处理方式是先右键“禁用”再“启用”试一次不行就去设备管理器里卸载这块虚拟网卡然后在虚拟网络编辑器里点一次“还原默认设置”让 VMware 重新生成。注意还原默认设置会把你自定义的所有虚拟网络一并重置如果之前配过特殊网段得提前记下来。还有一个细节VMnet1 和 VMnet8 的 IP 是 VMware 自动分配的正常情况下 VMnet8 会是一个固定网段的地址比如 192.168.x.1这个地址其实就是虚拟 NAT 网络的网关在宿主机这一侧的映射。如果你发现 VMnet8 拿到了一个 169.254 开头的地址那是自动私有地址说明它没能和虚拟 DHCP 通信基本可以判定 DHCP 服务有问题。2.2 那两个后台服务是不是在跑按Win R输入services.msc在列表里找 VMware 开头的服务重点看两个VMware DHCP Service负责给虚拟网络里的机器分配 IP。VMware NAT Service负责 NAT 模式下的地址转换。启动类型应该是“自动”状态应该是“正在运行”。如果状态是空的右键启动如果启动类型是“手动”或者“已禁用”改成自动再启动。有些优化工具会把它们改成手动结果就是每次重启电脑之后虚拟机都上不了网得手动去开一次这个坑我踩过不止一次。顺便说一句这两个服务启动失败的时候事件查看器里通常会有记录。如果反复启动失败大概率是 VMware 安装文件损坏重装一遍客户端比继续折腾省时间。2.3 虚拟网络编辑器里的关键参数怎么看在 VMware Workstation 菜单里打开“编辑 → 虚拟网络编辑器”注意这一步需要点“更改设置”按钮提权否则看到的是只读状态很多人卡在这儿以为按钮坏了。打开之后看三个地方第一看 VMnet0、VMnet1、VMnet8 分别对应哪种模式。列表里每一行都标了“桥接”“NAT”“仅主机”如果发现 VMnet8 被改成了仅主机那 NAT 模式当然上不了网改回来就行。第二看 VMnet8 的“NAT 设置”。里面有个网关 IP默认是网段里的.2地址。这个地址必须和虚拟 DHCP 分配的地址池在同一网段否则虚拟机拿到 IP 也找不到网关。第三看“DHCP 设置”。里面能看到起始 IP、结束 IP 和租约时间。有次我遇到的问题是地址池只剩几个可用地址而机器上开了七八台虚拟机后开的几台就一直拿不到地址。把池子范围改大一点比如从 x.100 到 x.254问题立刻消失。3. NAT 模式断网的完整实操排查3.1 从宿主机到虚拟机的连通性分层验证NAT 模式的排查我固定按“四跳”来 ping每一跳对应一个层次跳不过去就说明问题卡在这一层。第一跳宿主机 ping 虚拟机的 IP。先在客户机里执行ipconfigWindows或ip addrLinux拿到地址比如 192.168.152.128然后在宿主机上ping 192.168.152.128。通不了说明虚拟网卡 VMnet8 和虚拟机之间的链路有问题回去查 2.1 和 2.2 那两节。第二跳虚拟机 ping 自己的网关。网关地址在虚拟网络编辑器的 NAT 设置里能看到默认通常是192.168.152.2。这一跳不通说明虚拟机的 IP 配置和虚拟网络不在一个网段或者虚拟机内部防火墙把 ICMP 拦了。第三跳虚拟机 ping 一个公网 IP。比如ping 114.114.114.114。能通说明地址转换链路正常问题出在域名解析上不通说明 NAT 服务或者宿主机的出网链路有问题。第四跳虚拟机 ping 一个域名。比如ping www.example.com。前三跳都通这一跳不通那就是 DNS 的锅去查 3.3 那一节。# Linux 客户机上的四跳验证 ip addr show # 看拿到的 IP 和网段 ip route show # 看默认网关是否正确 ping -c 4 192.168.152.2 # 跳 2网关 ping -c 4 114.114.114.114 # 跳 3公网 IP ping -c 4 www.example.com # 跳 4域名解析这套四跳法最大的价值是快速排除无效路径。很多人一上来就在虚拟机里改 DNS改了半天发现连网关都不通白忙活。3.2 DHCP 拿不到地址时的两种修法DHCP 拿不到地址的典型表现是客户机显示“未识别的网络”ipconfig出来一个 169.254 开头的地址或者 Linux 上ip addr显示NO-CARRIER或者干脆没有 IPv4 地址。第一种修法是刷新租约。Windows 上依次执行ipconfig /release ipconfig /renew ipconfig /flushdnsLinux 上用nmcli或者重启 NetworkManagersudo nmcli networking off sudo nmcli networking on # 或者 sudo systemctl restart NetworkManager第二种修法是手动指定静态地址。当虚拟 DHCP 服务怎么都起不来又急着用的时候直接绕过它。参数参考这张表参数项建议值说明IP 地址192.168.x.128 附近避开 DHCP 地址池避免冲突子网掩码255.255.255.0与虚拟网络编辑器里的掩码一致默认网关192.168.x.2以 NAT 设置里显示的为准首选 DNS114.114.114.114公共 DNS稳定可用备用 DNS223.5.5.5主 DNS 失效时兜底注意静态 IP 一定要避开 DHCP 的地址池范围否则可能出现“两台机器抢一个地址”的诡异现象表现为时通时不通非常难查。3.3 DNS 配错导致的“能ping通但打不开网页”这是最经典的一种“假断网”。前三跳全通浏览器就是打不开页面报“找不到服务器”或者“DNS 解析失败”。Linux 上先看三处cat /etc/resolv.conf # 最直接看 nameserver systemd-resolve --status # 用 systemd 的系统看实际生效的 DNS nmcli dev show | grep DNS # 看 NetworkManager 下发的 DNS/etc/resolv.conf有一个坑在某些发行版上它是个软链接由 NetworkManager 或者 systemd-resolved 动态生成你手改完重启网络就被覆盖了。正规做法是改网卡配置或者用nmcli设置而不是直接编辑这个文件。我在用的一些新版发行版上/etc/resolv.conf甚至指向127.0.0.53这是本地解析服务真正的上游 DNS 得用resolvectl查。sudo resolvectl dns # 查看各网卡的上游 DNS sudo resolvectl dns eth0 114.114.114.114 # 临时指定Windows 上排查更简单nslookup一试就知道nslookup www.example.com nslookup www.example.com 114.114.114.114第一次失败第二次成功那就是 DNS 配置的问题去网卡属性里把 DNS 手动指定成公共地址即可。另外一个隐蔽的情况是虚拟机里改了 hosts 文件。之前调试时加过一条域名映射忘了删结果那个域名永远解析到一台已经不存在的机器上。排查时顺手cat /etc/hosts看一眼省事。3.4 一键重建 NAT 网络的正确姿势如果上面几招都无效或者你确实把配置改得面目全非那就重建。操作路径是虚拟网络编辑器 → 更改设置 → 选中 VMnet8 → 点“还原默认设置”。这个操作的实质是卸载并重装所有 VMware 虚拟网卡然后恢复默认网络配置。执行完之后有三件事要注意第一重启宿主机或者至少禁用再启用一次虚拟网卡让系统重新识别。第二所有虚拟机的网络配置会回到 NAT 默认状态之前设了静态 IP 的机器需要重新配。第三自定义的端口映射会丢失如果有做外部访问的转发规则得重新加。我通常把这个操作放在最后因为成本比较高。先按前几节走完绝大多数问题能提前解决。4. 桥接模式断网九成问题出在网卡选择上4.1 自动桥接为什么不可靠桥接模式的故障率明显高于 NAT原因只有一个它要挑物理网卡。虚拟机设置里桥接模式默认是“自动”含义是让 VMware 自己判断该桥接到哪块物理网卡上。这台机器上有线网卡、无线网卡、甚至还有一堆虚拟网卡的时候它的判断经常出错可能桥接到一块根本没连网的网卡上。处理方法很直接在虚拟机的“设置 → 网络适配器”里把模式选成“桥接”然后勾选“复制物理网络连接状态”再到虚拟网络编辑器里把 VMnet0 的桥接目标手动指定为你当前正在用的那块物理网卡。有线就选有线无线就选无线名字通常一眼能认出来。这一步做完桥接失败的问题能解决大半。4.2 无线网卡桥接的特殊处理无线网卡做桥接比有线麻烦。部分无线网卡驱动不支持混杂模式虚拟机发出的帧带着自己的 MAC 地址而无线接入点只认已经完成认证的那个 MAC于是这些帧就被丢了表现是虚拟机拿不到 IP或者能拿到 IP 但网关不通。几种处理思路换成有线连接做桥接这是最省事的办法如果条件允许直接用。改用 NAT 模式如果只是要上网桥接本身没有必要性。在虚拟网络编辑器里切换桥接的物理网卡有时候换个无线网卡比如笔记本自带的那个和 USB 的表现完全不同。检查无线网络是否开启了客户端隔离公共网络里面很常见即使桥接成功虚拟机也访问不到局域网里的其他设备。4.3 桥接后的IP规划与冲突排查桥接模式下虚拟机用的是物理局域网的地址段这就带来一个新问题地址冲突。如果虚拟机里设了静态 IP而这个 IP 恰好和局域网里某台设备撞了表现就是两台机器轮流掉线非常折磨人。排查方法是先让虚拟机用 DHCP 自动获取确认能正常上网之后再把拿到的地址固定下来。固定前在宿主机上执行一次arp -a看一下局域网里已经有哪些地址在用避开它们。现代路由器一般都有 DHCP 租约列表登录路由器管理界面能直接看到哪些地址被分配出去了比盲猜靠谱。没有管理权限的话就选一个地址池末端不太可能被用到的地址比如网段里的.200以上冲突概率很低。5. 仅主机模式与特殊场景的取舍5.1 只想宿主机和虚拟机互通的正确配置仅主机模式的配置极其简单虚拟机网络适配器选“仅主机”宿主机上对应的 VMnet1 网卡保持启用两边配在同一网段即可。默认情况下 VMware 的虚拟 DHCP 会给虚拟机发地址宿主机的 VMnet1 一般是网段里的.1。验证方式就是宿主机 ping 虚拟机虚拟机 ping 宿主机能通就完事。这时候虚拟机访问外网是不通的这是设计如此不是故障。如果确实需要让虚拟机访问外网那就不该用仅主机模式直接换 NAT。有个需求很常见既想让虚拟机访问外网又想让宿主机和虚拟机之间有一个固定不变的连接。做法是给虚拟机加第二块网卡一块走 NAT 出网一块走仅主机做宿主机互连。这样 IP 固定、断网也不影响本地调试。5.2 双网卡组合一个上网一个内网多网卡配置的关键是默认路由只能有一条否则会出现奇怪的断流。具体原则是出网的那块网卡NAT 或桥接配置默认网关。内网的那块网卡仅主机只配 IP 和掩码不配网关。如果配了两条默认路由系统会根据跃点值选一条另一条流量就走不通表现出来就是“有时候能上网有时候不行”。Windows 上用route print看Linux 上用ip route show看如果看到两条default记录删掉内网的那条sudo ip route del default via 192.168.x.1 dev eth1这个坑我在搭建本地测试集群的时候踩过两台虚拟机互相能 ping 通但都上不了网最后发现是内网网卡抢了默认路由。5.3 快照、克隆带来的MAC与网卡错乱克隆虚拟机是另一个高频故障源。VMware 克隆时会问你是“创建完整克隆”还是“创建链接克隆”不管哪种MAC 地址必须重新生成。两台虚拟机 MAC 一样接在同一个虚拟交换机上交换机会直接懵掉表现为两台机器都时通时不通。虚拟机设置 → 网络适配器 → 高级 → 点“生成”按钮重新生成一个 MAC。这一步花不了十秒钟但能省掉几个小时的排查。另外从快照恢复之后也建议检查一下网卡状态。有些系统在快照恢复后会认为网卡是“新硬件”重新枚举一遍原来的网络配置就失效了表现为网络图标带感叹号重新配一次 IP 就好。6. 客户机内部的分层排查手册6.1 Windows客户机的四条命令Windows 客户机排查我固定跑这四条ipconfig /all # 看全部网络信息包括 DHCP 服务器、DNS、MAC ipconfig /release # 释放当前租约 ipconfig /renew # 重新申请 nslookup www.example.com # 验证解析ipconfig /all里重点看三项有没有拿到 IPv4 地址、默认网关是不是虚拟网络的网关、DHCP 服务器地址是不是虚拟网络里的那个。如果 DHCP 服务器显示为空说明请求压根没发出去或者没人应答回到宿主机查服务。网络栈被搞乱的情况下用这两条命令重置netsh winsock reset netsh int ip reset执行完必须重启才生效。这招对“本来好好的装了个软件之后突然上不了网”这类问题特别管用因为有些安全软件会往网络栈里插过滤驱动卸载不干净就留下后遗症。6.2 Linux客户机从网卡到DNS逐层确认Linux 上我一般按这个顺序走ip link show # 网卡是不是 UP 状态 ip addr show # 有没有 IPv4 地址 ip route show # 默认路由在不在 cat /etc/resolv.conf # DNS 配置 ping -c 3 网关地址 ping -c 3 114.114.114.114 ping -c 3 www.example.comip link show如果显示state DOWN先sudo ip link set eth0 up拉起来。如果显示NO-CARRIER说明链路层没连上问题在虚拟机的网络适配器设置不是系统内部。新版发行版大多用 NetworkManager 或 netplan 管理网络。用 netplan 的系统配置文件在/etc/netplan/下改完要执行sudo netplan apply用 NetworkManager 的直接nmcli就行nmcli connection show nmcli connection modify 有线连接 1 ipv4.method auto nmcli connection up 有线连接 1有个细节值得提VMware Tools 影响网卡驱动。安装了 Tools 之后虚拟网卡可能从e1000换成vmxnet3性能更好但如果 Tools 安装不完整或者版本不匹配网卡可能直接认不出来。遇到ip link里压根没有以太网设备的情况先在虚拟机设置里把网卡类型改成e1000试试能认出来就说明是驱动兼容问题。6.3 防火墙与安全软件的拦截识别防火墙导致的“上不了网”有个典型特征能 ping 通 IP但某些端口连不上。比如能 ping 通 114.114.114.114但浏览器打不开任何网页因为 80/443 被拦了。Windows 上临时关掉防火墙验证一下netsh advfirewall set allprofiles state off验证完记得开回来。Linux 上sudo systemctl stop firewalld # CentOS 系 sudo ufw disable # Ubuntu 系如果关了就好了那就是规则问题去防火墙里放行对应端口而不是长期关着防火墙。还有一种情况是宿主机上的安全软件拦截了虚拟网卡的流量。这类软件有时会把 VMware 的虚拟网卡识别成可疑设备直接切断它的通信。判断方法是看它的拦截日志或者在它的网络防护设置里把 VMnet1、VMnet8 加入信任列表。7. 典型故障速查表与踩坑实录7.1 症状到原因速查表现象最可能的原因处理动作虚拟机无 IP显示 169.254 开头DHCP 服务未启动或虚拟网卡禁用启动 VMware DHCP Service启用 VMnet8有 IPping 网关不通IP 与虚拟网络不同网段检查虚拟网络编辑器网段设置ping 网关通ping 公网 IP 不通NAT 服务未启动启动 VMware NAT Serviceping 公网 IP 通域名不通DNS 配置错误手动指定公共 DNS桥接模式拿不到 IP桥接目标网卡选错手动指定物理网卡桥接模式时通时不通物理网络存在 MAC 限制或地址冲突换 NAT 模式或改用动态获取克隆后两台机器抢网MAC 地址重复重新生成 MAC虚拟网卡有黄色感叹号驱动损坏或与其他虚拟化组件冲突卸载重装虚拟网卡装了某软件后突然断网网络栈被过滤驱动污染netsh winsock reset后重启网络图标正常但浏览器打不开系统层拦截或路由异常检查防火墙与路由表7.2 几个反直觉的坑坑一宿主机连着需要认证的网络。有些公共网络要先在浏览器里点同意才能上网这时候宿主机自己都还没通虚拟机当然上不去。有次在会议室折腾了半小时最后发现是宿主机没点那个登录按钮。坑二系统时间不同步导致的“打不开网页”。部分站点对时间偏差很敏感虚拟机关机放几天再开时间落后一大截访问会直接被拒。表现和网络故障极像但ping全通。装个时间同步服务就能避免。坑三MTU 不匹配。虚拟网络默认 MTU 是 1500而某些拨号链路实际是 1492大包发不出去小包正常。表现是能打开简单页面图片多的页面一直转圈。验证方法是用不分片的包试探ping -f -l 1472 114.114.114.114不通就逐步减小包长找到能通过的最大值然后相应调小网卡的 MTU。坑四虚拟机设置里“已连接”没勾。这个坑我每年都要撞上一次。虚拟机的网络适配器设置里有两个复选框一个是“已连接”一个是“启动时连接”。后者没勾虚拟机重启后就断网前者没勾当时就断网。两个都得勾上。坑五开了某些虚拟化相关组件之后桥接失效。宿主机如果启用了系统自带的虚拟化平台功能可能和 VMware 的桥接驱动打架表现就是桥接死活不通NAT 正常。这种情况要么关掉那个功能重启要么干脆用 NAT。7.3 兜底手段与我的日常习惯配置改乱了又懒得一步步查我直接按这个顺序兜底先在虚拟网络编辑器里还原默认设置重启宿主机的 VMware 相关服务再开虚拟机跑一次 DHCP。三步下来九成问题能自愈。日常使用上我养成几个习惯能省不少事虚拟机一律先装 VMware Tools网卡驱动、时间同步、剪贴板共享都靠它装与不装差别很大。克隆完立刻改 MAC别等出问题再回头找。给每台虚拟机记一笔网络用途是 NAT 出网还是仅主机内网写个备注在虚拟机名字后面半年后回来看不至于懵。重要环境拍快照之前先确认网络是通的免得回滚到一个断网状态自己还不知道。宿主机换了网络环境换 Wi-Fi、插网线之后桥接模式要重新确认一次物理网卡这是我遇到频率最高的一类“突然上不了网”。虚拟机网络这块说到底就那么几个变量用哪种模式、桥到哪块网卡、虚拟网段配得对不对、客户机内部拿没拿到正确参数。把这四个问题按顺序问一遍绝大多数断网都能在十分钟内定位。真正耗时间的从来不是技术难度是排查顺序乱了、在错误的层面上反复尝试。